25 Commits

Author SHA1 Message Date
jason affa6b11bb 🐛 Fix __exec_command dropping all arguments after the first 🐛
Build and Push 18.04 / build (push) Has been cancelled
Build and Push 20.04 / build (push) Has been cancelled
Build and Push 22.04 / build (push) Has been cancelled
Build and Push 24.04 / build (push) Has been cancelled
Build and Push 24.10 / build (push) Has been cancelled
Build and Push 26.04 / build (push) Has been cancelled
Build and Push / build (push) Has been cancelled
__exec_command was using ${arg:-} which only captured the first element
of the args array, then ran it through "$shell" $pre_exec "$cmdExec"
which effectively discarded everything after $1.
Running `docker run image sh -c 'go build ...'` would:
1. Set arg=("sh" "-c" "go build ...")
2. Set cmdExec="sh" (only first element)
3. Run bash --login -c "sh" (dropping -c and the actual command)
This broke any Makefile GO_DOCKER pattern that relied on passing multi-arg
commands. Simplified to just `exec "$@"` which passes all args through.
- rootfs/usr/local/etc/docker/functions/entrypoint.sh: rewrite __exec_command

rootfs/usr/local/etc/docker/functions/entrypoint.sh
2026-06-29 00:46:54 -04:00
jason 29a0d95f58 🐛 Fix entrypoint crash on __setup_mta ssmtp failure 🐛
Build and Push 18.04 / build (push) Failing after 2s
Build and Push 20.04 / build (push) Failing after 3s
Build and Push 22.04 / build (push) Failing after 2s
Build and Push 24.04 / build (push) Failing after 2s
Build and Push 24.10 / build (push) Failing after 2s
Build and Push 26.04 / build (push) Failing after 2s
Build and Push / build (push) Failing after 3s
__setup_mta calls __find_replace on /etc/ssmtp/revaliases which returns
1 when the symlink it creates is broken. With set -o pipefail active the
non-zero return kills the entire entrypoint before any command can run.
ssmtp is not installed in this image and email delivery is not a feature
of this image, so the MTA setup failure is irrelevant. Guard the call
with || true so initialization continues regardless.
- rootfs/usr/local/bin/entrypoint.sh: __setup_mta || true (non-fatal)

rootfs/usr/local/bin/entrypoint.sh
2026-06-27 19:19:22 -04:00
jason 71078d32a7 🗃️ Update codebase 🗃️
Build and Push 18.04 / build (push) Failing after 2s
Build and Push 22.04 / build (push) Failing after 2s
Build and Push 20.04 / build (push) Failing after 1s
Build and Push 24.04 / build (push) Failing after 4s
Build and Push 24.10 / build (push) Failing after 5s
Build and Push / build (push) Failing after 4s
Build and Push 26.04 / build (push) Failing after 4s
rootfs/usr/local/bin/entrypoint.sh
2026-06-26 23:33:28 -04:00
jason 86d81507e3 🐛 Fix duplicate 2>/dev/null in entrypoint.sh /etc/hosts line 🐛
Build and Push 22.04 / build (push) Failing after 7s
Build and Push 24.10 / build (push) Failing after 4s
Build and Push 26.04 / build (push) Failing after 3s
Build and Push / build (push) Failing after 5s
Build and Push 24.04 / build (push) Failing after 12m0s
Build and Push 20.04 / build (push) Failing after 12m31s
Build and Push 18.04 / build (push) Failing after 12m44s
The grep -vF line that appends /usr/local/etc/hosts entries had a
duplicate 2>/dev/null redirect after the append operator, which is
a no-op but clutters the script. Synced from template.
- rootfs/usr/local/bin/entrypoint.sh: remove duplicate 2>/dev/null
from grep -vF /etc/hosts append line; bump version to 202606261500-git

rootfs/usr/local/bin/entrypoint.sh
2026-06-26 18:42:15 -04:00
jason c48a671143 🗃 Modified: rootfs/usr/local/etc/resolv.conf 🗃
Modified: rootfs/usr/local/etc/resolv.conf
2026-06-26 15:46:36 -04:00
jason 8e00ad931d 🗃 Modified: rootfs/usr/local/etc/docker/functions/entrypoint.sh 🗃
Modified: rootfs/usr/local/etc/docker/functions/entrypoint.sh
2026-06-26 15:46:36 -04:00
jason 502e5b24d9 🗃️ Update codebase 🗃️
ubuntu/
2026-06-10 14:17:31 -04:00
jason c547a714cd 🐛 Fix resolv.conf: add search . and ndots:0 to block domain search 🐛
--domainname on the container sets the kernel domainname, which c-ares
uses to infer a search domain even when /etc/resolv.conf has no search
line. This caused c-ares to query github.com.casjay.work AAAA and get
the host's own IPv6 address, routing all outbound HTTPS to the local
nginx instead of the real server.
Adding 'search .' and 'options ndots:0' explicitly disables search
domain inference regardless of the kernel domainname setting.
- rootfs/usr/local/etc/resolv.conf: add search . and options ndots:0

rootfs/usr/local/etc/resolv.conf
2026-06-05 14:36:33 -04:00
jason 7b58b8945d 🐛 Fix container DNS: ship resolv.conf without search domain 🐛
Hosts with a search domain cause containers to inherit it. When the
zone has a wildcard AAAA record, public hostnames resolve to the host's
own IPv6 address instead of the real server, breaking all outbound
HTTPS and DNS from inside the container.
The entrypoint already has a hook: if /usr/local/etc/resolv.conf
exists it replaces /etc/resolv.conf at container startup. Ship a
clean resolv.conf with Cloudflare + Google DNS and no search domain
so container DNS is always correct regardless of host configuration.
- rootfs/usr/local/etc/resolv.conf: new file — clean DNS, no search domain

rootfs/usr/local/etc/resolv.conf
2026-06-05 12:37:21 -04:00
jason 9b2cbc6764 🔧 Add Gitea Actions workflow files 🔧
Generate .gitea/workflows/build*.yml from updated actions.template:
latest build uses yymm + latest tags (latest pushed last); versioned
builds hardcode the version tag.
?? .gitea/

.gitea/
2026-06-04 16:26:47 -04:00
jason 1d030f9aba 🔧 Deleted workflow files 🔧
.gitea/workflows/docker.18.04.yaml
.gitea/workflows/docker.20.04.yaml
.gitea/workflows/docker.22.04.yaml
.gitea/workflows/docker.24.04.yaml
.gitea/workflows/docker.24.10.yaml
.gitea/workflows/docker.yaml
.github/workflows/docker.18.04.yaml
.github/workflows/docker.20.04.yaml
.github/workflows/docker.22.04.yaml
.github/workflows/docker.24.04.yaml
.github/workflows/docker.24.10.yaml
.github/workflows/docker.yaml
2026-06-04 16:22:13 -04:00
jason ca2fe35c75 🔧 Update docker functions/entrypoint.sh to latest 🔧
Synced from casjay-dotfiles templates. Updated functions now check
for existence before copying template-files directories, skipping
gracefully when they are absent.
- rootfs/usr/local/etc/docker/functions/entrypoint.sh: updated to latest

rootfs/usr/local/etc/docker/functions/entrypoint.sh
2026-06-04 11:52:25 -04:00
jason aa2b2c9ece 🗑️ Remove unused template-files from rootfs 🗑️
The init framework now checks for existence before copying; empty
placeholder directories are no longer needed in the image layer.
- rootfs/usr/local/share/template-files/: removed entirely

rootfs/usr/local/share/template-files/config/env/default.sample
rootfs/usr/local/share/template-files/config/env/examples/00-directory.sh
rootfs/usr/local/share/template-files/config/env/examples/addresses.sh
rootfs/usr/local/share/template-files/config/env/examples/certbot.sh
rootfs/usr/local/share/template-files/config/env/examples/couchdb.sh
rootfs/usr/local/share/template-files/config/env/examples/dockerd.sh
rootfs/usr/local/share/template-files/config/env/examples/global.sh
rootfs/usr/local/share/template-files/config/env/examples/healthcheck.sh
rootfs/usr/local/share/template-files/config/env/examples/mariadb.sh
rootfs/usr/local/share/template-files/config/env/examples/mongodb.sh
rootfs/usr/local/share/template-files/config/env/examples/networking.sh
rootfs/usr/local/share/template-files/config/env/examples/other.sh
rootfs/usr/local/share/template-files/config/env/examples/php.sh
rootfs/usr/local/share/template-files/config/env/examples/postgres.sh
rootfs/usr/local/share/template-files/config/env/examples/redis.sh
rootfs/usr/local/share/template-files/config/env/examples/services.sh
rootfs/usr/local/share/template-files/config/env/examples/ssl.sh
rootfs/usr/local/share/template-files/config/env/examples/supabase.sh
rootfs/usr/local/share/template-files/config/env/examples/webservers.sh
rootfs/usr/local/share/template-files/config/env/examples/zz-entrypoint.sh
rootfs/usr/local/share/template-files/config/.gitkeep
rootfs/usr/local/share/template-files/data/.gitkeep
rootfs/usr/local/share/template-files/defaults/.gitkeep
2026-06-04 11:21:25 -04:00
jason bacfd7daa8 🐛 Fix apt mirror URLs in EOL and bootstrap Dockerfiles 🐛
18.04 and 20.04 were pointing to old-releases.ubuntu.com for bionic/focal,
which returns 404s (those releases have been removed from old-releases).
24.10 arm64 was using old-releases.ports.ubuntu.com which doesn't exist —
old-releases.ubuntu.com serves all architectures.
26.04 was trying to pull casjaysdev/ubuntu:26.04 as its base, causing a
chicken-and-egg failure since that image hasn't been built yet.
- Dockerfile.18.04: switch amd64 mirror to archive.ubuntu.com/security.ubuntu.com, arm64 to ports.ubuntu.com/ubuntu-ports
- Dockerfile.20.04: same mirror fix as 18.04 for focal
- Dockerfile.24.10: unify arm64 old-releases to old-releases.ubuntu.com/ubuntu (no ports variant exists)
- Dockerfile.26.04: change PULL_URL from casjaysdev/ubuntu to ubuntu to bootstrap from official base image

Dockerfile.18.04
Dockerfile.20.04
Dockerfile.24.10
Dockerfile.26.04
2026-05-29 14:21:51 -04:00
jason 32faf5eb1b 🔧 Update scripts, remove certbot, add CA cert update 🔧
Update all container scripts to 202605241245-git, remove certbot from
all package lists, and add CA certificate update step after install.
- .env.scripts*: remove certbot from ENV_PACKAGES (all 7 version files)
- Dockerfile*: remove certbot from PACK_LIST (all 7 version Dockerfiles)
- rootfs/root/docker/setup/00-init.sh: updated to latest template
- rootfs/root/docker/setup/01-system.sh: updated to latest template
- rootfs/root/docker/setup/02-packages.sh: add update-ca-certificates/update-ca-trust step
- rootfs/root/docker/setup/03-files.sh: updated to latest template
- rootfs/root/docker/setup/04-users.sh: updated to latest template
- rootfs/root/docker/setup/05-custom.sh: updated to latest template
- rootfs/root/docker/setup/06-post.sh: updated to latest template
- rootfs/root/docker/setup/07-cleanup.sh: updated to latest template
- rootfs/usr/local/bin/entrypoint.sh: updated to 202605241245-git
- rootfs/usr/local/bin/pkmgr: updated to 202605241245-git
- rootfs/usr/local/etc/docker/functions/entrypoint.sh: updated to 202605241245-git

Dockerfile
Dockerfile.18.04
Dockerfile.20.04
Dockerfile.22.04
Dockerfile.24.04
Dockerfile.24.10
Dockerfile.26.04
.env.scripts
.env.scripts.18.04
.env.scripts.20.04
.env.scripts.22.04
.env.scripts.24.04
.env.scripts.24.10
.env.scripts.26.04
rootfs/root/docker/setup/00-init.sh
rootfs/root/docker/setup/01-system.sh
rootfs/root/docker/setup/02-packages.sh
rootfs/root/docker/setup/03-files.sh
rootfs/root/docker/setup/04-users.sh
rootfs/root/docker/setup/05-custom.sh
rootfs/root/docker/setup/06-post.sh
rootfs/root/docker/setup/07-cleanup.sh
rootfs/usr/local/bin/entrypoint.sh
rootfs/usr/local/bin/pkmgr
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2026-05-24 21:42:54 -04:00
jason 88d6d1191e 🗃️ rootfs: shield internal entrypoint PID files from /run/*.pid sweeps 🗃️
Update the embedded entrypoint copies in rootfs/ to match the
upstream template change. Internal state files renamed to dotfiles
so they're not matched by `/run/*.pid` cleanup globs:
- /run/init.d/entrypoint.pid -> /run/.entrypoint.pid
- /run/no_exit.pid -> /run/.no_exit.pid
- /run/backup.pid -> /run/.backup.pid
- /run/__start_init_scripts.pid -> /run/.start_init_scripts.pid
Per-service PIDs in /run/init.d/ are unchanged.

rootfs/usr/local/bin/copy
rootfs/usr/local/bin/entrypoint.sh
rootfs/usr/local/bin/healthcheck
rootfs/usr/local/bin/symlink
rootfs/usr/local/etc/docker/functions/entrypoint.sh
rootfs/usr/local/share/template-files/config/env/default.sample
rootfs/usr/local/share/template-files/config/env/examples/zz-entrypoint.sh
2026-05-05 19:14:08 -04:00
jason 86b5f5a4e6 🔧 Update configuration files 🔧
Dockerfile
Dockerfile.18.04
Dockerfile.20.04
Dockerfile.22.04
Dockerfile.24.04
Dockerfile.24.10
Dockerfile.26.04
dockerfs/root/docker/setup/00-init.sh
dockerfs/root/docker/setup/01-system.sh
dockerfs/root/docker/setup/02-packages.sh
dockerfs/root/docker/setup/03-files.sh
dockerfs/root/docker/setup/04-users.sh
dockerfs/root/docker/setup/05-custom.sh
dockerfs/root/docker/setup/06-post.sh
dockerfs/root/docker/setup/07-cleanup.sh
dockerfs/usr/local/bin/entrypoint.sh
dockerfs/usr/local/bin/pkmgr
dockerfs/usr/local/etc/docker/functions/entrypoint.sh
dockerfs/usr/local/share/template-files/config/env/default.sample
dockerfs/usr/local/share/template-files/config/env/examples/00-directory.sh
dockerfs/usr/local/share/template-files/config/env/examples/addresses.sh
dockerfs/usr/local/share/template-files/config/env/examples/certbot.sh
dockerfs/usr/local/share/template-files/config/env/examples/couchdb.sh
dockerfs/usr/local/share/template-files/config/env/examples/dockerd.sh
dockerfs/usr/local/share/template-files/config/env/examples/global.sh
dockerfs/usr/local/share/template-files/config/env/examples/healthcheck.sh
dockerfs/usr/local/share/template-files/config/env/examples/mariadb.sh
dockerfs/usr/local/share/template-files/config/env/examples/mongodb.sh
dockerfs/usr/local/share/template-files/config/env/examples/networking.sh
dockerfs/usr/local/share/template-files/config/env/examples/other.sh
dockerfs/usr/local/share/template-files/config/env/examples/php.sh
dockerfs/usr/local/share/template-files/config/env/examples/postgres.sh
dockerfs/usr/local/share/template-files/config/env/examples/redis.sh
dockerfs/usr/local/share/template-files/config/env/examples/services.sh
dockerfs/usr/local/share/template-files/config/env/examples/ssl.sh
dockerfs/usr/local/share/template-files/config/env/examples/supabase.sh
dockerfs/usr/local/share/template-files/config/env/examples/webservers.sh
dockerfs/usr/local/share/template-files/config/env/examples/zz-entrypoint.sh
dockerfs/usr/local/share/template-files/config/.gitkeep
dockerfs/usr/local/share/template-files/data/.gitkeep
dockerfs/usr/local/share/template-files/defaults/.gitkeep
.env.scripts.26.04
README.md
rootfs/usr/local/bin/copy
rootfs/usr/local/bin/symlink
2026-05-05 14:31:29 -04:00
jason 66072331d9 🔧 Fix apt sources.list for multi-arch Ubuntu 18.04 support 🔧
- Replace sed-based old-releases redirect with architecture-aware mirror selection
- Use official archive.ubuntu.com for amd64/i386 and ports.ubuntu.com for other architectures
- Rewrite sources.list directly with explicit bionic, bionic-updates, bionic-backports, and bionic-security entries
- Ensures correct package sources are used without relying on old-releases fallback

Dockerfile.18.04
2026-05-04 12:52:42 -04:00
jason 28cfb2baa6 🔧 Update configuration files 🔧
.gitea/workflows/docker.18.04.yaml
.gitea/workflows/docker.20.04.yaml
.gitea/workflows/docker.22.04.yaml
.gitea/workflows/docker.24.04.yaml
.gitea/workflows/docker.24.10.yaml
.gitea/workflows/docker.yaml
.github/workflows/docker.18.04.yaml
.github/workflows/docker.20.04.yaml
.github/workflows/docker.22.04.yaml
.github/workflows/docker.24.04.yaml
.github/workflows/docker.24.10.yaml
.github/workflows/docker.yaml
2026-01-29 14:21:53 -05:00
jason 110aee83a4 🔧 Updated workflows 🔧
.gitea/workflows/docker.18.04.yaml
.gitea/workflows/docker.20.04.yaml
.gitea/workflows/docker.22.04.yaml
.gitea/workflows/docker.24.04.yaml
.gitea/workflows/docker.24.10.yaml
.gitea/workflows/docker.yaml
.github/workflows/docker.18.04.yaml
.github/workflows/docker.20.04.yaml
.github/workflows/docker.22.04.yaml
.github/workflows/docker.24.04.yaml
.github/workflows/docker.24.10.yaml
.github/workflows/docker.yaml
2026-01-16 00:16:03 -05:00
jason 9ee5b6ffea 🗃️ Updated workflows and moved rootfs 🗃️
Dockerfile
Dockerfile.18.04
Dockerfile.20.04
Dockerfile.22.04
Dockerfile.24.04
Dockerfile.24.10
dockerfs/
.gitea/workflows/docker.18.04.yaml
.gitea/workflows/docker.20.04.yaml
.gitea/workflows/docker.22.04.yaml
.gitea/workflows/docker.24.04.yaml
.gitea/workflows/docker.24.10.yaml
.gitea/workflows/docker.yaml
.github/
README.md
rootfs/root/docker/setup/00-init.sh
rootfs/root/docker/setup/01-system.sh
rootfs/root/docker/setup/02-packages.sh
rootfs/root/docker/setup/03-files.sh
rootfs/root/docker/setup/04-users.sh
rootfs/root/docker/setup/05-custom.sh
rootfs/root/docker/setup/06-post.sh
rootfs/root/docker/setup/07-cleanup.sh
rootfs/usr/local/bin/entrypoint.sh
rootfs/usr/local/bin/pkmgr
rootfs/usr/local/etc/docker/functions/entrypoint.sh
rootfs/usr/local/share/template-files/config/env/default.sample
rootfs/usr/local/share/template-files/config/env/examples/00-directory.sh
rootfs/usr/local/share/template-files/config/env/examples/addresses.sh
rootfs/usr/local/share/template-files/config/env/examples/certbot.sh
rootfs/usr/local/share/template-files/config/env/examples/couchdb.sh
rootfs/usr/local/share/template-files/config/env/examples/dockerd.sh
rootfs/usr/local/share/template-files/config/env/examples/global.sh
rootfs/usr/local/share/template-files/config/env/examples/healthcheck.sh
rootfs/usr/local/share/template-files/config/env/examples/mariadb.sh
rootfs/usr/local/share/template-files/config/env/examples/mongodb.sh
rootfs/usr/local/share/template-files/config/env/examples/networking.sh
rootfs/usr/local/share/template-files/config/env/examples/other.sh
rootfs/usr/local/share/template-files/config/env/examples/php.sh
rootfs/usr/local/share/template-files/config/env/examples/postgres.sh
rootfs/usr/local/share/template-files/config/env/examples/redis.sh
rootfs/usr/local/share/template-files/config/env/examples/services.sh
rootfs/usr/local/share/template-files/config/env/examples/ssl.sh
rootfs/usr/local/share/template-files/config/env/examples/supabase.sh
rootfs/usr/local/share/template-files/config/env/examples/webservers.sh
rootfs/usr/local/share/template-files/config/env/examples/zz-entrypoint.sh
rootfs/usr/local/share/template-files/config/.gitkeep
rootfs/usr/local/share/template-files/data/.gitkeep
rootfs/usr/local/share/template-files/defaults/.gitkeep
2026-01-15 23:48:09 -05:00
jason 0564b3def3 🗃️ Update codebase 🗃️
rootfs/usr/local/bin/entrypoint.sh
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2025-11-30 18:27:45 -05:00
jason 13f63065c0 🗃️ Update codebase 🗃️
rootfs/usr/local/bin/entrypoint.sh
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2025-11-30 16:18:41 -05:00
jason 0f6a006e8e 🗃️ Fixed rootfs/** files 🗃️
Dockerfile
.env.scripts
rootfs/root/docker/setup/00-init.sh
rootfs/root/docker/setup/01-system.sh
rootfs/root/docker/setup/02-packages.sh
rootfs/root/docker/setup/03-files.sh
rootfs/root/docker/setup/04-users.sh
rootfs/root/docker/setup/05-custom.sh
rootfs/root/docker/setup/06-post.sh
rootfs/root/docker/setup/07-cleanup.sh
rootfs/usr/local/bin/copy
rootfs/usr/local/bin/entrypoint.sh
rootfs/usr/local/bin/symlink
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2025-11-29 11:56:17 -05:00
jason ad02568155 🦈🏠🐜 Initial Commit 🐜🦈🏠 2025-11-29 11:11:50 -05:00