ets2-server/install_server/install_server.sh
ASUS 5aa36a3706 v1.0.2
- 新增stop后断后还占用
- 新增debug功能
- 制作时间更新
- debug版本
2026-05-07 04:27:20 +08:00

184 lines
4.0 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 "========================================"