Cross-Platform Palworld Dedicated Server
A private Steam and Xbox crossplay game server deployed in a dedicated Debian 13 LXC container on Proxmox, with service automation, resource controls, firewall restrictions, NAT configuration, and packet-level troubleshooting.
Project Goal
The goal was to build a reliable private Palworld environment for two players using existing home-lab infrastructure instead of relying on a hosted game-server provider. The server needed to support a Steam client and an Xbox client, start automatically, remain isolated from other lab services, and expose only the network traffic required for gameplay.
Public documentation intentionally omits internal addressing, credentials, passwords, and the exact external game port.
Environment Summary
Virtualization Platform
Dedicated Debian 13 LXC container hosted on Proxmox VE with four virtual CPU cores, 6 GB RAM, 4 GB swap, and a 40 GB system disk.
Server Deployment
Installed the Palworld dedicated server through SteamCMD and placed the service under a dedicated Linux account.
Service Management
Created a systemd unit so the game server can start, stop, restart, and recover through standard Linux service controls.
Cross-Platform Access
Configured the private world for Steam and Xbox crossplay with a two-player limit and voice chat enabled.
Sanitized Architecture
Technologies and Concepts Used
What I Built and Configured
- Provisioned a dedicated Debian 13 LXC container with resource limits appropriate for a small private game server.
- Installed and updated the Palworld dedicated server using SteamCMD.
- Created a dedicated service account and systemd unit for controlled startup, shutdown, restart, and status checks.
- Configured a private two-player world with Steam and Xbox crossplay support.
- Moved the service away from the default game port and configured the corresponding application settings.
- Applied a default-deny Proxmox firewall policy and allowed only the UDP traffic required by the game.
- Reserved the server address on the home network and configured router NAT for controlled external access.
- Enabled voice chat and validated client connectivity from the Steam workstation.
Troubleshooting and Validation
- Tracked and corrected address changes during deployment before establishing the final network reservation.
- Validated that the systemd service remained running under the dedicated Linux account.
- Confirmed the selected UDP port was bound by the game-server process.
- Used tcpdump to verify that externally generated UDP packets reached the LXC container.
- Verified router port-forwarding behavior and Proxmox firewall processing without opening unrelated management services.
- Successfully joined the private server from the Steam client and confirmed the configured world settings.
Security and Operational Controls
- Only the required UDP game traffic is forwarded; Proxmox, SSH, storage, and other management services remain private.
- The container firewall uses a default-deny inbound policy with a narrow allow rule for gameplay.
- The service runs under a dedicated non-root Linux account.
- The private server uses player and administrative authentication that is not published.
- The two-player limit reduces unnecessary exposure and resource consumption.
- Internal IP addresses, host identifiers, credentials, and exact firewall values are excluded from this public writeup.
What This Demonstrates
This project demonstrates practical Linux service administration, LXC workload deployment, SteamCMD management, systemd automation, resource planning, UDP and NAT troubleshooting, firewall rule design, cross-platform service configuration, and packet-level validation. It also shows how an application can be published selectively without exposing the underlying virtualization or management infrastructure.