Nginx Proxy Manager 申请SSL证书

前言

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

相关地址

GitHub地址:https://github.com/jc21/nginx-proxy-manager
参考作者文章:https://blog.laoda.de/archives/docker-compose-install-trilium

搭建环境

  • 系统: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  | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg 
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg]  $(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  #构建容器启用完成
Nginx Proxy Manager 申请SSL证书

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

DNS验证

Nginx Proxy Manager 申请SSL证书

选择SSL

Nginx Proxy Manager 申请SSL证书

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

Nginx Proxy Manager 申请SSL证书

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

Nginx Proxy Manager 申请SSL证书

DNSPod 密钥获取

Nginx Proxy Manager 申请SSL证书

打开页面 DNSPod Token,然后点 创建秘钥。

Nginx Proxy Manager 申请SSL证书

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

dns_dnspod_email = “xxx@xxx.com”
dns_dnspod_api_token = “423396,0c7d774cb408132bf8249dac09d21ade”

Nginx Proxy Manager 申请SSL证书

最后保存即可。

Proxy Host 申请ssl

Nginx Proxy Manager 申请SSL证书

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

Nginx Proxy Manager 申请SSL证书

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

结尾

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

本文收录于{云心怀鹤}

© 版权声明

相关文章

暂无评论

暂无评论...