Collapse the override-file matrix into a single docker-compose.yml holding the whole stack: drasl, minecraft, mc-backup, caddy, nmsr, uptime-kuma. Bring-up is now just `docker compose up -d --build`. Removed features (dead-ends for this deployment): - airgap / full asset mirror (mirror-airgap.sh, mirror-mods.sh, 20-mirror.caddy, caddy local-CA export, /ca.crt) - dnsmasq + avahi/mDNS + dns-records.sh + mdns-host-setup.sh + ENABLE_MDNS; DNS is now handled outside this repo (HOST_LAN_IP dropped) - Blessing Skin auth variant (compose + 00-core-blessingskin.caddy + BS_* env) - host-nginx-static variant (docker-compose.nginx.yml, nginx/ulicraft.conf.tmpl) - build-stack.sh and its run modes (online/airgap/core) Production ingress is the only path now: host nginx terminates TLS (LE certs) in front of caddy on a localhost-only port; caddy routes every vhost by Host header. Launcher downloads move mirror/launcher -> launcher/. Docs: README, deploy skill, and plan/ rewritten to match; obsolete plan docs (dnsmasq, blessing-skin, assets-mirror, full-airgap-mirror, dns-and-run-modes) deleted. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
38 lines
1.6 KiB
Markdown
38 lines
1.6 KiB
Markdown
# packwiz — modpack source of truth
|
|
|
|
## Summary
|
|
|
|
`packwiz` (installed at `~/go/bin/packwiz`) authors the modpack. The `./pack`
|
|
directory is the **single source of truth** for mods, consumed by both:
|
|
- the **server** (itzg `PACKWIZ_URL`), and
|
|
- **clients** (Fjord launcher imports the pack / packwiz-installer).
|
|
|
|
Caddy serves `./pack` at `pack.ulicraft.net`. packwiz emits **metadata**
|
|
(`pack.toml`, `index.toml`, `mods/*.pw.toml`); the `.pw.toml` files reference
|
|
Modrinth/CF **CDN URLs**, so server and clients fetch the jars from those CDNs.
|
|
The stack assumes the internet is present.
|
|
|
|
## Behaviors confirmed
|
|
|
|
- **Prune**: packwiz-installer tracks a manifest and **removes** client mods no
|
|
longer in the index on re-run. (Server side via itzg likewise re-syncs.)
|
|
- **Download source**: jars come from the CDN URLs in `.pw.toml`, not the pack
|
|
host (which serves only metadata).
|
|
- **itzg side filtering**: itzg downloads **server-side mods only**. Client-only
|
|
mods MUST be tagged `side = "client"` (not `both`) or the server may pull and
|
|
crash on them.
|
|
|
|
## NeoForge pinning
|
|
|
|
`pack.toml` pins MC `1.21.1` + NeoForge `21.1.x`. Verify exact NeoForge build
|
|
against projects.neoforged.net before locking.
|
|
|
|
## Tasks
|
|
|
|
- [ ] `packwiz init` → `./pack` (MC 1.21.1, modloader neoforge, pinned version)
|
|
- [ ] Curate mod shortlist (perf/tech/magic/storage/QoL/worldgen/map/voice)
|
|
- [ ] Tag client-only mods `side = "client"`
|
|
- [ ] `packwiz refresh`; verify `index.toml` committed (clients fetch it)
|
|
- [ ] Point server `PACKWIZ_URL=http://pack.ulicraft.net/pack.toml`
|
|
- [ ] Test install end-to-end on a fresh client
|