ets2-server/install_server/install_server.sh
ASUS 4bf1a0522d v1.0.3
- 新增stop后断后还占用
- 新增debug功能
- 制作时间更新
- debug版本
2026-05-07 04:41:09 +08:00

184 lines
4.0 KiB
Bash

#!/usr/bin/env bash
# 2026年5月7日04点25分
# 项目地址: https://git.a-hxin.cn/ahxin/ets2-server/rss/branch/master/install_server/install_server.sh
set -Eeuo pipefail
STEAM_USER="steam"
STEAM_HOME="/home/steam"
STEAMCMD_DIR="${STEAM_HOME}/steamcmd"
ETS2_DIR="${STEAM_HOME}/ets2_sv"
ETS2_DOC_DIR="${STEAM_HOME}/ets2_doc"
ETS2_BIN_DIR="${ETS2_DIR}/bin/linux_x64"
SCRIPT_REPO="https://github.com/A-hxin/ets2_server.git"
TMP_SCRIPT_DIR="${ETS2_BIN_DIR}/server"
APP_ID="1948160"
echo "========================================"
echo " ETS2 Dedicated Server 一键部署脚本"
echo " System: Ubuntu"
echo "========================================"
if [ "$(id -u)" -ne 0 ]; then
echo "请使用 root 权限执行:"
echo "sudo bash install_ets2_server.sh"
exit 1
fi
echo
echo "一、创建 steam 用户"
if id "${STEAM_USER}" >/dev/null 2>&1; then
echo "用户 ${STEAM_USER} 已存在,跳过创建"
else
adduser \
--system \
--shell /bin/bash \
--gecos 'Steam Service User' \
--group \
--disabled-password \
--home "${STEAM_HOME}" \
"${STEAM_USER}"
echo "用户 ${STEAM_USER} 创建完成"
fi
echo
echo "二、创建工作目录"
mkdir -p "${STEAMCMD_DIR}" "${ETS2_DIR}" "${ETS2_DOC_DIR}"
chown -R "${STEAM_USER}:${STEAM_USER}" "${STEAM_HOME}"
echo "目录创建完成:"
echo "${STEAMCMD_DIR}"
echo "${ETS2_DIR}"
echo "${ETS2_DOC_DIR}"
echo
echo "三、安装运行库"
dpkg --add-architecture i386 || true
apt update
apt install -y \
curl \
ca-certificates \
tar \
gzip \
git \
libc6:i386 \
libstdc++6:i386 \
libgcc-s1:i386 \
libx11-6:i386 \
libxext6:i386 \
libxau6:i386 \
libxdmcp6:i386 \
libncurses5:i386 \
libncursesw5:i386 \
libcurl4:i386 \
zlib1g:i386 \
libbz2-1.0:i386 \
libtinfo6:i386
echo
echo "四、下载 SteamCMD"
sudo -u "${STEAM_USER}" bash -c "
cd '${STEAMCMD_DIR}' &&
curl -sqL 'https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz' | tar zxvf -
"
chmod +x "${STEAMCMD_DIR}/steamcmd.sh" || true
echo
echo "五、安装 / 更新 ETS2 Dedicated Server"
sudo -u "${STEAM_USER}" bash -c "
cd '${STEAMCMD_DIR}' &&
'${STEAMCMD_DIR}/steamcmd.sh' \
+force_install_dir '${ETS2_DIR}' \
+login anonymous \
+app_update '${APP_ID}' validate \
+quit
"
echo
echo "六、安装 server.sh 管理脚本"
mkdir -p "${ETS2_BIN_DIR}"
rm -rf "${TMP_SCRIPT_DIR}"
sudo -u "${STEAM_USER}" git clone "${SCRIPT_REPO}" "${TMP_SCRIPT_DIR}"
if [ -f "${TMP_SCRIPT_DIR}/server.sh" ]; then
mv "${TMP_SCRIPT_DIR}/server.sh" "${ETS2_BIN_DIR}/server.sh"
chmod +x "${ETS2_BIN_DIR}/server.sh"
rm -rf "${TMP_SCRIPT_DIR}"
else
echo "错误:没有找到 server.sh"
exit 1
fi
echo
echo "七、创建必要目录并设置权限"
mkdir -p "${ETS2_BIN_DIR}/logs"
mkdir -p "${ETS2_DOC_DIR}/Euro Truck Simulator 2"
chown -R "${STEAM_USER}:${STEAM_USER}" "${ETS2_BIN_DIR}"
chown -R "${STEAM_USER}:${STEAM_USER}" "${ETS2_DOC_DIR}"
chmod -R 775 "${ETS2_BIN_DIR}"
chmod -R 775 "${ETS2_DOC_DIR}"
echo
echo "八、创建快捷命令"
ln -sfn "${ETS2_BIN_DIR}/server.sh" /usr/local/bin/ets2_sv
chmod +x /usr/local/bin/ets2_sv
echo
echo "九、是否立即执行一次 server.sh 初始化?"
if [ -t 0 ]; then
read -rp "是否现在执行一次?可能会进入服务器运行状态 [y/N]: " RUN_ONCE
case "${RUN_ONCE}" in
y|Y|yes|YES)
echo "正在以 steam 用户执行 server.sh..."
sudo -u "${STEAM_USER}" bash "${ETS2_BIN_DIR}/server.sh"
;;
*)
echo "已跳过首次执行"
;;
esac
else
echo "非交互环境,跳过首次执行"
fi
echo
echo "========================================"
echo "部署完成"
echo
echo "服务器目录:"
echo "${ETS2_DIR}"
echo
echo "配置目录:"
echo "${ETS2_DOC_DIR}/Euro Truck Simulator 2"
echo
echo "管理脚本:"
echo "${ETS2_BIN_DIR}/server.sh"
echo
echo "快捷命令:"
echo "ets2_sv"
echo
echo "如需设置 steam 用户密码:"
echo "sudo passwd steam"
echo
echo "如需切换到 steam 用户:"
echo "su - steam"
echo "========================================"