Hosting Guides

Containerized Skyrim Together Servers using Docker Compose

8 min readUbuntu 24.04Docker ComposeCreation

Skyrim Together Reborn ships an official dedicated server, but the Tilted Phoques team also publishes a clean Linux container at tiltedphoques/st-reborn-server. Running it under Docker Compose gives you a reproducible deployment that survives host rebuilds, with config and saves living in a host mounted volume that you can back up like any other Compose service. This guide deploys the container on Ubuntu 24.04, exposes the dual UDP ports, and tunes server.ini for a private friends only lobby.

Prerequisites

  • Ubuntu 24.04 with Docker Engine 25 and the Compose plugin.
  • 4 GB RAM and 2 CPU cores (the server is light, the bottleneck is per client mod sync).
  • UDP 10578 and UDP 10579 open at the host firewall.
  • Every connecting client must own a legal Skyrim Special Edition copy.

Step 1: Project Layout

user@host
sudo mkdir -p /opt/skyrim-together/config
sudo chown -R 1000:1000 /opt/skyrim-together
cd /opt/skyrim-together

Step 2: The Compose File

docker-compose.yml
services:
skyrim-together:
image: tiltedphoques/st-reborn-server:latest
container_name: skyrim-together
restart: unless-stopped
stop_grace_period: 30s
ports:
- "10578:10578/udp"
- "10579:10579/udp"
volumes:
- ./config:/home/server/config

Step 3: First Boot to Generate Defaults

user@host
docker compose up -d
docker compose logs -f skyrim-together
# Wait for: "Server is up and running on port 10578"
docker compose down

Step 4: Edit server.ini

The first boot writes config/server.ini with sane defaults. Open it and lock the lobby down: a long password, a strict player cap, and a custom welcome banner that links to the community Discord.

config/server.ini
[GameServer]
sName = "Vardoran Reborn"
sPassword = "REPLACE_LONG_PASSWORD"
uMaxPlayers = 8
uPort = 10578
sToken = ""
bAnnounce = false
bPremium = false
bModsWhitelist = true
[ModPolicy]
sAllowedMods = "SkyUI,JContainers,Engine Fixes"

Step 5: Bring the Server Back Up

user@host
docker compose up -d
docker compose logs --tail=50 skyrim-together

Step 6: Scheduled Config Backups

/opt/skyrim-together/backup.sh
#!/usr/bin/env bash
set -euo pipefail
TS=$(date +%Y%m%d-%H%M)
mkdir -p /opt/skyrim-together/backups
tar -C /opt/skyrim-together -czf /opt/skyrim-together/backups/cfg-${TS}.tar.gz config
find /opt/skyrim-together/backups -type f -mtime +14 -delete
user@host
chmod +x /opt/skyrim-together/backup.sh
crontab -e
0 */6 * * * /opt/skyrim-together/backup.sh

Performance and Tuning

  • Keep uMaxPlayers at 8 or below, Skyrim Together's sync engine degrades sharply past that.
  • Set bAnnounce to false unless you actually want to appear in the public browser, otherwise expect bot scraping.
  • Pin the image to a specific tag in production. :latest is fine for a friends only lobby, not for a community server.

Conclusion

Wrapping the official st-reborn server in a Compose stack with a mounted config volume gives a deployment that is reproducible, recoverable, and easy to upgrade. The same compose file works on any Docker capable host, and the only state worth backing up is the small ini file the container writes on first boot.