前言
这一篇承接上一篇文章,上一篇将系统以及共享搭建完毕,这次主要是安装一些基础的应用:
-
Docker安装
-
IPv6 DDNS动态域名解析
-
Nginx反向代理
说实话,到了这一步,对于新手来说可能会有点难度,不过还好的是学习成本不高,只需要简单学习一下就行。
Docker
Docker就不用过多介绍了,很简单,也很容易操作。在Ubuntu Server中也只需要简单输入几个命令就能安装:
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
IPv6 DDNS
第一步:域名
我们需要注册一个域名(最好是顶级域名),建议腾讯云、阿里云、华为云等等云服务器厂商都可以购买。
第二步:密钥
有两种类型的密钥:
-
AccessKey ID和AccessKey Secret
-
Token
各服务商获取地址:
阿里云地址:https://ram.console.aliyun.com/manage/ak?spm=5176.12818093.nav-right.dak.488716d0mHaMgg
腾讯云地址:https://console.dnspod.cn/account/token/apikey
华为云地址:https://console.huaweicloud.com/iam/?locale=zh-cn#/mine/accessKey
我这边就以 腾讯云 为例,使用 Token 方式:
点击【创建密钥】,密钥名称任意,将弹出界面的 ID
和 Token
复制保存下来。
第三步:域名解析
比如我的顶级域名为 yydnas.com
,然后NAS可以使用一个二级域名,为 nas.yydnas.com
,那么到控制台的域名解析界面添加一条记录类型为 AAAA 的记录,主机记录可以为 *
或者 nas
,记录值任意,我们先随便填一个 ::1
。
接着访问DDNS-GO,下载此应用。
将其压缩文件中的 ddns-go
程序上传至Ubuntu NAS的任意文件夹内,我这边建了个文件夹为 /etc/ddns-go
:
通过命令运行:
cd /etc/ddns-go #存放该程序的目录
sudo chmod +x ddns-go
sudo ./ddns-go -s install #安装服务
然后访问 http://IP:9876
页面。
服务商选择 DnsPod
, ID
和 Token
填写之前得到的两个值:
IPv4不启用,IPv6勾选启用,选择【通过网卡获取】,选择对应的网卡,【Domains】填写你的域名,我这边为 nas.yydnas.com
:
点击保存后查看日志,显示更新成功即可。
Nginx反向代理
第一步:Nginx安装
也是简单的几个命令就行了:
add-apt-repository ppa:ondrej/nginx-mainline
apt install nginx-full nginx-extras #很重要,一定要安装这两项,确保可以使用ipv6
第二步:启动Nginx
systemctl enable nginx #开机自动运行
systemctl start nginx
第三步:反向代理
这一步建议网上多看多学,很多配置上的东西慢慢了解,这边简单说明一下:
程序目录: /etc/nginx
网站目录(启用): /etc/nginx/sites-enabled/
网站目录(未启用): /etc/nginx/sites-available/
主程序配置文件: /etc/nginx/nginx.conf
我们先简单测试一下,这一步是基于上一步域名解析完成的情况下进行操作的,务必完成域名解析!
删除 /etc/nginx/sites-enabled/default
文件,在该目录新建一个 test.conf
的文件,内容为:
server {
listen [::]:80;
server_name nas.yydnas.com; #你的域名
index index.php index.html index.htm;
location / {
proxy_pass http://10.0.0.2; #需要反向代理的本地地址,这边10.0.0.2是我本地OpenWrt的地址
proxy_set_header Host $http_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;
}
}
重启 nginx: sudo systemctl restart nginx
。
然后试着访问域名 nas.yydnas.com
,能不能正常访问:
测试成功!
那么我们就可以系统的做第一个反向代理了,添加 SSL证书。
为这个域名在控制台申请一张免费的证书:
申请完成后,下载该证书,选择 Nginx类型,得到4个文件,将其上传至 Ubuntu NAS 的某个目录内,我放置在 /etc/nginx/cert
目录下:
再次修改 /etc/nginx/sites-enabled/test.conf
文件,完整内容为:
server {
listen [::]:80;
server_name nas.yydnas.com; #你的域名
index index.php index.html index.htm;
return 301 https://$server_name$request_uri; #http跳转至https
}
server {
listen [::]:443 ssl;
http2 on;
server_name nas.yydnas.com; #你的域名
index index.php index.html index.htm;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_certificate /etc/nginx/cert/nas.yydnas.com_nginx/nas.yydnas.com_bundle.pem; #pem证书
ssl_certificate_key /etc/nginx/cert/nas.yydnas.com_nginx/nas.yydnas.com.key; #key证书
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
location / {
proxy_pass http://10.0.0.2; #需要反向代理的本地地址,这边10.0.0.2是我本地OpenWrt的地址
proxy_set_header Host $http_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;
}
}
可以使用 nginx -t
查看是否有错误,没有问题的话再次重启 nginx:
最后,再次访问域名,可以看到网站还是能够正常访问并且正常开启https了:
举一反三
完成上述IPv6域名解析和Nginx反向代理之后,就可以举一反三完成很多很多需要反向代理外网访问的项目了。
通过Docker搭建的项目也是一样的流程。这边就不过多介绍了,相信Docker应该基本上都会,学习成本非常低。
其实也可以搭建个人网站,感兴趣的也自己学习一下。
最后
其实关于Docker也可以安装portainer,我个人觉得Docker就行了,图形管理界面倒不是很需要。
重点是在Nginx的配置上面,稍微花点时间把Nginx深入学习一下。
学完这些,Ubuntu Server NAS 90%已经完成了,各种应用可以通过Docker安装,比如Emby、Jellyfin、Home Assistant等等都可以自行搭建,还不用受限于各种NAS系统,剩下5% Docker没有的应用也可以通过PHP等搭建,还有其余5%都是一些比较偏门的东西。
当然,还有一点是相较于TrueNAS以及OMV等系统来说,Ubuntu的各种教程在网上还是比较多的,遇到问题也都能通过各种搜索解决。