Skip to content

About

Web admin panel for Project Zomboid dedicated servers — server control, RCON console, live player map, mod manager, scheduler, backups, Discord bot, and a Lua bridge for in-game actions. Windows, Linux, Docker, or VPS.

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

🧟 Zomboid Control Panel

The complete admin cockpit for Project Zomboid dedicated servers

Latest Release Downloads Discord License: MIT

Manage your Project Zomboid dedicated server from one place: server controls, RCON, a live world map, Workshop mods, scheduled restarts, backups, and Discord integration.

🚀 Download · 👁️ Live demo · 💬 Discord · 📖 Setup


Dashboard

At a glance — server status, RCON & PanelBridge connection state, live player activity, host telemetry, disk headroom, the next scheduled maintenance action, console error count, backup readiness, and quick actions. One screen covers 80% of routine admin work.

✨ Feature tour

🌧️ Events & Weather

Force-trigger blizzards, tropical storms, or rain at any intensity. Fine-grained climate sliders for fog, wind, temperature, clouds, humidity. Spawn helicopter events or lightning strikes on demand. The closest thing to PZ admin god-mode.

Events & Weather

🗺️ Live World Map

Real-time player positions on Knox County. Multi-floor support, layer toggles, zoom & pan. Right-click any player for instant teleport, heal, kick, or message — straight from the map.

World Map

👥 Player Management

Roster with online / offline / banned tabs. Per-player dossier with moderation, spawn loadout, powers (heal, teleport, god mode), notes & history. Voice ban, SteamID ban, manual targeting.

Players

🧩 Mod Manager

Tracks every Workshop mod on your server and flags updates through the Steam API. Import a Steam collection and drive server membership from it — adding a mod writes WorkshopItems=, resolves its internal mod ID into Mods=, and picks up map folders on its own.

Mod Manager

⚠️ Mod Conflicts & Load Order

Scans your mod list for known incompatibilities, missing dependencies, and load-order issues. Severity-tinted findings so you see real problems before you boot the server. Load order can auto-sort from each mod's declared require=, with a preview of every move before anything is written.

Mod Conflicts

⚙️ Server Configuration

Full in-browser INI editor for sandbox options, spawn regions, mod settings, and server flags. Searchable, structured view + raw view for power users. No more notepad-and-restart.

Server Configuration

🆕 Server Setup Wizard

Spin up a fresh PZ server in minutes. SteamCMD install, port config, RCON setup, admin account — all stepped through with sensible defaults.

Server Setup

🤖 Discord Bot Setup

Guided wizard for creating the Discord app, getting tokens, configuring intents and inviting the bot. Slash commands + two-way chat relay + event notifications ship turnkey.

Discord Setup

📊 Performance Telemetry

Host RAM and CPU graphs, PZ process memory, player count history. Time-range selectable, exportable. Catch slow leaks and load spikes before players notice.

Performance

🐛 Crash Logs & Diagnostics

Java crash dumps, error logs, support bundles. One-click .zip export for when you need to share state with someone smarter than you. Health, environment, and activity tabs included.

Crash Logs

Contents


What It Does

Operate

  • Server control — Start, stop, restart, save. Live status and uptime.
  • Console — Live log viewer and RCON terminal with command history.
  • Scheduling — Recurring restarts, saves, broadcasts with countdown warnings.
  • Backups — Create, restore, and manage world backups.

Observe

  • Players — Online list, activity history, kick/ban/unban, access levels, notes and tags.
  • World map — Live player positions on Knox County with right-click actions.
  • Mod manager — Track Workshop mods and detect updates, decide server membership from your Steam collection, auto-sort load order by declared dependencies, and scan for conflicts. Collection sync adds what's missing without deleting the optional mods you keep on the side.
  • Server config — Full INI editor with structured and raw views. Sandbox, spawn points, mod settings — searchable and editable in-browser.

Extend

  • Events & weather — Rain, storms, blizzards, climate control, time control, sound triggers, zombie management.
  • PanelBridge — Server-side Lua mod for actions RCON can't reach: teleport, heal, god mode, character export/import, inventory.
  • Discord bot — Slash commands and two-way chat relay.
  • Multi-server — Manage multiple PZ servers from one panel.
  • Chunk cleaner — Visual map selector for cleaning unused chunks.
  • Auto-update — Checks for new releases, downloads and applies them.

Requirements

  • Project Zomboid dedicated server — Build 41 or Build 42. Tested through B42.18.
  • RCON enabled in your server .ini (RCONPort=27015 and RCONPassword=...).
  • Network access between the panel and the PZ server (same machine, same LAN, or reachable IP).
  • For PanelBridge features: DoLuaChecksum=false in the server .ini.

The packaged binary includes its own runtime — no Node.js, Python, or Java install needed on the panel host.


Quick Start

Download from Releases. Self-contained binary — no dependencies.

Windows

  1. Extract ZomboidControlPanel-windows.zip
  2. Run Start.bat
  3. Open http://localhost:3001

Linux

tar xzf ZomboidControlPanel-linux.tar.gz
./start.sh

Works on Ubuntu 20.04+, Debian 10+, CentOS Stream 8+, Rocky 8+, or anything with glibc 2.28+.

Docker

Download docker-compose.install.yml, then run:

docker compose -f docker-compose.install.yml up -d

Open http://localhost:3001. This starts the panel with persistent Docker volumes. For a panel that manages a PZ server on the same host, use the fully documented docker-compose.yml and configure its bind mounts. The Compose files use named volumes for panel state, so do not replace them with host ./panel-data or ./data mounts unless those directories are owned by UID/GID 1000:1000.

Shared PZ folders: Docker permissions

When the panel bind-mounts Project Zomboid folders, set PUID and PGID in .env to the numeric Linux user and group that own those folders:

PUID=1000
PGID=1000

Find the values with id -u and id -g, then restart the panel:

docker compose up -d

This works with the published image; rebuilding is not required. The panel changes ownership only of its own /app/data and /app/logs directories, never of PZ game or save mounts.

Separate PZ and panel containers

The panel can manage a PZ server in another container. Put both containers on the same Docker network and set RCON_HOST to the PZ service name, not 127.0.0.1. For PanelBridge features, choose one of these file-access methods:

  • Bind-mount the same PZ save directory into the panel and give both containers compatible numeric UID/GID access.
  • In Settings → PanelBridge, enable Remote server via SFTP, enter the PZ host credentials and the absolute bridge folder, for example /home/pz/Zomboid/Lua/panelbridge/MyServer, then select Test SFTP and Start SFTP bridge.

Shared folders and SFTP enable configuration edits and PanelBridge actions. They do not let the panel start or stop a separate Docker container. Keep PZ lifecycle management in your container manager, unless you deliberately grant the panel Docker socket access.

Linux: installing a new PZ server through the panel

If you installed the panel as the bundled zomboid-panel.service, use this install folder in the setup wizard:

/opt/zomboid-panel/data/pzserver

Create it once before opening the wizard:

sudo -u pzuser mkdir -p /opt/zomboid-panel/data/pzserver

The panel also creates /opt/zomboid-panel/data/pzserver_Data for server settings and save data. Leave Custom config location blank unless you have a specific reason to store it elsewhere.

Do not use /opt/pzserver with the bundled service unless you add both /opt/pzserver and /opt/pzserver_Data to ReadWritePaths in zomboid-panel.service, then run sudo systemctl daemon-reload and sudo systemctl restart zomboid-panel.

Docker

The image runs the panel only — Project Zomboid itself still has to run somewhere (on the host, in another container, or on a separate machine). The panel reaches it via RCON and via shared filesystem (for PanelBridge).

Pull the prebuilt image:

mkdir -p ~/zomboid-panel && cd ~/zomboid-panel
curl -O https://raw.githubusercontent.com/fpsacha/zomboid-control-panel/main/docker-compose.yml
curl -O https://raw.githubusercontent.com/fpsacha/zomboid-control-panel/main/.env.example
mv .env.example .env
docker compose up -d

Then open http://localhost:3001.

Before bringing it up for real, edit docker-compose.yml and uncomment the volume mounts that point at your PZ install and ~/Zomboid folder — the file has two annotated topology examples (PZ on the host vs. PZ on a remote machine). All env vars are documented in .env.example.

Prebuilt images are published to GHCR: ghcr.io/fpsacha/zomboid-panel:latest and :vX.Y.Z. Prefer to build from source? Comment out image: in the compose file and uncomment the build: block.


Setup

  1. Open the panel and create your admin account.
  2. In Settings, set your server install path and Zomboid data path.
  3. Configure RCON (host, port 27015, password from your server .ini).
  4. Optionally install PanelBridge for advanced features.

PanelBridge (Optional)

PanelBridge is a server-side Lua drop-in that enables features RCON can't reach — teleport, heal, weather control, character export/import, inventory editing, sound triggers.

There is no client-side component. Players don't install anything. The panel copies PanelBridge.lua into your server's Install/media/lua/server/ folder, then you set DoLuaChecksum=false in the server INI, restart the PZ server, and enable it in Settings → PanelBridge.

For a remote server without a shared filesystem, use the Remote server via SFTP option in the same panel. It syncs the bridge command and result files through a local cache; it does not expose the server's full filesystem to the panel.


Remote Access

If you're running the panel on the same machine as your browser, skip this section.

To access the panel from another machine, allow the origin before first launch:

CORS_ORIGINS=http://YOUR-IP:3001 ./start.sh

After login, save it permanently in Settings → Remote Access so the env var isn't required next time.

For VPS or public-internet deployment, put the panel behind a reverse proxy (nginx or Caddy) with HTTPS, and set HTTPS=true so the panel emits HSTS headers. Don't expose port 3001 directly to the internet.


Security

  • JWT authentication on all API routes.
  • Rate limiting on login, RCON, and destructive operations.
  • RCON parameter sanitization to prevent command injection.
  • CORS configurable per deployment (LAN auto-allows private IPs, VPS requires explicit origins).
  • Password reset via secure token file or --reset-password CLI flag.

Development

npm run install:all
npm run dev

Frontend at http://localhost:5173, backend at http://localhost:3001.

node build.js --all        # Build Windows + Linux binaries
npm test                   # Run tests

Community


License

MIT

About

Web admin panel for Project Zomboid dedicated servers — server control, RCON console, live player map, mod manager, scheduler, backups, Discord bot, and a Lua bridge for in-game actions. Windows, Linux, Docker, or VPS.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages