前言廢話
在幾篇文章之前,我介紹了 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