Sign inSign up

flux1991/palworld-server-dashboard

By flux1991

•Updated 4 months ago

A modern, web-based control panel designed to monitor Palworld dedicated servers in real-time.

Image
0

635

flux1991/palworld-server-dashboard repository overview

⁠Palworld Server Dashboard — Docker Usage Overview

A Blazor InteractiveServer web application (.NET 10) for monitoring and managing Palworld dedicated servers. This document explains how to run the Docker image, persist the SQLite database, configure environment variables / appsettings, and common operational tasks (backup, restore, logs, permissions, TLS).

Note: The dashboard is currently in development and will receive updates frequently. The github repo is not yet public, but in future it will be available at https://github.com/bkrieger1991/PalworldServerDashboard⁠


⁠Quick summary

  • The container runs as non-root user app and listens on port 8080 inside the container.
  • Persistent state is stored in a SQLite file (default: data/dashboard.db inside the container). Mount a host volume for persistence.
  • Configuration is read from appsettings.json but the app supports flat environment variable mapping (e.g. ServerHost → ApiConfig:Host).

⁠Minimal docker run example

Replace your-dockerhub-user/palworld-dashboard:latest with the actual image name.

docker run -d \
  --name palworld-dashboard \
  -p 8080:8080 \
  -v $(pwd)/data:/app/data \
  -e ServerHost=palworld-server \
  -e RestApiPort=8212 \
  -e Ssl=false \
  -e Password=#RestApiPw# \
  flux1991/palworld-server-dashboard:latest

Notes:

  • Host port mapping -p 8080:8080 exposes the app on host port 8080.
  • Persist SQLite DB by mounting a host folder to /app/data (container path).
  • Environment variables override matching configuration keys.
⁠If you run palworld-server not as a container

If the palworld server itself does not run in a container, here is an example of how to configure this container in a docker-compose.yaml file:

services:
  palworld-dashboard:
    image: flux1991/palworld-server-dashboard:latest
    container_name: palworld-dashboard
    environment:
      - "ApiConfig__Host=host.docker.internal"
      - "ApiConfig__Password=#RestApiPw#"
      - "ServerInfo__Host=your.palworld.host.com"
    ports:
      - 8080:8080
    extra_hosts:
      - "host.docker.internal:host-gateway"

Attention: If you are using a firewall on your system (which you should), make sure the palworld-server-dashboard docker container ip range can access the RestAPI Port of the palworld-server.

Request the gateway-ip of a docker-container:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}' <container>

Linux example of how to create ufw rule

sudo ufw allow from <gateway-ip> to any port 8212 proto tcp comment 'Palworld Server Dashboard'

This example includes a mock API service (Prism) and the dashboard. Save as docker-compose.yml:

version: "3.8"
services:
  # ... palworld server or other services ...

  palworld-dashboard:
    image: flux1991/palworld-server-dashboard:latest
    container_name: palworld-server-dashboard
    ports:
      - "8080:8080"
    volumes:
      - ./palworld-dashboard/data:/app/data                            
      - ./palworld-dashboard/appsettings.json:/app/appsettings.json:ro 
    restart: unless-stopped

⁠Environment variables

Full NameShorthandDescription
ApiConfig__HostServerHostThe host name or IP of the Palworld server.
ApiConfig__PortRestApiPortThe port of the Palworld server REST API (default: 8212).
ApiConfig__SslSslWhether to use HTTPS for the REST API (default: false).
ApiConfig__UsernameThe username for the REST API (default: admin).
ApiConfig__PasswordPasswordThe password for the REST API.
ApiConfig__CacheRetentionThe time (format: HH:mm:ss) to cache API responses to not penetrate palworld server RestAPI (default: 1 minute)
ApiConfig__CircuitBreakerCooldownThe time (format: HH:mm:ss) to cooldown the circuit breaker (default: 1 minute)
ServerInfo__HostThe host name or IP of the Palworld server.
ServerInfo__PortThe port of the Palworld server (default: 8211).
Database__PathThe path to the SQLite database file (default: data/dashboard.db).

⁠Appsettings file example

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ApiConfig": {
    "Host": "localhost",
    "Port": 8212,
    "Ssl": false,
    "Username": "admin",
    "Password": "admin",
    "CacheRetention": "00:01:00",
    "CircuitBreakerCooldown": "00:01:00"
  },
  "ServerInfo": {
    "Host": "palworld.myserver.com",
    "Port": 8211
  },
  "Database": {
    "Path": "data/dashboard.db"
  }
}

⁠Reverse proxy & TLS (production)

For production exposure, put the container behind a reverse proxy (nginx, Traefik, Caddy) for TLS termination, automatic certificate management, and rate limiting. Example responsibilities for the proxy:

  • Terminate TLS (Let's Encrypt)
  • Forward X-Forwarded-* headers
  • Restrict access to admin endpoints if needed
  • Optionally serve the app on standard ports (80/443)

Set ASPNETCORE_FORWARDEDHEADERS_ENABLED / configure forwarded headers if you need accurate request scheme/host in the app.

Tag summary

Content type

Image

Digest

sha256:c3e9ac58b…

Size

124 MB

Last updated

4 months ago

docker pull flux1991/palworld-server-dashboard