1、安裝Docker
# 安裝Docker
https://docs.docker.com/get-docker/# 安裝Docker Compose
https://docs.docker.com/compose/install/# CentOS安裝Docker
https://mp.weixin.qq.com/s/nHNPbCmdQs3E5x1QBP-ueA
2、申請Let's Encrypt證書
詳見:
https://docs.linuxserver.io/general/swag
https://github.com/linuxserver/docker-swag
https://hub.docker.com/r/linuxserver/swag
創建目錄:
mkdir letsencrypt
cd letsencrypt
創建docker-compose.yaml文件:
services:swag:image: linuxserver/swag:latestcontainer_name: swagcap_add:- NET_ADMINenvironment:- PUID=0- PGID=0- TZ=Asia/Shanghai- URL=example.com- VALIDATION=http- SUBDOMAINS=www, #optional- CERTPROVIDER= #optional- DNSPLUGIN=cloudflare #optional- PROPAGATION= #optional- EMAIL= #optional#- ONLY_SUBDOMAINS=false #optional- ONLY_SUBDOMAINS=true #optional- EXTRA_DOMAINS= #optional- STAGING=false #optional- DISABLE_F2B= #optional- SWAG_AUTORELOAD= #optional- SWAG_AUTORELOAD_WATCHLIST= #optionalvolumes:- ./config:/configports:- 443:443- 80:80 #optionalrestart: unless-stopped
說明:
1、根據實際情況修改PUID、PGID的值,使用id命令來查看當前用戶的PUID、PGID的值
2、根據實際情況修改URL、SUBDOMAINS的值,URL為域名、SUBDOMAINS為子域名
3、將ONLY_SUBDOMAINS的值設置為true,只獲取子域名證書
參數說明:-p 443:443 HTTPS 端口。
-p 80 HTTP端口(HTTP 驗證和 HTTP -> HTTPS 重定向所需)。
-e PUID=1000 UserID。
-e PGID=1000 GroupID。
-e TZ=Etc/UTC 指定要使用的時區。
-e URL=example.com 域名/DNS(example.com 或者 customsubdomain.example.com)。
-e VALIDATION=http 使用Certbot驗證方法,選項為http或dns。
-e SUBDOMAINS=www, 子域名(逗號分隔,無空格),如www,ftp,cloud。對于通配符證書,設置為wildcard。
-e CERTPROVIDER= 可選地定義證書提供商。設置zerossl為 ZeroSSL 證書(需要現有的ZeroSSL 帳戶EMAIL和在環境變量中輸入的電子郵件地址)。否則默認為 Let's Encrypt。
-e DNSPLUGIN=cloudflare 如果VALIDATION設置為dns。
-e PROPAGATION= 可選擇覆蓋(以秒為單位)dns 插件的默認傳播時間。
-e EMAIL= 用于證書到期通知的可選電子郵件地址(ZeroSSL 必需)。
-e ONLY_SUBDOMAINS=false 如果您希望只獲取某些子域的證書,而不是主域的證書(主域可能托管在另一臺機器上,無法驗證),請將其設置為true。
-e EXTRA_DOMAINS= 額外的完全限定域名(以逗號分隔,無空格),如example.net、subdomain.example.net、*.example.org。
-e STAGING=false 設置為true以在暫存模式下檢索證書。速率限制會更高,但生成的證書將無法通過瀏覽器的安全測試。僅用于測試目的。
-e DISABLE_F2B= 如果您已經在其他地方運行該服務或使用不同的 IPS,則設置true為禁用容器中的 Fail2ban 服務。
-e SWAG_AUTORELOAD= 設置為true,以便在配置文件發生更改時自動重新加載,而無需停止/重啟 nginx。您的文件系統必須支持 inotify。此功能之前通過 modtrue提供。
-e SWAG_AUTORELOAD_WATCHLIST= 除以下文件夾外,還包含一個管道分隔的用于自動重新加載的附加文件夾列表:/config/nginx。
-v /config 持久配置文件。
--read-only=true 使用只讀文件系統運行容器。
--cap-add=NET_ADMIN 需要 fail2Ban 才能修改 iptables 規則。
創建并啟動容器:
docker-compose up -d
查看容器列表:
docker ps
查看日志:
docker logs swag
進入容器:
docker exec -it swag bash
重啟容器:
docker restart swag
停止并銷毀容器:
docker-compose down
刪除鏡像:
docker rmi linuxserver/swag:latest
刪除目錄:
rm -rf ./config
SSL證書文件:
# 證書路徑:
./config/etc/letsencrypt/live/域名# 證書文件:
cert.pem -> ../../archive/域名/cert1.pem
chain.pem -> ../../archive/域名/chain1.pem
fullchain.pem -> ../../archive/域名/fullchain1.pem
priv-fullchain-bundle.pem
privkey.pem -> ../../archive/域名/privkey1.pem
privkey.pfx
README# README文件:
This directory contains your keys and certificates.`privkey.pem` : the private key for your certificate.
`fullchain.pem`: the certificate file used in most server software.
`chain.pem` : used for OCSP stapling in Nginx >=1.3.7.
`cert.pem` : will break many server configurations, and should not be usedwithout reading further documentation (see link below).WARNING: DO NOT MOVE OR RENAME THESE FILES!Certbot expects these files to remain in this location in orderto function properly!We recommend not moving these files. For more information, see the Certbot
User Guide at https://certbot.eff.org/docs/using.html#where-are-my-certificates.# 說明:
私鑰文件:privkey.pem
證書文件:fullchain.pem
創建./config/nginx/proxy-confs/域名.subdomain.conf文件:
詳見:./config/nginx/proxy-confs/homepage.subdomain.conf.sample
server {listen 443 ssl;listen [::]:443 ssl;server_name 域名;#include /config/nginx/ssl.conf;client_max_body_size 0;location / {root /config/www;#include /config/nginx/proxy.conf;#include /config/nginx/resolver.conf;#set $upstream_app homepage;#set $upstream_port 3000;#set $upstream_proto http;#proxy_pass $upstream_proto://$upstream_app:$upstream_port;}
}
重啟nginx服務:
# 重啟nginx服務:
docker exec -it swag nginx -s reload# curl訪問:
curl -L 域名
瀏覽器訪問:
3、詳見
https://mp.weixin.qq.com/s/vNwwniGxGcKTPKKNJjYjfg
https://www.linuxserver.io/
https://docs.linuxserver.io/general/swag
https://github.com/linuxserver/docker-swag
https://hub.docker.com/r/linuxserver/swag
https://github.com/linuxserver-archive/docker-letsencrypt
https://hub.docker.com/r/linuxserver/letsencrypt
https://mp.weixin.qq.com/s/SOjKZ7ekufLVJ_dmfKwjZQ