- lib/common.sh: add write_readme helper. Every module now writes a README.md
into its ~/docker/<service>/ folder (self-documenting service folders).
- services/authelia.sh: SSO + 2FA portal, ported from the authelia-setup repo +
the monolith's working block (secrets + Argon2 hash generation, caddy_net,
Caddyfile forward-auth snippet + portal block, README). Guards against
clobbering an existing install.
- services/{filebrowser,ntfy,uptimekuma,portainer,watchtower}.sh: mechanical
migrations from the monolith, each with a README. Ports 8085/8090/3001/9443/—.
All pass bash -n; ./setup.sh --list shows them under homelab; dry-run run-one
exits 0 for each with real commands guarded.
https://claude.ai/code/session_017eA2qqq9jfF2tNtpUYL8vK
4.4 KiB
4.4 KiB
Changelog
All notable changes to this project. Versions follow MAJOR.MINOR.PATCH.
The project is pre-1.0 while the modular system reaches parity with the
monolithic ubuntu-post-install-*.sh scripts.
[0.9.6] - 2026-06-03
Added
- Per-service README generation. New
write_readmehelper inlib/common.sh; every module now writes aREADME.mdinto its~/docker/<service>/folder (what it is, access URL, start/stop, data location, reverse-proxy notes) — so each service folder is self-documenting. - Migrated 6 services from the monolith into modules (all in the
homelabgroup, each with a README):authelia— SSO + 2FA portal, ported from theauthelia-setuprepo + the monolith's working block: prompts for domain/SMTP, generates jwt/session/storage secrets + the admin Argon2 hash, writes compose/config/users, createscaddy_net, and injects the forward-auth snippet + portal block into the Caddyfile. Won't clobber an existing install.filebrowser(8085),ntfy(8090),uptimekuma(3001),portainer(9443),watchtower(no web port).
Notes
homelabgroup now: authelia, filebrowser, homeassistant, ntfy, portainer, uptimekuma, watchtower.- Remaining monolith services still to migrate: ActualBudget, ARM, AudioBookshelf, Caddy, CrowdSec, Emby, FindMyDevice, Frigate, Frigate-Notify, Immich, Jellyfin, Lyrion, MagicMirror, Mealie, MeshCentral, Traccar, ddclient, wg-easy.
[0.9.5] - 2026-06-03
Added
services/minecraft.sh(gaming) — full port of the standalonesetupminecraft.sh, converted to the per-service-folder model. Each server is its own~/docker/<instance>/with a standalone compose, so multiple servers run side by side (port auto-bumps 25565→25566…). Preserves all the niceties: Fabric/Quilt/Paper/Vanilla/Forge flavours, the live Modrinth version/mod-availability picker, curated mods, Vanilla Tweaks datapacks, whitelist UUID pre-population, LuckPerms bootstrap, Chunky pre-gen, playit.gg tunnel, generated MINECRAFT_NETWORKING.md / CLIENT_MODS.md, and the client-mods download web page (its own folder + compose).
Fixed
- Minecraft compose env-block emission (trailing-newline bug from the original
that glued
ports:onto the last env line — now valid YAML).
Notes
gaminggroup now:js99er,minecraft,wolf.- Still pending:
whitelistMinecraft helper; migrating the ~65 monolith services intoservices/.
[0.9.4] - 2026-06-03
The first versioned release. Introduces the modular post-install system so you can install the whole box at once or run a single service, with one source of truth (no per-service script duplication, nothing generated).
Added
setup.shdispatcher: interactive menu, run-one (sudo ./setup.sh <name>),--list,--dry-run,--unattended,--version.lib/common.sh: shared helpers (logging, prompts, ownership, Caddy wiring) and a self-registration service registry — one implementation of each.- Service modules (each its own
~/docker/<name>/folder + standalone compose):base— essential CLI packages, now including glow.glow— terminal markdown reader (charmbracelet), standalone too.homeassistant— bridge/host networking choice,trusted_proxiespre-seed.js99er(gaming) — self-hosted TI-99/4A emulator (Selkies launcher tie-in removed).wolf(gaming) — Games-on-Whales Moonlight streaming (wolf-pair dropped;pinworkflow kept).backup— Kopia encrypted backups (paths adapted to~/docker).
MODULAR.mddocumenting the architecture, how to add a module, migration status.- Service groups:
base/homelab/gaming/backup. glowalso added to the live-crowdsecmonolith scripts' essential packages.
Known gaps / next (0.9.5)
minecraftmodule (rich, multi-instance port ofsetupminecraft.sh) — not yet written; the background port hit a session limit.whitelistMinecraft helper not yet shipped.- ~65 services still live only in the monolith, to migrate into
services/.
Earlier history (pre-versioning)
- Removed Keycloak; standardized on Authelia for SSO.
- Added
-no-keycloakand-crowdsecscript tiers (originals kept as the evolution record). - CrowdSec replaces fail2ban in the
-crowdsectier (SSH + Caddy, geo + IP reputation, optional ntfy ban alerts). - Home Assistant added to the
-crowdsectier.