Initial commit

This commit is contained in:
jmadmin committed 2026-09-13 20:37:06 -03:00
1 parent c0b02b09e5
commit d2348fdf5e
4 files changed
+76 -80

No files matched your search

+34 -36
View File
@@ -1,36 +1,34 @@
FROM debian:12-slim FROM debian:12-slim
ENV DEBIAN_FRONTEND=noninteractive ENV DEBIAN_FRONTEND=noninteractive
ENV STEAMCMDDIR=/opt/steamcmd ENV STEAMCMDDIR=/opt/steamcmd
ENV VALHEIMDIR=/opt/valheim ENV VALHEIMDIR=/opt/valheim
ENV BACKUPDIR=/backups ENV BACKUPDIR=/backups
RUN apt-get update && \ RUN apt-get update && \
apt-get install -y --no-install-recommends \ apt-get install -y --no-install-recommends \
ca-certificates \ ca-certificates \
curl \ curl \
wget \ wget \
unzip \ unzip \
tzdata \ tzdata \
lib32gcc-s1 \ lib32gcc-s1 \
lib32stdc++6 && \ lib32stdc++6 && \
rm -rf /var/lib/apt/lists/* rm -rf /var/lib/apt/lists/*
# SteamCMD RUN mkdir -p ${STEAMCMDDIR} ${VALHEIMDIR} ${BACKUPDIR} && \
RUN mkdir -p ${STEAMCMDDIR} ${VALHEIMDIR} ${BACKUPDIR} && \ cd ${STEAMCMDDIR} && \
cd ${STEAMCMDDIR} && \ wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz && \
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz && \ tar -xzf steamcmd_linux.tar.gz && rm steamcmd_linux.tar.gz
tar -xzf steamcmd_linux.tar.gz && rm steamcmd_linux.tar.gz
COPY entrypoint.sh /entrypoint.sh
# Copy scripts COPY backup.sh /backup.sh
COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh /backup.sh
COPY backup.sh /backup.sh
RUN chmod +x /entrypoint.sh /backup.sh WORKDIR ${VALHEIMDIR}
WORKDIR ${VALHEIMDIR} EXPOSE 2456/udp 2457/udp 2458/udp
EXPOSE 2456/udp 2457/udp 2458/udp VOLUME ["/config", "/backups"]
VOLUME ["/config", "/backups"] ENTRYPOINT ["/entrypoint.sh"]
ENTRYPOINT ["/entrypoint.sh"]
+1 -13
View File
@@ -1,13 +1 @@
#!/usr/bin/env bash #!/usr/bin/env bashset -euo pipefailWORLD_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}"
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}"
+1 -18
View File
@@ -1,18 +1 @@
services: 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"
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"
+40 -13
View File
@@ -1,10 +1,13 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
export TERM=xterm
STEAMCMDDIR="${STEAMCMDDIR:-/opt/steamcmd}" STEAMCMDDIR="${STEAMCMDDIR:-/opt/steamcmd}"
VALHEIMDIR="${VALHEIMDIR:-/opt/valheim}" VALHEIMDIR="${VALHEIMDIR:-/opt/valheim}"
BACKUPDIR="${BACKUPDIR:-/backups}" BACKUPDIR="${BACKUPDIR:-/backups}"
BEPINEX_URL="${BEPINEX_URL:-https://thunderstore.io/package/download/BepInExPack_Valheim/latest.zip}"
BEPINEX_URL="${BEPINEX_URL:-https://cloud.theminisip.ca/index.php/s/K32Lnjc6TyWXaiN/download}"
SERVER_NAME="${SERVER_NAME:-Valheim Server}" SERVER_NAME="${SERVER_NAME:-Valheim Server}"
WORLD_NAME="${WORLD_NAME:-Dedicated}" WORLD_NAME="${WORLD_NAME:-Dedicated}"
@@ -12,35 +15,57 @@ SERVER_PASSWORD="${SERVER_PASSWORD:-changeme}"
PUBLIC="${PUBLIC:-1}" PUBLIC="${PUBLIC:-1}"
install_valheim() { install_valheim() {
echo "[valheim] installing/updating via SteamCMD..." echo "[valheim] installing/updating via SteamCMD (forced non-interactive)..."
"${STEAMCMDDIR}/steamcmd.sh" +login anonymous \ "${STEAMCMDDIR}/steamcmd.sh" \
+force_install_dir "${VALHEIMDIR}" \ +force_install_dir "${VALHEIMDIR}" \
+@sSteamCmdForcePlatformType linux \
+login anonymous \
+app_update 896660 validate \ +app_update 896660 validate \
+quit +quit
} }
install_bepinex() { install_bepinex() {
if [ -f "${VALHEIMDIR}/start_server_bepinex.sh" ]; then
echo "[bepinex] already installed."
return
fi
echo "[bepinex] downloading pack..." echo "[bepinex] downloading pack..."
curl -L "${BEPINEX_URL}" -o /tmp/bepinex.zip curl -L "${BEPINEX_URL}" -o /tmp/bepinex.zip
echo "[bepinex] validating zip..."
if ! unzip -t /tmp/bepinex.zip >/dev/null 2>&1; then
echo "[bepinex] ERROR: Downloaded file is not a valid ZIP."
exit 1
fi
echo "[bepinex] extracting..."
rm -rf /tmp/bepinex
mkdir -p /tmp/bepinex
unzip -q /tmp/bepinex.zip -d /tmp/bepinex unzip -q /tmp/bepinex.zip -d /tmp/bepinex
cp -r /tmp/bepinex/* "${VALHEIMDIR}/"
rm -rf /tmp/bepinex /tmp/bepinex.zip # Folder confirmed by you
bep_root="/tmp/bepinex/BepInExPack_Valheim"
if [ ! -d "${bep_root}" ]; then
echo "[bepinex] ERROR: Expected folder BepInExPack_Valheim not found."
ls -R /tmp/bepinex
exit 1
fi
echo "[bepinex] copying contents of ${bep_root} to ${VALHEIMDIR}"
cp -r "${bep_root}/"* "${VALHEIMDIR}/"
# Fix CRLF if present
sed -i 's/\r$//' "${VALHEIMDIR}/start_server_bepinex.sh"
# Ensure executable
chmod +x "${VALHEIMDIR}/start_server_bepinex.sh"
} }
backup_world() { backup_world() {
echo "[backup] backing up world..." echo "[backup] backing up world..."
ts=$(date +"%Y-%m-%d_%H-%M-%S") ts=$(date +"%Y-%m-%d_%H-%M-%S")
mkdir -p "${BACKUPDIR}" mkdir -p "${BACKUPDIR}"
cp "/config/worlds_local/${WORLD_NAME}.db" "${BACKUPDIR}/${WORLD_NAME}_${ts}.db" cp "/config/worlds_local/${WORLD_NAME}.db" "${BACKUPDIR}/${WORLD_NAME}_${ts}.db" || true
cp "/config/worlds_local/${WORLD_NAME}.fwl" "${BACKUPDIR}/${WORLD_NAME}_${ts}.fwl" cp "/config/worlds_local/${WORLD_NAME}.fwl" "${BACKUPDIR}/${WORLD_NAME}_${ts}.fwl" || true
} }
# Install/update
install_valheim install_valheim
install_bepinex install_bepinex
@@ -52,7 +77,9 @@ done &
cd "${VALHEIMDIR}" cd "${VALHEIMDIR}"
echo "[valheim] using password: ${SERVER_PASSWORD}"
echo "[valheim] starting server..." echo "[valheim] starting server..."
exec ./start_server_bepinex.sh \ exec ./start_server_bepinex.sh \
-name "${SERVER_NAME}" \ -name "${SERVER_NAME}" \
-port 2456 \ -port 2456 \