纯IPV6主机折腾Docker

我有一台德鸡安装了1panel,由于纯ipv6环境,无法与1panel中安装的docker应用(分配的是内网ipv4地址)通讯,折腾了很久,记录下过程,也算是这段折腾的总结吧

  • 安装1panel
    • 以Debian系统为例吧,具体可以参考1panel官方网站
      curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh
    • 安装完成后,会打印出你的登陆地址和账户信息
    • 由于德鸡纯ipv6,直接访问是访问不了的,因为1panel默认是监听的ipv4
    • 使用下面的命令,让1panel监听ipv6
    • 1pctl listen-ip ipv6
    • 再次访问1panel应该就可以正常访问了,至此1panel安装完毕
  • 安装docker应用
    • 以Alist应用来举例,在1panel的应用程序里,安装Alist
    • 默认分配的docker网络是1panel-network。这个网络分配的是ipv4地址,而德鸡是ipv6地址,所以alist安装完成后,你是无法直接访问alist应用的
      • 1panel官方是给出解决方案的,详细参照1panel官方配置
        • 原理是更改docker网络,让docker网络可以使用ipv6通信。前提是你得有ipv6子网
        • 而德鸡ipv6是一个唯一的地址,类似于2c02:190:6:1::166/128
        • 所以折腾了很久,不成功只能作罢(普及ipv6任重而道远)
  • 尝试Nginx反代
    • 安装Nginx
      • sudo apt update sudo apt install nginx
    • 配置反向代理
      • sudo nano /etc/nginx/sites-available/default
      • 配置如下信息
        server {
            listen [::]:80;   # IPv6监听
            listen 80;       # IPV4监听
            server_name your-domain.com;   #your-domain.com你的域名
    
            location / {
                proxy_pass http://172.18.0.2:8080;  # 容器的内网地址和端口
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
            }
        }
    
    • 测试Nginx配置语法是否正确
      • sudo nginx -t
    • 重启Nginx
      • sudo systemctl restart nginx
    • 至此应该可以访问你的Alist
    • 如果继续添加Docker应用,比如又装了个Memos
      • 配置Nginx反代
      • 再去增加反代模块就可以了
      • sudo nano /etc/nginx/sites-available/default
        server {
            listen 80;
            listen [::]:80;
            server_name alist.your-domain.com;
    
            location / {
                proxy_pass http://localhost:8080;  # 容器的内网地址和端口
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
            }
        }
    
        server {
            listen 80;
            listen [::]:80;
            server_name memos.your-domain.com;
    
            location / {
                proxy_pass http://localhost:8081;  # 容器的内网地址和端口
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
            }
        }
    

版权声明:
作者:Gweek
链接:https://bbs.geek.nyc.mn/archives/174
来源:Gweek postHub
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>