新到一台群晖 NAS。人生第一次用白群晖,自然是要狠狠地配置一番,本文记录配置过程中遇到的各种坑。
反向代理
在「控制面板 - 登录门户 - 高级 - 反向代理服务器」中可以配置反代。
WebSocket 支持
默认反代是不支持 WebSocket 的,在浏览器的 Console 里面可以看到 wss 连接失败的错误信息。参考官方教程,在「对应的反代配置 - 自定义标题 - 新增 - WebSocket」,会自动添加两项,保存即可。此时 WebSocket 连接支持已启用。
Docker
Docker 内调用 DSM 的数据库
在 DSM 套件中心安装了 MariaDB 数据库,但 Docker 容器一般是访问不了的。打通访问的方式有两个:
- 容器使用 Host 网络:不推荐
- 容器照常使用 Bridge 网络,将数据库地址改为 Docker 虚拟网络适配器的网关地址(本例是 172.17.0.1),DSM 的 MariaDB 允许通过 TCP 访问。
下载 Docker Hub 上的镜像
群晖连 Docker Hub 时断时续,我都快疯了。索性直接把 Docker 镜像下载成 tar 包,再手动传上去。
使用 docker-drag 实现
根据官网介绍:docker-drag
是一个用于与 Docker Hub
交互的工具,并且不需 Docker
客户端本身支持。它主要是通过与 Docker Hub
的 HTTPS API
进行交互来实现相应功能。
项目地址:https://github.com/NotGlop/docker-drag
安装 docker-drag
docker-drag
其实就是一个 Python
脚本,目前版本总共才 168 行代码。你只需要去官网仓库直接下载就可以使用了,非常的简单。下载地址:
1 | https://raw.githubusercontent.com/NotGlop/docker-drag/master/docker_pull.py |
使用 docker-drag
我们先来看一下官方给出的演示效果。
docker-drag
的使用是非常简单的,基本上和 docke pull
命令使用方法一致。其主要是借助 Python
的 Request
库和 HTTPS API
直接从仓库中拉取镜像,并保存为 TAR
文件。
1 | $ python docker_pull.py nginx:alpine |
镜像下载完成后,你可以直接使用 docker load -i
命令对 TAR
文件进行加载。
使用 download-frozen-image-v2 实现
与 docker-drag
类似的工具,还有一个 SHELL
脚本的实现 download-frozen-image-v2
,该脚本隶属于 Moby
项目。项目地址:https://github.com/moby/moby
它的使用基本上和 docker-drag
类似,大致有如以下几步所示。
- 下载对应的脚本
1 | $ wget https://raw.githubusercontent.com/moby/moby/master/contrib/download-frozen-image-v2.sh |
- download-frozen-image-v2 脚本使用语法
1 | download-frozen-image-v2.sh target_dir image[:tag][@digest] ... |
- 一个完整的使用实例
1 | $ bash download-frozen-image-v2.sh ubuntu ubuntu:latest |
使用 dp 实现
dp
同样也是一个实现上述类似需求的小工具。dp
使用 Go
语言开发,天生具有良好的跨平台性。相对于前两个工具来说更容易在多平台上部署使用,而且 dp
还支持将多个镜像打包在一起。
项目地址:https://github.com/zhangguanzhang/dp/
安装
dp
的安装非常简单,只需在官方仓库 Releases
页面直接下载各平台对应的版本,解压后即可使用。
使用
dp
使用起来也是很容易的,下面我们就来看几个实例。
1 | $ dp pull nginx:alpine |
网络服务
Hedgedoc
Hedgedoc 是一个在线协作 Markdown 平台。
在 Docker 中拉取 linuxserver/hedgedoc 映像,并做如下配置。
文件夹映射:
- /opt/hedgedoc/public/uploads:上传图片存放的位置
环境变量:
- 数据库相关:DB_HOST、DB_PORT、DB_USER、DB_PASS、DB_NAME
- 域名相关
- CMD_DOMAIN
- CMD_PROTOCOL_USESSL:
true
直接启动即可。
在线 Office
试用了一圈,比如:
- Nextcloud + OnlyOffice
- EtherPad
- CryptPad
发现还是群晖自带的 Synology Drive 好用。
上述基于 Docker 的方案有如下缺陷:
- 用户配额无法落实
- 增加了系统的安全风险点
- 徒耗系统资源:尤其是 Nextcloud + OnlyOffice 的方案,两个容器各吃 1G 的内存,离大谱。