Gaming Servers

Vintage Story

Host a Vintage Story dedicated server on Linux, installation, world configuration and mod management

Vintage Story is a sandbox survival game with no server license cost. This guide covers setting up a dedicated server on Linux with mod support.


Requirements

  • RAM: 2GB minimum (4GB+ recommended)
  • CPU: 2 vCPU
  • Disk: 10GB free space
  • OS: Linux x64
  • Network: UDP port 42420 (default)

Download Server

Get Server Binaries

Visit account.vintagestory.at and download the latest Linux server release.

Alternatively, download via command line:

# Download (replace version number)
wget https://account.vintagestory.at/files/releases/vs-linux-server-1.19.8.tar.gz

# Extract
mkdir -p /opt/vintagestory-server
tar xzf vs-linux-server-1.19.8.tar.gz -C /opt/vintagestory-server

# Verify
ls -la /opt/vintagestory-server/

Server Configuration

Create Data Directory

# Separate data from binaries for easier updates
mkdir -p /opt/vintagestory-data
mkdir -p /opt/vintagestory-data/Worlds
mkdir -p /opt/vintagestory-data/Mods

Edit serverconfig.json

Create /opt/vintagestory-data/serverconfig.json:

{
  "ServerName": "My Vintage Story Server",
  "ServerPassword": "secretpassword",
  "AdminPassword": "adminpassword123",
  "Port": 42420,
  "MaxClients": 8,
  "AllowCreativeMode": false,
  "AllowPvP": true,
  "AllowMods": true,
  "WorldConfig": {
    "WorldSeed": 123456789,
    "WorldType": "superflat"
  },
  "Mods": []
}

Configuration Options

{
  "ServerName": "Display name in browser",
  "ServerPassword": "Password to join (empty = public)",
  "AdminPassword": "Admin console password",
  "Port": 42420,
  "MaxClients": 1-32,
  "AllowCreativeMode": true/false,
  "AllowPvP": true/false,
  "AllowMods": true/false,
  "WorldConfig": {
    "WorldSeed": "Random seed for world generation",
    "WorldType": "superflat | standard | largbiomes"
  }
}

Start Server

Manual Start

cd /opt/vintagestory-server
./VintagestoryServer --dataPath /opt/vintagestory-data

First run will generate the world and config files:

Vintage Story 1.19.8 (Linux)
Loading configuration...
Creating world...
Server ready, listening on 0.0.0.0:42420

Systemd Service

Create /etc/systemd/system/vintagestory.service:

[Unit]
Description=Vintage Story Dedicated Server
After=network.target

[Service]
Type=simple
User=games
Group=games
WorkingDirectory=/opt/vintagestory-server
ExecStart=/opt/vintagestory-server/VintagestoryServer --dataPath /opt/vintagestory-data
Restart=on-failure
RestartSec=10

# Resource limits
MemoryLimit=4G
TasksMax=1000

[Install]
WantedBy=multi-user.target

Enable and Start

sudo systemctl daemon-reload
sudo systemctl enable vintagestory
sudo systemctl start vintagestory

# Check status
sudo systemctl status vintagestory

# View logs
sudo journalctl -u vintagestory -f

Firewall Configuration

Open UDP port:

# UFW
sudo ufw allow 42420/udp

# iptables
sudo iptables -A INPUT -p udp --dport 42420 -j ACCEPT

Mod Management

Install Mods

Download mods from mods.vintagestory.at:

# Download mod file (e.g., myCoolMod.zip)
wget https://mods.vintagestory.at/files/myCoolMod.zip

# Extract to Mods directory
unzip myCoolMod.zip -d /opt/vintagestory-data/Mods/

# Verify
ls -la /opt/vintagestory-data/Mods/

Enable Mods in Config

Edit serverconfig.json:

{
  "AllowMods": true,
  "Mods": [
    "myCoolMod",
    "anotherMod"
  ]
}

Restart server:

sudo systemctl restart vintagestory

World Management

List Worlds

ls -la /opt/vintagestory-data/Worlds/

Create New World

Edit serverconfig.json and change WorldSeed value, then restart server.

Delete World

# Stop server
sudo systemctl stop vintagestory

# Delete world directory
rm -rf /opt/vintagestory-data/Worlds/world-name

# Start server (creates new world)
sudo systemctl start vintagestory

Backup

Manual Backup

# Backup world saves
sudo cp -r /opt/vintagestory-data/Worlds /backup/vintagestory-$(date +%Y%m%d)

# Backup entire server data
sudo tar czf /backup/vintagestory-$(date +%Y%m%d).tar.gz /opt/vintagestory-data/

Automated Backup

Edit crontab:

sudo crontab -e

Add:

# Daily backup at 2 AM
0 2 * * * /usr/bin/tar czf /backup/vintagestory-$(date +\%Y\%m\%d).tar.gz /opt/vintagestory-data/

# Keep only last 30 days
0 3 * * * find /backup -name "vintagestory-*.tar.gz" -mtime +30 -delete

Server Updates

Update Server Binaries

# Stop server
sudo systemctl stop vintagestory

# Download new version from account.vintagestory.at
wget https://account.vintagestory.at/files/releases/vs-linux-server-1.20.0.tar.gz

# Backup current binaries
sudo cp -r /opt/vintagestory-server /opt/vintagestory-server-backup-1.19.8

# Extract new version
sudo tar xzf vs-linux-server-1.20.0.tar.gz -C /opt/vintagestory-server

# Start server
sudo systemctl start vintagestory

# Verify update
sudo journalctl -u vintagestory -n 10

World data in /opt/vintagestory-data is preserved automatically.


Monitoring

Check Server Health

# Process running?
ps aux | grep VintagestoryServer

# Port listening?
sudo ss -tulnp | grep 42420

# Memory/CPU usage
top -p $(pgrep -f VintagestoryServer)

Player Connections

# Monitor real-time logs
sudo journalctl -u vintagestory -f

Troubleshooting

Server Won't Start

# Check logs
sudo journalctl -u vintagestory -n 50

# Verify config is valid JSON
jq . /opt/vintagestory-data/serverconfig.json

# Check permissions
sudo chown -R games:games /opt/vintagestory-data

Players Can't Connect

# Verify port is listening
sudo ss -tulnp | grep 42420

# Test from external machine
nc -uz <your-ip> 42420

# Check firewall
sudo ufw status

World Corruption

# Stop server
sudo systemctl stop vintagestory

# Restore from backup
sudo tar xzf /backup/vintagestory-20250101.tar.gz -C /

# Restart
sudo systemctl start vintagestory

Vintage Story requires player licenses but the dedicated server is completely free. Clients must purchase the game individually, but you pay nothing for server hosting.


Performance Tuning

Reduce World Complexity

Lower MaxClients if experiencing performance issues:

{
  "MaxClients": 4
}

Monitor Resource Usage

# Watch memory usage over time
watch -n 5 'ps aux | grep VintagestoryServer | grep -v grep'

If consistently hitting RAM limit, either increase server RAM or reduce MaxClients.

On this page