184 lines
4.0 KiB
Bash
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 "========================================" |