采用acme.sh自动化更新Nginx的SSL证书

首先,下载acme.sh;

curl https://get.acme.sh | sh
#如果无法访问github,则使用国内源
git clone https://gitee.com/neilpang/acme.sh.git
cd acme.sh
./acme.sh --install

然后申请证书;

/root/.acme.sh/acme.sh --issue -d mydomain.com -d www.mydomain.com --webroot /home/wwwroot/mydomain.com/ --email me@example.com

如果只有一个域名,则可以删掉第二个-d www.maydomain.com,–webroot更改为nginx的web服务根目录。新的acme.sh脚本采用zerossl,而不是原来的let’s encrypt,如果想要使用原来的ssl服务商,则添加–server letsencrypt。

最后将申请到的证书到处到生产目录,并设置自动重载Nginx的指令。

/root/.acme.sh/acme.sh --installcert -d mydomain.com --key-file /etc/nginx/ssl/mydomain.key --fullchain-file /etc/nginx/ssl/mydomain.pem --reloadcmd "service nginx force-reload"

nginx.conf中的ssl证书改为导出的文件即可。

升级TrueNAS SCALE 24.10 (Electric Eel)的Docker迁移失败问题

新版本的TrueNAS SCALE放弃了原来的K3S方案,转而采用基本的Docker服务。

默认状态下,TrueNAS在升级后会自动运行迁移脚本,但是由于网络连接问题,这个迁移大概率会失败,因为无法访问到DockerHub的官方registry。

首先这个问题可以在升级前,进入TrueNAS的Web管理页面,网络→全局配置→HTTP代理,设置正确的境外代理,即可访问官方registry。
如果已经升级了,可以在按照前述步骤添加了代理后,在命令行中运行TrueNAS官方提供的手动迁移脚本:”midclt call -job k8s_to_docker.migrate poolname”,其中poolname需要替换成你的池名称。

有时,可能因为某种原因,尽管采用了代理,但是在访问官方镜像时,会出现”Client.Timeout exceeded while awaiting headers”之类的网络连接错误,那么就需要尝试使用registry镜像了。

TrueNAS SCALE添加registry镜像的方法和一般Linux发行版没什么区别。即修改/etc/docker/daemon.json配置文件。
在该文件中的{}中添加:”registry-mirrors”: [“registry-mirror-url”],其中registry-mirror-url即为镜像地址,需要注意该地址需要添加https://或http://前缀。修改daemon.json文件应当符合JSON格式。

修改完成后在命令行执行sudo systemctl daemon-reload和sudo systemctl docker restart,并重新尝试迁移脚本或在应用页面尝试启动应用即可。