群晖网站系统完善
群晖的基本功能现在总算是稳定了,下一步就是开始完善群晖的网站系统了,其实这个在其它机器上已经搞过很多次了,只是一直没有系统的记录,这次就借着这个机会统一整理一下。
配置域名
搞网站,首先要有的就是域名了,我之前有一阵挺热衷域名的,一连申请了好几个,最近都在吃灰,这下又可以派上用场了,因为家里不是固定IP(固定IP也搞不起),好在有公网IP,所以可以用DDNS解决域名频繁变动的问题,这个我直接用了Github上的一个脚本,链接地址, 配置也很简单,不过有个问题需要注意这个脚本只支持bash
,而我平常用的是zsh
,直接运行会出错,修改为bash运行之后一切正常。
另外在进行记录更新的时候,脚本会用到一个dig
的工具,这个默认在Docker
里面是没有安装的,需要通过如下的命令安装:
sudo apt install dnsutils
这样脚本可以通过请求一个网站获取IP,同时根据dig
工具获取当前域名配置是不是和获取的IP一致,只有二者不一致的时候脚本才会更新DDNS记录,这样就避免了频繁请求DNS记录。相关的脚本在这里下载。理论上这个脚本是可以在群晖的系统里面运行的,但是尝试之后发现群晖里面也没这个dig
工具,因此只能在docker ubuntu里面运行了
复用443端口
可怜的我在公司里面只有443端口可以用,之前试过haproxy
进行端口复用,但是这个在dokcer里面一直有问题,没办法,还是换回了sslh
这个小工具,我在我的VPS里面也是用的这个小工具,配置简单,用起来其实还不错。首先通过如下的命令安装:
sudo apt install sslh
这个工具的配置文件路径是/etc/default/sslh
,可以将默认配置文件备份之后进行如下的修改:
RUN=yes
# binary to use: forked (sslh) or single-thread (sslh-select) version
# systemd users: don't forget to modify /lib/systemd/system/sslh.service
DAEMON=/usr/sbin/sslh
# DAEMON_OPTS="--user sslh --listen <change-me>:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --pidfile /var/run/sslh/sslh.pid"
DAEMON_OPTS="--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:9443 --anyprot 127.0.0.1:9001 --pidfile /var/run/sslh/sslh.pid"
这里将监听端口设置为443,ssh为转到本地22,https转到本地9443,其他请求转到本地9001,完了直接重启服务:
sudo service sslh restart
没有问题的话,就可以通过443端口连接SSH服务了。
开启HTTPS
现在都9102年了,没有个HTTPS
都不好意思混了,每次连接NAS的时候都要带个小尾巴也挺不舒服的,所以就借着这个机会也给咱的NAS配上了证书,证书是直接在阿里云上申请的免费证书,时间是一年,直接内部DNS验证,比较方便,下载下来搞到NGINX上面就能用了。基本的nginx配置信息如下:
server {
server_name nas.example.com;
access_log /var/log/nginx/nas_debug.access.log;
error_log /var/log/nginx/nas_debug.error.log;
location / {
proxy_pass https://192.168.1.xxx:5001;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade "websocket";
proxy_set_header Connection "Upgrade";
proxy_read_timeout 86400;
}
listen 127.0.0.1:9443 ssl; # managed by Certbot
ssl_certificate /path/to/pem;
ssl_certificate_key /path/to/key;
ssl_session_timeout 5m;
ssl_ciphers xxxxxxxxxxxxxxxxx;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
}
这里说明一下,server_name
就是我们开启服务用到的域名,proxy_pass
是进行代理,这里直接转到本地群晖的服务上面,这里网页服务是用的HTTPS,这样我们就可以直接通过HTTPS访问我们的服务了,当然你的路由器还是要做必要的端口映射。需要说明的是,因为80口默认是禁用的,所以在浏览器输入网址的时候需要手动写https://xxx.xxx.xxx
。
另外上面几个proxy_set_header
也是必须的,否则DSM网页中是无法开启网页终端的,因为网页终端是基于sockets
的,这几条就是保证sockets
可以正常使用。证书的配置可以直接参考阿里云的文档,直接复制修改相应pem
和key
的路径就可以了。
以上,玩机愉快!
最后更新于 2019-07-19 02:02:42 并被添加「」标签,已有 2832 位童鞋阅读过。
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。