网盘
本节记录了在自托管环境下部署和配置各种网盘与文件管理系统的实践。
File Browser & WebDAV
- File Browser: 提供了一个轻量级的文件管理界面,支持上传、删除、预览及编辑文件。
- WebDAV: 一个简单易用的 WebDAV 服务器实现。
路径映射与反向代理 (FRP + OpenResty)
为了在公网通过 amass.fun/nas 和 amass.fun/webdav 分别访问位于内网 Unraid 的 File Browser (8086) 和 WebDAV (8084),且不占用额外端口,可以利用 FRP 的 HTTP 路径转发功能。
前提条件:
- File Browser 已设置
baseURL为/nas。 - WebDAV 服务已设置
prefix为/webdav/。
1. 内网端 frpc 配置
在 Unraid 的 frpc.toml 中利用 locations 区分路径:
[[proxies]]
name = "filebrowser"
type = "http"
localIP = "127.0.0.1"
localPort = 8086
customDomains = ["amass.fun"]
locations = ["/nas"]
[[proxies]]
name = "webdav"
type = "http"
localIP = "127.0.0.1"
localPort = 8084
customDomains = ["amass.fun"]
locations = ["/webdav"]
2. 公网端 OpenResty (Nginx) 配置
在服务器端,将请求转发给 FRPS 的虚拟主机端口:
location /nas {
client_max_body_size 0;
proxy_set_header Host $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;
proxy_pass http://frp_http_proxy;
}
location /webdav {
client_max_body_size 0;
proxy_set_header Host $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;
proxy_pass http://frp_http_proxy;
}
Nextcloud
Nextcloud 是功能最为丰富的私有云盘。建议配合大带宽的 frp 服务使用。
Docker 部署
推荐使用 LinuxServer 提供的镜像,以方便管理 PUID/PGID。
# 确认当前用户的 uid 和 gid
id amass
docker run -d \
--name nextcloud \
--privileged \
--restart unless-stopped \
-e PUID=1000 -e PGID=100 \
-e TZ=Asia/Shanghai \
-p 1443:443 \
-v /mnt/user/Backup/Nextcloud:/data \
-v /mnt/user/appdata/nextcloud:/config \
linuxserver/nextcloud
提示:在 Unraid 上部署时,建议将
PUID和PGID设置为与 NAS 用户一致,以避免权限冲突。
推荐插件
- External storage support: 支持挂载外部存储(如 Unraid 共享文件夹)。建议使用 SMB 挂载,若使用本地挂载,创建文件的用户将是
nobody,可能导致其他用户无修改权限。 - External sites: 将外部链接集成到 Nextcloud 导航栏,直接在 Frame 中显示。
- Nextcloud Office: 在线编辑 Office 文档。服务器地址可设置为
https://frp-by1.wwvvww.cn:25538。 - Notes: 基于 Markdown 的笔记本插件。
- Tasks: 任务清单管理。
- Configurable Share Links: 支持自定义文件分享链接。
核心配置
1. 信任域名与路径覆盖
修改 /config/www/nextcloud/config/config.php,确保反向代理后的域名和路径生效:
'trusted_domains' =>
array (
0 => '192.168.2.3',
1 => 'frp-by1.wwvvww.cn',
),
'overwritewebroot' => '/nextcloud',
'overwrite.cli.url' => 'https://frp-by1.wwvvww.cn:25538/nextcloud',
2. Nginx 反向代理配置
location /nextcloud {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass https://192.168.110.3:1443/; # 内部容器地址
proxy_ssl_session_reuse off;
proxy_set_header Host $http_host;
proxy_cache_bypass $http_upgrade;
proxy_redirect off;
}
3. SSL 证书
将 SSL 证书放置于 /config/keys,或根据需要修改 /config/nginx/ssl.conf。
运维与管理
配置邮件服务器
在 管理设置 -> 基本设置 -> 电子邮件服务器 配置(以 QQ 邮箱为例):
- 发送模式: SMTP
- 加密: SSL
- 身份认证: 需要认证(使用 QQ 邮箱地址与 SMTP 授权码)。
occ 命令行工具
occ (ownCloud Console) 是 Nextcloud 的强大管理工具:
# 以特定用户身份进入容器执行
docker exec -it -u 1000 nextcloud bash
# 常用命令示例
/app/www/public/occ list # 列出所有命令
/app/www/public/occ app:list # 列出已安装应用
/app/www/public/occ app:enable files_external # 启用外部存储插件
限制说明
- AIO 镜像: 官方 All-In-One 镜像强制要求 443 端口,不适合无公网 IP 或使用非标准端口转发的场景。