Move the stack to a new host keeping the same domain, carrying Drasl users + skins (+ kuma monitors, filestash index) but not the world. - migrate-check.sh: validate the target meets requirements. [restore] hard-fails (docker, compose v2, git, tar, ssh); [deploy] warns (node/pnpm, py>=3.11, nginx, acme.sh, RAM, disk, ports). --host runs it remotely by streaming itself over ssh. - migrate-export.sh: workstation-run, pulls the source read-only over ssh into one 0600 bundle (.env, certs/, drasl_state/kuma_data/ filestash_state volumes, checksummed MANIFEST). Certs in by default (--without-certs); world opt-in (--with-world). - migrate-import.sh: target-run, sha256-verify, refuse existing volumes (--force), backup+restore .env with --path-prefix rewrite, check host paths resolve, restore certs+volumes, print the manual tail. - plan/22-migration.md: human walkthrough (cochi -> oxps), rollback window warning, rehearsal notes. - .gitignore: ignore ulicraft-bundle-*.tar.gz (holds secrets + LE keys). Assumes Compose v2 on the target (no update-all.sh changes). Distribution repo, TLS issuance, DNS and firewall stay manual. Round-trip tested against prod: 9.2M bundle, drasl.db restored byte-exact, clobber guard verified. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
49 lines
1.5 KiB
Plaintext
49 lines
1.5 KiB
Plaintext
.env
|
|
backups/
|
|
drasl/config/keycloak-client-secret
|
|
runtime/authlib-injector.jar
|
|
|
|
# rendered configs (from tooling/render-config.sh)
|
|
drasl/config/config.toml
|
|
nmsr/config.toml
|
|
# holds the admin bcrypt hash, the shared player hash, the session key and the
|
|
# local-backend secret — only the .tmpl is tracked
|
|
filestash/config.json
|
|
|
|
# server mod subset synced from the distribution repo by
|
|
# tooling/sync-server-mods.sh (source of truth is mods-sides.json + $DIST jars)
|
|
server-mods/
|
|
|
|
# vendored binaries
|
|
launcher/
|
|
|
|
# offline data mirror for generators.${BASE_DOMAIN} (~107M of mcmeta +
|
|
# vanilla-mcdoc), synced by tooling/sync-generators-data.sh. Needs WAN, so it is
|
|
# fetched deliberately before the party — never at the venue.
|
|
generators-data/
|
|
|
|
# landing page: generated build output + deps
|
|
www/
|
|
landing/node_modules/
|
|
landing/.astro/
|
|
landing/dist/
|
|
|
|
# launcher download list: the custom-launcher build output launcher.json,
|
|
# synced from UlicraftLauncher/dist/launcher.json (launcher.example.json is
|
|
# committed as the documented shape)
|
|
landing/src/data/launcher.json
|
|
|
|
# mod catalogue + extracted logos: generated by tooling/build-modlist.py from
|
|
# the distribution forgemods (the .example.json is committed as the empty shape)
|
|
landing/src/data/mods.json
|
|
landing/public/mod-logos/
|
|
|
|
# compiled mc-status binary (built into the image; stray local `go build` output)
|
|
docker/mc-status/mc-status
|
|
|
|
# Let's Encrypt certs + private keys (issued by tooling/issue-letsencrypt.sh)
|
|
certs/
|
|
|
|
# migration bundles (migrate-export.sh) — hold .env secrets + LE private keys
|
|
ulicraft-bundle-*.tar.gz
|