Serve modpack.zip via Caddy static file, not Gitea (50MB cap)

modpack-final.zip is 78MB, well over Gitea's upload limit. Served
directly from Caddy's existing static/ mount instead (path-routed
within the minecraft.mivanchenko.de block, alongside the BlueMap
failover) - no new container or mount needed. install.sh/install.ps1
MODPACK_URL updated accordingly; install scripts themselves stay on
Gitea since they're small text files. Verified full byte-exact
download end-to-end. Also drops the stale "moving to the venue"
comments now that the server is permanently on mivanchenko.de.
This commit is contained in:
Mykhailo Ivanchenko
2026-10-23 18:15:35 +02:00
parent e37e8a08e0
commit a669eeb503
3 changed files with 18 additions and 9 deletions
+12 -3
View File
@@ -112,15 +112,24 @@ Watch the console for `DH-Request Module Ticker` / world-gen-queue log lines —
Repeat for Nether/End build areas if you want those pregenerated too (useful since the roadmap sends people there for Nether's/End's Delight dishes) — DH generates per-dimension automatically as each is loaded; no separate per-dimension command needed, just make sure you (or a connected client) actually visit those dimensions once during the pregen session to trigger their world-gen queues. Repeat for Nether/End build areas if you want those pregenerated too (useful since the roadmap sends people there for Nether's/End's Delight dishes) — DH generates per-dimension automatically as each is loaded; no separate per-dimension command needed, just make sure you (or a connected client) actually visit those dimensions once during the pregen session to trigger their world-gen queues.
## 3. File distribution: Gitea, not a local file server ## 3. File distribution: Gitea for scripts, Caddy static file for the modpack
`install.sh`, `install.ps1`, and (once built) `modpack.zip` are committed straight to the `mc-lan-party` repo on Gitea (`git.mivanchenko.de`, already proxied by Caddy and public), served via its raw-file URLs. No separate file-server process on the venue/server box — one less moving part, and it's fine for now per your call; worth revisiting (e.g. Gitea releases/LFS, or an object store) if `modpack.zip` turns out large enough that Gitea's raw-file serving gets awkward. `install.sh` and `install.ps1` (small text files) are committed to the `mc-lan-party` repo on Gitea (`git.mivanchenko.de`, already proxied by Caddy and public), served via its raw-file URLs.
`modpack.zip` is **not** — Gitea rejects uploads over 50MB (hit this directly: `modpack-final.zip` is 78MB), and that's not something worth fighting Gitea's config for. Instead it's served as a plain static file directly by the same Caddy instance already fronting `minecraft.mivanchenko.de`, using the `static/` folder Caddy already had mounted (`~/caddy/static/`, previously just `maintenance.html`) — no new container, no new mount, no restart of anything shared:
```bash
# on the server, after you've built/scp'd modpack-final.zip to ~/lan-minecraft/
cp ~/lan-minecraft/modpack-final.zip ~/caddy/static/modpack.zip
```
The `minecraft.mivanchenko.de` Caddy block path-routes: `/modpack.zip` → static file, everything else → the BlueMap mod/standalone failover (see above). Updating the zip later is just overwriting that file in place — no Caddy reload needed, `file_server` reads it fresh each request.
Give participants: Give participants:
- **Windows:** `irm https://git.mivanchenko.de/mivanchenko/mc-lan-party/raw/branch/main/install.ps1 | iex` - **Windows:** `irm https://git.mivanchenko.de/mivanchenko/mc-lan-party/raw/branch/main/install.ps1 | iex`
- **Linux / macOS:** `curl -fsSL https://git.mivanchenko.de/mivanchenko/mc-lan-party/raw/branch/main/install.sh | bash` - **Linux / macOS:** `curl -fsSL https://git.mivanchenko.de/mivanchenko/mc-lan-party/raw/branch/main/install.sh | bash`
Each script asks for a nickname, derives a stable offline-mode UUID from it (so the same name = same player data across the whole 3-day party, even if they re-run the script), seeds that into a fresh `accounts.json`, downloads Fjord Launcher Unlocked + the modpack from Gitea, and launches straight into the instance already connected to `minecraft.mivanchenko.de`. Each script asks for a nickname, derives a stable offline-mode UUID from it (so the same name = same player data across the whole 3-day party, even if they re-run the script), seeds that into a fresh `accounts.json`, downloads Fjord Launcher Unlocked from GitHub and the modpack from `https://minecraft.mivanchenko.de/modpack.zip`, and launches straight into the instance already connected to the same server.
Make sure your Minecraft server itself is running with `online-mode=false` in `server.properties` — offline accounts only work against offline-mode servers. Make sure your Minecraft server itself is running with `online-mode=false` in `server.properties` — offline accounts only work against offline-mode servers.
+3 -3
View File
@@ -6,10 +6,10 @@
# Participants run: irm https://git.mivanchenko.de/mivanchenko/mc-lan-party/raw/branch/main/install.ps1 | iex # Participants run: irm https://git.mivanchenko.de/mivanchenko/mc-lan-party/raw/branch/main/install.ps1 | iex
# ---- EDIT ME before hosting ---- # ---- EDIT ME before hosting ----
$HostUrl = "https://git.mivanchenko.de/mivanchenko/mc-lan-party/raw/branch/main" $HostUrl = "https://git.mivanchenko.de/mivanchenko/mc-lan-party/raw/branch/main" # for this script + install.sh (small text files)
$ModpackUrl = "$HostUrl/modpack.zip" $ModpackUrl = "https://minecraft.mivanchenko.de/modpack.zip" # served directly by Caddy (static/ mount), NOT Gitea — modpack.zip is well over Gitea's 50MB upload cap
$InstanceName = "LANParty" $InstanceName = "LANParty"
$ServerAddr = "minecraft.mivanchenko.de:25565" # DNS name, not a raw IP — repoint the A record instead of rebuilding modpack.zip. See HOSTING.md "Moving the server to the venue". $ServerAddr = "minecraft.mivanchenko.de:25565" # always-on homelab box, same address for prep and the actual party
# --------------------------------- # ---------------------------------
$ErrorActionPreference = "Stop" # fail loudly instead of printing an error and silently continuing $ErrorActionPreference = "Stop" # fail loudly instead of printing an error and silently continuing
+3 -3
View File
@@ -8,10 +8,10 @@
set -euo pipefail set -euo pipefail
# ---- EDIT ME before hosting ---- # ---- EDIT ME before hosting ----
HOST_URL="https://git.mivanchenko.de/mivanchenko/mc-lan-party/raw/branch/main" # Gitea raw-file base URL HOST_URL="https://git.mivanchenko.de/mivanchenko/mc-lan-party/raw/branch/main" # Gitea raw-file base URL, for this script + install.ps1 (small text files)
MODPACK_URL="$HOST_URL/modpack.zip" # exported Prism instance folder, zipped, committed to the repo (see HOSTING.md) MODPACK_URL="https://minecraft.mivanchenko.de/modpack.zip" # served directly by Caddy (static/ mount), NOT Gitea — modpack.zip is well over Gitea's 50MB upload cap
INSTANCE_NAME="LANParty" # must match the top-level folder name inside modpack.zip INSTANCE_NAME="LANParty" # must match the top-level folder name inside modpack.zip
SERVER_ADDR="minecraft.mivanchenko.de:25565" # DNS name, not a raw IP — repoint the A record to whichever box is running the server (prep machine now, venue box at party time) instead of rebuilding modpack.zip. See HOSTING.md "Moving the server to the venue". SERVER_ADDR="minecraft.mivanchenko.de:25565" # always-on homelab box, same address for prep and the actual party
GH_REPO="unmojang/FjordLauncherUnlocked" # fallback if hero-persson's fork disappears; see note below GH_REPO="unmojang/FjordLauncherUnlocked" # fallback if hero-persson's fork disappears; see note below
# --------------------------------- # ---------------------------------