- Go 42.9%
- JavaScript 33.2%
- CSS 12.4%
- Python 5.1%
- HTML 2.8%
- Other 3.6%
|
|
||
|---|---|---|
| .forgejo/workflows | ||
| Dev-Box | ||
| handellist | ||
| unbound | ||
| X-Dashboard | ||
| X27-Hub | ||
| .gitignore | ||
| README.md | ||
Docker-Images
Source code and Dockerfiles for the container images X27 builds and publishes to git.xlabsx27.com/x27/ (the Forgejo package registry). Each top-level folder is one image: its Dockerfile, build context, and a compose.yml for running the published image.
Images are built by Forgejo Actions (.forgejo/workflows), one workflow per image. Each one runs weekly (Dev-Box on Sunday, unbound on Monday, X-Dashboard on Tuesday, X27-Hub on Wednesday, Handellist on Thursday, all UTC), and you can also start it by hand from the repository's Actions tab. Pushing to main does not trigger a build. Each run pushes the tags latest, main, sha-<commit> and a date version YYYY.MM.DD. A second build on the same day gets YYYY.MM.DD.2, then .3, and so on.
After a successful push, the workflow creates a release named <Image> <version> and tagged <image>-<version> (e.g. x27-hub-2026.10.07) on the commit it built. X27-Hub also builds that version into its binary.
Runner and secret setup
-
Runner: a Forgejo runner with the
dockerlabel. Jobs run inghcr.io/catthehacker/ubuntu:act-24.04and build with buildx, so they need a Docker daemon. The workflows support two runner setups:- Docker-in-Docker (the current runner): a
docker:dindcontainer serves its daemon ontcp://…:2375without TLS, and the runner runs its jobs there. No runner config is needed. The Find Docker daemon step pointsDOCKER_HOSTat the job container's gateway, which is the DinD container. The DinD container must beprivileged, so QEMU can register the arm64 emulator for the multi-arch images (unbound, X-Dashboard, Handellist). - Host Docker socket: set
container.docker_host: automountin the runner config so the socket is mounted into job containers.
The runner's
data/folder must be owned by the user the runner runs as (e.g.chown -R 1001:1001 datawhenuser: 1001:1001). Otherwise jobs fail with "Permission denied" when the runner caches actions. - Docker-in-Docker (the current runner): a
-
Secret:
PUBLISH_TOKEN, a Forgejo access token forX27with thewrite:packagescope (to push images) and thewrite:repositoryscope (to create releases). Add it under repository Settings → Actions → Secrets.
Compose files for images pulled from other maintainers live in Docker-X27-Composes.
Images
- Dev-Box —
git.xlabsx27.com/x27/dev-box - Handellist —
git.xlabsx27.com/x27/handellist - unbound —
git.xlabsx27.com/x27/unbound - X-Dashboard —
git.xlabsx27.com/x27/x-dashboard - X27-Hub —
git.xlabsx27.com/x27/x27-hub