Compare commits
No commits in common. "4c936245cd529d4bb37ec7ef211cc860bbd132b3" and "6ad1ba513d309a3989a5e8a52a03dbd12c564191" have entirely different histories.
4c936245cd
...
6ad1ba513d
17
README.md
17
README.md
@ -1,16 +1,15 @@
|
|||||||
# 一个基于 Ubuntu2204 制作的 欧卡自动化安装脚本
|
# 一个基于 Ubuntu2204 制作的 欧卡自动化安装脚本
|
||||||
|
|
||||||
## 一、快速部署
|
## 一、拉取执行脚本
|
||||||
一键安装脚本-推荐:
|
### 1、拉取脚本
|
||||||
```bash
|
```bash
|
||||||
curl -fsSL "https://git.a-hxin.cn/ahxin/ets2-server/raw/branch/master/install_server/install_server.sh" | sudo bash
|
https://git.a-hxin.cn/ahxin/ets2-server/rss/branch/master/install_server/install_server.sh
|
||||||
|
```
|
||||||
|
添加权限
|
||||||
|
```bash
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
单条执行:
|
执行
|
||||||
```bash
|
|
||||||
sudo chown ubuntu:ubuntu install_server.sh
|
|
||||||
chmod +x install_server.sh
|
|
||||||
sudo bash install_server.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
## 二、
|
## 二、
|
||||||
@ -1,76 +1,38 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# 2026年5月7日
|
# 2026年5月7日04点25分
|
||||||
# 项目地址: https://git.a-hxin.cn/ahxin/ets2-server.git
|
# 项目地址: https://git.a-hxin.cn/ahxin/ets2-server/raw/branch/master/install_server/install_server.sh
|
||||||
|
|
||||||
set -Eeuo pipefail
|
set -Eeuo pipefail
|
||||||
|
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
|
||||||
export NEEDRESTART_MODE=l
|
|
||||||
|
|
||||||
REPO_HOST="https://git.a-hxin.cn/ahxin/ets2-server"
|
|
||||||
BRANCH="master"
|
|
||||||
RAW_BASE="${REPO_HOST}/raw/branch/${BRANCH}"
|
|
||||||
|
|
||||||
STEAM_USER="steam"
|
STEAM_USER="steam"
|
||||||
STEAM_HOME="/home/steam"
|
STEAM_HOME="/home/steam"
|
||||||
|
|
||||||
STEAMCMD_DIR="${STEAM_HOME}/steamcmd"
|
STEAMCMD_DIR="${STEAM_HOME}/steamcmd"
|
||||||
ETS2_DIR="${STEAM_HOME}/ets2_sv"
|
ETS2_DIR="${STEAM_HOME}/ets2_sv"
|
||||||
ETS2_DOC_DIR="${STEAM_HOME}/ets2_doc"
|
ETS2_DOC_DIR="${STEAM_HOME}/ets2_doc"
|
||||||
|
|
||||||
ETS2_BIN_DIR="${ETS2_DIR}/bin/linux_x64"
|
ETS2_BIN_DIR="${ETS2_DIR}/bin/linux_x64"
|
||||||
|
SCRIPT_REPO="https://git.a-hxin.cn/ahxin/ets2-server/raw/branch/master/server/server.sh"
|
||||||
SERVER_SCRIPT_URL="${RAW_BASE}/server/server.sh"
|
TMP_SCRIPT_DIR="${ETS2_BIN_DIR}/server"
|
||||||
SERVER_SCRIPT_PATH="${ETS2_BIN_DIR}/server.sh"
|
|
||||||
|
|
||||||
ETS2_CMD="/usr/local/bin/ets2_sv"
|
|
||||||
|
|
||||||
APP_ID="1948160"
|
APP_ID="1948160"
|
||||||
|
|
||||||
while [ $# -gt 0 ]; do
|
|
||||||
case "$1" in
|
|
||||||
--branch)
|
|
||||||
BRANCH="$2"
|
|
||||||
RAW_BASE="${REPO_HOST}/raw/branch/${BRANCH}"
|
|
||||||
SERVER_SCRIPT_URL="${RAW_BASE}/server/server.sh"
|
|
||||||
shift 2
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "[ERROR] 未知参数: $1"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "========================================"
|
echo "========================================"
|
||||||
echo " ETS2 Dedicated Server 一键部署脚本"
|
echo " ETS2 Dedicated Server 一键部署脚本"
|
||||||
echo " System: Ubuntu / Debian"
|
echo " System: Ubuntu"
|
||||||
echo " Branch: ${BRANCH}"
|
|
||||||
echo "========================================"
|
echo "========================================"
|
||||||
|
|
||||||
if [ "$(id -u)" -ne 0 ]; then
|
if [ "$(id -u)" -ne 0 ]; then
|
||||||
echo "[ERROR] 请使用 root 权限执行:"
|
echo "请使用 root 权限执行:"
|
||||||
echo "curl -fsSL \"${RAW_BASE}/install_server/install_server.sh\" | sudo bash"
|
echo "sudo bash install_ets2_server.sh"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "一、检查系统环境"
|
echo "一、创建 steam 用户"
|
||||||
|
|
||||||
if [ -f /etc/os-release ]; then
|
|
||||||
. /etc/os-release
|
|
||||||
echo "[INFO] 当前系统: ${PRETTY_NAME:-unknown}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! command -v apt-get >/dev/null 2>&1; then
|
|
||||||
echo "[ERROR] 当前脚本主要适配 Ubuntu / Debian,未检测到 apt-get"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo "二、创建 steam 用户"
|
|
||||||
|
|
||||||
if id "${STEAM_USER}" >/dev/null 2>&1; then
|
if id "${STEAM_USER}" >/dev/null 2>&1; then
|
||||||
echo "[OK] 用户 ${STEAM_USER} 已存在,跳过创建"
|
echo "用户 ${STEAM_USER} 已存在,跳过创建"
|
||||||
else
|
else
|
||||||
adduser \
|
adduser \
|
||||||
--system \
|
--system \
|
||||||
@ -81,38 +43,33 @@ else
|
|||||||
--home "${STEAM_HOME}" \
|
--home "${STEAM_HOME}" \
|
||||||
"${STEAM_USER}"
|
"${STEAM_USER}"
|
||||||
|
|
||||||
echo "[OK] 用户 ${STEAM_USER} 创建完成"
|
echo "用户 ${STEAM_USER} 创建完成"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "三、创建工作目录"
|
echo "二、创建工作目录"
|
||||||
|
|
||||||
mkdir -p "${STEAMCMD_DIR}" "${ETS2_DIR}" "${ETS2_DOC_DIR}" "${ETS2_BIN_DIR}"
|
mkdir -p "${STEAMCMD_DIR}" "${ETS2_DIR}" "${ETS2_DOC_DIR}"
|
||||||
chown -R "${STEAM_USER}:${STEAM_USER}" "${STEAM_HOME}"
|
chown -R "${STEAM_USER}:${STEAM_USER}" "${STEAM_HOME}"
|
||||||
|
|
||||||
echo "[OK] 目录创建完成:"
|
echo "目录创建完成:"
|
||||||
echo "${STEAMCMD_DIR}"
|
echo "${STEAMCMD_DIR}"
|
||||||
echo "${ETS2_DIR}"
|
echo "${ETS2_DIR}"
|
||||||
echo "${ETS2_DOC_DIR}"
|
echo "${ETS2_DOC_DIR}"
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "四、安装运行库"
|
echo "三、安装运行库"
|
||||||
|
|
||||||
dpkg --add-architecture i386 || true
|
dpkg --add-architecture i386 || true
|
||||||
|
|
||||||
apt-get update
|
apt update
|
||||||
|
|
||||||
apt-get install -y \
|
apt install -y \
|
||||||
sudo \
|
|
||||||
curl \
|
curl \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
tar \
|
tar \
|
||||||
gzip \
|
gzip \
|
||||||
git \
|
git \
|
||||||
util-linux \
|
|
||||||
coreutils \
|
|
||||||
procps \
|
|
||||||
iproute2 \
|
|
||||||
libc6:i386 \
|
libc6:i386 \
|
||||||
libstdc++6:i386 \
|
libstdc++6:i386 \
|
||||||
libgcc-s1:i386 \
|
libgcc-s1:i386 \
|
||||||
@ -127,151 +84,85 @@ apt-get install -y \
|
|||||||
libbz2-1.0:i386 \
|
libbz2-1.0:i386 \
|
||||||
libtinfo6:i386
|
libtinfo6:i386
|
||||||
|
|
||||||
echo "[OK] 运行库安装完成"
|
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "五、下载 / 更新 SteamCMD"
|
echo "四、下载 SteamCMD"
|
||||||
|
|
||||||
sudo -u "${STEAM_USER}" bash -lc "
|
sudo -u "${STEAM_USER}" bash -c "
|
||||||
mkdir -p '${STEAMCMD_DIR}'
|
cd '${STEAMCMD_DIR}' &&
|
||||||
cd '${STEAMCMD_DIR}'
|
|
||||||
curl -sqL 'https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz' | tar zxvf -
|
curl -sqL 'https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz' | tar zxvf -
|
||||||
chmod +x '${STEAMCMD_DIR}/steamcmd.sh'
|
|
||||||
"
|
"
|
||||||
|
|
||||||
echo "[OK] SteamCMD 准备完成"
|
chmod +x "${STEAMCMD_DIR}/steamcmd.sh" || true
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "六、安装 / 更新 ETS2 Dedicated Server"
|
echo "五、安装 / 更新 ETS2 Dedicated Server"
|
||||||
|
|
||||||
chown -R "${STEAM_USER}:${STEAM_USER}" "${STEAMCMD_DIR}" "${ETS2_DIR}"
|
sudo -u "${STEAM_USER}" bash -c "
|
||||||
|
|
||||||
set +e
|
|
||||||
|
|
||||||
sudo -u "${STEAM_USER}" bash -lc "
|
|
||||||
cd '${STEAMCMD_DIR}' &&
|
cd '${STEAMCMD_DIR}' &&
|
||||||
./steamcmd.sh \
|
'${STEAMCMD_DIR}/steamcmd.sh' \
|
||||||
+@sSteamCmdForcePlatformType linux \
|
|
||||||
+login anonymous \
|
|
||||||
+app_info_update 1 \
|
|
||||||
+force_install_dir '${ETS2_DIR}' \
|
+force_install_dir '${ETS2_DIR}' \
|
||||||
|
+login anonymous \
|
||||||
+app_update '${APP_ID}' validate \
|
+app_update '${APP_ID}' validate \
|
||||||
+quit
|
+quit
|
||||||
"
|
"
|
||||||
|
|
||||||
INSTALL_RESULT=$?
|
|
||||||
|
|
||||||
if [ "${INSTALL_RESULT}" -ne 0 ]; then
|
|
||||||
echo "[WARN] 第一次安装失败,尝试清理 SteamCMD 缓存后重试..."
|
|
||||||
|
|
||||||
sudo -u "${STEAM_USER}" rm -rf "${STEAMCMD_DIR}/appcache" || true
|
|
||||||
sudo -u "${STEAM_USER}" rm -rf "${STEAM_HOME}/Steam/appcache" || true
|
|
||||||
sudo -u "${STEAM_USER}" rm -rf "${STEAM_HOME}/.steam/appcache" || true
|
|
||||||
|
|
||||||
sudo -u "${STEAM_USER}" bash -lc "
|
|
||||||
cd '${STEAMCMD_DIR}' &&
|
|
||||||
./steamcmd.sh \
|
|
||||||
+@sSteamCmdForcePlatformType linux \
|
|
||||||
+login anonymous \
|
|
||||||
+app_info_update 1 \
|
|
||||||
+force_install_dir '${ETS2_DIR}' \
|
|
||||||
+app_update '${APP_ID}' validate \
|
|
||||||
+quit
|
|
||||||
"
|
|
||||||
|
|
||||||
INSTALL_RESULT=$?
|
|
||||||
fi
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if [ "${INSTALL_RESULT}" -ne 0 ]; then
|
|
||||||
echo "[ERROR] ETS2 Dedicated Server 安装失败"
|
|
||||||
echo
|
echo
|
||||||
echo "可手动测试:"
|
echo "六、安装 server.sh 管理脚本"
|
||||||
echo "sudo -u steam bash -lc 'cd ${STEAMCMD_DIR} && ./steamcmd.sh +login anonymous +app_info_print ${APP_ID} +quit'"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "[OK] ETS2 Dedicated Server 安装完成"
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo "七、安装 server.sh 管理脚本"
|
|
||||||
|
|
||||||
mkdir -p "${ETS2_BIN_DIR}"
|
mkdir -p "${ETS2_BIN_DIR}"
|
||||||
|
|
||||||
echo "[INFO] 下载地址:${SERVER_SCRIPT_URL}"
|
rm -rf "${TMP_SCRIPT_DIR}"
|
||||||
|
|
||||||
curl -fsSL "${SERVER_SCRIPT_URL}" -o "${SERVER_SCRIPT_PATH}"
|
sudo -u "${STEAM_USER}" git clone "${SCRIPT_REPO}" "${TMP_SCRIPT_DIR}"
|
||||||
|
|
||||||
chmod +x "${SERVER_SCRIPT_PATH}"
|
if [ -f "${TMP_SCRIPT_DIR}/server.sh" ]; then
|
||||||
chown "${STEAM_USER}:${STEAM_USER}" "${SERVER_SCRIPT_PATH}"
|
mv "${TMP_SCRIPT_DIR}/server.sh" "${ETS2_BIN_DIR}/server.sh"
|
||||||
|
chmod +x "${ETS2_BIN_DIR}/server.sh"
|
||||||
echo "[OK] server.sh 安装完成:${SERVER_SCRIPT_PATH}"
|
rm -rf "${TMP_SCRIPT_DIR}"
|
||||||
|
|
||||||
echo
|
|
||||||
echo "八、修复 steamclient.so 链接"
|
|
||||||
|
|
||||||
if [ -f "${ETS2_DIR}/linux64/steamclient.so" ]; then
|
|
||||||
sudo -u "${STEAM_USER}" mkdir -p "${STEAM_HOME}/.steam/sdk64"
|
|
||||||
|
|
||||||
sudo -u "${STEAM_USER}" ln -sfn \
|
|
||||||
"${ETS2_DIR}/linux64/steamclient.so" \
|
|
||||||
"${STEAM_HOME}/.steam/sdk64/steamclient.so"
|
|
||||||
|
|
||||||
echo "[OK] steamclient.so 链接完成"
|
|
||||||
else
|
else
|
||||||
echo "[WARN] 未找到 ${ETS2_DIR}/linux64/steamclient.so,跳过"
|
echo "错误:没有找到 server.sh"
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "九、创建必要目录并设置权限"
|
echo "七、创建必要目录并设置权限"
|
||||||
|
|
||||||
mkdir -p "${ETS2_BIN_DIR}/logs"
|
mkdir -p "${ETS2_BIN_DIR}/logs"
|
||||||
mkdir -p "${ETS2_DOC_DIR}/Euro Truck Simulator 2"
|
mkdir -p "${ETS2_DOC_DIR}/Euro Truck Simulator 2"
|
||||||
|
|
||||||
chown -R "${STEAM_USER}:${STEAM_USER}" "${STEAM_HOME}"
|
chown -R "${STEAM_USER}:${STEAM_USER}" "${ETS2_BIN_DIR}"
|
||||||
|
chown -R "${STEAM_USER}:${STEAM_USER}" "${ETS2_DOC_DIR}"
|
||||||
|
|
||||||
chmod -R 775 "${ETS2_BIN_DIR}" || true
|
chmod -R 775 "${ETS2_BIN_DIR}"
|
||||||
chmod -R 775 "${ETS2_DOC_DIR}" || true
|
chmod -R 775 "${ETS2_DOC_DIR}"
|
||||||
|
|
||||||
echo "[OK] 权限设置完成"
|
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "十、创建快捷命令 ets2_sv"
|
echo "八、创建快捷命令"
|
||||||
|
|
||||||
rm -f "${ETS2_CMD}"
|
ln -sfn "${ETS2_BIN_DIR}/server.sh" /usr/local/bin/ets2_sv
|
||||||
|
chmod +x /usr/local/bin/ets2_sv
|
||||||
|
|
||||||
cat > "${ETS2_CMD}" <<EOF
|
echo
|
||||||
#!/usr/bin/env bash
|
echo "九、是否立即执行一次 server.sh 初始化?"
|
||||||
|
|
||||||
SERVER_SCRIPT="${SERVER_SCRIPT_PATH}"
|
if [ -t 0 ]; then
|
||||||
|
read -rp "是否现在执行一次?可能会进入服务器运行状态 [y/N]: " RUN_ONCE
|
||||||
if [ ! -f "\$SERVER_SCRIPT" ]; then
|
case "${RUN_ONCE}" in
|
||||||
echo "[ERROR] 找不到服务脚本: \$SERVER_SCRIPT"
|
y|Y|yes|YES)
|
||||||
exit 1
|
echo "正在以 steam 用户执行 server.sh..."
|
||||||
fi
|
sudo -u "${STEAM_USER}" bash "${ETS2_BIN_DIR}/server.sh"
|
||||||
|
;;
|
||||||
if [ "\$(id -un)" = "${STEAM_USER}" ]; then
|
*)
|
||||||
exec "\$SERVER_SCRIPT" "\$@"
|
echo "已跳过首次执行"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
else
|
else
|
||||||
exec sudo -u ${STEAM_USER} "\$SERVER_SCRIPT" "\$@"
|
echo "非交互环境,跳过首次执行"
|
||||||
fi
|
fi
|
||||||
EOF
|
|
||||||
|
|
||||||
chmod +x "${ETS2_CMD}"
|
|
||||||
|
|
||||||
echo "[OK] 快捷命令创建完成:${ETS2_CMD}"
|
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "========================================"
|
echo "========================================"
|
||||||
echo "部署完成"
|
echo "部署完成"
|
||||||
echo "========================================"
|
|
||||||
echo
|
|
||||||
echo "仓库地址:"
|
|
||||||
echo "${REPO_HOST}.git"
|
|
||||||
echo
|
|
||||||
echo "当前分支:"
|
|
||||||
echo "${BRANCH}"
|
|
||||||
echo
|
echo
|
||||||
echo "服务器目录:"
|
echo "服务器目录:"
|
||||||
echo "${ETS2_DIR}"
|
echo "${ETS2_DIR}"
|
||||||
@ -280,22 +171,14 @@ echo "配置目录:"
|
|||||||
echo "${ETS2_DOC_DIR}/Euro Truck Simulator 2"
|
echo "${ETS2_DOC_DIR}/Euro Truck Simulator 2"
|
||||||
echo
|
echo
|
||||||
echo "管理脚本:"
|
echo "管理脚本:"
|
||||||
echo "${SERVER_SCRIPT_PATH}"
|
echo "${ETS2_BIN_DIR}/server.sh"
|
||||||
echo
|
echo
|
||||||
echo "快捷命令:"
|
echo "快捷命令:"
|
||||||
echo "ets2_sv"
|
echo "ets2_sv"
|
||||||
echo
|
echo
|
||||||
echo "下一步:"
|
echo "如需设置 steam 用户密码:"
|
||||||
echo "1. 上传 server_config.sii、server_packages.sii、server_packages.dat 到:"
|
echo "sudo passwd steam"
|
||||||
echo " ${ETS2_DOC_DIR}/Euro Truck Simulator 2"
|
|
||||||
echo
|
|
||||||
echo "2. 检查配置:"
|
|
||||||
echo " ets2_sv check"
|
|
||||||
echo
|
|
||||||
echo "3. 前台调试启动:"
|
|
||||||
echo " ets2_sv debug"
|
|
||||||
echo
|
|
||||||
echo "4. 后台启动:"
|
|
||||||
echo " ets2_sv start"
|
|
||||||
echo
|
echo
|
||||||
|
echo "如需切换到 steam 用户:"
|
||||||
|
echo "su - steam"
|
||||||
echo "========================================"
|
echo "========================================"
|
||||||
Loading…
x
Reference in New Issue
Block a user