存档

文章标签 ‘Docker’

NAS 上使用 Let’s encrypt 动态 DNS 续期 SSL 证书

2025年2月2日 没有评论

背景是我在 NAS 上部署了 immich 来存放照片,基于方便使用和安全考虑,使用 https 可能更合适。熟悉 immich 的小伙伴可能知道,这个应用需要使用反向代理来支持 SSL,虽然对于不能直接支持感觉不可思议, 但是这也不是太大的问题,开个 nginx 镜像也就实现了反向代理,关键是如何支持 SSL 证书。

现在家庭使用的基本上都是动态 IP,想要正确解析域名到实际 IP 就比较麻烦,好在 NAS 上支持动态 DNS 的解析,衣服自己洗使用的是 DNSPod,所以从里面导出一个 api key,放到 NAS 里就可以了,因为只需要很简单地无脑下一步,所以这里就不展开描述了。

但是,接下来我有碰到一个问题,由于对于家庭 IP 地址来说,80 和 443 端口一般是被运营商给禁止了的,所以 DNS 校验的方式就走不通,退而求其次看域名解析,而 certbot 又不支持 DNSPod 的,搜索了一番,网上有现成的,于是做了一个 docker 镜像,在 NAS 上部署。

第一步:克隆仓库

git@github.com:chenlongqiang/docker-certbot-dnspod.git

第二步:构建镜像

cd docker-certbot-dnspod
docker build -t certbot-dnspod .

请注意,上面命令最后还有一个英文的句号哟。

第三步:更新 dnspod.ini 配置,可以在 https://console.dnspod.cn/account/token/token 进行 DNSPod Token 秘钥创建。

第四部:部署镜像

# 申请新证书,执行后会进行命令行交互,填写完信息后将在 certs 目录下生成申请成功的证书
docker run -it --rm -v ./conf/dnspod.ini:/data/certbot/dnspod.ini -v ./certs:/etc/letsencrypt certbot-dnspod -d your_domain.com -d "*.your_domain.com"

# 续期 certs 目录下的证书
docker run -it --rm -v ./conf/dnspod.ini:/data/certbot/dnspod.ini -v ./certs:/etc/letsencrypt certbot-dnspod renew

请注意,如果不需要一次性,那么可以不添加 –rm 参数。同时请修改 dnspod.ini 的路径为你的实际路径。

经过验证,确实可以获取到 Let’s encrypt 生成的证书,然后更新到 nginx 的路径里。

不过,一个 https 的地址还带端口号,看着就怪怪的。

分类: 日常 标签:

群晖 docker 容器 failed to initialize logging driver 解决办法

2023年3月14日 没有评论

最近发现 docker 里的一个应用无法启动,总是报告 “failed to initialize logging driver”提示,在网上搜索了一下,找到了解决方法。对于我的这个案例来说,就是由于 lock 文件导致的。

来,直接上步骤:

1、在 docker 里开启 22 端口,然后远程 ssh 连上去。
2、输入 sudo -i 切换到管理员权限
3、输入 docker ps -a 可以查询到所有的容器,这一步可以获取到容器的 ID
4、输入 docker inspect –format='{{.LogPath}}’ <容器ID>,可以获取到该容器的日志路径
5、cd 命令进入到该目录下,然后 ls 显示所有的文件
6、删除 log 文件,对于我的案例,删除 log.db 文件
7、输入 docker start <容器ID>

至此,该应用就启动起来了。

网上的说法是由于多个终端曾经操作容器,造成容器日志被锁。而容器的日志作为启动必须加载项,被锁造成启动失败。庆幸的是容器日志可被清空删除,删除后会重新创建。

因此移除异常的日志数据库,重启容器后恢复正常。

分类: 一句话, 日常 标签: , ,