这里整理了一份自用 Docker 项目清单,部分配置参考 部署汇总。不同项目的维护状态和版本差异很大,不能保证所有示例在 2026 年都能直接运行。
清单区分两类配置:标为“文档核对”的条目参考当前项目说明;其他条目是历史配置,明确标为待复测。镜像、凭据、端口和初始化方式都需要在部署前确认。没有拉起这些容器,也没有迁移任何数据库。
不同项目的同名宿主机端口会冲突。下面各段是独立项目,不要把整篇拼成一个 Compose 文件。latest 只是示例选择;实际落地应核对发行与架构,固定已验证版本,保留备份与回退条件。
常用参数
Compose V2 使用 docker compose。顶层 version 已过时,本文配置不再添加它。restart: "no" 不自动重启;on-failure 仅失败时重启;always 与 unless-stopped 对手动停止后重启守护进程的行为不同。重启策略不等于健康检查,也不保证应用已经可以对外服务。
端口左边是宿主机入口,右边是容器监听端口。默认不加地址的发布通常会绑定所有接口;本文普通 Web 服务示例改为 127.0.0.1,从别的机器访问需另行配置可信 LAN、SSH 转发或有认证的反向代理。DNS、硬件与 host 网络类服务不能生搬这一规则。

说明图:Docker 端口与卷:左边、右边不要看反
数据库、配置和上传文件要持久化;挂载目录、用户权限和数据备份是部署的一部分。.env 只是避免把值硬编码到文章,不是加密保险箱,不能提交到公开仓库。
docker compose config --quiet
docker compose up -d
docker compose logs --tail=100
语法检查通过不等于镜像存在、应用配置正确或数据能迁移。这里没有实际执行这些部署命令。
cloudflare穿透工具flaresolverr
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest
container_name: flaresolverr
environment:
- LOG_LEVEL=info
- TZ=Asia/Shanghai
ports:
- 127.0.0.1:8191:8191
restart: unless-stopped
思维导图mind-map
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
mindmap:
container_name: mindmap
image: shuiche/mind-map
ports:
- 127.0.0.1:6679:8080
environment:
TZ: Asia/Shanghai
restart: always
小雅阿里资源
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
xiaoya:
container_name: xiaoya
image: xiaoyaliu/alist
ports:
- 127.0.0.1:3579:80
volumes:
- /home/zsg/docker/xiaoya:/data
- /home/zsg/docker/xiaoya/alist:/opt/alist/data
environment:
TZ: Asia/Shanghai
restart: always
Snapdrop网页文件传输
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
snapdrop:
image: lscr.io/linuxserver/snapdrop:latest
container_name: snapdrop
environment:
- TZ=Asia/Shanghai
volumes:
- /home/zsg/docker/snapdrop:/config
ports:
- 127.0.0.1:7635:80
restart: unless-stopped
web-check网站测试
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
webcheck:
container_name: webcheck
restart: unless-stopped
image: lissy93/web-check
ports:
- 127.0.0.1:3084:3000
environment:
- TZ=Asia/Shanghai
迅雷
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
本条涉及宿主机网络、设备或高权限挂载。只在确有必要且可信的环境评估,不把容器视为绝对隔离;Docker socket 权限尤其敏感。
services:
xunlei:
image: cnk3x/xunlei:latest
privileged: true
container_name: xunlei
hostname: nas
network_mode: host
environment:
- XL_WEB_PORT=4321
- XL_BA_USER=user
- XL_BA_PASSWORD=${XL_BA_PASSWORD:?set XL_BA_PASSWORD in a private .env file}
volumes:
- /home/zsg/docker/xunlei/data:/xunlei/data
- /home/zsg/docker/xunlei/downloads:/xunlei/downloads
restart: unless-stopped
Fail2ban
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
本条涉及宿主机网络、设备或高权限挂载。只在确有必要且可信的环境评估,不把容器视为绝对隔离;Docker socket 权限尤其敏感。
services:
fail2ban:
container_name: fail2ban
restart: 'no'
network_mode: host
volumes:
- /home/zsg/docker/fail2ban/data:/data
- /var/log:/var/log:ro
image: crazymax/fail2ban:latest
environment:
- TZ=Asia/Shanghai
- F2B_LOG_TARGET=STDOUT
- F2B_LOG_LEVEL=INFO
- F2B_DB_PURGE_AGE=1d
cap_add:
- NET_ADMIN
- NET_RAW
群晖DSM
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
本条涉及宿主机网络、设备或高权限挂载。只在确有必要且可信的环境评估,不把容器视为绝对隔离;Docker socket 权限尤其敏感。
docker network create -d macvlan \
--subnet=10.0.0.0/24 \
--gateway=10.0.0.1 \
--ip-range=10.0.0.160/28 \
-o parent=eth0 vdsm
# 先建立macvlan网络,eth0要改成你的网卡地址
# 以上按照你的局域网ip改
services:
synology-dsm:
container_name: dsm
restart: always
environment:
TZ: Asia/Shanghai
CPU_CORES: '2'
RAM_SIZE: 1024M
DISK_SIZE: 16G
ALLOCATE: N
DHCP: Y
devices:
- /dev/kvm
- /dev/vhost-net
device_cgroup_rules:
- c *:* rwm
cap_add:
- NET_ADMIN
ports:
- 127.0.0.1:5000:5000
volumes:
- /home/zsg/docker/dsm:/storage
stop_grace_period: 1m
image: kroese/virtual-dsm:latest
networks:
vdsm:
ipv4_address: 10.0.0.160
networks:
vdsm:
external: true
单点登录Authelia
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
Compose 只是容器结构,不包含完整认证、TLS、路由或业务配置。初始化和访问控制完成前,不要把入口开放给不可信网络。
services:
authelia:
container_name: authelia
image: authelia/authelia:latest
restart: unless-stopped
ports:
- 127.0.0.1:19091:9091
environment:
- TZ=Asia/Shanghai
volumes:
- /home/zsg/docker/authelia/config:/config
内网穿透FRP
frps 在公网,frpc 在内网。不要混用第三方镜像、旧 INI 与不同版本的路径。匹配版本、端口、鉴权和 TLS 的完整配置见本站的《Frp搭建以及配置》。参考:官方项目。不要直接开放路由器管理入口。
RustDesk远程桌面
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
远程桌面客户端需要到达对应 TCP/UDP 端口,不能用普通 HTTP 反代替代;本条保留历史端口结构,部署前还要按上游核对服务端密钥、数据共享与网络限制。不要向不可信网络暴露未配置好的远控入口。
services:
hbbs:
container_name: rustdesk-hbbs
ports:
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21118:21118
image: rustdesk/rustdesk-server
command: hbbs
volumes:
- /home/zsg/docker/rustdesk/hbbs:/root
restart: always
hbbr:
container_name: rustdesk-hbbr
ports:
- 21117:21117
- 21119:21119
image: rustdesk/rustdesk-server
command: hbbr
volumes:
- /home/zsg/docker/rustdesk/hbbr:/root
restart: always
Stirling PDF工具箱
当前官方文档使用下面的镜像和数据路径。旧 frooodle/s-pdf 配置不再作为新部署示例:
services:
stirling-pdf:
image: docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest
restart: unless-stopped
ports:
- "127.0.0.1:8080:8080"
volumes:
- ./stirling-data:/configs
先在受控入口完成初始化与账户设置,不要关闭登录后直接开放公网。OCR、存储和附加能力按当前版本继续配置;不沿用旧环境变量来承诺全部功能。参考:官方 Docker 安装。未实机部署。
Alist
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
alist:
restart: always
volumes:
- ./docker/alist:/opt/alist/data
- /home:/home/alist
ports:
- 127.0.0.1:5244:5244
environment:
- TZ=Asia/Shanghai
container_name: alist
image: xhofe/alist:latest
思维导图wiseapp
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
mkdir ./wiseapp
docker run --name wiseapp -d --mount type=bind,source=./wiseapp,target=/var/lib/wise-db wisemapping/wisemapping:latest
docker run --name wiseapp -d -v ./wiseapp:/var/lib/wise-db wisemapping/wisemapping:latest
docker cp wiseapp:/var/lib/wisemapping/db ./wiseapp
docker stop wiseapp;docker rm wiseapp
docker run --mount type=bind,source=./wiseapp/db,target=/var/lib/wisemapping/db -it --rm -p 6080:8080 wisemapping/wisemapping:latest
docker run --name wiseapp -v ./wiseapp/db:/var/lib/wisemapping/db -d -p 6080:8080 wisemapping/wisemapping:latest
默认账号:test@wisemapping.org密码test
默认账号:admin@wisemapping.org密码test
services:
wisemapping:
container_name: wiseapp
restart: always
environment:
- TZ=Asia/Shanghai
volumes:
- ./wiseapp/db:/var/lib/wisemapping/db
ports:
- 127.0.0.1:6080:8080
image: wisemapping/wisemapping:latest
静态站点nginx-php
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
nginx:
container_name: nginx
ports:
- 127.0.0.1:3387:80
environment:
- TZ=Asia/Shanghai
restart: always
volumes:
- ./zdj:/usr/share/nginx/html
image: gindex/nginx-php
网站访问统计Umami
以当前官方 Compose 为基准,应用通过内部网络访问 PostgreSQL,不把数据库端口发布到宿主机。下面是新空实例的结构示例,不是旧数据库的升级命令:

说明图:应用与数据库:数据库不用公开端口
services:
umami:
image: ghcr.io/umami-software/umami:latest
restart: unless-stopped
ports:
- "127.0.0.1:3000:3000"
environment:
DATABASE_URL: "postgresql://umami:${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD}@db:5432/umami"
APP_SECRET: "${UMAMI_APP_SECRET:?set UMAMI_APP_SECRET}"
TWO_FACTOR_ENCRYPTION_KEY: "${UMAMI_2FA_KEY:?set UMAMI_2FA_KEY}"
depends_on:
db:
condition: service_healthy
init: true
db:
image: postgres:15-alpine
restart: unless-stopped
environment:
POSTGRES_DB: umami
POSTGRES_USER: umami
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD:?set POSTGRES_PASSWORD}"
volumes:
- umami-db-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 5
volumes:
umami-db-data:
密码如果用于连接 URI,选用 URI 安全的高强度随机字符,或正确编码特殊字符。2FA 加密密钥按项目要求生成 64 位十六进制值,保存好后不要随意轮换。初始化方式以当前项目为准,不要手工导入来源或版本不匹配的固定 SQL 文件。PostgreSQL 主版本变更必须做独立迁移,不能直接让新版本打开旧数据目录。
参考:官方 Compose。未实机部署。
WebSSH
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
webssh:
container_name: webssh
restart: 'no'
ports:
- 127.0.0.1:5032:5032
environment:
- PUID=0
- PGID=0
- TZ=Asia/Shanghai
image: jrohy/webssh
备忘录memos
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
memos:
container_name: memos
restart: always
environment:
- TZ=Asia/Shanghai
ports:
- 127.0.0.1:5230:5230
volumes:
- ./memos/:/var/opt/memos
image: neosmemo/memos:latest
Chatgpt-web
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
chatgpt-web:
container_name: chatgpt
restart: always
image: yidadaa/chatgpt-next-web
ports:
- 127.0.0.1:3355:3000
environment:
- TZ=Asia/Shanghai
- OPENAI_API_KEY=${OPENAI_API_KEY:?set OPENAI_API_KEY in a private .env file}
- CODE=${CODE:?set CODE in a private .env file}
- BASE_URL=https://api.openai.com
Traccar位置追踪
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
导出traccar.xml默认文件
docker run \
--rm \
--entrypoint cat \
traccar/traccar:latest \
/opt/traccar/conf/traccar.xml > ./traccar/traccar.xml
services:
traccar:
container_name: traccar
restart: always
environment:
- TZ=Asia/Shanghai
ports:
- 127.0.0.1:3697:8082
- 5000-5150:5000-5150
- 5000-5150:5000-5150/udp
volumes:
- ./traccar/data:/opt/traccar/data:rw
- ./traccar/logs:/opt/traccar/logs:rw
- ./traccar/traccar.xml:/opt/traccar/conf/traccar.xml:ro
image: traccar/traccar:latest
反代服务器Traefik
原段落除了 YAML 引号缺失,还只有容器配置,没有入口点、路由、证书与访问控制配置,不能作为完整的 HTTPS 反代教程。它也直接挂载了 Docker socket,权限需要单独评估。
当前部署请从 Traefik 官方指南 选择匹配版本与配置方式,先在测试环境核对 entryPoints、providers、TLS 与路由,再接入真实域名。DNS 服务商 API 密钥只放在自己的私有配置里,不粘贴到公开文章。本文不再保留不完整且误导性的旧堆栈。
Reader阅读
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
reader:
restart: always
container_name: reader
environment:
- SPRING_PROFILES_ACTIVE=prod
- READER_APP_SECURE=true
- READER_APP_SECUREKEY=282828
- READER_APP_INVITECODE=33655
- TZ=Asia/Shanghai
volumes:
- ./reader/log:/log
- ./reader/storage:/storage
ports:
- 127.0.0.1:8769:8080
image: hectorqin/reader
绘图Draw
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
drawio:
container_name: draw
ports:
- 127.0.0.1:8322:8080
environment:
- TZ=Asia/Shanghai
restart: always
image: jgraph/drawio
RSS订阅FreshRSS
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
freshrss:
container_name: freshrss
environment:
- CRON_MIN=*/45
- TZ=Asia/Shanghai
ports:
- 127.0.0.1:5655:80
volumes:
- ./freshrss:/var/www/html/data
image: freshrss/freshrss
ESP32HOME
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
esphome:
container_name: esphome
ports:
- 127.0.0.1:6052:6052
environment:
- http_proxy=http://10.0.0.5:7890
- https_proxy=http://10.0.0.5:7890
- no_proxy=localhost,10.0.0.5,10.0.0.1,192.168.1.1,127.0.0.1,.local,localhost
image: esphome/esphome
手绘白板
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
excalidraw:
container_name: excalidraw
ports:
- 127.0.0.1:8099:80
environment:
- TZ=Asia/Shanghai
volumes:
- ./excalidraw:/app/web
restart: always
image: excalidraw/excalidraw
Nginx+PHP
PHP 5.6、7.3、8.0 曾被用于并排运行不同站点,这些分支已不在当前支持范围内。保留“不同站点可以使用不同 PHP-FPM”的思路,但不再提供这些旧版本的新部署清单。
新应用先选仍受支持、且依赖兼容的 PHP 版本,再配置 Nginx 的 FastCGI 上游、站点目录与权限。迁移旧站点需要在测试环境检查扩展、语法与数据库兼容,不是换镜像标签就完成升级。参考:PHP 支持周期。
phpmyadmin
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
# 任意服务器
docker run --name phpmyadmin -d -e PMA_ARBITRARY=1 -p 18080:80 phpmyadmin
# 指定服务器及端口
docker run --name phpmyadmin -d -e PMA_HOST=127.0.0.1 -e PMA_PORT=3306 -p 18080:80 phpmyadmin
MySQL
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
mysql:
container_name: mysql
restart: always
ports:
- 127.0.0.1:3306:3306
volumes:
- ./mysql/data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:?set MYSQL_ROOT_PASSWORD in a private .env file}
- TZ=Asia/Shanghai
image: mysql
Linux命令查询
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
web:
image: stilleshan/linux-command
container_name: linux-command
ports:
- 127.0.0.1:7326:80
restart: always
docker-proxy
旧配置发布无认证的 2375,并允许大量写操作,风险过高,不再保留为可照抄的部署方法。Docker API 与 socket 可以带来宿主机级权限,给 socket 挂载加 :ro 不会把 API 变成只读。

说明图:Docker socket:不是普通的只读文件
确需读取容器状态时,可以评估受限 socket proxy:只接入专用内部网络、不发布 2375、默认关闭 POST,逐项开放确实需要的读接口。这仍是敏感接口,不是安全隔离的万能边界。参考:docker-socket-proxy 项目。具体集成需按调用方复核,本文不提供全权限配置。
文件快递柜
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
filecodebox:
container_name: filecodebox
restart: always
ports:
- 127.0.0.1:12345:12345
volumes:
- ./FileCodeBox/:/app/data
image: lanol/filecodebox:latest
MQTT
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
Compose 只是容器结构,不包含完整认证、TLS、路由或业务配置。初始化和访问控制完成前,不要把入口开放给不可信网络。
services:
eclipse-mosquitto:
container_name: MQTT
restart: always
ports:
- 127.0.0.1:1883:1883
- 127.0.0.1:9001:9001
volumes:
- ./mqtt/conf:/mosquitto/config
- ./mqtt/data:/mosquitto/data
- ./mqtt/log:/mosquitto/log
image: eclipse-mosquitto
测速speedtest
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
speedtest:
container_name: speedtest
restart: always
ports:
- 127.0.0.1:12345:80
image: adolfintel/speedtest
订阅转换
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
subweb:
container_name: subweb
restart: always
ports:
- 127.0.0.1:58080:80
image: careywong/subweb:latest
subconverter:
container_name: sub
restart: always
ports:
- 127.0.0.1:25500:25500
image: tindy2013/subconverter:latest
Docker命令转堆栈
带特殊字符的挂载路径应加引号;下面的镜像和页面功能仍属于未实机复测的历史配置。转换工具生成的 Compose 也要自己复核权限、卷、端口和凭据,不能转换后就当作安全部署方案。
services:
composerize:
image: alcapone1933/composerize
restart: unless-stopped
ports:
- "127.0.0.1:9080:80"
environment:
TZ: Asia/Shanghai
volumes:
- ./composerize:/var/www
Docker更新通知
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
本条涉及宿主机网络、设备或高权限挂载。只在确有必要且可信的环境评估,不把容器视为绝对隔离;Docker socket 权限尤其敏感。
services:
diun:
container_name: diun
restart: always
environment:
- TZ=Asia/Shanghai
- LOG_LEVEL=info
- LOG_JSON=false
- DIUN_PROVIDERS_DOCKER=true
- DIUN_PROVIDERS_FILE_FILENAME=/custom-images.yml
volumes:
- ./diun:/data
- ./diun/custom-images.yml:/custom-images.yml:ro
- ./diun/diun.yml:/diun.yml:ro
- /var/run/docker.sock:/var/run/docker.sock
image: crazymax/diun:latest
看板homepage
Homepage 与 Diun 是不同的项目,部署时应使用 Homepage 自己的镜像,并配置允许的访问 Host:
services:
homepage:
image: ghcr.io/gethomepage/homepage:latest
restart: unless-stopped
ports:
- "127.0.0.1:3000:3000"
environment:
HOMEPAGE_ALLOWED_HOSTS: "localhost:3000,127.0.0.1:3000"
volumes:
- ./config:/app/config
域名访问时把允许列表改成实际域名。这个最小示例没有接入 Docker socket;需要容器状态集成时,另外评估访问权限。参考:官方 Docker 说明。配置按文档修正,未实机运行。
trilium笔记
nriver/trilium-cn 是第三方中文镜像。当前项目由 TriliumNext/Trilium 维护,不能把旧镜像与现在的官方发行混为一谈。
新部署按 官方 Docker 指南 选择 triliumnext/trilium 的已核对版本,持久化 /home/node/trilium-data。先核对服务端与客户端同步版本再升级,不要直接换成 latest 去打开已有笔记库。旧库迁移需要单独备份和验证,本文不把它改写成已经完成的操作。
FileBrowser文件管理
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
filebrowser:
container_name: filebrowser
ports:
- 127.0.0.1:9696:80
environment:
- TZ=Asia/Shanghai
- PUID=0
- PGID=0
volumes:
- .:/Disk
- ./filebrowser/database.db:/database.db
- ./filebrowser/filebrowser.json:/.filebrowser.json
- ./filebrowser/cache:/cache
image: filebrowser/filebrowser
VSCode
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
code-server:
container_name: vscode
environment:
- TZ=Asia/Shanghai
- PUID=0
- PGID=0
- PASSWORD=${PASSWORD:?set PASSWORD in a private .env file}
- DEFAULT_WORKSPACE=/000
ports:
- 127.0.0.1:5797:8443
volumes:
- ./vscode:/config
- .:/000
restart: always
image: linuxserver/code-server
百度脑图
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
kityminder:
container_name: mind
restart: always
ports:
- 127.0.0.1:2333:80
environment:
- TZ=Asia/Shanghai
volumes:
- ./mind:/data
image: xinyewdz/kityminder
RSSPush
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
rsspush:
container_name: rsspush
ports:
- 127.0.0.1:6863:8000
volumes:
- ./rsspush:/rsspush/api/data
environment:
- TZ=Asia/Shanghai
- RSS_BASE=http://10.0.0.9:8556
- ADMIN_KEY=123456
image: easychen/rsspush
OCR文字识别
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
trwebocr:
ports:
- 127.0.0.1:18089:8089
restart: always
container_name: trwebocr
image: mmmz/trwebocr
相册(MT Photo)
旧镜像名 mtphotos/mt-photos/photosync 写错了;当前项目发布的是 mtphotos/mt-photos。下面只说明容器结构,授权和相册导入按项目要求处理:
services:
mt-photos:
image: mtphotos/mt-photos:latest
restart: unless-stopped
ports:
- "127.0.0.1:8063:8063"
environment:
TZ: Asia/Shanghai
volumes:
- ./mt_photos/config:/config
- ./mt_photos/upload:/upload
不要添加服务未使用的 CIFS 卷,也不要把共享账户密码写入公开配置。已有照片目录与上传目录要分清,挂载外部相册前先看当前文档。参考:项目发布镜像。未实机部署。
ADGuard Home
旧配置里的 image: run 不是有效的项目镜像,应该是 adguard/adguardhome。DNS 服务需要让指定局域网设备可达,所以不能把 53 端口只绑定回环地址后宣称整个 LAN 都能用。
新部署按 官方 Docker 指南 设置 work、conf 两个持久化目录和所需端口,先检查宿主机 53 是否被现有 DNS 服务占用。3000 通常用于首次设置,设置后的管理端口以实际选择为准。不要不看现有网络就停掉系统 DNS,也不要把 DNS 和管理面板无保护开放到公网。本文暂不提供一组声称适用于所有网络的端口映射。
SmartDNS
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
本条涉及宿主机网络、设备或高权限挂载。只在确有必要且可信的环境评估,不把容器视为绝对隔离;Docker socket 权限尤其敏感。
services:
smartdns:
network_mode: host
hostname: smartdns
container_name: smartdns
restart: always
environment:
- TZ=Asia/Shanghai
volumes:
- ./smartdns:/smartdns
image: ghostry/smartdns
xTeVe
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
xteve:
container_name: xteve
restart: always
hostname: xteve
ports:
- 127.0.0.1:34400:34400
logging:
options: max-size=10m,max-file=3
environment:
- TZ=Asia/Shanghai
volumes:
- ./xteve/xteve:/root/.xteve:rw
- ./xteve/config:/config:rw
- ./xteve/tmp:/tmp/xteve:rw
- ./xteve/tvheadend/data:/TVH
image: alturismo/xteve
思源笔记(siyuan)
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
siyuan:
container_name: siyuan
restart: always
volumes:
- ./siyuan:/siyuan
ports:
- 127.0.0.1:6806:6806
image: b3log/siyuan
网页监控(uptime-kuma)
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
uptime-kuma:
restart: always
environment:
- TZ=Asia/Shanghai
ports:
- 127.0.0.1:3001:3001
volumes:
- ./uptime-kuma/data:/app/data
container_name: uptime-kuma
image: louislam/uptime-kuma:latest
影音机器人(movierobot)
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
movie-robot:
restart: always
container_name: movie-robot
ports:
- 127.0.0.1:1329:1329
volumes:
- ./movie-robot:/data
- /path/to/media:/media
environment:
- LICENSE_KEY=xxxxxxxxxx
image: yipengfei/movie-robot
overseerr
第三方 Overseerr 镜像与当前官方发行要分开核对。当前相关项目已转向 Seerr,官方镜像发布为 ghcr.io/seerr-team/seerr 或 seerr/seerr,不能把旧容器名和新项目无条件互换。
新部署参考 Seerr 入门文档;旧 Overseerr 实例先看对应迁移说明、备份配置与数据库,再决定是否迁移。这里只介绍部署入口,没有实际执行媒体服务迁移。
docker可视化管理(portainer)
当前 Portainer CE 的主要管理入口是 HTTPS 9443。以下入口仅监听本机,远程使用需配合安全转发或经过验证的反向代理:
services:
portainer:
image: portainer/portainer-ce:latest
restart: unless-stopped
ports:
- "127.0.0.1:9443:9443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
volumes:
portainer_data:
Portainer 通过 Docker socket 管理宿主机容器,具有高权限;先完成管理员初始化,不要公开无人管理的入口。证书也要按实际访问域名与信任方式配置,不是要求读者忽略所有证书错误。参考:官方 CE 安装。未实机部署。
RSS生成(rsshub)
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
rsshub:
restart: always
container_name: rsshub
ports:
- 127.0.0.1:8556:1200
image: diygod/rsshub
flexget
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
flexget:
image: madwind/flexget
container_name: flexget
environment:
FG_WEBUI_PASSWD: ${FG_WEBUI_PASSWD:?set FG_WEBUI_PASSWD in a private .env file}
FG_LOG_LEVEL: INFO
TZ: Asia/Shanghai
PUID: 1000
PGID: 1000
volumes:
- ./flexget/config:/config
- ./flexget/downloads:/downloads
ports:
- 127.0.0.1:8385:3539
restart: always
bark
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
bark-server:
restart: always
environment:
- TZ=Asia/Shanghai
container_name: bark
ports:
- 127.0.0.1:8383:8080
volumes:
- ./bark/data:/data
image: finab/bark-server
密码管理(vaultwarden/Bitwarden)
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
Compose 只是容器结构,不包含完整认证、TLS、路由或业务配置。初始化和访问控制完成前,不要把入口开放给不可信网络。
services:
server:
restart: always
container_name: vaultwarden
environment:
- TZ=Asia/Shanghai
volumes:
- ./Bitwarden/data/:/data/
ports:
- 127.0.0.1:12256:80
image: vaultwarden/server
docker容器自动更新(watchtower)
Watchtower 可以自动替换运行中的镜像。截至本次核对,原项目仓库已归档,不再作为新部署的默认推荐。尤其是数据库、笔记、密码管理与核心服务,不适合不看发布说明就自动更新。

说明图:容器更新:通知之后,先备份再动手
更稳妥的流程是收到更新通知后,核对变更,备份并测试恢复,再在维护窗口手动更新、检查服务与数据,保留可用的回退条件。回退镜像不一定能回退已经迁移的数据格式。Diun 可以用作更新通知,但通知本身不等于完成更新。
参考:Watchtower 仓库状态、Diun。删除的是文章中的自动更新建议,没有改动任何运行中的容器。
网址收藏夹(shaarli)
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
shaarli:
container_name: Shaarli
restart: always
ports:
- 127.0.0.1:8561:80
volumes:
- ./shaarli:/var/www/shaarli/data
image: shaarli/shaarli
智能家居(HASS)
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
本条涉及宿主机网络、设备或高权限挂载。只在确有必要且可信的环境评估,不把容器视为绝对隔离;Docker socket 权限尤其敏感。
services:
home-assistant:
restart: always
container_name: hass
privileged: true
network_mode: host
environment:
- TZ=Asia/Shanghai
volumes:
- ./hass:/config
- /run/dbus:/run/dbus
- /var/run/dbus:/var/run/dbus
- /dev:/dev
- /var/run/docker.sock:/var/run/docker.sock
- /dev/bus/usb:/dev/bus/usb
image: homeassistant/home-assistant:latest
为知笔记(wiz)
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
wizserver:
container_name: wiz
volumes:
- ./wiz/data:/wiz/storage
- /etc/localtime:/etc/localtime
ports:
- 127.0.0.1:8357:80
- 127.0.0.1:9269:9269/udp
image: wiznote/wizserver
默认管理员账号:admin@wiz.cn,密码:123456
堡垒机(next-terminal)
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
Compose 只是容器结构,不包含完整认证、TLS、路由或业务配置。初始化和访问控制完成前,不要把入口开放给不可信网络。
services:
guacd:
container_name: guacd
image: dushixiang/guacd:latest
volumes:
- ./next-terminal/data:/usr/local/next-terminal/data
restart: always
next-terminal:
container_name: next-terminal
image: dushixiang/next-terminal:latest
environment:
DB: sqlite
GUACD_HOSTNAME: guacd
GUACD_PORT: 4822
ports:
- 127.0.0.1:8068:8088
volumes:
- /etc/localtime:/etc/localtime
- ./next-terminal/data:/usr/local/next-terminal/data
restart: always
相册(photoprism)
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
photoprism:
container_name: photoprism
ports:
- 127.0.0.1:8568:2342
environment:
- PHOTOPRISM_UPLOAD_NSFW=false
- PHOTOPRISM_ADMIN_PASSWORD=${PHOTOPRISM_ADMIN_PASSWORD:?set PHOTOPRISM_ADMIN_PASSWORD in a private .env file}
volumes:
- ./photoprism:/photoprism/storage
- ./Pictures/Pictures:/photoprism/originals
- ./Pictures/Example:/photoprism/originals/Example
image: photoprism/photoprism
node-red
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
node-red:
container_name: nodered
restart: always
ports:
- 127.0.0.1:1880:1880
environment:
- TZ=Asia/Shanghai
volumes:
- ./nodered/data:/data
image: nodered/node-red
PLEX监视器(Tautulli)
Tautulli 应使用官方项目提供的镜像,不是 argparse:
services:
tautulli:
image: tautulli/tautulli:latest
restart: unless-stopped
ports:
- "127.0.0.1:8181:8181"
volumes:
- ./tautulli/config:/config
environment:
TZ: Asia/Shanghai
初始化时连接自己的 Plex,并妥善保护相应凭据。统计服务不需要因为能读播放数据就直接暴露在公网。参考:官方项目。未实机部署。
个人导航(onenav)
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
onenav:
container_name: onenav
ports:
- 127.0.0.1:8252:80
environment:
- USER=zsg
- PASSWORD=${PASSWORD:?set PASSWORD in a private .env file}
volumes:
- ./onenav:/data/wwwroot/default/data
image: helloz/onenav
网页剪切(wallabag)
历史配置,尚未按当前镜像实机复测。镜像标签、应用配置、卷路径与首次初始化请以维护者当前说明为准;下面不能当成已验证的新部署方案。
services:
wallabag:
container_name: wallabag
restart: always
volumes:
- ./wallabag/data:/var/www/wallabag/data
- ./wallabag/images:/var/www/wallabag/web/assets/images
ports:
- 127.0.0.1:5631:80
environment:
- SYMFONY__ENV__DOMAIN_NAME=https://wb.abc.com:8080
image: wallabag/wallabag
TTRSS
wangqiru/ttrss 曾使用多容器方案和 PostgreSQL 13。它是特定项目的历史配置,不是官方上游的通用 Compose;PostgreSQL 13 已不适合继续作为新部署默认数据库。
新部署先核对 Tiny Tiny RSS 上游 与所选镜像维护者的当前安装说明。已有 PostgreSQL 数据需要按支持的导出恢复或升级流程迁移,不能直接把 13 的数据目录挂到任意新主版本镜像。数据库密码应自行生成,初始化清单必须与所用版本匹配。
维护与备份
配置文件、数据库备份和上传目录分别保存,测试恢复后再更新服务。不要运行整盘清理、删除数据卷或重置数据库命令来“修复”启动失败。参考:Docker 端口发布、重启策略、Compose version 字段。