Mods / Server Updater

Tags:
Utility
Author:
EnderVaedorn
Side:
Server
Created:
Apr 30th 2025 at 11:15 PM
Last modified:
Jun 3rd at 5:53 AM
Downloads:
101
Follow Unfollow 12
For testers:
ender-updater-v3.0.zip

Vintage Story Server Updater

A careful standalone shell updater for Vintage Story dedicated servers on Linux.

This package contains a single updater script, vs-update-standalone.sh, plus the included README. It is designed for server admins who want a safer way to update a Vintage Story dedicated server without manually deleting and replacing server files every time a new release comes out.

Multi-Server Instance Updating

If you are looking for a utility to maintain updates and backups of multiple VS servers on one Linux host, the Github page also has a set of installable binaries that do this alongside the same functions as the standalone version.
This includes a .deb file to install the commands.

What It Does

vs-update-standalone.sh downloads a Vintage Story server .tar.gz package, stages it in a temporary location, checks the selected install path, creates rollback/review folders, and then replaces the server application files while preserving the existing server configuration and data layout.

The updater is built around the recommended Linux dedicated-server structure:

/home/vintagestory/
├── server/   replaceable server application files
└── data/     persistent worlds, configs, saves, and mods

The updater should be pointed at the replaceable server directory, such as:

/home/vintagestory/server

Do not point it at /home/vintagestory itself.

Features

  • Standalone Bash script; no compiled binary required

  • Interactive setup using whiptail

  • Command-line mode for scripted or unattended updates

  • Downloads and stages the new server package before touching the live install

  • Preserves existing server.sh configuration

  • Creates rollback snapshots before replacing files

  • Moves the previous server payload into a review folder instead of deleting it immediately

  • Stores update logs and summaries inside the server install directory

  • Remembers the selected install directory per user

  • Includes safeguards against accidentally targeting protected or unsafe directories

  • Supports the recommended separate server/ and data/ layout

  • Can help migrate older nested data layouts to the safer sibling data/ structure

Included Files

vs-update-standalone.sh
README.md

Basic Usage

  1. Extract the packaged zip somewhere convenient.

  2. Make the script executable:

chmod +x vs-update-standalone.sh
  1. Stop your Vintage Story dedicated server before updating.

  2. Run the updater:

./vs-update-standalone.sh
  1. Follow the prompts for:

  • Server install directory

  • Vintage Story server package URL

  • Confirmation before replacing files

For an existing server using the recommended layout, the install directory will usually be:

/home/vintagestory/server

Command-Line Usage

For a non-interactive update:

./vs-update-standalone.sh \
  --yes \
  --install-dir /home/vintagestory/server \
  --url https://cdn.vintagestory.at/gamefiles/stable/vs_server_linux-x64_VERSION.tar.gz

Replace the URL with the actual Vintage Story server package you want to install.

Where Files Are Stored

Updater metadata is stored inside the selected server install directory:

.vs-backups/         rollback snapshots
.vs-updater-trash/   previous server payloads awaiting manual review
.vs-logs/            deployment and summary logs

The previous server payload is intentionally kept after a successful update. Start the updated server and verify that worlds, mods, configuration, and player access are working before deleting old review folders.

Requirements

  • Bash

  • curl

  • tar

  • GNU realpath / coreutils

  • whiptail for interactive mode

On Debian/Ubuntu systems, the usual install prep command is:

sudo apt install curl tar coreutils whiptail

Important Notes

Stop the server before running the updater.

This script updates the Vintage Story server application files. Your persistent server data, worlds, configuration, and mods should live outside the replaceable server application directory.

Always make sure you are targeting the actual server install directory, not the parent home directory.

Mod Version Downloads Released Changelog Download
3.0.0 3 Jun 3rd at 5:53 AM ender-updater-v3.0.zip

Updated the standalone Vintage Story server updater with a much safer deployment flow.

Old server files are now moved to .vs-updater-trash/ for manual review instead of being deleted during updates.
Added rollback snapshots for safer recovery if deployment fails.
Improved DATAPATH handling to better protect worlds, mods, configs, and other persistent server data.
Added safeguards that stop the update if nested data cannot be safely identified.
Existing server.sh settings are preserved during updates.
Added optional nested data migration to the recommended sibling data/ directory.
Updated README with clearer install, update, rollback, and cleanup guidance.
Added ShellCheck validation and fixed reported script issues.

1.1.0 98 Apr 30th 2025 at 11:18 PM Release Retracted

Retraction Reason:

This version was too destructive and poorly coded. Rebuilding and will update a V2 shortly

Changelog:

Usage Instructions for vs-update
================================

1. Place the script `vs-update-standalone.sh` anywhere you'd like.
2. Make it executable:
chmod +x vs-update-standalone.sh

3. Run the script:
./vs-update-standalone.sh

4. On first run, it will prompt for:
- The path to your Vintage Story install directory (e.g., /home/server)
- The URL to download the latest VS server release (.tar.gz)

5. The script will:
- Backup server.sh (to .vs-backups/)
- Delete old files (excluding .vs-* folders)
- Extract the new server package
- Restore server.sh
- Log all events in .vs-logs/ within your install directory

6. Subsequent runs will reuse your previously entered path unless you delete `.vs-config`.

Requirements:
-------------
- bash
- curl
- tar
- whiptail (sudo apt install whiptail)

Notes:
------
- Run as any user with write access to the install directory.
- Works well with sudo or non-login user environments.


1 Comment (oldest first | newest first) (threaded | flat)

DrKlinger, May 3rd 2025 at 3:25 AM

oooh this is great!