dev #4
17
README.md
17
README.md
@ -1,15 +1,16 @@
|
||||
# 一个基于 Ubuntu2204 制作的 欧卡自动化安装脚本
|
||||
|
||||
## 一、拉取执行脚本
|
||||
### 1、拉取脚本
|
||||
## 一、快速部署
|
||||
一键安装脚本-推荐:
|
||||
```bash
|
||||
https://git.a-hxin.cn/ahxin/ets2-server/rss/branch/master/install_server/install_server.sh
|
||||
```
|
||||
添加权限
|
||||
```bash
|
||||
|
||||
curl -fsSL "https://git.a-hxin.cn/ahxin/ets2-server/raw/branch/master/install_server/install_server.sh" | sudo bash
|
||||
```
|
||||
|
||||
执行
|
||||
单条执行:
|
||||
```bash
|
||||
sudo chown ubuntu:ubuntu install_server.sh
|
||||
chmod +x install_server.sh
|
||||
sudo bash install_server.sh
|
||||
```
|
||||
|
||||
## 二、
|
||||
@ -1,38 +1,76 @@
|
||||
#!/usr/bin/env bash
|
||||
# 2026年5月7日04点25分
|
||||
# 项目地址: https://git.a-hxin.cn/ahxin/ets2-server/raw/branch/master/install_server/install_server.sh
|
||||
# 2026年5月7日-05点04分
|
||||
# 项目地址: https://git.a-hxin.cn/ahxin/ets2-server.git
|
||||
|
||||
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_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://git.a-hxin.cn/ahxin/ets2-server/raw/branch/master/server/server.sh"
|
||||
TMP_SCRIPT_DIR="${ETS2_BIN_DIR}/server"
|
||||
|
||||
SERVER_SCRIPT_URL="${RAW_BASE}/server/server.sh"
|
||||
SERVER_SCRIPT_PATH="${ETS2_BIN_DIR}/server.sh"
|
||||
|
||||
ETS2_CMD="/usr/local/bin/ets2_sv"
|
||||
|
||||
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 " ETS2 Dedicated Server 一键部署脚本"
|
||||
echo " System: Ubuntu"
|
||||
echo " System: Ubuntu / Debian"
|
||||
echo " Branch: ${BRANCH}"
|
||||
echo "========================================"
|
||||
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo "请使用 root 权限执行:"
|
||||
echo "sudo bash install_ets2_server.sh"
|
||||
echo "[ERROR] 请使用 root 权限执行:"
|
||||
echo "curl -fsSL \"${RAW_BASE}/install_server/install_server.sh\" | sudo bash"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "一、创建 steam 用户"
|
||||
echo "一、检查系统环境"
|
||||
|
||||
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
|
||||
echo "用户 ${STEAM_USER} 已存在,跳过创建"
|
||||
echo "[OK] 用户 ${STEAM_USER} 已存在,跳过创建"
|
||||
else
|
||||
adduser \
|
||||
--system \
|
||||
@ -43,33 +81,38 @@ else
|
||||
--home "${STEAM_HOME}" \
|
||||
"${STEAM_USER}"
|
||||
|
||||
echo "用户 ${STEAM_USER} 创建完成"
|
||||
echo "[OK] 用户 ${STEAM_USER} 创建完成"
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "二、创建工作目录"
|
||||
echo "三、创建工作目录"
|
||||
|
||||
mkdir -p "${STEAMCMD_DIR}" "${ETS2_DIR}" "${ETS2_DOC_DIR}"
|
||||
mkdir -p "${STEAMCMD_DIR}" "${ETS2_DIR}" "${ETS2_DOC_DIR}" "${ETS2_BIN_DIR}"
|
||||
chown -R "${STEAM_USER}:${STEAM_USER}" "${STEAM_HOME}"
|
||||
|
||||
echo "目录创建完成:"
|
||||
echo "[OK] 目录创建完成:"
|
||||
echo "${STEAMCMD_DIR}"
|
||||
echo "${ETS2_DIR}"
|
||||
echo "${ETS2_DOC_DIR}"
|
||||
|
||||
echo
|
||||
echo "三、安装运行库"
|
||||
echo "四、安装运行库"
|
||||
|
||||
dpkg --add-architecture i386 || true
|
||||
|
||||
apt update
|
||||
apt-get update
|
||||
|
||||
apt install -y \
|
||||
apt-get install -y \
|
||||
sudo \
|
||||
curl \
|
||||
ca-certificates \
|
||||
tar \
|
||||
gzip \
|
||||
git \
|
||||
util-linux \
|
||||
coreutils \
|
||||
procps \
|
||||
iproute2 \
|
||||
libc6:i386 \
|
||||
libstdc++6:i386 \
|
||||
libgcc-s1:i386 \
|
||||
@ -84,85 +127,151 @@ apt install -y \
|
||||
libbz2-1.0:i386 \
|
||||
libtinfo6:i386
|
||||
|
||||
echo
|
||||
echo "四、下载 SteamCMD"
|
||||
echo "[OK] 运行库安装完成"
|
||||
|
||||
sudo -u "${STEAM_USER}" bash -c "
|
||||
cd '${STEAMCMD_DIR}' &&
|
||||
echo
|
||||
echo "五、下载 / 更新 SteamCMD"
|
||||
|
||||
sudo -u "${STEAM_USER}" bash -lc "
|
||||
mkdir -p '${STEAMCMD_DIR}'
|
||||
cd '${STEAMCMD_DIR}'
|
||||
curl -sqL 'https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz' | tar zxvf -
|
||||
chmod +x '${STEAMCMD_DIR}/steamcmd.sh'
|
||||
"
|
||||
|
||||
chmod +x "${STEAMCMD_DIR}/steamcmd.sh" || true
|
||||
echo "[OK] SteamCMD 准备完成"
|
||||
|
||||
echo
|
||||
echo "五、安装 / 更新 ETS2 Dedicated Server"
|
||||
echo "六、安装 / 更新 ETS2 Dedicated Server"
|
||||
|
||||
sudo -u "${STEAM_USER}" bash -c "
|
||||
chown -R "${STEAM_USER}:${STEAM_USER}" "${STEAMCMD_DIR}" "${ETS2_DIR}"
|
||||
|
||||
set +e
|
||||
|
||||
sudo -u "${STEAM_USER}" bash -lc "
|
||||
cd '${STEAMCMD_DIR}' &&
|
||||
'${STEAMCMD_DIR}/steamcmd.sh' \
|
||||
+force_install_dir '${ETS2_DIR}' \
|
||||
./steamcmd.sh \
|
||||
+@sSteamCmdForcePlatformType linux \
|
||||
+login anonymous \
|
||||
+app_info_update 1 \
|
||||
+force_install_dir '${ETS2_DIR}' \
|
||||
+app_update '${APP_ID}' validate \
|
||||
+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 "六、安装 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"
|
||||
echo "可手动测试:"
|
||||
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 "七、创建必要目录并设置权限"
|
||||
echo "七、安装 server.sh 管理脚本"
|
||||
|
||||
mkdir -p "${ETS2_BIN_DIR}"
|
||||
|
||||
echo "[INFO] 下载地址:${SERVER_SCRIPT_URL}"
|
||||
|
||||
curl -fsSL "${SERVER_SCRIPT_URL}" -o "${SERVER_SCRIPT_PATH}"
|
||||
|
||||
chmod +x "${SERVER_SCRIPT_PATH}"
|
||||
chown "${STEAM_USER}:${STEAM_USER}" "${SERVER_SCRIPT_PATH}"
|
||||
|
||||
echo "[OK] server.sh 安装完成:${SERVER_SCRIPT_PATH}"
|
||||
|
||||
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
|
||||
echo "[WARN] 未找到 ${ETS2_DIR}/linux64/steamclient.so,跳过"
|
||||
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}"
|
||||
chown -R "${STEAM_USER}:${STEAM_USER}" "${STEAM_HOME}"
|
||||
|
||||
chmod -R 775 "${ETS2_BIN_DIR}"
|
||||
chmod -R 775 "${ETS2_DOC_DIR}"
|
||||
chmod -R 775 "${ETS2_BIN_DIR}" || true
|
||||
chmod -R 775 "${ETS2_DOC_DIR}" || true
|
||||
|
||||
echo "[OK] 权限设置完成"
|
||||
|
||||
echo
|
||||
echo "八、创建快捷命令"
|
||||
echo "十、创建快捷命令 ets2_sv"
|
||||
|
||||
ln -sfn "${ETS2_BIN_DIR}/server.sh" /usr/local/bin/ets2_sv
|
||||
chmod +x /usr/local/bin/ets2_sv
|
||||
rm -f "${ETS2_CMD}"
|
||||
|
||||
echo
|
||||
echo "九、是否立即执行一次 server.sh 初始化?"
|
||||
cat > "${ETS2_CMD}" <<EOF
|
||||
#!/usr/bin/env bash
|
||||
|
||||
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 "非交互环境,跳过首次执行"
|
||||
SERVER_SCRIPT="${SERVER_SCRIPT_PATH}"
|
||||
|
||||
if [ ! -f "\$SERVER_SCRIPT" ]; then
|
||||
echo "[ERROR] 找不到服务脚本: \$SERVER_SCRIPT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "\$(id -un)" = "${STEAM_USER}" ]; then
|
||||
exec "\$SERVER_SCRIPT" "\$@"
|
||||
else
|
||||
exec sudo -u ${STEAM_USER} "\$SERVER_SCRIPT" "\$@"
|
||||
fi
|
||||
EOF
|
||||
|
||||
chmod +x "${ETS2_CMD}"
|
||||
|
||||
echo "[OK] 快捷命令创建完成:${ETS2_CMD}"
|
||||
|
||||
echo
|
||||
echo "========================================"
|
||||
echo "部署完成"
|
||||
echo "========================================"
|
||||
echo
|
||||
echo "仓库地址:"
|
||||
echo "${REPO_HOST}.git"
|
||||
echo
|
||||
echo "当前分支:"
|
||||
echo "${BRANCH}"
|
||||
echo
|
||||
echo "服务器目录:"
|
||||
echo "${ETS2_DIR}"
|
||||
@ -171,14 +280,22 @@ echo "配置目录:"
|
||||
echo "${ETS2_DOC_DIR}/Euro Truck Simulator 2"
|
||||
echo
|
||||
echo "管理脚本:"
|
||||
echo "${ETS2_BIN_DIR}/server.sh"
|
||||
echo "${SERVER_SCRIPT_PATH}"
|
||||
echo
|
||||
echo "快捷命令:"
|
||||
echo "ets2_sv"
|
||||
echo
|
||||
echo "如需设置 steam 用户密码:"
|
||||
echo "sudo passwd steam"
|
||||
echo "下一步:"
|
||||
echo "1. 上传 server_config.sii、server_packages.sii、server_packages.dat 到:"
|
||||
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 "如需切换到 steam 用户:"
|
||||
echo "su - steam"
|
||||
echo "========================================"
|
||||
Loading…
x
Reference in New Issue
Block a user