主题
03 — 软件清单
采集时间:2026-11-08 04:12 CST | 完整包清单:
raw/packages-20261108-0412.txt2026-11-08 已执行系统升级 + 安装 Docker/代理,本文档为升级后状态
1. 结论速览
| 项目 | 数量 | 对比升级前 |
|---|---|---|
| dpkg 已安装包总数 | 761 | 737 → 761(+24) |
| 手动安装包 | 80 | 72 → 80(+8) |
| 可升级包 | 1(cloud-init,被 hold) | 19 → 1 |
| 被 hold 的包 | cloud-init、intel-microcode | — |
| Snap 包 | 4 | 不变 |
| 运行中服务 | 31 | 新增 docker / containerd / ss-local / privoxy / fail2ban |
| 运行中容器 | 1 | tenodx-postgres(PostgreSQL 18.6) |
2. 本次新增的核心软件
Docker(29.9.3)
| 组件 | 版本 | 说明 |
|---|---|---|
docker-ce | 29.9.3-1~ubuntu.22.04~jammy | Docker Engine |
docker-ce-cli | 29.9.3 | 命令行 |
containerd.io | 随包安装 | 容器运行时 |
docker-buildx-plugin | 随包安装 | buildx 构建扩展 |
docker-compose-plugin | v5.7.0 | docker compose 子命令 |
来源:mirrors.cloud.aliyuncs.com/docker-ce/linux/ubuntu(阿里云内网镜像,装前已存在该源配置)
运行参数:
| 项 | 值 |
|---|---|
| Storage Driver | overlayfs |
| Cgroup Driver | systemd(Cgroup v2) |
| Logging Driver | json-file(50MB × 3 轮转) |
| Live Restore | true(daemon 重启不断容器) |
| Firewall Backend | iptables |
| 镜像加速 | 6 个,见第 3 节 |
网络代理(详见 08-网络代理.md)
| 包 | 版本 | 用途 |
|---|---|---|
shadowsocks-libev | 3.3.5+ds-7build1 | ss-local → SOCKS5 127.0.0.1:1080 |
privoxy | 3.0.33-1build1 | SOCKS5 → HTTP 代理 127.0.0.1:8118 |
两者均来自 Ubuntu 官方源(阿里云镜像),未从 GitHub 下载。
安全防护
| 包 | 版本 | 用途 |
|---|---|---|
fail2ban | 0.11.2-6 | 入侵防护,sshd jail 自动封禁爆破源 |
whois | 5.5.13 | fail2ban 依赖,用于反查被封 IP |
python3-pyinotify | 0.9.6-1.3 | fail2ban 日志监控后端 |
配置与策略见 05-安全基线.md 第 5 节。
容器化软件(按 10-部署规范.md 部署)
| 容器 | 镜像 | 状态 | 端口 | 内存 |
|---|---|---|---|---|
tenodx-caddy | caddy:2.11.9-alpine(56.7 MB) | running | 127.0.0.1:80 | 11 MB |
tenodx-docs | tenodx/docs:1.0.0(VitePress→Caddy,96.5 MB) | running + healthy | 127.0.0.1:8088 | 39 MB |
tenodx-fw-registry | tenodx/fw-registry:1.0.0(FastAPI,自建) | running + healthy | 127.0.0.1:8000 | 51 MB |
tenodx-postgres | postgres:18-alpine(433 MB) | running + healthy | 127.0.0.1:5432 | 55 MB |
tenodx-uptime-kuma | louislam/uptime-kuma:2(2.5.9,524 MB) | running + healthy | 127.0.0.1:3001 | 142 MB |
tenodx-napcat | mlikiowa/napcat-docker:latest(2.16 GB) | running | 127.0.0.1:6099/3000/3002 | 213 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 |
| 编码 / Collation | UTF8 / datcollate=C / datctype=C.UTF-8 |
| 时区 | Asia/Shanghai |
| 数据卷 | tenodx-pgdata → 容器 /var/lib/postgresql |
| 网络 | tenodx-net(桥接) |
| 重启策略 | unless-stopped |
shared_buffers | 128 MB(默认) |
effective_cache_size | 768 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.com | 200 | 0.23s | ✅ 第 1 优先 |
vlgh0kqj.mirror.aliyuncs.com | 200 | 0.21s | ✅ 第 2 优先 |
docker.m.daocloud.io | 401 | 0.21s | ✅ |
docker.1ms.run | 401 | 0.22s | ✅ |
docker.1panel.live | 200 | 0.95s | ✅ |
docker.xuanyuan.me | 401 | 0.93s | ✅ |
mirror.baidubce.com | 000 | — | ❌ 已失效 |
dockerproxy.com | 000 | 4.2s | ❌ 已失效 |
mirror.iscas.ac.cn | 404 | — | ❌ 非 registry |
huecker.io | 000 | 4.2s | ❌ 已失效 |
dockerhub.timeweb.cloud | 000 | 4.2s | ❌ 已失效 |
noohub.ru | 000 | 0.68s | ❌ 已失效 |
docker.mirrors.ustc.edu.cn | 000 | — | ❌ 已失效 |
mirror.ccs.tencentyun.com | 000 | — | ❌ 仅腾讯云内网 |
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-init | 23.2.2-8 | 26.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. 已安装的运行时与工具
| 工具 | 路径 / 版本 |
|---|---|
docker | 29.9.3 |
docker compose | v5.7.0 |
python3 | 3.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-local | shadowsocks-libev 3.3.5 |
privoxy | 3.0.33 |
6. Snap 包(未变)
| 名称 | 版本 | 说明 |
|---|---|---|
core20 | 20260901 | 基础运行时 |
core22 | 20260909 | 基础运行时 |
lxd | 5.0.11 | 未使用,可 snap remove lxd |
snapd | 2.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 |
| CI | jenkins、gitlab-runner |
PostgreSQL 已安装,但以容器方式运行(宿主机无
postgresqlapt 包)。 按10-部署规范.md,后续软件同样默认容器化。
9. 资源占用变化
| 项 | 升级前 | 升级后 | 加固后(最终) |
|---|---|---|---|
磁盘 / | 3.3 GB (9%) | 3.9 GB (11%) | 5.9 GB (16%)(含 2 GB swapfile) |
| 内存已用 | 443 MB | 374 MB | 375 MB |
| 可用内存 | 1.1 GB | 1.1 GB | 1.1 GB |
| Swap | 0 B | 0 B | 2.0 GB ✅ |
内存下降是因为
needrestart在安装过程中重启了一批老旧进程(fwupd、snapd、multipathd 等)。 Swap 已补齐,1.7 GB 物理内存 + 2 GB swap 的组合可以支撑轻量容器化部署了。