目录

  1. 前置准备
  2. 轻量代码托管 —— Gitea
  3. 网络与安全配置 —— DDNS、泛解析、SSL 与反向代理
  4. 密码管理器 —— Vaultwarden
  5. 影音中心 —— Plex
  6. 常见问题与故障排查

前置准备

  • 群晖型号:建议内存 ≥ 2GB(运行 Gitea 和 Vaultwarden 足够,Plex 转码可能需要更多)
  • 系统版本:DSM 7.0 及以上(Container Manager 已集成)
  • 网络:拥有公网 IP(或支持 IPv6),并可在路由器上配置端口转发
  • 域名(可选但推荐):拥有一个自己的域名,用于统一管理服务访问
  • 工具:群晖套件中心、Container Manager(Docker)、File Station、控制面板

轻量代码托管 —— Gitea

1. 为什么选择 Gitea 而非 GitLab

  • 资源占用极低:内存常驻约 200~500 MB,启动秒级
  • 功能完整:支持仓库、PR、Issue、Wiki、Actions(CI)等
  • 适合场景:个人开发者、小团队,或资源有限的 NAS

2. 通过 Docker 部署 Gitea

2.1 创建数据文件夹

在 File Station 中新建目录,例如:

1
2
/docker/gitea/data
/docker/gitea/config (可选)

2.2 拉取镜像并运行容器

  • 在 Container Manager 的“注册表”中搜索 gitea/gitea,下载 latest 标签。
  • 创建容器时:
    • 端口映射
      • 本地端口 3000 → 容器端口 3000(Web)
      • 本地端口 1022 → 容器端口 22(SSH,避免与群晖自带 SSH 冲突)
    • 存储空间
      • /docker/gitea/data/data
      • /docker/gitea/config/etc/gitea(可选)
    • 资源限制:建议内存上限 512 MB,CPU 限制 1 核。

2.3 初始化 Gitea

  • 浏览器访问 http://群晖IP:3000
  • 首次安装页面:
    • 数据库:选择 SQLite3(个人足够)
    • SSH 服务器端口:填写 1022
    • 基础 URL:填写 http://群晖IP:3000(后续可改为域名)
  • 创建管理员账号,完成安装。

3. 配置 SSL 与域名访问(参见下一章)


网络与安全配置 —— DDNS、泛解析、SSL 与反向代理

1. 动态 DNS(DDNS)—— 解决动态 IP 问题

如果你的公网 IP 会变化,必须配置 DDNS 让域名始终指向最新 IP。

1.1 使用群晖官方 DDNS(最简单)

  • 控制面板 → 外部访问 → DDNS → 新增
  • 服务供应商:Synology
  • 主机名:注册一个 xxxx.synology.me 免费域名
  • 勾选“从 Let’s Encrypt 获取证书并设为默认”

1.2 使用自有域名 + 第三方 DDNS(推荐)

如果你拥有自己的域名(如 meatball.org.cn),建议使用 DNSPod 或阿里云,并搭配 DDNS-GO(开源)实现多域名自动更新。

  • 在 DNS 服务商添加解析
    • 记录1:主机记录 @,类型 A,值填当前公网 IP(稍后会自动更新)
    • 记录2(泛解析):主机记录 *,类型 A,值同公网 IP
  • 泛解析的作用:一次性让所有子域名(如 git.xxxnas.xxx)都指向同一 IP,无需逐个添加。
  • 部署 DDNS-GO
    • 在群晖 Container Manager 中运行 jeessy/ddns-go 容器
    • 配置 DNSPod 的 API Token,并添加需要更新的域名任务(主域名和泛解析只需更新 @* 两条记录即可)

2. SSL 证书

为了让服务支持 HTTPS,需要申请证书。

  • 通配符证书(推荐):一张证书可覆盖主域名和所有子域名。
  • 申请方式
    • 控制面板 → 安全性 → 证书 → 新增 → 从 Let’s Encrypt 获取
    • 域名填写:*.你的域名, 你的域名(逗号分隔)
    • 勾选“设为默认证书”

3. 反向代理(群晖自带功能)

通过反向代理,将不同子域名转发到 NAS 内不同端口的服务。

  • 控制面板 → 登录门户 → 高级 → 反向代理服务器 → 新增
  • 示例规则(为 Gitea):
    • 来源:协议 HTTPS,主机名 git.你的域名,端口 443
    • 目的地:协议 HTTP,主机名 localhost,端口 3000(Gitea 映射端口)
  • 证书分配:在“证书”设置中,将通配符证书分配给该反向代理规则。

4. 修改 Gitea 配置文件

  • 编辑 /docker/gitea/data/gitea/conf/app.ini
  • 修改 [server] 部分:
    1
    2
    [server]
    ROOT_URL = https://git.你的域名
  • 重启 Gitea 容器。

常见问题与故障排查

Q1:Git 克隆时出现 schannel: failed to receive handshake

  • 原因:Windows 的 Git 客户端与服务器 TLS 握手失败。
  • 解决
    1. 检查代理设置:git config --global --get http.proxy,如有则取消。
    2. 临时绕过 SSL 验证测试:git -c http.sslVerify=false clone ...,若能成功则说明证书信任问题。
    3. 确保 SSL 证书由公共 CA 签发(如 Let’s Encrypt),或手动将自签名证书导入系统信任区。
    4. 更新 Windows 系统和 Git 到最新版本。

Q3:泛解析不生效

  • 检查:在 DNS 服务商处是否添加了主机记录为 * 的 A 记录。
  • 注意:如果单独为某个子域名添加过解析,会覆盖泛解析,需删除或确保指向相同 IP。
  • 生效时间:DNS 缓存可能需要几分钟到数小时,可用 ping 子域名 检查。

Q4:群晖自带 DDNS 无法输入泛域名(*

  • 说明:群晖 DDNS 只用于更新主域名,泛解析是需要在 DNS 服务商手动添加 * 记录的。
  • 操作:在 DNSPod / 阿里云控制台单独添加 * 记录,然后使用第三方 DDNS(如 DDNS-GO)同时更新 @* 两条记录。