之前自建了一个gogs, 但是并没有弄https, 直接用的http, 上次自己试了一下发现截密码太容易了…所以思考了一下…还是弄个域名然后上了https…
首先, 使用https需要申请SSL证书, 然后要申请证书的话, 似乎免费的SSL证书是基本都是要有域名的, 所以我找了最便宜的INVALID POST SLUG PROVIDED www.namesilo.com/申请了一个. 域名申请和绑定IP见这个博文.
有了域名之后下一步就是设置反代理服务器了, 我选择了简单易用的Caddy, 因为我查到的资料都说Caddy设置简单, 易用性完爆Nginx还能自动申请和更新SSL证书. 也许是我脸比较黑…设置虽然很简单完成了, 但是申请SSL证书怎么也用不了. 无奈只有在github上又找了个专门申请SSL证书的项目acme.sh. 这个脚本使用非常简单, 作者的使用说明也写的详细, 照它说的做就可以. 当然这里也有个更傻瓜化的教程
使用acme.sh
会生成四个文件, 其中fullchain.cer
, your.domain.key
就是证书和密钥.
由于我使用docker部署gogs和caddy, 为了方便把两者都写到一个compose文件里:
1 | version: "2" |
上面文件中配置了两个容器, gogs只暴露22端口用于ssh服务, http的端口不暴露, Caddy可以在配置文件里直接设置访问(虽然我不知道怎么做到的).
Caddy的容器则注意设置ACME_AGREE=true
这个环境变量的设置, 不然acme会提示不能使用… 再就是要指定Caddy的配置文件Caddyfile
和上面生成的证书和密钥了. Caddy容器的端口暴露这里设置的有问题…之后再看怎么改.
Caddyfile的具体内容如下:
1 | your.domain { |