原创文章,转载请注明出处
https://qiedd.com/
前前言
这东西看着很多,其实并不难,就是有点耗时间
开启FreeNAS的SSH
进入FreeNAS的webUI,服务->SSH->编辑
选择允许以root用户登陆,然后保存
开启允许SSH,并选择自动启动
通过SSH连接FreeNAS
windows下
按“win+R”键打开“运行”,输入cmd,然后输入
ssh root@你FreeNAS的IP -p SSH端口 //默认22的不用加-p
然后进入Nextcloud的shell,请确认你的jail 的名称是否nextcloud
iocage console nextcloud
申请证书
前言
建议配合acme.sh 的readme来食用
https://github.com/acmesh-official/acme.sh
由于家宽可能不开放80端口,而SSL证书的文件验证需要用到80端口
所以这里使用DNS验证,acme.sh支持的DNS API种类比较多,支持的Linux/Unix发行版也多
你可以在https://github.com/acmesh-official/acme.sh/wiki/dnsapi 查看所有支持的API
FreeNAS的jail中默认只有3个shell,你可以通过查看 /etc/shells 这个文件查看,nextcloud的jail默认使用csh
//查看所有shell cat /etc/shells //查看当前所用的shell echo $SHELL
准备安装
如果你的域名服务商在acme.sh DNS验证的支持列表里,你需要去你的域名服务商申请API,由于教程众多,我就不重复造轮子了,需要的请自行查找
我这里以阿里云作为例子
由于需要用export将API KEY,由于默认使用csh,当使用export时会报command not found 的错误,所以我们需要先改变默认SHELL
这里我不用sh,我用bash,首先需要更新源
//更新源 pkg update -f //安装bash pkg install bash //查看现在所有的SHELL //bash的路径应该是这个/usr/local/bin/bash cat /etc/shells //更改默认SHELL chsh -s /usr/local/bin/bash //退出Nextcloud的终端 exit //重新进入 iocage console nextcloud //检查默认SHELL //没有问题的话输出是bash的路径 echo $SHELL
使用acme.sh 申请证书
各类api的使用方法在这里,我只是举例
https://github.com/acmesh-official/acme.sh/wiki/dnsapi
//安装acme.sh //此脚本会把定时任务写入crontab //可以使用 crontab -l 查看 curl https://get.acme.sh | sh //可能会看到 It is recommended to install socat first. //那就安装socat pkg -f install socat //导入阿里的API,请自行替换“ ”内的内容 export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje" export Ali_Secret="jlsdflanljkljlfdsaklkjflsa" //Ali_Key和Ali_Secret将保存在〜/ .acme.sh / account.conf中,并在需要时重新使用。 //然后申请证书,等待 //alias可能会不生效,因此我们需要acme.sh的绝对路径 /root/.acme.sh/acme.sh --issue --dns dns_ali -d example.com //如果三个月后续签失败,可以使用命令强制续签 /root/.acme.sh/acme.sh --issue --dns dns_ali -d example.com --force
copy/安装 证书
默认生成的证书都放在安装目录下:~/.acme.sh/
, 请不要直接使用此目录下的文件,
例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化.
正确的使用方法是使用 --install-cert
命令,并指定目标位置, 然后证书文件会被copy到相应的位置
/root/.acme.sh/acme.sh --install-cert -d example.com \ --key-file /usr/local/etc/ssl/key.pem \ --fullchain-file /usr/local/etc/ssl/cert.pem
这时候,你的 /usr/local/etc/ssl 目录下就会生成两个文件 key.pem 和 cert.pem
自动更新acme.sh这个脚本
/root/.acme.sh/acme.sh --upgrade --auto-upgrade
配置Nginx
我们需要配置一下Nginx才能使它使用证书
//Nextcloud的SSL配置 cp /usr/local/etc/nginx/conf.d/nextcloud.conf /usr/local/etc/nginx/conf.d/nextcloud-ssl.conf //原本的配置备份一下 mv /usr/local/etc/nginx/conf.d/nextcloud.conf /usr/local/etc/nginx/conf.d/nextcloud.conf.old
修改 nextcloud-ssl.conf
我们还需要修改一下nextcloud的配置文件,这里我使用winscp(下载)
通过sftp连上freenas,进入
/mnt/(你的储存池名称)/iocage/jails/nextcloud/root/usr/local/etc/nginx/conf.d
重点
从server开始
复制所有配置,然后粘贴到最下面
server { listen 80; server_name _; ........................ }
然后修改粘贴出来的那一段,改成下面这样
server { listen 443 ssl http2; server_name example.com “你的NextCloud IP”; ssl_certificate /usr/local/etc/ssl/cert.pem; ssl_certificate_key /usr/local/etc/ssl/key.pem; .......................
往下找,找到 (可以用ctrl+f)找
#fastcgi_param HTTPS on;
然后把#去掉
fastcgi_param HTTPS on;
保存文件,重启一下Nginx
service nginx restart
然后从外网访问的时候记得加上 HTTPS://
其他
端口转发和ddns的教程网上大把了,自己找
不过注意转发的内网端口是443不是80哈
0 条评论