From 9f0ff0bb9f733834169fd11a3bacfb2ef31164fc Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 8 Jun 2026 18:53:17 +0000 Subject: [PATCH] Add write_readme, Caddy, and start prompt to wolf/homeassistant/js99er/minecraft MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - wolf.sh: add Authelia SSO check, configure_caddy_for_service, write_readme, and prompt to start Wolf (it had none of these) - homeassistant.sh: add write_readme with access URL and manage commands - js99er.sh: add write_readme with access URL and manage commands - minecraft.sh: add write_readme with manage and backup commands Completes the service audit — all 49 services now have full interactive setup, standalone bootstrap, and self-documenting README in the deploy directory. https://claude.ai/code/session_014CCYqVwW6d6f5dw1qRokYt --- services/homeassistant.sh | 19 ++++++++++++++ services/js99er.sh | 19 +++++++++++++- services/minecraft.sh | 19 ++++++++++++++ services/wolf.sh | 55 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 111 insertions(+), 1 deletion(-) diff --git a/services/homeassistant.sh b/services/homeassistant.sh index 7087d15..56317c3 100644 --- a/services/homeassistant.sh +++ b/services/homeassistant.sh @@ -242,6 +242,25 @@ HA_CONFIG configure_caddy_for_service "Home Assistant" "homeassistant:8123" "home" fi + write_readme "$HOMEASSISTANT_DIR" << MD +# Home Assistant + +Home automation hub. Built-in auth — no Authelia needed. + +## Access +- URL: http://localhost:8123 +- First run: create your admin account through the onboarding wizard + +## Manage +\`\`\`bash +cd $HOMEASSISTANT_DIR +docker compose up -d # start +docker compose down # stop +docker compose logs -f # logs +docker compose pull && docker compose up -d # update +\`\`\` +MD + local START_HA="" prompt_yn "Start Home Assistant now? (y/n):" "y" START_HA if [ "$START_HA" = "y" ] || [ "$START_HA" = "Y" ]; then diff --git a/services/js99er.sh b/services/js99er.sh index 5377027..b68ed73 100644 --- a/services/js99er.sh +++ b/services/js99er.sh @@ -442,7 +442,24 @@ COMPOSE fi fi - # ── 7. Access summary ──────────────────────────────────────────────────── + write_readme "$JS99ER_DIR" << MD +# js99er — TI-99/4A Emulator + +Browser-based TI-99/4A emulator. No built-in auth — protect with Authelia if exposing externally. + +## Access +- URL: http://localhost:${JS99ER_PORT} +- Online (no install): https://js99er.net + +## Manage +\`\`\`bash +cd $JS99ER_DIR +docker compose up -d --build # start (or rebuild) +docker compose down # stop +docker compose logs -f # logs +\`\`\` +MD + echo "" echo " Access at: http://localhost:${JS99ER_PORT}" echo " If you set a domain above, it is also reachable via that domain (HTTPS)." diff --git a/services/minecraft.sh b/services/minecraft.sh index a855b56..0c1d033 100644 --- a/services/minecraft.sh +++ b/services/minecraft.sh @@ -2489,6 +2489,25 @@ NETEOF echo " Run: sudo ./setup.sh backup" echo "" + write_readme "$MC_DIR" << MD +# Minecraft — ${MC_NAME} + +## Manage +\`\`\`bash +cd $MC_DIR +docker compose up -d --build # start (builds image on first run) +docker compose down # stop +docker compose logs -f # logs +docker compose pull && docker compose up -d --build # update +\`\`\` + +## Backups +World data lives in \`./data\` — covered by Kopia/Borg if installed. +\`\`\`bash +sudo ./setup.sh backup +\`\`\` +MD + # ── Optional: start server and run pre-gen now ────────────────────────────── local START_MC="" prompt_yn "Start the Minecraft server now? (first build takes a few minutes) (y/n) [y]:" "y" START_MC diff --git a/services/wolf.sh b/services/wolf.sh index 0573129..aee0d4d 100644 --- a/services/wolf.sh +++ b/services/wolf.sh @@ -927,6 +927,61 @@ PYEOF echo " Set up automatic backups with the backup module:" echo " sudo ./setup.sh backup" echo "" + # Wolf's web UI (pair/manage) has no built-in auth — protect with Authelia if available + local WOLF_EXTRA_BLOCK="" + if [ -d "$DOCKER_DIR/authelia" ]; then + local _use_auth="" + prompt_yn "Protect Wolf web UI with Authelia SSO? (y/n):" "y" _use_auth + [[ "$_use_auth" =~ ^[Yy]$ ]] && WOLF_EXTRA_BLOCK=" import authelia" + fi + configure_caddy_for_service "Wolf" "wolf:47990" "wolf" "$WOLF_EXTRA_BLOCK" + + write_readme "$WOLF_DIR" << MD +# Wolf — Cloud Gaming (Games-on-Whales) + +Stream games to any Moonlight client over your LAN or Tailscale VPN. + +## Pair a new client +1. Open Moonlight on the client device +2. Add host: this server's IP +3. Run the pin command on the server: +\`\`\`bash +cd $WOLF_DIR && ./manage.sh pin +\`\`\` + +## Manage +\`\`\`bash +cd $WOLF_DIR +./manage.sh start # start Wolf +./manage.sh stop # stop +./manage.sh restart # restart +./manage.sh logs # live logs +./manage.sh status # container status +./manage.sh update # pull latest image and restart +./manage.sh add-apps # add game launchers +\`\`\` + +## Ports (open on firewall / router) +| Port(s) | Protocol | Use | +|---------|----------|-----| +| 47984–47990 | TCP | Moonlight control | +| 48010 | TCP | RTSP | +| 47998–48000 | UDP | RTP video/audio/control | + +## Backup +\`\`\`bash +sudo ./setup.sh backup # covers /etc/wolf saves and ES-DE settings +\`\`\` +MD + + local START_WOLF="" + prompt_yn "Start Wolf now? (y/n):" "y" START_WOLF + if [[ "$START_WOLF" =~ ^[Yy]$ ]]; then + docker compose up -d \ + && log_success "Wolf started — pair Moonlight to this server's IP" \ + || log_warning "Start failed — check: docker compose logs" + fi + log_success "Done. Pair Moonlight and play." }