接上会的国内外IPv4/IPv6分流查询网站 https://www.nodeseek.com/post-461589-1 ,但上次的IP数据是用的别人的接口,存在关停的可能,所以这次我们来自建IP数据库。
1,首先安装docker
停的可能,所以这次我们来自建IP数据库。
1,首先安装docker
下载并执行Docker官方安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker
2,开启docker IPV6支持
vim /etc/docker/daemon.json
{ "ipv6": true, "fixed-cidr-v6": "fd00::/64", "log-driver": "none" }
docker network create --ipv6 --subnet="fd00:1:2:3::/64" my-ipv6-network
3,启动docker
镜像可以用这个https://github.com/ljxi/GeoCN
docker run -d
--name my-container
--network my-ipv6-network
-p 0.0.0.0:8000:80 -p [::]:8000:80 netart/ipapi
这时候你可以正常用IPv4地址访问8000端口了 http://ip:8000 ,但这个镜像默认没有监听IPV6地址,所以我们要稍微修正下,进容器里面,安装vim,编辑update_and_restart.sh,在sleep 86400; 这行上面添加,再启动一个uvicorn监听 IPV6地址,重启下容器即可。
docker exec -it my-container /bin/sh
apt-get update
apt-get install vim
vim update_and_restart.sh
----要添加的一行-----
nohup uvicorn main:app --host :: --port 8080 --no-server-header --proxy-headers &
好了 现在用IPv6地址也可以访问了,http://[ipv6地址]:8000
你也可以使用我修改的镜像,主要改进:1,使用 Gunicorn替换uvicorn命令,IPv4/IPv6 双栈同时绑定;2,服务放前台,更新放后台,增强了容器健壮性,更新ip数据库的时候,不会中断服务,建议开启容器自启;
docker run -d
--name checkip
--network my-ipv6-network
-p 0.0.0.0:8000:8080 -p [::]:8000:8080 cyang/checkip