47 Commits
Author SHA1 Message Date
casjay ce92d28ffb 📝 Update project spec and documentation 📝
- AI.md
2026-09-03 01:39:17 -04:00
casjay 44192c707c 🗃️ Update codebase 🗃️
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2026-08-02 20:42:52 -04:00
casjay e9d1633fd8 🐛 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:18:24 -04:00
casjay ab290b06be 📝 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:12:04 -04:00
casjay 793fe57f16 🗃️ Update codebase 🗃️
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2026-06-26 23:49:47 -04:00
casjay a4694782ba 🐛 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:40:41 -04:00
casjay 86759e3c0b 🐛 Update entrypoint.sh and functions library from current template 🐛
Stale copies called __initialize_default_templates, __initialize_config_dir,
and __initialize_data_dir which are not in the old functions library,
causing container startup failures. Replaced with current template
versions (202606041210-git) which no longer call those missing functions.
- rootfs/usr/local/bin/entrypoint.sh: update to current template
- rootfs/usr/local/etc/docker/functions/entrypoint.sh: update to current template

rootfs/usr/local/bin/entrypoint.sh
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2026-06-05 18:24:40 -04:00
casjay f8279504db 🐛 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:32:31 -04:00
casjay 7cf090c637 🐛 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:33:30 -04:00
casjay 78926d224a ♻️ Migrate ddns to /config/ source-of-truth architecture ♻️
Migrate ddns 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
- rootfs/usr/local/etc/docker/functions/entrypoint.sh: update to latest template
- rootfs/usr/local/etc/docker/init.d/*.sh: fix $(basename) UUOC; move inline comments above code lines
- rootfs/tmp/etc/: add named, dhcp, nginx, tor, named.conf, radvd.conf configs deployed to /etc/ at build time
- rootfs/tmp/usr/: add htdocs and named data files deployed to /usr/local/share/ at build time
- rootfs/usr/local/share/template-files/: delete; config now deployed via /tmp/etc/ and /tmp/usr/ at build time

rootfs/root/docker/setup/03-files.sh
rootfs/tmp/
rootfs/usr/local/etc/docker/functions/entrypoint.sh
rootfs/usr/local/share/template-files/config/dhcp/dhcpd4.conf
rootfs/usr/local/share/template-files/config/dhcp/dhcpd6.conf
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/config/named/certbot-update.conf
rootfs/usr/local/share/template-files/config/named/common/001-soa.inc
rootfs/usr/local/share/template-files/config/named/common/002-nameservers.inc
rootfs/usr/local/share/template-files/config/named/common/003-dns.inc
rootfs/usr/local/share/template-files/config/named.conf
rootfs/usr/local/share/template-files/config/named/config/0000-logging.conf
rootfs/usr/local/share/template-files/config/named/config/0001-rndc.conf
rootfs/usr/local/share/template-files/config/named/config/0001-rndc.key
rootfs/usr/local/share/template-files/config/named/config/0002-acl.conf
rootfs/usr/local/share/template-files/config/named/hosted/host.ddns.conf
rootfs/usr/local/share/template-files/config/named/hosted/ip.ddns.conf
rootfs/usr/local/share/template-files/config/named/keys/managed-keys.bind
rootfs/usr/local/share/template-files/config/named/zones/000-hint.conf
rootfs/usr/local/share/template-files/config/named/zones/000-localdomain.zone
rootfs/usr/local/share/template-files/config/named/zones/000-localhost.zone
rootfs/usr/local/share/template-files/config/named/zones/000-tor.zone
rootfs/usr/local/share/template-files/config/named/zones/001-ddns.zone
rootfs/usr/local/share/template-files/config/nginx/mime.types
rootfs/usr/local/share/template-files/config/nginx/nginx.conf
rootfs/usr/local/share/template-files/config/nginx/nginx.ssl.conf
rootfs/usr/local/share/template-files/config/radvd.conf
rootfs/usr/local/share/template-files/config/tor/torrc
rootfs/usr/local/share/template-files/data/.gitkeep
rootfs/usr/local/share/template-files/data/htdocs/www/css/.gitkeep
rootfs/usr/local/share/template-files/data/htdocs/www/images/.gitkeep
rootfs/usr/local/share/template-files/data/htdocs/www/index.php
rootfs/usr/local/share/template-files/data/htdocs/www/js/.gitkeep
rootfs/usr/local/share/template-files/data/named/data/hint
rootfs/usr/local/share/template-files/data/named/data/localdomain.conf
rootfs/usr/local/share/template-files/data/named/data/localhost4.rev
rootfs/usr/local/share/template-files/data/named/data/localhost6.rev
rootfs/usr/local/share/template-files/data/named/data/localhost.zone
rootfs/usr/local/share/template-files/data/named/dynamic/ddns.zone
rootfs/usr/local/share/template-files/data/named/dynamic/inc/cnames.ddns.zone
rootfs/usr/local/share/template-files/data/named/dynamic/inc/static.ipv4.arpa.rev
rootfs/usr/local/share/template-files/data/named/dynamic/inc/static.ipv4.ddns.zone
rootfs/usr/local/share/template-files/data/named/dynamic/inc/static.ipv6.arpa.rev
rootfs/usr/local/share/template-files/data/named/dynamic/inc/static.ipv6.ddns.zone
rootfs/usr/local/share/template-files/data/named/dynamic/inc/static.sso.ddns.zone
rootfs/usr/local/share/template-files/data/named/master/.gitkeep
rootfs/usr/local/share/template-files/data/named/reverse/in-addr.arpa.rev
rootfs/usr/local/share/template-files/data/named/reverse/ip6.arpa.rev
rootfs/usr/local/share/template-files/data/named/slaves/.gitkeep
rootfs/usr/local/share/template-files/defaults/.gitkeep
2026-06-04 14:49:00 -04:00
casjay ae22548092 🗃️ Updated the functions file 🗃️
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2026-05-24 12:26:40 -04:00
casjay 3b4f138ba6 🗃️ Removed the .claude/settings.local.json 🗃️
Dockerfile
.dockerignore
.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:06:13 -04:00
casjay ac8efca7ac 🗃️ 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:11:32 -04:00
casjay 6cbd0cb6cb 🗃️ Update codebase 🗃️
rootfs/usr/local/bin/entrypoint.sh
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2025-11-30 16:25:25 -05:00
casjay 5b967ee369 📝 Update entrypoint script for improved functionality 📝
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2025-11-30 16:01:09 -05:00
casjay bacae7572d 🗃️ 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:36:39 -05:00
casjay ebba323048 🗃️ Updated Dockerfile* and .env.scripts* 🗃️
Dockerfile
rootfs/usr/local/bin/entrypoint.sh
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2025-11-29 11:04:12 -05:00
casjay 08ac01d9c2 🗃️ Fixed the .gitignore file 🗃️
.gitignore
2025-11-23 08:47:27 -05:00
casjay 776217662c 🗃️ Fixed the .gitignore file 🗃️
.gitignore

Dockerfile
2025-10-31 12:33:46 -04:00
casjay fbc5fc0bf3 🗃️ Fixed the .gitignore file 🗃️
.gitignore
2025-10-22 13:05:17 -04:00
casjay 78952e115e 🗃️ Committing everything that changed 🗃️
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2025-09-20 06:39:01 -04:00
casjay 1637944c2f 🗃️ Committing everything that changed 🗃️
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2025-09-20 05:27:21 -04:00
casjay cc260f8d0c 🗃️ Committing everything that changed 🗃️
Dockerfile
.dockerignore
.env.scripts
.gitattributes
.gitignore
rootfs/.gitea/
rootfs/root/
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/
rootfs/usr/local/share/template-files/config/.gitkeep
rootfs/usr/local/share/template-files/data/.gitkeep
2025-09-16 19:37:08 -04:00
casjay 903495a3f5 🗃️ Committing everything that changed 🗃️
.env.scripts
2025-09-16 10:22:23 -04:00
casjay be56d85077 🗃️ Committing everything that changed 🗃️
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2025-09-16 09:09:38 -04:00
casjay 9bf4c975b5 🗃️ Committing everything that changed 🗃️
Jenkinsfile
rootfs/usr/local/bin/entrypoint.sh
rootfs/usr/local/etc/
2025-09-05 13:35:26 -04:00
casjay 249c15e966 🗃️ Committing everything that changed 🗃️
rootfs/usr/local/share/template-files/data/htdocs/www/index.php
2025-06-13 13:27:21 -04:00
casjay 72a9c045d6 🗃️ Committing everything that changed 🗃️
rootfs/usr/local/share/template-files/data/htdocs/www/index.php
2025-06-13 13:02:52 -04:00
casjay 54b05871ca 🗃️ Changed the statuses domains 🗃️
rootfs/usr/local/share/template-files/data/htdocs/www/index.php
2025-05-21 13:29:12 -04:00
casjay bf9db80f3b 🗃️ Committing everything that changed 🗃️
Dockerfile
2025-02-04 10:59:15 -05:00
casjay 0854b97460 🗃️ Committing everything that changed 🗃️
.gitea/workflows/docker.yaml
2025-02-04 09:28:40 -05:00
casjay 67a84b4a92 🗃️ Committing everything that changed 🗃️
rootfs/usr/local/share/template-files/data/htdocs/www/index.php
2024-09-20 08:23:27 -04:00
casjay 847ef16210 Added: rootfs/usr/local/bin/entrypoint.sh
Added: rootfs/usr/local/bin/entrypoint.sh
2024-08-01 16:07:44 -04:00
casjay 2bf9c1d219 Added: .gitea/
Added: .gitea/
2024-08-01 16:07:44 -04:00
casjay 6547b973b2 Added: Dockerfile
Added: Dockerfile
2024-08-01 16:07:43 -04:00
casjay ad65d99a68 🗃️ Committing everything that changed 🗃️
rootfs/usr/local/share/template-files/data/htdocs/www/index.php
2024-05-22 08:20:01 -04:00
casjay 40605031b4 🗃️ Updated domain names 🗃️
Dockerfile
LICENSE.md
rootfs/usr/local/bin/entrypoint.sh
rootfs/usr/local/bin/start-ddns.sh
rootfs/usr/local/share/template-files/data/htdocs/www/index.php
2023-08-10 19:54:48 -04:00
casjay 6e9f445c8e 🔵 Added .gitattributes 🔵 2023-07-29 12:34:53 -04:00
casjay e48a093175 🗃️ Updated static server 🗃️
rootfs/usr/local/share/template-files/data/htdocs/www/index.php
2023-04-29 22:49:17 -04:00
casjay 706e604717 🗃️ Committing everything that changed 🗃️ 2023-01-08 11:19:38 -05:00
casjay c3af8d957d 🗃️ Committing everything that changed 🗃️ 2022-10-20 19:46:15 -04:00
casjay cbdd2f900f 🗃️ Committing everything that changed 🗃️ 2022-10-11 16:07:53 -04:00
casjay c107bff4ba 🗃️ Committing everything that changed 🗃️ 2022-10-07 18:47:13 -04:00
casjay 0cf1ea4889 🗃️ Committing everything that changed 🗃️ 2022-10-03 10:31:10 -04:00
Jason 5924d51507 🗃️ modified: .gitignore 🗃️ 2022-07-09 13:21:50 -04:00
Jason ef747eec01 🗃️ modified: Dockerfile 🗃️ 2022-07-09 13:21:49 -04:00
Jason b8b670b11b 🦈🏠🐜 Initial Commit 🐜🦈🏠 2022-02-14 16:44:26 -05:00