✨ 瞬间 15 📚 归档 11 🏷️ 标签 26
📂 分类
🏷️ 标签 (26)

其他服务配置教程

2026.10.10

研究背景 Background

本文整理各应用服务的配置方法和优化经验,与《Linux服务器搭建通用教程》互补——那篇覆盖系统基建(1Panel、Docker、Cockpit、FRP、OSS挂载、硬盘休眠、防火墙等),本篇聚焦部署在 Docker 中的应用服务。所有服务通过 1Panel 应用商店或自定义 compose 部署,统一使用 1panel-network 外部网络。

This article documents Docker application service configurations, complementing the Linux server setup tutorial. Covers Nextcloud, Baikal, Trilium, OpenList, Backrest, Immich and lightweight services with reverse proxy, frp tunneling, hardware acceleration, and troubleshooting notes.

参考资料 References

技术总结 Technical Summary

覆盖 Nextcloud、Baikal、Trilium、OpenList、Backrest、Immich 及多个轻量服务的 Docker 部署配置,含反代、frp 穿透、硬件加速、性能优化和踩坑记录。

服务 关键点
Nextcloud 私有云盘,OnlyOffice 在线编辑,Coturn+HPB 通话
Immich 自托管相册,QuickSync+OpenVINO 硬件加速
Trilium 知识管理,CPU 限制 0.5 核防 OCR 卡爆
Backrest restic 备份工具,备份到 S3/云盘

细节 Details

一、Nextcloud

最后配置时间:2026-05-11

私有云盘,提供文件同步、分享、联系人、日历、在线Office、通话等功能。使用linuxserver/nextcloud镜像,数据库为PostgreSQL。

1.1 安装配置

compose配置(通过1Panel应用商店或自定义compose):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
networks:
1panel-network:
external: true
services:
nextcloud:
container_name: ${CONTAINER_NAME}
deploy:
resources:
limits:
cpus: ${CPUS}
memory: ${MEMORY_LIMIT}
environment:
- PUID=1000
- PGID=1000
- TZ=${TIME_ZONE}
image: linuxserver/nextcloud:33.0.0
networks:
- 1panel-network
ports:
- ${HOST_IP}:${PANEL_APP_PORT_HTTPS}:443
restart: always
volumes:
- ./data/config:/config
- /home/nextcloud_data:/data
- /mnt/oss-data/nc_storage:/mnt/oss-data/nc_storage

关键配置文件config/config.php(路径:/opt/1panel/apps/nextcloud/nextcloud/data/config/www/nextcloud/config):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$CONFIG = array (
'datadirectory' => '/data',
'trusted_domains' =>
array (
0 => 'nc.your-domain.com:your-port',
1 => 'nc.your-domain.com:your-port',
),
'dbtype' => 'pgsql',
'overwrite.cli.url' => 'https://ncCLOUD-MIGRATION-Article:your-port',
'overwritehost' => 'nc.your-domain.com:your-port',
'overwriteprotocol' => 'https',
'appstoreenabled' => false,
// 其他不用动,设置后自动生成
);

注意:安装插件解压后注意文件夹权限,所有映射的文件夹和配置中的PUID=1000 PGID=1000一致。

升级注意:升级前检查挂载配置,否则本地同步可能被全删。同步联系人卡退可能是CPU分配不够,改成不限制即可。

1.2 在线Office(OnlyOffice)

试过OnlyOffice和Collabora,最终选择OnlyOffice。Collabora太卡、不能协作、字体缺失。

OnlyOffice反代配置关键——必须包含端口信息:

1
2
3
4
5
6
7
8
9
location / {
proxy_pass http://127.0.0.1:frp定义的本地端口;
# ❌ 错误写法:proxy_set_header Host $host;
# ✅ 正确写法:包含端口信息
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

踩坑:前后花5小时才连上OnlyOffice,最后发现是全局代理导致Docker无法正常访问网络,关了代理就能用。手机编辑要付费,电脑可编辑PDF但卡顿不稳定。

1.3 通话配置(Coturn + HPB)

Coturn(TURN/STUN服务器)

安装:sudo apt install coturn -y,配置/etc/turnserver.conf:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 监听端口(仅TLS)
tls-listening-port=3478
listening-ip=0.0.0.0
external-ip=你的公网IP

# 认证
fingerprint
lt-cred-mech
use-auth-secret
static-auth-secret=你的强密码

# 域名(与证书一致)
realm=turn.your-domain.com

# 证书路径(指向1Panel证书)
cert=/opt/1panel/www/sites/your-domain/ssl/fullchain.pem
pkey=/opt/1panel/www/sites/your-domain/ssl/privkey.pem

# 中继端口范围
min-port=49150
max-port=49160

simple-log
syslog

防火墙放行:TCP/UDP 3478 + UDP 49150-49160。证书自动续签后执行热加载脚本:

1
2
3
4
5
6
#!/bin/bash
PID=$(pidof turnserver)
if [ -n "$PID" ]; then
kill -SIGUSR2 $PID
logger "coturn certificate reloaded via SIGUSR2"
fi

HPB(高性能通话后端)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
services:
talk-hpb:
image: ghcr.io/nextcloud-releases/aio-talk:latest
container_name: nextcloud-talk-hpb
restart: unless-stopped
init: true
ports:
- "3478:3478/tcp"
- "3478:3478/udp"
- "8081:8081"
environment:
- NC_DOMAIN=nc.your-domain.com:your-port
- TALK_HOST=signal.your-domain.com:your-port
- TALK_PORT=3478
- TURN_SECRET=你的强密码
- SIGNALING_SECRET=你的强密码
- INTERNAL_SECRET=你的强密码
- TZ=Asia/Shanghai
mem_limit: 200m
cpus: '1.0'
volumes:
- ./data:/var/lib/nextcloud-talk-hpb

经验:通话测试在宿舍正常但在其他网络不行,4M的TC带宽稳定够用。Nextcloud后台管理设置→通话中配置TURN服务器,保存后显示绿色对号表示成功。

1.4 性能优化

安装后后台会出现各类警告,按优先级处理:

必须处理:

  • App directories owner:sudo chown -R www-data:www-data 修复onlyoffice/richdocuments目录权限

  • .well-known URLs:确保Nginx正确代理/.well-known/路径,影响CalDAV/CardDAV服务发现
    建议处理:

  • Database missing indices:occ db:add-missing-indices 提高查询速度

  • Mimetype migrations:occ maintenance:repair --include-expensive

  • HSTS:Nginx添加add_header Strict-Transport-Security "max-age=15552000; includeSubDomains; preload" always;

  • 维护窗口:config.php添加'maintenance_window_start' => 1(凌晨1点执行后台任务)

    PHP过载问题:答辩时发现PHP过载,改成1核都不行,重启两遍才恢复。后续把文件重任放到WPS上减轻Nextcloud压力。

1.5 教训总结

  • 同步删除文件没有回收站,改错反代域名后先失联再卡死,重启后文件全删——不如直接用WebDAV,至少本地不会被乱删
  • Docker配置CPU限制可能造成性能不够导致的IO死机
  • 反代配置中Host (http_host(含端口)而非)host(丢端口),这是Nextcloud系服务(OnlyOffice、Baikal、CodeServer等)的通用坑

二、Baikal(CalDAV/CardDAV)

最后配置时间:2026-08-02

轻量级CalDAV/CardDAV服务器,用于通讯录和日历同步。

2.1 安装配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
services:
baikal:
image: ckulka/baikal:0.10.1-nginx
container_name: baikal
restart: unless-stopped
ports:
- "8080:80"
volumes:
- ./baikal_config:/var/www/baikal/config
- ./baikal_data:/var/www/baikal/Specific
networks:
- 1panel-network
mem_limit: 100m
cpus: '1.0'

networks:
1panel-network:
external: true

2.2 反代配置

与Nextcloud相同,必须使用proxy_set_header Host $http_host;包含端口信息。

2.3 使用经验

  • 从Nextcloud导出ics文件,用Thunderbird无缝导入,需要同步更新Thunderbird的配置备份
  • 手机软件不能合并到Baikal(都是合并到手机本身),后台半天加载不出来——用Thunderbird就能编辑了
  • 反代配置被1Panel自动改过(漏分号),改好后发现不能在后台直接修改具体内容,需在yaml中手动添加环境变量

三、Trilium(知识管理/笔记)

最后配置时间:2026-07-24

使用TriliumNext(triliumnext/trilium),数据存储在OSS挂载目录,已迁移到阿里云。

3.1 安装配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
networks:
1panel-network:
external: true
services:
trilium:
container_name: ${CONTAINER_NAME}
deploy:
resources:
limits:
cpus: 0.5 # 必须限制,否则OCR后卡爆
memory: ${MEMORY_LIMIT}
environment:
- TRILIUM_DATA_DIR=/home/node/trilium-data
image: triliumnext/trilium:v0.103.0
networks:
- 1panel-network
ports:
- ${HOST_IP}:${PANEL_APP_PORT_HTTP}:8080
restart: always
volumes:
- /mnt/oss-data/trilium:/home/node/trilium-data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro

上传大小限制配置(导入压缩包需要):

  • 彻底解除:TRILIUM_NO_UPLOAD_LIMIT=true
  • 提高上限:MAX_ALLOWED_FILE_SIZE_MB=1024

3.2 各端应用配置

  • 外观:宽度800居中,关闭拼写检查
  • 图片:自动下载大小2000,质量85
  • 回收站:7天,快照10份,10分钟自动备份
  • 模板:放在隐藏笔记,用快捷键或输入法插入时间
  • 分享:不要直链分享,用HTML导出或设置密码保护后分享链接
  • 手机端:用Edge安装到桌面,效果接近桌面应用(需一直联网)

3.3 迁移与维护

迁移经验:不能用OSS存储数据库(一直报错),只能让其他服务(如Zotero)去OSS。迁移到阿里云时直接导入备份即可,ddns和反代设置好后直接登录原账号。

同步失败:清理删除笔记并清理数据库即可恢复。

CPU限制:必须限制0.5核,新版加OCR后不限会把服务卡爆。

四、OpenList(网盘聚合挂载)

最后配置时间:2026-08-02

聚合挂载夸克、百度、WPS、网易云音乐云盘、移动云盘等多个网盘,统一访问入口。支持索引搜索。

4.1 安装配置

1
2
3
4
volumes:
- ./data:/opt/openlist/data
- /home:/home
- /mnt:/mnt

设置管理员密码:./openlist admin set 你的新密码

4.2 网盘挂载

各网盘配置参考官方文档(考虑时效性不存档)。夸克直接从网盘获取数据不占服务器带宽。

网易云音乐云盘登录方法(Cookie方式):

  1. 登录网页版
  2. 打开开发者工具 → 网络,只显示Fetch/XHR
  3. 点击”每日歌曲推荐”,找到songs?csrf_token那条请求
  4. 复制请求标头中的cookie,回到OpenList粘贴登录
  5. 用不了检查Cookie末尾是否有;

4.3 索引配置

OpenList索引解决了网盘文件搜索问题,配置后可全文搜索挂载的网盘内容。

4.4 注意事项

权限:新挂载本地目录时777不行,只能用750。

刷新问题:挂载硬盘后OpenList不能自动识别,需要重启OpenList容器才能刷新。

Cookie失效:手残删了网页登录后重新导入Cookie一直显示需要登录,需重新获取。

配置备份:各主机的OpenList配置JSON需定期备份,方便迁移和恢复。

五、Backrest(备份工具)

最后配置时间:2026-07-30

基于restic的备份工具,支持备份到S3/云盘。配合OpenList实现异地互备。

5.1 安装配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
version: "3.8"
services:
backrest:
image: garethgeorge/backrest:latest
container_name: backrest
hostname: backrest
volumes:
- ./backrest/data:/data
- ./backrest/config:/config
- ./backrest/cache:/cache
- /tmp:/tmp
- /home:/home:ro
- /mnt:/mnt:ro
environment:
- BACKREST_DATA=/data
- BACKREST_CONFIG=/config/config.json
- XDG_CACHE_HOME=/cache
- TMPDIR=/tmp
- TZ=Asia/Shanghai
ports:
- "9898:9898"
restart: unless-stopped
networks:
- 1panel-network

networks:
1panel-network:
external: true

5.2 参数优化

  • --limit-upload 5000:限制上传带宽
  • --pack-size 128:增大包大小减少请求次数

5.3 注意事项

网络配置:compose的网络配置比较麻烦,存储路径都改成英文。两个存储需要打开网页代理防止302问题。

备份策略:用Backrest和S3备份到两个云盘是最可靠的方案。

六、Immich(自托管相册)

最后配置时间:2026-09-23

自托管照片/视频管理,支持机器学习识别、人脸聚类、地图定位。使用QuickSync视频转码和OpenVINO机器学习硬件加速。

6.1 安装配置

使用固定release标签避免1Panel变量解析问题。compose关键配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
name: immich

services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:v3.2.2
extends:
file: hwaccel.transcoding.yml
service: quicksync
volumes:
- ${UPLOAD_LOCATION}:/data
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
ports:
- '2283:2283'
depends_on:
- redis
- database
restart: always

immich-machine-learning:
container_name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:v3.2.2-openvino
extends:
file: hwaccel.ml.yml
service: openvino
volumes:
- model-cache:/cache
env_file:
- .env
restart: always
environment:
- HTTP_PROXY=http://172.2CLOUD-MIGRATION-Article.1:20172
- HTTPS_PROXY=http://172.2CLOUD-MIGRATION-Article.1:20172
- NO_PROXY=localhost,127.0.0.1,.local

redis:
container_name: immich_redis
image: docker.io/valkey/valkey:9
restart: always

database:
container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
volumes:
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
shm_size: 128mb
restart: always

volumes:
model-cache:

6.2 硬件加速

需要两个额外的硬件加速配置文件放在compose目录:

  • hwaccel.transcoding.yml:视频转码QuickSync配置(Intel核显)
  • hwaccel.ml.yml:机器学习OpenVINO配置

6.3 模型存储

将模型缓存目录映射到大容量硬盘避免占用系统空间。

6.4 地图配置

用谷歌账号注册MapTiler,按照官方教程配置API Key。

6.5 注意事项

内存:OCR可能爆内存,需清理服务器桌面和文件释放内存。

网络:模型下载需要代理,容器间防火墙问题需允许访问。IPv6有诸多问题。

硬盘唤醒:Immich可能频繁唤醒机械硬盘,升级后似乎好了。

Redis/Valkey:Immich自带Valkey容器作为缓存,不需要单独部署Redis。

七、简单服务(1Panel应用商店)

最后配置时间:2026-10-10

以下服务从1Panel应用商店安装,配置反代和frp后即可使用。

7.1 Bitwarden(密码管理)

自托管密码管理器,1Panel应用商店直接安装。配置反代(需HTTPS)和frp穿透后各端使用。

7.2 OpenResty(Web服务器)

基于Nginx的Web服务器,可用于静态站点托管或自定义反代规则。

7.3 ddns-go(动态DNS)

动态域名解析服务,支持阿里云、腾讯云等DNS服务商。

7.4 ezbookkeeping(记账)

轻量级记账应用,1Panel应用商店安装后配置反代即可。

7.5 RustDesk(远程桌面)

自托管远程桌面服务端,替代TeamViewer/ToDesk。

7.6 通用配置流程

  1. 1Panel应用商店安装服务
  2. 配置反代(域名+证书+端口)
  3. 配置frp穿透(如需外网访问)
  4. 配置ddns解析(如使用动态IP)
  5. 更新服务记录表

    注意:反代配置中如涉及端口传递,使用proxy_set_header Host (http_host 而非)host。ddns删除记录后需等待解析生效。

附录:已放弃服务记录

以下服务试过后放弃,记录原因供参考:

  • Collabora:太卡、不能协作、字体缺失,改用OnlyOffice
  • Karakeep(原Hoarder):保存效果不好,移动端查看差
  • VS Code Server:已放弃,只保留本地frp
  • Docmost:带后端知识库要收费,不如Trilium
  • Hexo:不打算用了,博客方案待定
  • Halo:不打算用了,MySQL迁移完后清理
  • Jellyfin:OpenList挂载网盘不行,不打算用了
  • Obsidian:不用了,已迁移到Trilium
  • VNC:折腾失败,暂时不搞
  • SyncClipboard:未部署,无法保存记录

留言

0/500

留言经审核后才会公开显示:审核通过后刷新本页即可看到。