type
status
date
slug
summary
tags
category
icon
password
URL
套娃。。
先安装PVE,此处滤去10000字。。。
为了不影响PVE宿主机,使用套娃的形式安装Docker容器,再安装相关Docker应用。因此首先在CT模板中创建 Linux 容器,推荐使用Debian。开启SSH登录,修改LXC Debian,部署Docker容器。
教程中的环境:硬爱快主路10.1.1.253
一、LXC容器上安装
1、CT模板下载
点击“模板”,下载debian的CT模板

2、创建 LXC 容器
点击 “创建 CT” 按钮,开始创建新的 LXC 容器。
主机名可以任意起,输入登录密码,CT ID 可以自定义或者使用默认即可。注意要把无特权的容器取消勾选,下一步

选择刚下载的 CT模板,下一步

磁盘、CPU、内存大小根据自己的实际需要给就行,一般5G2C2G就够了。

网络:这里指定10.1.1.252,也可以网络创建之后调整。

DNS使用主机设置即可,确认好信息,点击完成创建,先不用启动,回到选项中修改开机自启动、控制台模式等,同时勾选上嵌套,嵌套的意思是允许在LXC容器中嵌套运行其他容器如docker

进入pve的shell,对刚创建的LXC容器的配置文件进行修改,位置:/etc/pve/lxc,刚刚创建的CT ID是100,所以对应修改100.conf,
如下操作进入pve的shell中执行
nano /etc/pve/lxc/100.conf
将以下配置添加到最下面,保存退出
lxc.apparmor.profile: unconfinedlxc.cgroup.devices.allow: alxc.cap.drop:lxc.cgroup2.devices.allow: c 10:200 rwmlxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file

二、LXC容器配置
1、启动 LXC 容器
启动容器并完成相关初始化配置,进入lxc容器后的就是常规的LXC debian系统的配置
2、替换apt source源为国内源
如果能XX上网,这一步忽略,可以不修改
将/etc/apt/sources.list中的内容替换为如下内容,替换前建议先进行备份
cp /etc/apt/sources.list /etc/apt/sources.list.bk
如下命令覆盖/etc/apt/sources.list原内容
cat > /etc/apt/sources.list <<EOFdeb https://mirrors.ustc.edu.cn/debian bookworm main contribdeb https://mirrors.ustc.edu.cn/debian bookworm-updates main contribdeb https://mirrors.ustc.edu.cn/debian-security bookworm-security main contribEOF
验证
apt-get update

修改sshd的配置文件,配置文件:/etc/ssh/sshd_config,根据需要找到相关配置进行修改
如下配置为允许root账户使用密码登录
cat >> /etc/ssh/sshd_config <<EOFPermitRootLogin yesPasswordAuthentication yesEOF
修改后记得重启sshd使配置生效
systemctl restart sshd
4、配置Debian中文环境
a.安装语言包: 首先需要确保系统中已经安装了语言包。可以使用 apt 工具来安装:
apt updateapt install -y locales
b.配置 locale: 接下来需要配置系统的 locale 设置。运行以下命令打开 locale 的配置界面:
dpkg-reconfigure locales
在出现的列表中选择 zh_CN.UTF-8(使用上下箭头来移动,并使用空格来选择)。

然后在下一个界面中选择 zh_CN.UTF-8 作为默认的 locale

# 查看当前语音设置locale# 查看本地已安装语言包locale -a# 设置语言包,在编辑此配置,最后一行加入如下配置并保存退出nano ~/.bashrcexport LANG=zh_CN.utf8

timedatectl set-timezone Asia/Shanghai # 设置时区systemctl start systemd-timesyncd # 自动同步时间
echo 'net.ipv4.ip_forward = 1' | tee -a /etc/sysctl.confecho 'net.ipv6.conf.all.forwarding = 1' | tee -a /etc/sysctl.confecho 'net.ipv6.conf.default.forwarding = 1' | tee -a /etc/sysctl.confsysctl -p
7、部署NFS服务,将/mnt/appdata挂载到飞牛
服务器安装NFS服务
apt-get install nfs-server nfs-common
创建共享目录
mkdir -p /mnt/appdata
为共享目录赋予读写权限,否则会报 Permission denied 错误
chmod 777 /mnt/appdata
配置exports文件,增加共享的目录内容:
# 修改exportsnano /etc/exports# 添加内容/mnt/appdata 10.1.1.0/24(rw,sync,insecure,no_root_squash,no_subtree_check)参数说明:ro:默认值,客户端具备读写访问权限sync:同步,文件同步写入硬盘和内存insecure:允许客户端从大于1024的tcp/ip端口连接服务器,与secure相反no_root_squash: 客户端上的 root 将与服务器上的 root 用户对系统上的文件具有相同级别的访问权限。no_subtree_check:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;# 更新exports,-a表示导出所有目录exportfs -a
启动nfs服务
/etc/init.d/nfs-kernel-server start
重启下LXC容器,检查nfs是否成功启动
showmount -e#输出以下内容表示成功:Export list for network:/mnt/appdata 10.1.1.0/24
至此为便于管理可自行挂载目录/mnt/appdata到飞牛或者群晖
三、LXC容器安装docker
安装docker
apt install docker.io
安装portainer
docker run -d \
- -hostname portainer \
- -name="portainer" \
- -network bridge \
- -restart=always \
- p 9000:9000 \
- p 8000:8000 \
- v /var/run/docker.sock:/var/run/docker.sock \
- v /mnt/appdata/portainer/data:/data \
portainer/portainer-ce:latest
打开portainer 并设置好管理员及密码。
✳️如果现在没有科学不能拉取镜像可以docker pull+镜像源地址+/+要拉取的镜像名,镜像源可以百度搜索。如:docker pull docker.1ms.run/portainer/portainer-ce:latest 下文中的compose 同理,可以先pull镜像,再安装。
四、修改并上传所需固化文件
下载appdata:1752364056-appdata
修改mihomo/config/config.yaml中的为你的运营商下发的DNS,有4组。
- 运营商DNS
- 运营商DNS
- "运营商v6 DNS"
- "运营商v6 DNS"
修改smartdns/smartdns-A/smartdns.conf中“运营商DNS”为你的运营商V4 DNS,有一组。
server 运营商DNS -bootstrap-dnsserver 运营商DNS -bootstrap-dns
下面

同样修改smartdns/smartdns-B/smartdns.conf中“运营商DNS”为你的运营商V4 DNS,有两组。

代理下面为LXC的地址

修改完后保存上传到LXC的/mnt/appdata 目录下

修改scripts/macvlan/maclink.conf里的IP为你的adguardhome/smartdns-A/smartdns-B以及lucky等macvlan需要跟宿主通信的IP.

跑下权限
chown -R root:root /mnt/appdata/ && chmod -R 755 /mnt/appdata/
docker network create -d macvlan --ipv6 \
- -subnet=10.1.1.0/24 \
- -gateway=10.1.1.253 \
- -subnet=fd00::/64 --gateway=fd00::1111 \
- o parent=eth0 \
- o macvlan_mode=bridge \
macnet
自行修改网关及子网
✳️eth0可以ifconfig查看并确认下,如果不一样需要修改。后面的脚本/scripts/macvlan/maclink.sh里也要对应修改。
添加maclink路由表
回到portainer,在Stacks按条添加以下docker compose 打包下载:1752308559-compose
所有compose添加完成后,打开adguardhome设置完用户名密码后打开设置-DNS设置
修改上游DNS为smartdns-A的IP.
后备DNS为:
https://dns.pub/dns-queryhttps://223.5.5.5/dns-queryhttps://dns.alidns.com/dns-query8.8.8.81.0.0.1

Bootstrap DNS 服务器为你的运营商DNS,不启用客户端的IP地址的反向解析。点应用。
继续往下,DNS缓存改为0,保存。

主路由修改DNS为adguardhome的IP,并在主路由中设置静态路由如下:

TG 的V6静态路由请自行设置。
面板中显示源IP,需在主路由添加如下NAT规则:

至此所有配置已完成。
打开http://10.1.1.252:9090/ui/zashboard 可通过zashboard面板查看mihomo情况。
五、Onemore Thing
scripts里的两个脚本,maclink.sh加入到开机启动。smartdns.sh 定时运行。
maclink.sh加入到开机启动
nano /etc/rc.local添加以下内容#!/bin/bashsystemctl start maclink || /mnt/appdata/scripts/macvlan/maclink.shexit 0保存退出chmod +x /etc/rc.local
smartdns.sh 定时运行
crontab -e在把下面内容添加在下面,每天凌晨1点运行0 1 * * * /mnt/appdata/scripts/smartdns/smartdns.sh
smartdns.sh运行后会自动重启smartdns-A跟smartdns-B容器,如果容器改名了请在脚本里面修改对应的容器名。
教程至此完。感谢pengfeiya、linzp以及各位群友的指导。谢谢~
- 作者:Wilson Zeng
- 链接:https://blog.xib.icu/article/22f61ed0-d304-810a-ae9d-c20118c896d5
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。


