Crate v1.1 — Factorio mod portal + 10 other improvements
Factorio is now the 11th supported source, with a multi-tenant credential model.
v1.1's headline feature: Crate now installs mods frommods.factorio.comdirectly onto your customers' Factorio servers — same one-click experience you already get on Modrinth, CurseForge, Hangar, Spigot, Thunderstore, and uMod. Search and browse work out of the box; downloads need a factorio.com account behind the panel because Factorio's mod portal authenticates every mod download (no anonymous CDN, no third-party mirror with comparable coverage).
Crate gives you two equivalent ways to wire that credential up — pick whichever fits how you run your panel:
- One panel-wide service account — buy Factorio for $35 (factorio.com/buy), paste the username + download token once at
/admin/settings/factorio, and every customer's Factorio server uses your creds transparently. Customers never see a credential prompt.- Customers bring their own — flip Factorio on at
/admin/settings/factoriobut leave the panel-wide creds blank. When a customer opens the Mods tab on their Factorio server, they get an inline form to paste their own factorio.com creds. Useful if you don't own Factorio, or you don't want to share one account across all customers.- Mixed — set a panel-wide default, technically-savvy customers can override on their own server. The banner shows "Using panel default · Override" so they know.
Why the credential prompt exists
Unlike Modrinth or CurseForge, Factorio's mod portal requires authenticated downloads tied to a real factorio.com account. Wube's terms tie a download token to one human owner — we can't legally bundle a Crate-owned shared account. Same reason game-server hosts don't bundle a Steam account. The two-tier model lets you decide whether your account fronts the portal or each customer's does.
New
- Factorio source wired into the installer for any server whose egg matches a Factorio image (auto-detected).
- Admin Factorio settings page at
/admin/settings/factorio— enable toggle, panel-wide creds, with inline how-to for findingservice-username/service-tokeninplayer-data.jsonor viaauth.factorio.com/api-login.- Inline credentials banner on Factorio servers' Install tab. Three states: green (custom creds saved · Replace / Remove), muted (using panel default · Override), red (no creds anywhere · paste them or installs fail).
- Encrypted at rest. Per-server tokens go through Laravel's
encryptedcast (uses your panel'sAPP_KEY). Never logged, never echoed back to the UI in plaintext — only a••••XXXXmask.- New endpoints:
GET/PUT /api/client/servers/{server}/addons/credentials/{source}. Source whitelisted server-side — gated onfile.read/file.update.- Uninstall button on the Installed tab and detail drawer. Replaces the disabled "Installed" badge with a red "Uninstall" — confirms, removes the addon file, drops it from the Installed list without a page refresh.
- Per-server tab filtering. Factorio servers no longer see Plugins / Modpacks tabs; Minecraft servers don't see irrelevant kinds. Driven by the egg classification.
- Curated version dropdown per game. Picks "2.0.x" on Factorio, "1.21.x" on Minecraft, etc., instead of the old hardcoded Minecraft default.
- Game-aware empty states. Servers without an enabled source for their game get a dedicated message pointing at the right admin setting, not a generic "No registries enabled".
Stability fixes
- Per-file frontend overlay so new files in updates actually land (was silently dropping new files when the destination dir wasn't empty).
install.shno longer strips +x fromnode_modules/.bin/*symlink targets — fixes thecross-env: Permission denied/webpack EACCESbuild error.- Source whitelist on the install request validators extended to all 7 sources (was 422'ing Factorio, Thunderstore, and uMod installs).
- Defensive URL building in the Factorio adapter for both relative and absolute
download_urlresponses (Wings was 500'ing on absolute URLs that got double-prefixed).- Sidebar entry for the Factorio admin page now re-injects cleanly on upgrade (was skipping the marker block when an old block existed).
.envoverride of container env so customers can bypass panel input bugs.
Upgrade
Idempotent — same one-liner you used to install:
Code:curl -fsSL https://gynx.pro/crate-install/install.sh \ | sudo bash -s -- --panel /var/www/pterodactyl
The installer takes a fresh backup, overlays the new files, runs the migration, rebuilds the React bundle, restarts php-fpm. License key + admin settings carry over. 2-5 min on a typical VPS.
Manual install bundle (air-gapped panels): grabcrate-manual-install.zipfrom your BBB purchases page → extract →sudo ./install.sh --panel <path>.
Support
Discord (fastest): discord.gg/gynx
Email: [email protected]
— Nick
