VSSM (VintageStory Server Manager)
A server manager for VintageStory
IMPORTANT INFORMATION
This project is currently in development, and thus everything is subject to change
About
VSSM allows you to create and manage multiple VS servers
Installation and Usage
There are no binaries just yet, so you have to download the source files.
Setup is easy from source, all you need is:
- Linux
- Go
- .NET 10 Runtime
If you are using NixOS, a flake.nix is provided, just run nix develop for a full development enviroment
- Once you have the source code downloaded or cloned, you can run
go buildto generate an executable. - Run
./vssm daemonto start the daemon - (For now, theres no background service created by default, but you can run it in the background withvssm daemon &and kill the process withpkill vssm) - Run
./vssmwith no arguments to show usage
Configuration
The default configuration file is stored in ~/.local/share/vssm/config.json, however you can pass the --config <path> flag to any command to use a custom configuration. You can also set the VSSM_CONFIG_PATH environment variable in lieu of using the config flag for every command.
The default configuration:
{
"storage": {
"app_data_dir": "",
"install_dir": "/home/user/.local/share/vssm/vssm_data/installs",
"instances_dir": "/home/user/.local/share/vssm/vssm_data/instances",
"backup_dir": "/home/user/.local/share/vssm/vssm_data/backups",
"config_templates_dir": "/home/user/.local/share/vssm/vssm_data/config_templates"
},
"daemon": {
"listen_address": "127.0.0.1",
"port": 65000
},
"instances": {
"test_server": {
"Version": "1.22.3",
"ServerName": "test_server",
"Port": 12345,
"config": null
}
}
-
Storage
- install_dir - The directory where versioned server binaries are stored
- instances_dir - Directory for instances and their data
- backup_dir - Directory for automatic backups of instances
- config_templates_dir - Directory for versioned server configuration templates
-
Daemon
- port - The port the daemon listens on for http requests
- listen_address - The IP address the daemon listens on
-
Instances
- Version - The game version
- ServerName - The name of the instance
- Port - The port the instance is listening on
- config - This allows you to set ANY configuration item from the config, example below:
Example instance with extra configuration:
"test_server": {
"Version": "1.22.3",
"ServerName": "test_server",
"Port": 12345,
"config": {
"AllowPvP": true,
"WhiteListMode": 1,
"WelcomeMessage": "Welcome to the server, {0}!"
"WorldConfig": {
"Seed": "superawesomeseed",
"WorldName": "A new world",
"PlayStyle": "surviveandbuild"
}
}
}
NOTE: Most settings that are filepaths should be left alone in the config, and will probably be overwritten anyways (like the ModPaths setting).
Web Interface
Alongside this project, I am developing a seperate web-based dashboard that can be used to manage you servers with a very simple UI. You can get it here.
Roadmap
-
Configuration
- Custom configuration path (passed to the daemon with a flag
--config)- Daemon instance remembers config path (so you don't have to pass
--configeverytime you run an ipc command)
- Daemon instance remembers config path (so you don't have to pass
- Daemon listen port
- Declarative Server configuration (Create servers in config)
- All configuration options
- Endpoint for modifying instance configuration (for web ui)
- Custom configuration path (passed to the daemon with a flag
-
Server management
- Create servers
- Automatic server binary downloading by version
- Delete servers
- Start/Stop servers
- Server configuration
- Download correct configuration template for version (see availible templates here)
- Version
- Server Name
- Port
- Full declarative configuration support in main app config
- Multiple servers support
- List servers and their status
- Send commands to servers
- Automated server backups
- Create servers
-
Binary releases
-
Automatically set up background service
-
Other
- First class NixOS support
- Patch downloaded server binaries for NixOS
- Official nix package or flake
- All configuration options
- First class NixOS support