Skip to content

Instantly share code, notes, and snippets.

@tevino
Created June 9, 2018 14:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tevino/5dc0737cd32c5a83fee27aa4a6205359 to your computer and use it in GitHub Desktop.
Save tevino/5dc0737cd32c5a83fee27aa4a6205359 to your computer and use it in GitHub Desktop.

需求

高级配置问题

现状

网上存在各类通过命令行编辑深藏在 NAS 文件系统深处的某配置文件而实现某些高级功能的方法,就连群晖官方的技术支持也会提供这种方案。

这种方式的问题

  • 控制台操作用户不友好
  • 配置文件路径多,而且没有官方文档说明,往往是爱好者自己发现
  • 修改的配置文件在套件或系统更新后可能被覆盖,导致配置失效甚至软件故障
  • 修改的这部分配置无法保存、备份
  • 修改这类文件往往很危险,容易出错

解决方案

A. 基于开源软件的套件提供更丰富的高级配置

这类配置非常多,以下举例说明:

套件或功能名称 需要开放的高级配置 使用场景
WebStation 和 Reverse Proxy Nginx 或 Apache 的路由规则配置 同一域名的不同路径路由到不同应用,例如 example.com/gitlab 反向代理到 GitLab 套件同时 example.com/redmine 代理到 RedMine 套件
VPN Server 中 OpenVPN 路由规则推送的配置 从公网拨 VPN 回家,向客户端推送 DHCP option 以及内网路由规则
Terminal 基于密钥的认证以及端口转发的开启等 通过 SSH 访问 NAS,相比帐号密码认证,密钥认证方便又安全。开启 端口转发 可以让 NAS 作为跳板机访问内网其他资源
Docker Docker Engine API 开关 Portainer IronFunctions 等工具能够接管 NAS 的 Docker Daemon

B. 折中方案

以上配置太多,大多可能也只有高级用户会用到,短期没办法一一实现也能够理解,这里有个折中的方案:

大多数开源软件的配置都能通过较为简单的方式分散在多个文件中,例如在主配置文件中使用 include 等关键字引用其他文件中的配置内容。

如果群晖的上述套件能够提供一个简单的 自定义配置 选项,这个选项是一个文本框(或文件路径),文本框或文件内容会被 include 到默认配置中,这样配置可以由用户自己来决定,实现相对容易,高级用户可以灵活使用,普通用户默认隐藏掉即可。

其他小问题

  • Package Center 中没有启动的套件更新时会要求先启动依赖的其他套件(如果出于某种原因必须这样,提供按钮一键启动所有依赖项可行吗?)
    • 例:套件 DokuWiki 依赖 Apache,NAS 上只安装了 DokuWiki 但(包括 Apache 也)没有启动,这时更新 DokuWiki 会要求启动 Apache
  • Calendar 不支持 push
  • Drive 的同步对小文件不友好,放几个 git repo 永远同步不完。
  • Let’s Encrypt HTTPS 证书不支持 80 端口以外的认证方式和 wildcard 域名,请多考虑大陆网络环境
  • 需要套件级别或系统级别的代理配置(大陆网络环境)
  • Docker 无法轻松全量(包括容器的数据、配置、外部 volume、image、network)备份
  • Docker 支持按同样配置基于更新版本的 image 重建容器(即更新),具体可参考 Portainer 对容器的更新功能
  • WebStation 不支持 PHP 以外的其他后端
  • Hyper Backup 不支持 AFPSMB 协议作为 Destination
  • 移动端应用合并可能不太现实,但登陆和 2FA 验证是否能统一,例如只在一个应用中登陆即可通过应用间交互授权其他应用(类似天猫通过淘宝登陆),现状是单个应用的使用频率低,结果几乎每次都要重新登录。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment