40 Commits
Author SHA1 Message Date
casjay 0d4edf5055 📝 Update project spec and documentation 📝
- AI.md
2026-09-03 01:43:13 -04:00
casjay 0a5eae26e4 🗃️ Update codebase 🗃️
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2026-08-02 20:45:00 -04:00
casjay 4b62ad43ab 🐛 Fix entrypoint hang and lost-interpreter bugs 🐛
- rootfs/usr/local/bin/entrypoint.sh:
  1. The "start all services" gate
     (`if [ "$START_SERVICES" = "yes" ] || [ -z "$1" ]`) always evaluated
     true on a first-run container regardless of $1, because
     START_SERVICES is force-set to "yes" whenever no PID file exists yet.
     Any command passed to `docker run` — `exec ...`, `sh -c ...`,
     `shell`, or an arbitrary program — was swallowed into the
     service-start+monitor branch before reaching the `case "$1"`
     statement that already handles those subcommands, hanging the
     container as a daemon instead of running the given command. Changed
     the condition to `if [ -z "$1" ]` so the daemon branch only fires
     when no command was given at all.
  2. The `*/bin/sh | */bin/bash | bash | sh | shell)` case branch
     unconditionally shifted $1 before `__exec_command "$@"` (a bare
     `exec "$@"`). For `docker run image sh -c 'cmd'` this turned the
     exec into `exec -c cmd` (command not found, exit 127) instead of
     `exec sh -c 'cmd'`. Split the branch: real interpreter names
     (*/bin/sh, */bin/bash, bash, sh) now pass through unshifted; the
     "shell" keyword (not a real interpreter) gets its own branch that
     shifts and prepends "sh" to any remaining args, or falls back to a
     bare `__exec_command` (exec bash -l) when none remain.
  Verified `bash -n` passes. Found and fixed upstream in
  dockersrc/go, confirmed identical in this repo's generated
  entrypoint.sh, and mechanically applied here with the same patch.
2026-07-27 23:30:05 -04:00
casjay e139966a5b 📝 Migrate /var/lib/srv docker paths to /srv in README 📝
Update volume mount examples and dockerHome variable from
the old /var/lib/srv/$USER/docker layout to /srv/$USER/docker.
- README.md: update volume path references to /srv/$USER/docker

README.md
rootfs/usr/local/bin/copy
rootfs/usr/local/bin/healthcheck
rootfs/usr/local/bin/symlink
2026-07-10 12:28:28 -04:00
casjay 318166ada9 🗃️ Update codebase 🗃️
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2026-06-26 23:52:47 -04:00
casjay 3cedf89778 🗃️ Update codebase 🗃️
rootfs/usr/local/bin/entrypoint.sh
2026-06-26 23:43:05 -04:00
casjay 450aa8cb40 🗃️ Update codebase 🗃️
rootfs/usr/local/bin/entrypoint.sh
2026-06-26 23:35:31 -04:00
casjay c0837e6496 🐛 Fix duplicate 2>/dev/null in entrypoint.sh /etc/hosts line 🐛
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:41:51 -04:00
casjay 4a3296d79d 🐛 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:35:44 -04:00
casjay 37acd48dbc 🐛 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:36:37 -04:00
casjay 9f81b50aa9 ♻️ Migrate webmin to /config/ source-of-truth architecture ♻️
Migrate webmin Docker image to the new build-time config architecture.
- rootfs/root/docker/setup/03-files.sh: rewrite to canonical form with /tmp/bin, /tmp/var, /tmp/etc, /tmp/usr handlers; remove template-files copy block
- rootfs/usr/local/etc/docker/functions/entrypoint.sh: update to latest template with __init_service_conf, __find_php_ini, __find_php_bin helpers
- rootfs/usr/local/etc/docker/init.d/*.sh: fix $(basename) UUOC → ${var##*/}; move inline comments above code lines; remove commented-out dead code
- rootfs/usr/local/share/template-files/: delete entire directory; config files now deployed via /tmp/etc/ at build time

rootfs/root/docker/setup/03-files.sh
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-06-04 14:49:55 -04:00
casjay 91e8f3772e 🗃️ Updated the functions file 🗃️
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2026-05-24 12:28:01 -04:00
casjay f955a10524 🗃️ Removed the .claude/settings.local.json 🗃️
Dockerfile
.env.scripts
.gitattributes
.gitea/workflows/docker.yaml
.gitignore
LICENSE.md
README.md
rootfs/usr/local/bin/entrypoint.sh
rootfs/usr/local/bin/pkmgr
2026-05-12 20:09:48 -04:00
casjay 59e760c7cd 🗃️ 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/entrypoint.sh
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:13:32 -04:00
casjay c46b84146d 🗃️ readme: rename rootfs/ to volumes/ for compose context 🗃️
Aligns README install/run snippets with the new convention split:
rootfs/ for Dockerfile-build content (image filesystem), volumes/
for docker-compose host bind-mounts. Compose mounts, host bind
paths, and runtime data dirs are renamed; Dockerfile COPY/ADD
sources (where present) are preserved.

README.md
2026-05-05 14:36:18 -04:00
casjay 3e5c2b4aed 🗃️ Update codebase 🗃️
rootfs/usr/local/bin/entrypoint.sh
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2025-11-30 16:26:22 -05:00
casjay a8398ce65a ...🐳 Enhancement: Modifications in entrypoint.sh script (rootfs/usr/loca...
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2025-11-30 16:09:11 -05:00
casjay c9aa60a63d 🗃️ Fixed the entrypoint scripts 🗃️
rootfs/usr/local/bin/entrypoint.sh
rootfs/usr/local/etc/docker/functions/entrypoint.sh
rootfs/usr/local/share/template-files/config/env/default.sample
2025-11-29 12:37:35 -05:00
casjay 22b7f57c3a 🗃️ Updated Dockerfile* and .env.scripts* 🗃️
Dockerfile
rootfs/usr/local/bin/entrypoint.sh
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2025-11-29 11:05:15 -05:00
casjay 7b3369ca2a 🗃️ Fixed the .gitignore file 🗃️
.gitignore
2025-11-23 08:48:32 -05:00
casjay d0f88cdc3e 🗃️ Fixed the .gitignore file 🗃️
.gitignore

Dockerfile
2025-10-31 12:34:41 -04:00
casjay b2c3aa1053 🗃️ Fixed the .gitignore file 🗃️
.gitignore
2025-10-22 13:06:30 -04:00
casjay 3c6b9cfd41 🗃️ Committing everything that changed 🗃️
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2025-09-20 06:40:14 -04:00
casjay 1bf578baa4 🗃️ Committing everything that changed 🗃️
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2025-09-20 05:28:26 -04:00
casjay 391299ff5c 🗃️ Committing everything that changed 🗃️
Dockerfile
.env.scripts
.gitattributes
.gitignore
rootfs/.gitea/
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
2025-09-16 19:39:04 -04:00
casjay a4fb4a3f54 🗃️ Committing everything that changed 🗃️
.env.scripts
2025-09-16 10:23:59 -04:00
casjay 38ac41e2a2 🗃️ Committing everything that changed 🗃️
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2025-09-16 09:11:23 -04:00
casjay c7d0b7c789 🗃️ Committing everything that changed 🗃️
Dockerfile
2025-09-05 22:19:05 -04:00
casjay d7d96156a1 🗃️ Committing everything that changed 🗃️
Jenkinsfile
rootfs/usr/local/bin/entrypoint.sh
rootfs/usr/local/etc/
2025-09-05 13:37:19 -04:00
casjay adf4520264 🗃️ Committing everything that changed 🗃️
.gitea/workflows/docker.yaml
2025-02-04 09:30:30 -05:00
casjay ae74becf76 🗃️ Committing everything that changed 🗃️
.gitea/
2025-02-04 09:26:51 -05:00
casjay fa8638b02b 🗃️ Committing everything that changed 🗃️
Dockerfile
.env.scripts
rootfs/usr/local/share/template-files/config/env/default.sample
2025-02-03 15:20:24 -05:00
casjay 00ff9b3d4c 🗃️ Committing everything that changed 🗃️
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2025-01-10 23:17:26 -05:00
casjay 41447b0f2a 🗃️ Committing everything that changed 🗃️
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2024-09-24 11:04:18 -04:00
casjay 934c9e0d7f 🗃️ Committing everything that changed 🗃️
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2024-09-07 21:03:05 -04:00
casjay 41a4c66f35 🗃️ Committing everything that changed 🗃️
rootfs/root/docker/setup/05-custom.sh
2024-09-07 15:20:16 -04:00
casjay ded1fdf274 🗃️ Committing everything that changed 🗃️
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2024-09-07 14:59:04 -04:00
casjay edf37e8312 🗃️ Committing everything that changed 🗃️
rootfs/root/docker/setup/04-users.sh
2024-09-07 14:43:49 -04:00
casjay 7872350c62 🗃️ Committing everything that changed 🗃️
Dockerfile
.env.scripts
2024-09-07 14:29:25 -04:00
casjay 5731478ad9 🦈🏠🐜 Initial Commit 🐜🦈🏠 2024-09-07 14:27:50 -04:00