{"id":38020211,"url":"https://github.com/ansemjo/openwrtbuilder","last_synced_at":"2026-01-16T19:28:22.696Z","repository":{"id":122757408,"uuid":"207887487","full_name":"ansemjo/openwrtbuilder","owner":"ansemjo","description":"script for automated and containerized openwrt firmware builds","archived":false,"fork":false,"pushed_at":"2024-09-07T13:57:53.000Z","size":75,"stargazers_count":6,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-09-07T15:25:44.892Z","etag":null,"topics":["build","containerized","imagebuilder","img","openwrt","rootless-containers"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ansemjo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-09-11T19:10:33.000Z","updated_at":"2024-09-07T13:57:57.000Z","dependencies_parsed_at":"2024-03-17T11:44:13.965Z","dependency_job_id":null,"html_url":"https://github.com/ansemjo/openwrtbuilder","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ansemjo/openwrtbuilder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansemjo%2Fopenwrtbuilder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansemjo%2Fopenwrtbuilder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansemjo%2Fopenwrtbuilder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansemjo%2Fopenwrtbuilder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ansemjo","download_url":"https://codeload.github.com/ansemjo/openwrtbuilder/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansemjo%2Fopenwrtbuilder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28481726,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["build","containerized","imagebuilder","img","openwrt","rootless-containers"],"created_at":"2026-01-16T19:28:22.122Z","updated_at":"2026-01-16T19:28:22.673Z","avatar_url":"https://github.com/ansemjo.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# openwrtbuilder\n\nA script to automate building OpenWRT firmware images for routers with the imagebuilder SDKs provided for each target. Internally it generates a Dockerfile on the fly and builds that with a buildkit-capable Docker runtime. Due to efficient layer caching, many firmwares for similar targets can be built quickly, because the imagebuilder only needs to be downloaded once.\n\nMy personal use-case was that I always wanted to install a handful of packages like `luci-ssl` and `wireguard-tools`. And honestly .. it was easier to just learn to use the imagebuilder than reinstall them each time after a sysupgrade.\n\n## INSTALLATION\n\nIn a previous version, this script required `genuinetools/img` because it was one of the only good possibilities for a rootless and buildkit-capable builder. Nowadays any modern `docker` binary will do. Whether you chose to use a rootless flavour is up to you but I strongly recommend it. So head over to [docs.docker.com](https://docs.docker.com/engine/install/ubuntu/) for installation instructions.\n\nApart from that, it's just a shell script which uses a few basic system commands that should readily be available on a common Linux system with GNU coreutils.\n\n```\ncurl -LO https://raw.githubusercontent.com/ansemjo/openwrtbuilder/main/openwrtbuilder\nbash ./openwrtbuilder --help\n```\n\n## USAGE\n\nThe build target and profile are configured with commandline flags. Additional packages to be installed and an optional filesystem tree to be included can also be specified. The options are based on the capabilities of the [OpenWRT imagebuilder](https://openwrt.org/docs/guide-user/additional-software/imagebuilder).\n\nYou can use `-R`, `-T` and `-t ... -P` to list available releases, targets and profiles for a particular target respectively.\n\n| flag | description |\n|------|-------------|\n| `-R` | list available releases |\n| `-r RELEASE` | the release version, can be `snapshot` or a version like `18.06.4` |\n| `-T` | list available targets for chosen release (latest by default) |\n| `-t TARGET` | target architecture and chipset, e.g. `ath79/generic` |\n| `-t TARGET -P` | list available profiles (specific devices) for a given `TARGET` |\n| `-p PROFILE` | profile for a particular device, e.g. in the above target: `tplink_archer-c7-v2` |\n| `-i PKGS` | include or exclude specific packages,\u003cbr /\u003ee.g. exclude `ppp` and include `luci-ssl` with `-i \"-ppp luci-ssl\"` |\n| `-d DESTDIR` | destination directory for the built firmware archive\u003cbr /\u003ea concatenation of release version, target, profile and timestamp by default |\n| `-f DIRECTORY` | directory with a filesystem tree to include in firmware\u003cbr /\u003ecan be used for configuration files like `/etc/profile` |\n| `-c CONFIG` | source config options from this bash-compatible file\u003cbr /\u003eby default, `owrtbuildconf` in the current directory is used automatically, if found |\n\nWhen building a specific firmware image, the configuration is printed on the terminal and can be copied to a file for later usage with the `-c` flag. See the [configs](configs/) directory for examples.\n\n## EXAMPLES\n\nList available profiles for the `ath79/generic` target in the `latest` release:\n\n```\n$ openwrtbuilder -r latest -t ath79/generic -P\navailable profiles for 22.03.3/ath79/generic:\n - 8dev_carambola2\n - 8dev_lima\n/* ... */\n - tplink_archer-c7-v1\n - tplink_archer-c7-v2\n/* ... */\n - ziking_cpe46b\n - zyxel_nbg6616\n```\n\nBuild a firmware image for the TP-Link Archer C7 v2:\n\n```\n$ openwrtbuilder -r latest -t ath79/generic -p tplink_archer-c7-v2\n\n# openwrtbuilder configuration\nMIRROR='https://downloads.openwrt.org'\nRELEASE='22.03.3'\nTARGET='ath79/generic'\nPROFILE='tplink_archer-c7-v2'\nPACKAGES=\nFILES=''\n\n# build openwrtbuilder image ...\n[+] Building 18.5s (5/6)                                                                                        \n =\u003e [internal] load build definition from Dockerfile                                                       0.0s\n =\u003e =\u003e transferring dockerfile: 497B                                                                       0.0s\n =\u003e [internal] load .dockerignore                                                                          0.0s\n =\u003e =\u003e transferring context: 2B                                                                            0.0s\n =\u003e [internal] load metadata for docker.io/library/debian:stable                                           2.3s\n =\u003e [1/3] FROM docker.io/library/debian:stable@sha256:12931ad2bfd4a9609cf8ef7898f113d67dce8058f0c27f01c9  10.3s\n =\u003e =\u003e resolve docker.io/library/debian:stable@sha256:12931ad2bfd4a9609cf8ef7898f113d67dce8058f0c27f01c90  0.0s\n/* ... */\n```\n\nThis will result in a directory with factory and sysupgrade images, depending on the specific profile:\n\n```\n$ ls openwrt-ath79-generic-tplink_archer-c7-v2-22.03.3/\nopenwrt-22.03.3-ath79-generic-tplink_archer-c7-v2.manifest\nopenwrt-22.03.3-ath79-generic-tplink_archer-c7-v2-squashfs-factory.bin\nopenwrt-22.03.3-ath79-generic-tplink_archer-c7-v2-squashfs-factory-eu.bin\nopenwrt-22.03.3-ath79-generic-tplink_archer-c7-v2-squashfs-factory-us.bin\nopenwrt-22.03.3-ath79-generic-tplink_archer-c7-v2-squashfs-sysupgrade.bin\nprofiles.json\nsha256sums\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fansemjo%2Fopenwrtbuilder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fansemjo%2Fopenwrtbuilder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fansemjo%2Fopenwrtbuilder/lists"}