Skip to content

Valheim Plus Mod

A brutal exploration and survival game for 1-10 players, set in a procedurally-generated purgatory inspired by viking culture.

Report an issue
updated
variables
20
images
1
author
eggs@goover.dev
sha256
647140caefb1

Readme

Valheim Plus Mod

Author & Contributers

Name Github Profile Buy me a Coffee
gOOvER https://github.com/gOOvER ko-fi

Valheim

A brutal exploration and survival game for 1-10 players, set in a procedurally-generated purgatory inspired by viking culture. Battle, build, and conquer your way to a saga worthy of Odin’s patronage! https://store.steampowered.com/app/892970/Valheim/

Plus Mod

A HarmonyX Mod aimed at improving the gameplay quality of Valheim. The mod includes several different main features including modifiers to ingame stats of players, buildings and entities and a sophisticated system to build and place objects with high precision and a system to modify already placed objects with high precision. The general goal is to provide V+ as a base modification for your gameplay to increase quality of life, change difficulty or have a better experience in general. The mod also comes with a version and configuration control system for servers and users, allowing servers to make sure that only people with the same configuration are able to join their servers. Support: https://github.com/Grantapher/ValheimPlus Discord: https://discord.gg/AmH6Va97GT

!!! ATTENTION !!! All (Server + Clients) need to have a installed Valheim Plus Mod !!!!

Server Ports

Port default
Game 2456
Query 2457

Startup command

export DOORSTOP_ENABLED=1; export DOORSTOP_TARGET_ASSEMBLY=./BepInEx/core/BepInEx.Preloader.dll; export LD_LIBRARY_PATH="./doorstop_libs:$LD_LIBRARY_PATH"; export LD_PRELOAD="libdoorstop_x64.so:$LD_PRELOAD"; export templdpath=$LD_LIBRARY_PATH; export LD_LIBRARY_PATH="./linux64:$LD_LIBRARY_PATH"; export SteamAppId=892970; export LD_LIBRARY_PATH=$templdpath; ./valheim_server.x86_64 -nographics -batchmode -name "{{SERVER_NAME}}" -port {{SERVER_PORT}} -world "{{WORLD}}" -password "{{PASSWORD}}" -public {{PUBLIC_SERVER}} -saveinterval {{BACKUP_INTERVAL}} -backups {{BACKUP_COUNT}} -backupshort {{BACKUP_SHORTTIME}} -backuplong {{BACKUP_LONGTIME}} $( [[ {{ENABLE_CROSSPLAY}} -eq 1 ]] && echo " -crossplay ") > >(sed -uE "{{CONSOLE_FILTER}}") & trap "{{STOP}}" 15; wait $!

The parts in blue are filled in by the panel when the server starts, from the variables below.

Docker image

  • ghcr.io/ptero-eggs/games:valheim

Panel features

  • steam_disk_space

2 contributors

Variables

20 settings

  • Server Name

    Name that appears in server browser.

    env
    SERVER_NAME
    default
    My Server
    rules
    required|string|max:60
    • viewable
    • editable
  • Server Password

    Server password.

    env
    PASSWORD
    default
    secret
    rules
    required|string|min:5|max:20
    • viewable
    • editable
  • World Name

    Name to load if switching between multiple saved worlds.

    env
    WORLD
    default
    Dedicated
    rules
    required|string|max:20
    • viewable
    • editable
  • Public Server

    Public visibility of your server. Set it to false to make the server invisible and only joinable via the 'Join IP'-button.

    env
    PUBLIC_SERVER
    default
    1
    rules
    boolean
    • viewable
    • editable
  • Auto Update

    env
    AUTO_UPDATE
    default
    1
    rules
    required|boolean
    • viewable
    • editable
  • Enable Crossplay

    Enable crossplay support

    env
    ENABLE_CROSSPLAY
    default
    0
    rules
    required|boolean
    • viewable
    • editable
  • Beta Branch

    env
    SRCDS_BETAID
    default
    none
    rules
    max:30
    • viewable
    • editable
  • Beta Password

    env
    SRCDS_BETAPASS
    default
    none
    rules
    max:30
    • viewable
    • editable
  • Backup Interval

    Change how often the world will save in seconds. Default: 1800 (30 minutes).

    env
    BACKUP_INTERVAL
    default
    1800
    rules
    required|numeric|min:0
    • viewable
    • editable
  • Backup Count

    Sets how many automatic backups will be kept. The first is the 'short' backup length, and the rest are the 'long' backup length. When default values are used means one backup that is 2 hours old, and 3 backups that are 12 hours apart. Default: 4.

    env
    BACKUP_COUNT
    default
    4
    rules
    required|numeric|min:0
    • viewable
    • editable
  • Backup Shorttime

    Sets the interval between the first automatic backups in seconds. Default: 7200 (2 hours).

    env
    BACKUP_SHORTTIME
    default
    7200
    rules
    required|numeric|min:0
    • viewable
    • editable
  • Backup Longtime

    Sets the interval between the subsequent automatic backups in seconds. Default: 43200 (12 hours).

    env
    BACKUP_LONGTIME
    default
    43200
    rules
    required|numeric|min:0
    • viewable
    • editable
  • [System] Console Filter

    Remove unwanted outputs from the console.

    env
    CONSOLE_FILTER
    default
    /^\(Filename:.*Line:[[:space:]]+[[:digit:]]+\)$/d; /^([[:space:]]+)?$/d
    rules
    string
  • [System] Steam AppID

    Valheim steam app id for auto updates.

    env
    SRCDS_APPID
    default
    896660
    rules
    nullable|numeric
    • viewable
  • [System] LD Library Path

    Required to load server libraries.

    env
    LD_LIBRARY_PATH
    default
    ./linux64
    rules
    required|string
  • [V+] Github Package

    env
    GITHUB_PACKAGE
    default
    Grantapher/ValheimPlus
    rules
    required|string|max:40
  • [V+] Version

    env
    VERSION
    default
    latest
    rules
    required|string|max:20
  • [V+] MATCH

    env
    MATCH
    default
    UnixServer.zip
    rules
    required|string|max:25
  • [System] Filter

    env
    FILTER
    default
    /^\(Filename:.*Line:[[:space:]]+[[:digit:]]+\)$/d; /^([[:space:]]+)?$/d
    rules
    string
  • [System] Shutdown Command

    env
    STOP
    default
    kill -2 $!; wait;
    rules
    required|string
Installation script 91 lines container ghcr.io/ptero-eggs/installers:debian entrypoint bash show
#!/bin/bash
# steamcmd Base Installation Script

clear
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
echo -e "${BLUE}-------------------------------------------------${NC}"
echo -e "${YELLOW}Valheim+ Installscript${NC}"
echo -e "${BLUE}-------------------------------------------------${NC}"

# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.
apt -y update
apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates jq wget

## just in case someone removed the defaults.
if [[ "${STEAM_USER}" == "" ]] || [[ "${STEAM_PASS}" == "" ]]; then
    echo -e "steam user is not set.\n"
    echo -e "Using anonymous user.\n"
    STEAM_USER=anonymous
    STEAM_PASS=""
    STEAM_AUTH=""
else
    echo -e "user set to ${STEAM_USER}"
fi

echo -e "${BLUE}-------------------------------------------------${NC}"
echo -e "${YELLOW}download and install steamcmd${NC}"
echo -e "${BLUE}-------------------------------------------------${NC}"

## download and install steamcmd
cd /tmp
mkdir -p /mnt/server/steamcmd
curl -sSL -o steamcmd.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xzvf steamcmd.tar.gz -C /mnt/server/steamcmd
mkdir -p /mnt/server/steamapps # Fix steamcmd disk write error when this folder is missing
cd /mnt/server/steamcmd

# SteamCMD fails otherwise for some reason, even running as root.
# This is changed at the end of the install process anyways.
chown -R root:root /mnt
export HOME=/mnt/server
echo -e "${GREEN}...done${NC}"

echo -e "${BLUE}-------------------------------------------------${NC}"
echo -e "${YELLOW}install Valheim with SteamCMD${NC}"
echo -e "${BLUE}-------------------------------------------------${NC}"

## install game using steamcmd
./steamcmd.sh +force_install_dir /mnt/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ "${WINDOWS_INSTALL}" == "1" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s "-beta ${SRCDS_BETAID}" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s "-betapassword ${SRCDS_BETAPASS}" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6

## set up 32 bit libraries
mkdir -p /mnt/server/.steam/sdk32
cp -v linux32/steamclient.so ../.steam/sdk32/steamclient.so

## set up 64 bit libraries
mkdir -p /mnt/server/.steam/sdk64
cp -v linux64/steamclient.so ../.steam/sdk64/steamclient.so
echo -e "${GREEN}...done${NC}"

echo -e "${BLUE}-------------------------------------------------${NC}"
echo -e "${YELLOW}downloading V+ from Github${NC}"
echo -e "${BLUE}-------------------------------------------------${NC}"

## get release info and download links
LATEST_JSON=$(curl --silent "https://api.github.com/repos/${GITHUB_PACKAGE}/releases/latest")
RELEASES=$(curl --silent "https://api.github.com/repos/${GITHUB_PACKAGE}/releases")

if [ -z "${VERSION}" ] || [ "${VERSION}" == "latest" ]; then
    DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})
else
    VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION "${VERSION}" '.[] | select(.tag_name==$VERSION) | .tag_name')
    if [ "${VERSION}" == "${VERSION_CHECK}" ]; then
        DOWNLOAD_LINK=$(echo ${RELEASES} | jq -r --arg VERSION "${VERSION}" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})
    else
        echo -e "defaulting to latest release"
        DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)
    fi
fi

cd /mnt/server
wget -N $DOWNLOAD_LINK
unzip -o $MATCH
rm -fR $MATCH
echo -e "${GREEN}...done${NC}"

echo -e "${BLUE}-------------------------------------------------${NC}"
echo -e "${GREEN}Installation completed${NC}"
echo -e "${BLUE}-------------------------------------------------${NC}"