Nginx Proxy Manager 申请SSL证书

前言

我一直使用着Nginx Proxy Manage 实现站点的反代角色,觉得使用其他面板工具功能过于缭乱,这类Docker能满足我的需求,无论是在更新、备份、还原都有极大的便捷。

相关地址

GitHub地址:https://github.com/jc21/nginx-proxy-manager

参考作者文章:https://blog.laoda.de/archives/nginxproxymanager

搭建环境

  • 系统:Debian 11.1(仅代表我的版本)
  • 安装好Docker,Docker-Compose

Docker搭建

如已安装Docker,请跳转至 Nginx Proxy Manager安装

apt update   #获得系统上所有包的最新信息
sudo apt upgrade   #把这些包下载和升级到最新版本
apt install curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates -y  #安装必要的软件包

国内机器可以用清华 TUNA的国内源:

curl -sS https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg 
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list

更新系统后即可安装 Docker CE:

apt update
apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin  -y

验证docker是否安装成功

docker version #使用命令检查

安装docker-compose

sudo apt  install docker-compose  

恭喜你成功安装Docker,Docker-Compose

修改 Docker 配置

以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘:

cat > /etc/docker/daemon.json << EOF
{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "20m",
        "max-file": "3"
    },
    "ipv6": true,
    "fixed-cidr-v6": "fd00:dead:beef:c0::/80",
    "experimental":true,
    "ip6tables":true
}
EOF

重启 Docker 服务:

systemctl restart docker

设置系统启动时自动运行

sudo systemctl restart docker  #开机自启
sudo systemctl enable docker  #启动

Nginx Proxy Manager 安装

mkdir -p /root/data/docker/npm ; cd /root/data/docker/npm

创建构造文件docker-compose.yml,并把下方内容粘贴入

version: "3"
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # These ports are in format <host-port>:<container-port>
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: 'true'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - db

  db:
    image: 'jc21/mariadb-aria:latest'
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - ./data/mysql:/var/lib/mysql
docker-compose up -d  #构建容器启用完成

2023-07-02_114528.jpg
浏览器输入【docker主机ip:81】,成功进入web页面,初次登录使用邮箱:admin@example.com,密码:changeme。

DNS验证

2023-07-02_121004.jpg

选择SSL。

2023-07-02_121129.jpg

右侧点击 Add 后选择 Let's Encrypt 即可进入申请界面。

2023-07-02_122039.png

点击 Use a DNS Challenge,由于我的域名在腾讯云,优先选择 dnspod 提供商,申请*.bluhe.cn 泛域名后,其他二级域名都可以使用。

QQ图片20230702120820.jpg

DNSPod 密钥获取

2023-07-02_121620.jpg

打开页面 https://console.dnspod.cn/account/token/token,找到 DNSPod Token,然后点 创建秘钥。

2023-07-02_121633.jpg

你登录账号的邮箱、获取的id,key等信息填入申请界面。

dns_dnspod_email = "xxx@xxx.com"
dns_dnspod_api_token = "423396,0c7d774cb408132bf8249dac09d21ade"

2023-07-02_123924.jpg

最后保存即可。

Proxy Host 申请ssl

QQ截图20230702124917.jpg

一般域名也可直接在 Proxy Host (反代配置)完成后 选择ssl。申请失败,需进入容器内安装 zope 模块,pip install zope

QQ图片20230702124549.jpg

自动完成申请,不需要DNS麻烦的验证,在DNS申请不了的情况下,主要方式是这种。

结尾

Nginx Proxy Manager 也可以导入证书开启https,多种选择方便许多。

寻鹤 寻鹤 2023年07月02日
    1天前 一眨眼,国庆已经到了尾声,哪儿都没去,在家渡过这愉快的假期。
    1. 摩摩哒眼部按摩器使用体验
    2. 夜游平南明珠楼
    4
    84 of 120
    桂ICP备2022001355号-2
    桂公网安备 45012702000102号