init
This commit is contained in:
commit
c0b02b09e5
4 files changed
+128
No files matched your search
+36
@@ -0,0 +1,36 @@
|
||||
FROM debian:12-slim
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV STEAMCMDDIR=/opt/steamcmd
|
||||
ENV VALHEIMDIR=/opt/valheim
|
||||
ENV BACKUPDIR=/backups
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
curl \
|
||||
wget \
|
||||
unzip \
|
||||
tzdata \
|
||||
lib32gcc-s1 \
|
||||
lib32stdc++6 && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# SteamCMD
|
||||
RUN mkdir -p ${STEAMCMDDIR} ${VALHEIMDIR} ${BACKUPDIR} && \
|
||||
cd ${STEAMCMDDIR} && \
|
||||
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz && \
|
||||
tar -xzf steamcmd_linux.tar.gz && rm steamcmd_linux.tar.gz
|
||||
|
||||
# Copy scripts
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
COPY backup.sh /backup.sh
|
||||
RUN chmod +x /entrypoint.sh /backup.sh
|
||||
|
||||
WORKDIR ${VALHEIMDIR}
|
||||
|
||||
EXPOSE 2456/udp 2457/udp 2458/udp
|
||||
|
||||
VOLUME ["/config", "/backups"]
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
@@ -0,0 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
WORLD_NAME="${WORLD_NAME:-Dedicated}"
|
||||
BACKUPDIR="${BACKUPDIR:-/backups}"
|
||||
|
||||
ts=$(date +"%Y-%m-%d_%H-%M-%S")
|
||||
mkdir -p "${BACKUPDIR}"
|
||||
|
||||
cp "/config/worlds_local/${WORLD_NAME}.db" "${BACKUPDIR}/${WORLD_NAME}_${ts}.db"
|
||||
cp "/config/worlds_local/${WORLD_NAME}.fwl" "${BACKUPDIR}/${WORLD_NAME}_${ts}.fwl"
|
||||
|
||||
echo "Backup complete: ${BACKUPDIR}/${WORLD_NAME}_${ts}"
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
services:
|
||||
valheim:
|
||||
image: valheim-managed:latest
|
||||
container_name: valheim
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
SERVER_NAME: "Minisip Valheim"
|
||||
WORLD_NAME: "MinisipWorld"
|
||||
SERVER_PASSWORD: "changeme"
|
||||
PUBLIC: "1"
|
||||
TZ: "America/Moncton"
|
||||
volumes:
|
||||
- /mnt/tank/valheim/config:/config
|
||||
- /mnt/tank/valheim/backups:/backups
|
||||
ports:
|
||||
- "2456:2456/udp"
|
||||
- "2457:2457/udp"
|
||||
- "2458:2458/udp"
|
||||
@@ -0,0 +1,61 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
STEAMCMDDIR="${STEAMCMDDIR:-/opt/steamcmd}"
|
||||
VALHEIMDIR="${VALHEIMDIR:-/opt/valheim}"
|
||||
BACKUPDIR="${BACKUPDIR:-/backups}"
|
||||
BEPINEX_URL="${BEPINEX_URL:-https://thunderstore.io/package/download/BepInExPack_Valheim/latest.zip}"
|
||||
|
||||
SERVER_NAME="${SERVER_NAME:-Valheim Server}"
|
||||
WORLD_NAME="${WORLD_NAME:-Dedicated}"
|
||||
SERVER_PASSWORD="${SERVER_PASSWORD:-changeme}"
|
||||
PUBLIC="${PUBLIC:-1}"
|
||||
|
||||
install_valheim() {
|
||||
echo "[valheim] installing/updating via SteamCMD..."
|
||||
"${STEAMCMDDIR}/steamcmd.sh" +login anonymous \
|
||||
+force_install_dir "${VALHEIMDIR}" \
|
||||
+app_update 896660 validate \
|
||||
+quit
|
||||
}
|
||||
|
||||
install_bepinex() {
|
||||
if [ -f "${VALHEIMDIR}/start_server_bepinex.sh" ]; then
|
||||
echo "[bepinex] already installed."
|
||||
return
|
||||
fi
|
||||
|
||||
echo "[bepinex] downloading pack..."
|
||||
curl -L "${BEPINEX_URL}" -o /tmp/bepinex.zip
|
||||
unzip -q /tmp/bepinex.zip -d /tmp/bepinex
|
||||
cp -r /tmp/bepinex/* "${VALHEIMDIR}/"
|
||||
rm -rf /tmp/bepinex /tmp/bepinex.zip
|
||||
}
|
||||
|
||||
backup_world() {
|
||||
echo "[backup] backing up world..."
|
||||
ts=$(date +"%Y-%m-%d_%H-%M-%S")
|
||||
mkdir -p "${BACKUPDIR}"
|
||||
cp "/config/worlds_local/${WORLD_NAME}.db" "${BACKUPDIR}/${WORLD_NAME}_${ts}.db"
|
||||
cp "/config/worlds_local/${WORLD_NAME}.fwl" "${BACKUPDIR}/${WORLD_NAME}_${ts}.fwl"
|
||||
}
|
||||
|
||||
# Install/update
|
||||
install_valheim
|
||||
install_bepinex
|
||||
|
||||
# Background backup loop
|
||||
while true; do
|
||||
sleep 3600
|
||||
backup_world
|
||||
done &
|
||||
|
||||
cd "${VALHEIMDIR}"
|
||||
|
||||
echo "[valheim] starting server..."
|
||||
exec ./start_server_bepinex.sh \
|
||||
-name "${SERVER_NAME}" \
|
||||
-port 2456 \
|
||||
-world "${WORLD_NAME}" \
|
||||
-password "${SERVER_PASSWORD}" \
|
||||
-public "${PUBLIC}"
|
||||
Reference in new issue
Block a user