服务器搭建 Docker 运行 Adguardhome


正好赶上618阿里云活动,大概60一年,真的便宜。可惜只能是新号,只好用母亲大人的手机注册一个了,(号是上午注册的,下午阿里云就打电话过来问我,公司业务是什么扒拉扒拉的,烦死啦!)

以前的方案是本地nas上使用docker部署Adguardhome然后使用frp将服务穿透到公网,但是受限于frp端口的问题只能使用DOH(DNS-over-HTTPS)协议。这个方案在大多数的时间上都是十分好用的,就是偶尔连不上,不是家里停电就是frp服务暂停维护。IOS上DNS一旦解析失败应用就会卡死,闪退,杀后台,总之就是很难受。

这次打算直接上服务器。就图个稳定,还能顺带把 53端口、DNS-over-HTTPS、DNS-over-TLS、DNS-over-QUIC 这些协议都给补全了。
公开的服务:纸盒DNS https://zhebk.cn/DNS.html

本来想使用Portainer来管理docker,试了试总觉得有些麻烦,还不如敲命令。
Nginx在这里放一个单页,用于提示一些信息。

搭建Docker

# 安装依赖
sudo yum install -y yum-utils
# 添加软件源信息
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 更新 yum 缓存
sudo yum makecache fast
# 安装 Docker
sudo yum -y install docker-ce
# 测试(可选)
sudo docker run hello-world
# 启动 Docker 后台服务
sudo systemctl start docker
# Docker 服务开机启动   
systemctl enable docker

部署容器

Adguardhome

# 拉 adguardhome 镜像
docker pull adguard/adguardhome
# 安装 adguardhome 镜像
# 这里的端口我按自己需要修改了一下
docker run --name adguardhome \
    -v /docker/adguardhome/workdir:/opt/adguardhome/work \
    -v /docker/adguardhome/confdir:/opt/adguardhome/conf \
    -p 53:53/tcp -p 53:53/udp \
    -p 3000:3000/tcp \
    -p 443:443/tcp \
    -p 853:853/tcp \
    -d adguard/adguardhome

nginx

# 拉 nginx 镜像
docker pull nginx
# 安装 nginx 镜像
docker run --name nginx \
    -p 80:80 \
    -v /docker/nginx/config:/etc/nginx/conf.d \
    -v /docker/nginx/html:/usr/share/nginx/html \
    -d nginx

这里需要自己建立/docker/nginx/config/docker/adguardhome/workdir/docker/adguardhome/confdir/docker/nginx/html 文件夹
配置文件 default.conf 放到 /docker/nginx/config
DNS提示页 放到 /docker/nginx/html
nginx只开80端口放一个单页,类似下面的效果,用js判断那个域名同时实现dns检测的功能。
http://dns.zhebk.cn/http://test.zhebk.cn/(这个需要使用纸盒DNS才能打开)

容器自启动

# 自动启动
docker update --restart=always adguardhome
docker update --restart=always nginx

参考

Linux服务器安装Docker - MelodyJerry - 博客园 (cnblogs.com)

声明:纸盒博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 服务器搭建 Docker 运行 Adguardhome


Carpe Diem and Do what I like