从 SteamCMD 到 Docker:一次 Ubuntu 服务器的 i386 架构彻底清理实录

摘要 在长期运行的 Ubuntu 服务器上,历史遗留的 32 位(i386)架构往往来自早期软件需求,例如 SteamCMD。这类依赖在功能退役后若不清理,会增加系统复杂度、降低可预测性。本文记录了一次完整、可控的 i386 架构移除过程,并最终将异构需求交由 Docker 处理,使宿主系统回归纯 amd64 状态。 一、问题背景 在一台 Ubuntu 22.04 服务器上,通过以下命令确认系统启用了 i386 架构: 输出显示: 进一步检查已安装的 32 位软件包: 结果发现系统中存在大量 libc6:i386、libssl3:i386、zlib1g:i386 等基础库,但唯一的应用级包来源是 SteamCMD(32 位)。 随着使用策略调整,决定不再在宿主机直接运行 SteamCMD,而改用 Docker 容器 承担此类需求,于是启动了 i386 架构的彻底清理。 二、初步尝试与关键误区 在移除 SteamCMD 后,直接尝试移除架构: 结果失败: 原因很明确:只要系统中仍存在任何 :i386 包,dpkg 就不会允许移除该架构。 三、apt 通配符陷阱 尝试使用 apt 通配符清理: …

使用 Docker 迁移《饥荒联机版(DST)》专用服务器的完整实战记录

本文记录一次将 原生安装的《饥荒联机版(DST)》专用服务器 平滑迁移至 Docker 容器环境 的全过程。重点不在“如何一键搭建”,而在 配置复用、端口一致性、MOD 自动管理、Shard 分片通信验证 等关键细节。 一、迁移背景与目标 原服务器为 原生 Linux 安装 的 DST Dedicated Server,运行多年,具有以下特点: 迁移目标不是“重装”,而是: 在 Docker 中完整接管运行环境,但不破坏任何已有数据结构与行为逻辑。 核心原则: 二、整体目录结构设计(脱敏示意) 宿主机统一使用一个工作目录: 关键说明: 三、Docker 镜像选择与原则 使用的镜像类型: 原则: Docker 只负责“跑”,不负责“改”。 因此明确禁止镜像行为: 四、Docker Compose 设计要点(概念说明) 1️⃣ 使用 host 网络模式 原因: 👉 所有端口直接由 ini 文件控制 2️⃣ Master / Caves …

使用 Docker 运行 Palworld 专用服务器的一次完整、可控实践记录

一、写在最前面:为什么要“认真”跑一个游戏服务器 很多教程的目标只有一句话: “服务器能跑,能进就行。” 但在真实服务器环境中,这种目标是不够的。 本次实践的目标从一开始就明确为: 这不是“为了折腾”,而是为了避免后期不可控成本。 二、总体设计思想 1. 核心分离原则 在本方案中,Palworld 服务被拆成三层: 层级 角色 处理方式 世界数据 核心资产 永久保存在宿主机 配置文件 行为定义 由管理员手动维护 容器 执行外壳 可随时删除 一句话总结: 世界不属于容器,容器只是世界的“临时执行环境”。 三、目录结构设计(完全脱敏) 以下为逻辑结构示意,非真实路径: 关键点说明 四、Docker Compose 的设计原则(而不是参数堆砌) 1. 镜像使用原则 原因很简单: 运行环境应尽量无状态、无外部依赖 2. 环境变量的克制使用 在 compose 中: 这样做的好处是: 3. 禁止自动生成 / 覆盖配置 明确禁止镜像在启动时: 这是防止世界“被重置”的关键步骤之一。 五、端口策略(完全脱敏说明) 1. 对外端口原则 …

将 Anki Sync Server 数据迁移至应用目录的实践

在非系统包管理(非 APT/YUM 等)环境下运行 Anki Sync Server 时,默认的数据存储位置与传统 Linux 目录结构往往不利于长期维护、迁移和备份。本文记录了一次将 Anki Sync Server 的数据目录从默认位置迁移并集中到应用目录下的实践过程,并总结了其中涉及的关键机制与注意事项,为需要“手动管理应用”的使用场景提供一种可复制的方案。 一、问题背景 Anki Sync Server 官方支持通过 Python 模块 anki.syncserver 运行同步服务。在默认配置下: 在以下场景中,上述默认行为会带来不便: 因此,有必要将 Anki Sync Server 的数据目录显式迁移到应用自身目录中。 二、官方机制说明(关键前提) 根据 Anki 官方文档说明: 这意味着,任何迁移方案都必须围绕 SYNC_BASE 这一官方支持的接口展开。 三、目标设计:应用自包含目录结构 迁移的目标并非简单“换路径”,而是形成一种清晰、稳定、可迁移的目录布局: 该结构具有以下特点: 四、迁移步骤概述 1. 停止同步服务 在任何数据操作之前,应先停止正在运行的同步服务,避免并发写入。 2. 准备目标数据目录 在应用目录下创建专用的数据子目录(例如 data/),并确保权限正确。 3. 迁移已有服务端数据 将默认数据目录中的内容整体迁移到新的数据目录中,保持原有目录层级(每个用户一个子目录)。 迁移完成后,新的结构应直接呈现为: …