Skip to content

03 — 软件清单 ​

采集时间:2026-11-08 04:12 CST | 完整包清单:raw/packages-20261108-0412.txt 2026-11-08 已执行系统升级 + 安装 Docker/代理,本文档为升级后状态


1. 结论速览 ​

项目数量对比升级前
dpkg 已安装包总数761737 → 761(+24)
手动安装包8072 → 80(+8)
可升级包1(cloud-init,被 hold)19 → 1
被 hold 的包cloud-init、intel-microcode—
Snap 包4不变
运行中服务31新增 docker / containerd / ss-local / privoxy / fail2ban
运行中容器1tenodx-postgres(PostgreSQL 18.6)

2. 本次新增的核心软件 ​

Docker(29.9.3) ​

组件版本说明
docker-ce29.9.3-1~ubuntu.22.04~jammyDocker Engine
docker-ce-cli29.9.3命令行
containerd.io随包安装容器运行时
docker-buildx-plugin随包安装buildx 构建扩展
docker-compose-pluginv5.7.0docker compose 子命令

来源:mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu(阿里云内网镜像,装前已存在该源配置)

运行参数:

项值
Storage Driveroverlayfs
Cgroup Driversystemd(Cgroup v2)
Logging Driverjson-file(50MB × 3 轮转)
Live Restoretrue(daemon 重启不断容器)
Firewall Backendiptables
镜像加速6 个,见第 3 节

网络代理(详见 08-网络代理.md) ​

包版本用途
shadowsocks-libev3.3.5+ds-7build1ss-local → SOCKS5 127.0.0.1:1080
privoxy3.0.33-1build1SOCKS5 → HTTP 代理 127.0.0.1:8118

两者均来自 Ubuntu 官方源(阿里云镜像),未从 GitHub 下载。

安全防护 ​

包版本用途
fail2ban0.11.2-6入侵防护,sshd jail 自动封禁爆破源
whois5.5.13fail2ban 依赖,用于反查被封 IP
python3-pyinotify0.9.6-1.3fail2ban 日志监控后端

配置与策略见 05-安全基线.md 第 5 节。

容器化软件(按 10-部署规范.md 部署) ​

容器镜像状态端口内存
tenodx-caddycaddy:2.11.9-alpine(56.7 MB)running127.0.0.1:8011 MB
tenodx-docstenodx/docs:1.0.0(VitePress→Caddy,96.5 MB)running + healthy127.0.0.1:808839 MB
tenodx-fw-registrytenodx/fw-registry:1.0.0(FastAPI,自建)running + healthy127.0.0.1:800051 MB
tenodx-postgrespostgres:18-alpine(433 MB)running + healthy127.0.0.1:543255 MB
tenodx-uptime-kumalouislam/uptime-kuma:2(2.5.9,524 MB)running + healthy127.0.0.1:3001142 MB
tenodx-napcatmlikiowa/napcat-docker:latest(2.16 GB)running127.0.0.1:6099/3000/3002213 MB

详细配置见 11-应用服务.md(Postgres / Kuma / NapCat)与 12-Web入口.md(Caddy 反向代理)。 NapCat 以 privileged 运行(镜像需要伪装容器环境才能让 QQ 启动), 属已知高权限风险,评估见 11-应用服务.md 第 2 节。

PostgreSQL 详情:

项值
版本PostgreSQL 18.6 (x86_64-pc-linux-musl)
数据库 / 用户tenodx / tenodx
编码 / CollationUTF8 / datcollate=C / datctype=C.UTF-8
时区Asia/Shanghai
数据卷tenodx-pgdata → 容器 /var/lib/postgresql
网络tenodx-net(桥接)
重启策略unless-stopped
shared_buffers128 MB(默认)
effective_cache_size768 MB(已从默认 4GB 下调,适配 1.7 GB 内存)
内存占用约 26 MB
部署目录/opt/stacks/postgres/(compose.yaml + .env + backup.sh)

⚠️ postgres:18 的 PGDATA 是 /var/lib/postgresql/18/docker, 卷必须挂在父目录 /var/lib/postgresql。 沿用旧教程的 /var/lib/postgresql/data 会丢数据。


3. Docker 镜像加速配置 ​

文件:/etc/docker/daemon.json

json
{
  "registry-mirrors": [
    "https://0vmzj3q6.mirror.aliyuncs.com",
    "https://vlgh0kqj.mirror.aliyuncs.com",
    "https://docker.m.daocloud.io",
    "https://docker.1ms.run",
    "https://docker.1panel.live",
    "https://docker.xuanyuan.me"
  ],
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-opts": { "max-size": "50m", "max-file": "3" },
  "live-restore": true
}

镜像源实测结果(从本机 curl /v2/) ​

镜像站结果延迟采用
0vmzj3q6.mirror.aliyuncs.com2000.23s✅ 第 1 优先
vlgh0kqj.mirror.aliyuncs.com2000.21s✅ 第 2 优先
docker.m.daocloud.io4010.21s✅
docker.1ms.run4010.22s✅
docker.1panel.live2000.95s✅
docker.xuanyuan.me4010.93s✅
mirror.baidubce.com000—❌ 已失效
dockerproxy.com0004.2s❌ 已失效
mirror.iscas.ac.cn404—❌ 非 registry
huecker.io0004.2s❌ 已失效
dockerhub.timeweb.cloud0004.2s❌ 已失效
noohub.ru0000.68s❌ 已失效
docker.mirrors.ustc.edu.cn000—❌ 已失效
mirror.ccs.tencentyun.com000—❌ 仅腾讯云内网
registry-1.docker.io(官方)000—❌ 被阻断

原 daemon.json 有 9 个源,其中 6 个已失效。docker 会逐个重试失败的源,显著拖慢拉取, 所以本次做了裁剪,只保留实测可用的 6 个。 401 是正常响应(表示需要鉴权 token),不是错误;200 也是正常。

验证:docker pull hello-world ✅、docker pull alpine ✅ 均成功。

⚠️ 重要经验:apt install docker-ce 时包脚本会自动启动 daemon, 此时加载的是旧 daemon.json。装完后必须 systemctl restart docker 才会应用新配置, 光靠 systemctl enable --now 不行(服务已 active 时不重启)。


4. 系统升级结果 ​

项结果
升级命令apt-get update → upgrade → dist-upgrade → autoremove
升级包数18 个
剩余可升级1 个(cloud-init,被 hold)
需要重启否

升级的主要包:

libaudit-common    libaudit1        snapd            libglib2.0-0
chrony             linux-libc-dev   libopeniscsiusr  libglib2.0-data
xfsprogs           sosreport        nano             open-vm-tools
tmux               ubuntu-pro-client                 ubuntu-pro-client-l10n
libglib2.0-bin     open-iscsi       ubuntu-advantage-tools

⚠️ 被 hold 的包(未升级,有意为之) ​

bash
$ apt-mark showhold
cloud-init
intel-microcode
包当前版本可升级到为什么不升级
cloud-init23.2.2-826.1-0ubuntu1~22.04.1被显式 hold。它是实例初始化关键组件,跨大版本升级有风险,且是前人刻意钉住的,未擅自覆盖
intel-microcode——被 hold;微码更新需重启,云实例上由平台管理

如确需升级 cloud-init:apt-mark unhold cloud-init && apt-get install cloud-init && apt-mark hold cloud-init —— 请先在阿里云控制台确认 VNC 可用,这是改动开机关键组件的兜底手段。


5. 已安装的运行时与工具 ​

工具路径 / 版本
docker29.9.3
docker composev5.7.0
python33.10.12
pip3/usr/bin/pip3
git/usr/bin/git
gcc / make/usr/bin/
curl / wget/usr/bin/
tmux/usr/bin/tmux(已升级)
vim / nano/usr/bin/
rsync/usr/bin/rsync
strace/usr/bin/strace
ss-localshadowsocks-libev 3.3.5
privoxy3.0.33

6. Snap 包(未变) ​

名称版本说明
core2020260901基础运行时
core2220260909基础运行时
lxd5.0.11未使用,可 snap remove lxd
snapd2.77.1(已升级)Snap 守护

7. 手动安装包(79 个) ​

相比升级前的 72 个,新增 7 个:

containerd.io          docker-buildx-plugin   docker-ce
docker-ce-cli          docker-compose-plugin  privoxy
shadowsocks-libev

其余 72 个与升级前一致(Ubuntu 基础系统 + 阿里云 Agent + 存储/安全/监控工具), 完整清单见 raw/packages-20261108-0412.txt。

8. 仍未安装的组件 ​

类别未安装(宿主机)
Web 服务器nginx、apache2
数据库mysql、mariadb、redis、mongodb
语言运行时node、npm、yarn、php、java
CIjenkins、gitlab-runner

PostgreSQL 已安装,但以容器方式运行(宿主机无 postgresql apt 包)。 按 10-部署规范.md,后续软件同样默认容器化。

9. 资源占用变化 ​

项升级前升级后加固后(最终)
磁盘 /3.3 GB (9%)3.9 GB (11%)5.9 GB (16%)(含 2 GB swapfile)
内存已用443 MB374 MB375 MB
可用内存1.1 GB1.1 GB1.1 GB
Swap0 B0 B2.0 GB ✅

内存下降是因为 needrestart 在安装过程中重启了一批老旧进程(fwupd、snapd、multipathd 等)。 Swap 已补齐,1.7 GB 物理内存 + 2 GB swap 的组合可以支撑轻量容器化部署了。

TenoDX · 内部文档