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/ModsEdit 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-dataFirst 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:42420Systemd 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.targetEnable 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 -fFirewall Configuration
Open UDP port:
# UFW
sudo ufw allow 42420/udp
# iptables
sudo iptables -A INPUT -p udp --dport 42420 -j ACCEPTMod 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 vintagestoryWorld 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 vintagestoryBackup
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 -eAdd:
# 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 -deleteServer 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 10World 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 -fTroubleshooting
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-dataPlayers 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 statusWorld Corruption
# Stop server
sudo systemctl stop vintagestory
# Restore from backup
sudo tar xzf /backup/vintagestory-20250101.tar.gz -C /
# Restart
sudo systemctl start vintagestoryVintage 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.