selfhub.

Self-hosting guide

PufferPanel

Open-source game server management panel purpose-built for Minecraft and modded workloads with Docker support, remote daemons, and automated backups.

Self-Host PufferPanel: Manage Minecraft & Game Servers Like a Pro

cover

What is PufferPanel?

PufferPanel is an open-source game server management panel designed to automate Minecraft hosting (Java, Bedrock, and Forge) along with popular mod packs and other dedicated servers. It provides a secure API, multi-node daemons, and a slick web UI so you can provision new servers, push updates, manage mods, and monitor resource usage without babysitting SSH sessions.

Why Choose PufferPanel for Minecraft Hosting?

  • Purpose-built for Minecraft: Integrated templates for Vanilla, Paper, Forge, Fabric, Modrinth packs, and Bedrock so you can deploy in a few clicks.
  • Multi-node orchestration: Install the daemon on remote nodes (Linux or Docker) and manage everything from one control plane.
  • Fine-grained access control: Delegate specific servers to friends, communities, or paying customers.
  • Automation-ready: REST API, CLI tooling, and templating make it easy to script server creation or integrate with billing systems.
  • Resource isolation: Run heavy mod packs using Docker, systemd, or Process Isolation to protect your hardware.

Core Features

๐ŸŽฎ Game Templates

  • Curated Minecraft templates with JVM flags, EULA handling, port mapping, and auto-generated start commands.
  • Custom templates for any Java, Node, or binary workloads so you can host Valheim or Terraria alongside Minecraft.
  • Environment variable substitution for quick parameter tweaks.

๐Ÿ‘ฅ Team Collaboration

  • Role-based access control for admins, moderators, and players.
  • Secure SFTP credentials per server for uploading worlds, datapacks, or configs.
  • Activity logs for auditing command usage and restarts.

๐Ÿ›ก๏ธ Security & Isolation

  • Daemon-level API tokens and mutual TLS support for remote nodes.
  • Optional JWT auth for custom control panels.
  • Automatic backups with retention policies to S3-compatible storage or local disks.

๐Ÿ“ˆ Observability

  • Live console streaming, CPU/RAM graphs, disk usage, and player counts.
  • Webhook notifications for crashes or offline nodes.
  • Export metrics to Prometheus or health checks to tools like Uptime Kuma.

Architecture Overview

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      HTTPS/API       โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ PufferPanel UIโ”‚โ—€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚ Master Node    โ”‚
โ”‚ (Next.js)     โ”‚                      โ”‚ (API + DB)     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
       โ”‚ Remote Daemon Token                 โ”‚
       โ–ผ                                     โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”        SSH/WebSocket   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Game Node #1  โ”‚โ—€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถโ”‚ Game Node #N  โ”‚
โ”‚ Minecraft, etcโ”‚                        โ”‚ Bedrock, Mods โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
  • Panel: Runs the web interface, API, auth, and stores server definitions in MySQL or PostgreSQL.
  • Daemon: Lightweight agent installed on each node to start/stop servers, stream console logs, and enforce resource limits.

Requirements

  • 2+ vCPU / 4 GB RAM for the panel host.
  • Docker or systemd on the daemon nodes.
  • MariaDB/MySQL 10.5+ or PostgreSQL 13+.
  • Reverse proxy (Caddy, Nginx, Traefik) with HTTPS for the panel.

Quick Start with Docker Compose

version: '3.8'
services:
  panel:
    image: pufferpanel/pufferpanel:latest
    container_name: pufferpanel
    restart: unless-stopped
    environment:
      - PUFFER_PANEL_HOST=https://panel.example.com
    ports:
      - "8080:8080"
    volumes:
      - ./pufferpanel/config:/etc/pufferpanel
      - ./pufferpanel/data:/var/lib/pufferpanel

  db:
    image: mariadb:11
    restart: unless-stopped
    environment:
      - MARIADB_ROOT_PASSWORD=strongpassword
      - MARIADB_DATABASE=pufferpanel
      - MARIADB_USER=pufferpanel
      - MARIADB_PASSWORD=anotherstrongpassword
    volumes:
      - ./db:/var/lib/mysql
  1. docker compose up -d
  2. Visit https://panel.example.com:8080, create the admin account, and point the panel to the database.
  3. Install the daemon on each node (curl -s https://packagecloud.io/install/repositories/pufferpanel/pufferpanel/script.deb.sh | sudo bash).
  4. Add your daemon token in the panel and start provisioning Minecraft servers.

Production Hardening

  • Place the panel behind Traefik or Caddy for automatic TLS and redirect HTTPโ†’HTTPS.
  • Configure MariaDB backups via mysqldump or use managed services (Aiven, RDS).
  • Enable Cloudflare Access or Authentik/OAuth SSO for staff accounts.
  • Use WireGuard to connect remote nodes securely if they are spread across providers.

Operating Minecraft Servers

  • Allocate dedicated disks or LVM volumes for world data to avoid noisy neighbors.
  • Use the Schedules feature to run automatic restarts, save-all commands, and backups.
  • Offer modpack toggles by cloning templates and exposing environment variables like VERSION, MODRINTH_MODPACK, JAVA_FLAGS.
  • Provide SFTP instructions for creators so they can upload world files directly to /var/lib/pufferpanel/servers/<uuid>/data.

Modded Server Best Practices

  • Turn on ZGC or Aikar JVM flags for heavy Fabric/Forge packs.
  • Pin CPU limits (Docker cpuset) to prevent single-thread choke.
  • Monitor TPS with Spark or Spark Paper plugin and expose metrics.
  • Add external object storage for nightly world backups (MinIO, Backblaze B2).

Monitoring & Alerts

  • Stream logs to Loki/Promtail to search crash reports.
  • Connect Prometheus node exporter for CPU/disk metrics and create Grafana dashboards per node.
  • Send Discord or Matrix webhooks when a daemon disconnects or server stops unexpectedly.

PufferPanel vs Alternatives

FeaturePufferPanelPterodactylCrafty Controller
LicenseApache 2.0MITGPLv3
Minecraft Templatesโœ… built-inโœ… via eggsโš ๏ธ limited
Remote Daemonsโœ…โœ…โš ๏ธ single host
Non-Minecraft Gamesโœ…โœ…โš ๏ธ limited
API Coverageโœ… RESTโœ… RESTโš ๏ธ minimal
Resource IsolationDocker, LXC, ProcessDockerSystemd

Choose PufferPanel when you want a lightweight control plane that focuses on Minecraft-first ergonomics but still supports broader game hosting.

Use Cases

  • Community SMP hosting: Give each friend their own node and quotas, bill via Stripe, and automate backups.
  • Education / STEM labs: Spin up short-lived Minecraft instances for coding camps using the API.
  • Modpack marketplace: Preload Fabric/Forge/Quilt packs, pin versions, and deploy with a single template variable.

Troubleshooting Tips

  • Daemon offline? Check /var/log/pufferpanel/daemon.log for token mismatches or TLS errors.
  • Server stuck stopping? Clear stale PID files in the server directory and restart the daemon.
  • Console not streaming? Ensure websockets are proxied correctly (for Nginx add proxy_set_header Upgrade $http_upgrade;).

Next Steps

  • Tie server provisioning to your billing portal with the REST API.
  • Deploy a secondary panel for staging upgrades.
  • Create Grafana alerts for world size growth to plan new storage.

PufferPanel keeps your Minecraft infrastructure predictable while leaving plenty of room to customize, automate, and monetize your hosting service.