在 Nginx Proxy Manager 啟用 IPv6 支援

前言廢話

在幾篇文章之前,我介紹了 Nginx Proxy Manager(連結)。再經過幾周之後,我也順利地將大部分的配置都轉移到這上面,但我也在這上面找到一些問題。

其中,影響我最大的莫過於不支援 IPv6。說也奇怪,直接訪問主機的 IPv6 是可以看到歡迎畫面的,當綁上網域後完全無法使用 IPv6 通訊。

因此,經過爬文後,我統整出這篇文章,而我也會將文章出處置於文章結尾。

安裝 Docker

在上一篇介紹 Nginx Proxy Manager 的文章中,我們只有安裝 docker-compose。不過現在,我們需要補裝原本的 Docker。

sudo apt-get install -y docker

配置 Docker

再來,我們使用 ifconfig 來查看我們目前的 IPv6 位址,你應該可以看到類似於底下這樣的內容:

inet6 2400:xxxx:xxxx::1  prefixlen 64  scopeid 0x0<global>

我們將他記下來,並編輯 /etc/docker/daemon.json 這個檔案(若不存在則新建),並將上面記下的內容至於下方的 fixed-cidr-v6

{
  "ipv6": true,
  "fixed-cidr-v6": "2400:xxxx:xxxx::1/64",
  "experimental": true,
  "ip6tables": true
}

重新啟動 Docker。

sudo systemctl restart docker

我們可以使用下面的指令來確認 Docker 是否啟用了 IPv6,應可以找到 "EnableIPv6": true 這行文字。

sudo docker network inspect bridge

建立 Docker Network

建立一個名為 web_apps 的網路,若你的主機有 IPv6,直接貼上這行指令即可。

sudo docker network create --subnet="fc00:0000:0000:2::/64" --ipv6 web_apps

若主機上沒有 IPv6,則使用:

sudo docker network create web_apps

編輯 docker-compose.yml

再上篇文章中,我們是使用 docker-compose 安裝 Nginx Proxy Manager 的,現在我們將再次配置這份文件。

使用 sudo vim docker-compose.yml 編輯檔案。

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    networks:
      - web_apps

networks:
  web_apps:
    external: true

主要就是再內容中加入 networks 段落。好了之後,我們重新啟動服務。

sudo docker-compose down && sudo docker-compose up -d

到這邊就完成啦!

結語

以上就是在 Nginx Proxy Manager 啟用 IPv6 的步驟,也是同時筆記下來便於我之後使用。

參考來源

[1] 如何优雅地使用 NPM 进阶篇 - DOV

網址:https://blog.dov.moe/posts/56114/