Service to build openwrt images

I wanted to host my own image bulder website and point it in sysupgrade package configuration. Is there docker image to of this website https://sysupgrade.openwrt.org

I also have a docker image that I use to locally build the new firmware for my router.

Also uses the image builder and then adds more files and packages.

Yeah, it is very bad for newcomers and people that want to contribute to the project. Even for small PRs, just having a test container would be amazing and massively lower the threshold.

I don't use docker compose. Just a docker file.

There is a powershell script that uses this Dockerfile to build the image for me.

Are you using the pre-built docker images? Here's more or less what ASU server does, only with addtional mounts to get the resulting image out into the host file system. (I occasionally use this on my ASU server host to debug the images.)

$ podman run -it ghcr.io/openwrt/imagebuilder:mediatek-filogic-v24.10.0-rc3

Every time you restart your ASU server, you need to run the misc/update_all_targets.py to build the internal ASU version tables.

Or see my grossly over-engineered version on https://github.com/efahl/asu/blob/host-tools/misc/update_all_targets.py, which allows you to subset the versions of interest. (This is what I use for ASU-server plus owut testing, as I don't want to be constantly downloading a bunch of stuff that I never use.)

The other values, like uci_defaults are set in the .env file:

$ cat .env
PUBLIC_PATH=/home/efahlgren/asu/public
HOST_PATH=/home/efahlgren/asu/public
CONTAINER_SOCK=/run/user/1000/podman/podman.sock
# REDIS_URL used for asu_cli to access container queues.
REDIS_URL=redis://localhost:6379
#BASE_CONTAINER=quay.io/openwrt/imagebuilder
ALLOW_DEFAULTS=True
#SQUID_CACHE=True
#LOG_LEVEL=DEBUG
UPSTREAM_URL=https://downloads.openwrt.org
#UPSTREAM_URL=https://downloads.staging.openwrt.org

There's a lot of information in this WIP PR: https://github.com/openwrt/asu/pull/1032

It's not inside the container, it's on the host. It configures the redis database to allow you to download and start the imagebuilder containers.

The default value for settings.update_token is foobar (see asu/settings.py). You can change it either there, in .env or misc/update_all_targets.py, just make it the same everywhere.

My hacked version of the update script makes it simple, it just does this:

from asu.config import settings
token = settings.update_token

...

                headers={"X-Update-Token": token},

One time for each target that you wish to see. Needs to be redone at each ASU server restart.

See the final link in my post above.

See the first link in my post above.

I use the imagebuilder archive. I have one dockerfile to build an image that contains all the required tooling, gcc, make, etc.
And then use that image to download the archive, add my custom files and packages and build the firmware. Copy that to a host-mounted directory.

1 Like

Those are not published for public consumption, so you need to know they exist and add them manually.

1 Like

See if this helps: https://github.com/openwrt/asu/issues/1002#issuecomment-2444432047

No, it has only ever used podman.

Podman is the more enterprise solution. Available on all platforms of interest, faster and better security, so no reason to add docker support.

2 Likes