Installation
Fabricator installs either from the published Docker image or from GitHub release tarballs. Docker is the recommended cross-platform path; the native installer is for Linux systemd hosts.
Docker quick start
Section titled “Docker quick start”curl -fsSL https://raw.githubusercontent.com/philderks/Fabricator/main/docker-compose.yml -o docker-compose.ymldocker compose up -dThe packaged compose file publishes the dashboard to host loopback only (127.0.0.1:5000) and stores all state in the fabricator-data volume mounted at /data.
Open http://127.0.0.1:5000/ and complete the first-boot password setup. To reach the dashboard from another machine, put a reverse proxy/VPN/firewall in front of the loopback port or deliberately change the compose port mapping. Keep HOST=0.0.0.0 inside the container; restrict exposure on the host side.
Minecraft server ports are not published by default. Use playit.gg tunnels or map each server port explicitly, for example 25565:25565.
For details, see Docker.
Native Linux install
Section titled “Native Linux install”curl -fsSL https://fabricator.site/install.sh | bashThe script requires root privileges. If you run it as a non-root user, it uses sudo.
By default this installs the latest published release. After install, open the printed URL, then complete the first-boot password setup.
Install a specific version
Section titled “Install a specific version”curl -fsSL https://fabricator.site/install.sh | FABRICATOR_VERSION=vX.Y.Z bashFABRICATOR_VERSION=main is intentionally not supported by the installer. Use a release tag.
What the native installer does
Section titled “What the native installer does”- Detects the Linux distro family.
- Installs host packages such as Python, curl, tar, rsync, CA certificates, grep, and sed.
- Ensures the
fabricatorsystem user exists. - Downloads pinned
playitandplayit-clibinaries for supported Linux architectures and verifies their sha256 checksums. - Downloads
fabricator-<tag>.tar.gzfrom GitHub Releases. - Syncs app files into
/opt/fabricator/app. - Creates or updates
/opt/fabricator/venvand installs Python requirements. - Installs the
fabricatorCLI entry point and symlinks it to/usr/local/bin/fabricator. - Creates
/etc/fabricator/fabricator.envif it does not exist. - Writes
/etc/systemd/system/fabricator.service. - Grants the service user passwordless sudo for the bundled update wrapper only.
- Enables and starts
fabricator.service.
Update an existing install
Section titled “Update an existing install”Native install:
curl -fsSL https://fabricator.site/install.sh | bash -s -- --updateDuring update, Fabricator backs up important state under /var/lib/fabricator/update-backups/<timestamp>/, including servers.json and fabricator.env when present.
Docker install:
docker compose pull && docker compose up -dThe Docker image disables dashboard self-update because the container should be updated by pulling a new image.
Directory layout
Section titled “Directory layout”| Path | Purpose |
|---|---|
/opt/fabricator/app | Application code synced from the release archive. |
/opt/fabricator/venv | Python virtualenv used by the native service and CLI. |
/opt/fabricator/app/.fabricator_version | Installed release marker. |
/var/lib/fabricator | Native mutable data root. |
/var/lib/fabricator/servers | Default native server install root. |
/var/lib/fabricator/servers.json | Native server index. |
/var/lib/fabricator/auth.json | Native auth/session state when not env-managed. |
/var/lib/fabricator/java | Native managed Java runtimes. |
/var/lib/fabricator/backups | Native default backup root. |
/var/lib/fabricator/playit | Native playit.gg runtime directory for the saved secret, socket, PID file, logs, and enabled-state marker. |
/data | Docker persistent volume containing servers, auth, Java runtimes, backups, and playit state. |
/usr/local/bin/playit | Optional playit daemon installed by the native installer when supported and checksum-verified. |
/usr/local/bin/playit-cli | Optional playit CLI used for the headless account claim flow. |
/etc/fabricator/fabricator.env | Native environment configuration loaded by systemd. |
/etc/systemd/system/fabricator.service | Native systemd unit. |
/etc/sudoers.d/fabricator-self-update | Limited sudo rule for dashboard self-update. |
Service management
Section titled “Service management”sudo systemctl status fabricatorsudo systemctl restart fabricatorsudo journalctl -u fabricator -fYou can also use the CLI on native installs:
fabricator statusfabricator versionfabricator updatefabricator hash-passwordAccessing the dashboard
Section titled “Accessing the dashboard”The native installer writes this packaged config by default:
HOST=0.0.0.0PORT=5000FLASK_ENV=productionSERVER_ROOT=/var/lib/fabricator/serversSERVER_INDEX_FILE=/var/lib/fabricator/servers.jsonOpen http://<host-ip>:5000/, complete Authentication, then place Fabricator behind a reverse proxy before exposing it broadly.
Uninstall
Section titled “Uninstall”Use the installed CLI on native installs:
sudo fabricator uninstallThe command asks you to type yes and then removes the service, app files, data directory, config directory, service user, and systemd unit. It is destructive.