Jump to content

Recommended Posts

Posted
  • Distro / Kernel release :                         Linux Mint 22.2
  • Mono / .NET package version :             dotnet-runtime-8.0/noble-updates,now 8.0.20-0ubuntu1~24.04.1 amd64
  • Graphics driver version :                       Nvidia 550.163.01
  • Works for client, mp server or both :   client, haven't tested server yet
  • Installation method used :                     install.sh
  • Hacks (if needed) :                               
    • the desktop / main menu shortcut only work if you install dotnet through your package manager; manual installation didn't make them work.
Posted

Vintage Story version :                     1.21.4

Operating System: KUbuntu 25.04
KDE Plasma Version: 6.3.4
KDE Frameworks Version: 6.12.0
Qt Version: 6.8.3
Kernel Version: 6.14.0-33-generic (64-bit)
Graphics Platform: X11
Processors: 2 × AMD Ryzen 5 7600X 6-Core Processor
Memory: 30,5 GiB of RAM
Graphics Processor: AMD Radeon RX 7600 XT

Works for client, mp server or both :   client,  haven't yet tried MP or running a server

start game: run.sh  and vintagestory.desktop(manualy added path to game folder)

managed to transfer world files and configs from win10

 

  • 4 weeks later...
Posted
  • Distro / Kernel release :                       Nobara Linux 42 (KDE Plasma Desktop Edition) /  6.17.5-200.nobara.fc42.x86_64
  • Mono / .NET package version :           (Whatever the flatpak ships with)
  • Graphics driver version :                      Mesa 25.2.5 (RADV)
  • Works for client, mp server or both :    Only client tested
  • Installation method used :                    flatpak --user install https://flatpak.vintagestory.at/VintageStory.flatpakref   
  • GPU                                                     Radeon RX 9060 XT (16GB)
  • CPU:                                                    Ryzen 5 7600
  • Memory:                                               30,4 GiB of RAM

 

works pretty much OOTB, i set mesa_glthread=true for good measure and nothing bad has happened as of now.

  • 1 month later...
Posted (edited)

Not bad at all, putting my (Linux newbie) notes here for posterity:

  • Distro / Kernel release:                        Ubuntu Studio 24.04.3 LTS NobleNumbat (with KDE Plasma)  
  • Mono / .NET package version:          .NET 7.0 - I had to install this manually (potentially my mistake though). 8.0 did not work.
  • Graphics driver version:                      NVIDIA metapackage nvidia-driver-570-open (proprietary)
  • Works for client, mp server or both:  Only client tested
  • Installation method used: Attempted:                   
flatpak --user install https://flatpak.vintagestory.at/VintageStory.flatpakref

 which didn't appear to work - could be my fault, can't be sure. So I downloaded the tar.gz  and extracted that to /downloads.  At this point I ran the install.sh via the Terminal (which is where it detected needing .NET. I installed 10, since it was available, realized that didn't work, and then installed 8 as instructed in the installation instructions: https://wiki.vintagestory.at/Installing_the_game_on_Linux#Easy_installation_options ##Installing NET manually (Scripted version).
Adding the environment variable worked as described, with the output

echo $DOTNET_ROOT

being:  /home/USERNAME/.dotnet (success!)

That still didn't work - despite being on Ubuntu 24.04+, I still needed to install .NET 7.0. So I did that too. The Root was still correctly set, so I didn't need to do that again. This time, it ran! install.sh never did put that icon on the desktop though. In the application menu, VintageStory appeared under Games, and by right-clicking on that I was able to add a shortcut to the desktop that way.

  • GPU                                                     NVIDIA RTX3050 (12GB) [GA106]
  • CPU:                                                    Ryzen 5 5500
  • Memory:                                             32GB
Edited by Danweel
  • 5 weeks later...
Posted
  • Distro / Kernel release :                         NixOS Unstable / Linux 6.12.56
  • Mono / .NET package version :             dotnet-runtime_8 v8.0.22
  • Graphics driver version :                       amdgpu
  • Works for client, mp server or both :   both
  • Installation method used :                     vintagestory-nix
  • 1 month later...
Posted
  • Distro / Kernel release :                        Debian Unstable (forky/sid)
  • Mono / .NET package version :             dotnet-runtime-8.0 (8.0.24-1) from Microsoft apt repo
  • Graphics driver version :                       NVIDIA binary driver 550.163.01-4 from Debian official package on GTX 1050 Ti Mobile [10de:1c8c] GPU
  • Works for client, mp server or both :     tried only client, works fine
  • Installation method used :                     manual
  • Hacks (if needed) :                                fully manual install

Installation steps:

# Get the game .tar.gz and unpack

# Debian has no official package for .NET 8 so installed manually from microsoft packages (as root):
wget 'https://packages.microsoft.com/config/debian/13/packages-microsoft-prod.deb'
dpkg -i packages-microsoft-prod.deb
apt update
apt install dotnet-runtime-8.0
apt purge packages-microsoft-prod

# Inside the game dir, manually run this piece of code taken from install.sh, adding -v to ln call to see what it does -
# it created a bunch of symlinks; no idea what it's for but oh well
# NOTE: this requires specifically "bash" shell, may not work in zsh etc.
for i in $(find "./assets"); do f="$(basename -- "$i")"; [ "$f" = "${f,,}" ] || { echo "Create LowercaseAlias for $f"; ln -svf "$f" "${i%/*}/${f,,}"; }; done

# Manually (as root) confirm that this is larger than 262144. Root needed because as of now on Debian, regular user has no sysctl
sysctl -n vm.max_map_count

# Inside the game dir, Manually changed <dir> to <dir prefix="cwd"> in fonts.conf to get rid of the warning

# Created my own launcher than chains into the game's run.sh.
# This does a few things, all of them should be obvious.

#!/bin/bash

set -exuo pipefail

cd /path/to/the/unpacked/game

__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia ALSOFT_DRIVERS=pulse mesa_glthread=true exec taskset -c 4-7 ./run.sh

Everything seems to work fine.

Posted

Please share in the comments your working VS linux configuration in the following way:

  • Distro / Kernel release :                         Ubuntu Server 24.04
  • Mono / .NET package version :             aspnetcore-runtime-10.0
  • Graphics driver version :                       None. Server runs headless
  • Works for client, mp server or both :     multiplayer server
  • Installation method used :                     download tarball and run tar -zxf
  • Hacks (if needed) :                                curl is needed to run a few scripts to help manage the server

Additional scripts:

update.sh

#!/bin/bash
if [ -z "$1" ]; then
  echo "Usage: $0 <URL>"
  exit 1
fi

URL="$1"
OUTPUT_FILE="vs.tar.gz"
ASSETS_DIR="assets"

mv server.sh server.sh.old

curl -o "$OUTPUT_FILE" "$URL"
if [ $? -ne 0 ]; then
  echo "Error: Failed to download $URL"
  exit 1
fi

if [ -d "$ASSETS_DIR" ]; then
  rm -rf "$ASSETS_DIR"
  echo "Deleted existing $ASSETS_DIR folder."
fi

tar -xzf "$OUTPUT_FILE" --overwrite
if [ $? -ne 0 ]; then
  echo "Error: Failed to extract $OUTPUT_FILE"
  exit 1
fi

# Restore server.sh file
rm server.sh
mv server.sh.old server.sh

echo "Successfully downloaded and updated Vintage Story."

installMod.sh

#!/bin/bash
function download_file() {
    read -p "Enter the URL of the mod to install: " url
    filename=$(curl -sI "$url" | grep -o -E 'filename="?([^";]+)"?' | sed 's/filename=\"\?//' | sed 's/\"$//')
    if [ -z "$filename" ]; then
        filename=$(basename "$url")
    fi

    mkdir -p ./Mods

    echo "Downloading $filename . . ."
    curl -L -o "./Mods/$filename" "$url"
    if [ $? -eq 0 ]; then
        echo "Download of $filename is complete!"
    else
        echo "Download failed. Please check the URL and try again."
    fi
}

while true; do
    download_file

    echo "What would you like to do next?"
    echo "1. Restart the process"
    echo "2. Download another file"
    echo "3. Exit"
    read -p "Enter your choice (1/2/3): " choice

    case $choice in
        1)
            echo "Restarting the Vintage Story server..."
            ./server.sh restart
            echo "Server successfully restarted! Exiting the script. Goodbye!"
            break
            ;;
        2)
            echo "Preparing to download another file..."
            ;;
        3)
            echo "Exiting the script. Goodbye!"
            break
            ;;
        *)
            echo "Invalid choice. Please enter 1, 2, or 3."
            ;;
    esac
done

modManager.sh

#!/bin/bash
MODS_DIR="$(dirname "$0")/Mods"
SERVER_SCRIPT="./server.sh"

function display_menu {
    clear
    echo "Vintage Story Mod Manager"
    echo "==========================="

    IFS=$'\n' MOD_FILES=($(find "$MODS_DIR" -maxdepth 1 -type f -name "*.zip" 2>/dev/null | sort))
    unset IFS
    if [ ${#MOD_FILES[@]} -eq 0 ]; then
        echo "No .zip files found in $MODS_DIR."
        echo "Press Q to quit or B to reboot the server."
    else
        echo "Available Mods:"
        for i in "${!MOD_FILES[@]}"; do
            FILE_NAME=$(basename "${MOD_FILES[$i]}")
            echo "$((i+1)). $FILE_NAME"
        done
        echo ""
        echo "Options:"
        echo "  [number] - Delete mod"
        echo "  R - Replace mod"
        echo "  B - Reboot server"
        echo "  Q - Quit"
    fi
}

while true; do
    display_menu

    read -p "Your choice: " CHOICE

    if [[ "$CHOICE" =~ ^[qQ]$ ]]; then
        echo "Exiting..."
        exit 0
    elif [[ "$CHOICE" =~ ^[bB]$ ]]; then
        echo "Rebooting the server..."
        $SERVER_SCRIPT restart
        exit 0
    elif [[ "$CHOICE" =~ ^[rR]$ ]]; then
        if [ ${#MOD_FILES[@]} -eq 0 ]; then
            echo "No mods to replace."
        else
            read -p "Enter the number of the mod you want to replace: " REPLACE_NUM
            INDEX=$((REPLACE_NUM-1))
            if [ $INDEX -ge 0 ] && [ $INDEX -lt ${#MOD_FILES[@]} ]; then
                FILE_TO_REPLACE="${MOD_FILES[$INDEX]}"
                FILE_NAME=$(basename "$FILE_TO_REPLACE")
                echo "Selected mod: $FILE_NAME"
                read -p "Enter the URL of the replacement mod: " URL
                if [[ -z "$URL" ]]; then
                    echo "No URL entered. Replacement canceled."
                else
                    echo "Downloading replacement..."
                    NEW_FILE_PATH="$MODS_DIR/$(basename "$URL")"
                    if wget -q -O "$NEW_FILE_PATH" "$URL"; then
                        echo "Download successful. Replacing $FILE_NAME..."
                        rm -f "$FILE_TO_REPLACE"
                        echo "$FILE_NAME has been replaced with $(basename "$NEW_FILE_PATH")."
                    else
                        echo "Failed to download replacement file."
                        rm -f "$NEW_FILE_PATH"
                    fi
                fi
            else
                echo "Invalid selection. Please try again."
            fi
        fi
    elif [[ "$CHOICE" =~ ^[0-9]+$ ]]; then
        INDEX=$((CHOICE-1))
        if [ $INDEX -ge 0 ] && [ $INDEX -lt ${#MOD_FILES[@]} ]; then
            FILE_TO_DELETE="${MOD_FILES[$INDEX]}"
            read -p "Are you sure you want to remove $(basename "$FILE_TO_DELETE")? (y-n): " CONFIRM
            if [[ "$CONFIRM" =~ ^[yY]$ ]]; then
                rm "$FILE_TO_DELETE"
                echo "$(basename "$FILE_TO_DELETE") has been removed."
            else
                echo "Deletion canceled."
            fi
        else
            echo "Invalid selection. Please try again."
        fi
    else
        echo "Invalid input. Please try again."
    fi

    echo "Press Enter to continue..."
    read
done

I have spent a fair bit of time working on these scripts. hope you can use them, too.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.