0x00 先提条件

1、准备工作

  • 魔方财务

  • 装PVE的服务器

  • 聪明的头脑

  • 勤劳的双手

  • 以及你豆姐或者GPT大哥等外援(以备不时之需)

魔方云开的机器一定要选VPC网络,打死也别选经典网络除非你想被人家打死

如果没有显示什么网络,就找服务商问一下

或者使用ip a看下,外网网卡显示的IP不是你外网IP就行,是的话绝对不行

2、大致原理

PVE 9.1+ 版本更新同步升级了 LXC 组件,新增 OCI 镜像导入能力,可直接将 Docker 镜像转为 CT 容器镜像,由此衍生出本次部署玩法。

但是此方法仍有局限性:

1、功能仍处于 Tech Preview(技术预览)

  • PVE 9.1+ 的 OCI→LXC 能力并非正式稳定功能,后续版本可能大幅改动甚至重构,存在兼容性风险。

2、镜像兼容性问题

  • 依赖 systemd 的镜像大概率无法启动或解压失败

    典型报错:failed to unpack ... Is a directory,因 LXC 容器默认无完整 systemd 环境。

  • 极简 /scratch 镜像易解压失败

    无基础文件系统、仅单二进制的镜像可能报 Unknown layer digest,无法创建 CT。

  • 非常规 OCI 镜像(非 Docker 标准)可能转换异常。

3、容器运行环境严重裁剪

  • 无完整 init 系统,默认无 shell(除非镜像自带)

    不能直接 SSH;内部缺 systemctl、cron、syslog 等系统组件。

  • 单进程模型,不适合多服务共存

    镜像 ENTRYPOINT/CMD 作为容器唯一主进程,难以在同一个 CT 里跑多个独立服务。

4、不支持 Docker Compose 与多容器编排

  • 完全不识别 docker-compose.yml,无法一键拉起多容器应用栈(如 web+db+cache)。

  • 多容器场景只能手动逐个创建、手动配置网络与依赖关系,管理成本高。

0x01 准备环境

一、魔方财务准备

  • 插件:https://github.com/xkatld/zjmf-pve-lxc-server/tree/main/pveserver

  • 上传到:/public/plugins/servers/pveserver

二、PVE与被控安装

在此之前,你需要准备一个干净的Debian 13系统

可以使用Reinstall重装干净的系统:https://github.com/bin456789/reinstall

不建议使用魔方云原版的系统!!!

1、基础软件包安装

apt update -y
apt install wget curl sudo git screen nano iptables-persistent iptables redis-server lsb-release unzip -y

2、安装PVE

bash <(curl -sSL https://raw.githubusercontent.com/xkatld/LinuxTools/refs/heads/main/shell/install-pve.sh)

3、网卡配置

编辑/etc/network/interfaces 文件,在你外网网卡配置下添加

auto vmbr0
iface vmbr0 inet static
    address 10.0.2.1/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up iptables -t nat -A POSTROUTING -s '10.0.2.0/24' -o 你外网网卡名 -j MASQUERADE

外网网卡名可使用ip a命令查看,一般为eth、ens开头

然后重载网络

systemctl restart networking

4、安装主控

mkdir server
cd server
wget https://github.com/xkatld/zjmf-pve-lxc-server/releases/download/v1.0.0-beta.1/linux_amd64.zip
unzip linux_amd64.zip
chmod 777 app celery_worker

5、编辑app.ini配置文件

[server]
HTTP_PORT = 8080
TOKEN = 00269FA0F9875BEF358BE7C4484B89A5 自定义魔方连接使用
LOG_LEVEL = INFO

[pve]
API_HOST = 127.0.0.1
API_USER = root@pam
API_PASSWORD = 00269FA0F9875BEF358BE7C4484B89A5 root密码
NODE = us1arm PVE节点名称
STORAGE = local PVE节点储存名称
BRIDGE = vmbr0 lxc使用的ipv4网卡
BRIDGE_V6 = vmbr0 lxc使用的ipv6网卡
DEFAULT_TEMPLATE = local:vztmpl/debian-12-arm64_2025-06-18.tar.gz 默认镜像
MAIN_INTERFACE = enp0s6 外网网卡
NAT_LISTEN_IP = 10.0.0.222 外网IP{注意是系统内外网网卡提供的IP}

[celery]
BROKER_URL = redis://127.0.0.1:6379/0
RESULT_BACKEND = redis://127.0.0.1:6379/1

系统内外网网卡提供的IP:指的是ip a命令下外网网卡IP

6、运行二进制后端

运行可以多种方式运行这里使用screen为例:

#运行后端
screen -S pveserver-py
./app
#运行异步任务
screen -S pveserver-rd
./celery_worker

sereen可使用Ctrl+A+D 脱离

0x02 商品对接

1、添加接口

2、编辑产品

固定套餐:
弹性套餐:

配置选项名称

配置项类型

子项名称

CPU|CPU

cpu核心单选

1|1核

Memory|内存

内存单选

256|256M

net_limit|带宽

带宽单选

10|100Mbps

os|操作系统

操作系统

local:vztmpl/centos-9.tar.gz|Centos^Centos9 amd64

Disk Space|硬盘

系统盘容量单选

1024|1G

魔方财务有个很司马的设定,就是子项不能超过50字,所以你可能得手动改下镜像名称

镜像位置(local存储):/var/lib/vz/template/cache/

0x03 镜像问题

不推荐使用 PVE 自带 CT 镜像(含 Turnkey 官方镜像)。原因是 PVE 9.1 及以上版本新建容器必须开启嵌套虚拟化才能正常使用;且当前插件作者仅适配兼容到 PVE 8.x,无法适配新版系统自带镜像,直接使用会出现兼容故障。

本文选用从 OCI 注册表拉取的方式,本质是将标准 Docker 镜像转换成 LXC 容器镜像。受前文提到的架构、环境兼容性限制,我仅实测验证了部分镜像可用,其余镜像可自行测试摸索。

0x04 鸣谢

  • xkatld:https://github.com/xkatld/zjmf-pve-lxc-server

  • bin456789:https://github.com/bin456789/reinstall

  • 紫曦云:https://www.zixiyun.cn/

因为我给人家机器搞炸了,这就是我让你们选“VPC网络”的原因