Skip to content

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.

Terminal window
curl -fsSL https://raw.githubusercontent.com/philderks/Fabricator/main/docker-compose.yml -o docker-compose.yml
docker compose up -d

The 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.

Terminal window
curl -fsSL https://fabricator.site/install.sh | bash

The 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.

Terminal window
curl -fsSL https://fabricator.site/install.sh | FABRICATOR_VERSION=vX.Y.Z bash

FABRICATOR_VERSION=main is intentionally not supported by the installer. Use a release tag.

  1. Detects the Linux distro family.
  2. Installs host packages such as Python, curl, tar, rsync, CA certificates, grep, and sed.
  3. Ensures the fabricator system user exists.
  4. Downloads pinned playit and playit-cli binaries for supported Linux architectures and verifies their sha256 checksums.
  5. Downloads fabricator-<tag>.tar.gz from GitHub Releases.
  6. Syncs app files into /opt/fabricator/app.
  7. Creates or updates /opt/fabricator/venv and installs Python requirements.
  8. Installs the fabricator CLI entry point and symlinks it to /usr/local/bin/fabricator.
  9. Creates /etc/fabricator/fabricator.env if it does not exist.
  10. Writes /etc/systemd/system/fabricator.service.
  11. Grants the service user passwordless sudo for the bundled update wrapper only.
  12. Enables and starts fabricator.service.

Native install:

Terminal window
curl -fsSL https://fabricator.site/install.sh | bash -s -- --update

During update, Fabricator backs up important state under /var/lib/fabricator/update-backups/<timestamp>/, including servers.json and fabricator.env when present.

Docker install:

Terminal window
docker compose pull && docker compose up -d

The Docker image disables dashboard self-update because the container should be updated by pulling a new image.

PathPurpose
/opt/fabricator/appApplication code synced from the release archive.
/opt/fabricator/venvPython virtualenv used by the native service and CLI.
/opt/fabricator/app/.fabricator_versionInstalled release marker.
/var/lib/fabricatorNative mutable data root.
/var/lib/fabricator/serversDefault native server install root.
/var/lib/fabricator/servers.jsonNative server index.
/var/lib/fabricator/auth.jsonNative auth/session state when not env-managed.
/var/lib/fabricator/javaNative managed Java runtimes.
/var/lib/fabricator/backupsNative default backup root.
/var/lib/fabricator/playitNative playit.gg runtime directory for the saved secret, socket, PID file, logs, and enabled-state marker.
/dataDocker persistent volume containing servers, auth, Java runtimes, backups, and playit state.
/usr/local/bin/playitOptional playit daemon installed by the native installer when supported and checksum-verified.
/usr/local/bin/playit-cliOptional playit CLI used for the headless account claim flow.
/etc/fabricator/fabricator.envNative environment configuration loaded by systemd.
/etc/systemd/system/fabricator.serviceNative systemd unit.
/etc/sudoers.d/fabricator-self-updateLimited sudo rule for dashboard self-update.
Terminal window
sudo systemctl status fabricator
sudo systemctl restart fabricator
sudo journalctl -u fabricator -f

You can also use the CLI on native installs:

Terminal window
fabricator status
fabricator version
fabricator update
fabricator hash-password

The native installer writes this packaged config by default:

HOST=0.0.0.0
PORT=5000
FLASK_ENV=production
SERVER_ROOT=/var/lib/fabricator/servers
SERVER_INDEX_FILE=/var/lib/fabricator/servers.json

Open http://<host-ip>:5000/, complete Authentication, then place Fabricator behind a reverse proxy before exposing it broadly.

Use the installed CLI on native installs:

Terminal window
sudo fabricator uninstall

The 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.