# 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 build` to generate an executable. - Run `./vssm daemon` to start the daemon - *(For now, theres no background service created by default, but you can run it in the background with `vssm daemon &` and kill the process with `pkill vssm`)* - Run `./vssm` with no arguments to show usage ## Configuration The default configuration file is stored in `~/.local/share/vssm/config.json`, however you can pass the `--config ` 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: ```json { "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: **NOTE:** Most settings that are filepaths should be left alone in the instance config settings, as they will be overwritten automatically (like the ModPaths setting). **NOTE:** Roles settings must be modified in the actual instance config ```json "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" } } } ``` ## Web Interface ### NEW: [v1.0.0 Bundled Release (Includes Web Interface)](https://git.bellsworne.tech/chrisbell/vssm_full/releases/tag/v1.0.0) 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](https://git.bellsworne.tech/chrisbell/vssm_web). ## Roadmap - [x] Configuration - [x] Custom configuration path (passed to the daemon with a flag `--config`) - [x] Daemon instance remembers config path (*so you don't have to pass `--config` everytime you run an ipc command*) - [x] Daemon listen port - [x] Declarative Server configuration (Create servers in config) - [x] All configuration options - [x] Endpoint for modifying instance configuration (for web ui) - [ ] Server management - [x] Create servers - [x] Automatic server binary downloading by version - [x] Delete servers - [x] Start/Stop servers - [x] Server configuration - [x] Download correct configuration template for version (see availible templates [here](https://git.bellsworne.tech/chrisbell/vssm_config_templates)) - [x] Version - [x] Server Name - [x] Port - [x] Full declarative configuration support in main app config - [x] Multiple servers support - [x] List servers and their status - [x] Send commands to servers - [ ] Automated server backups - [ ] Binary releases - [ ] Automatically set up background service - [ ] Other - [ ] First class NixOS support - [x] Patch downloaded server binaries for NixOS - [ ] Official nix package or flake - [ ] All configuration options