使用魔方财务对接PVE开设不咋好用的“应用云”
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 -y2、安装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 networking4、安装主控
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_worker5、编辑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_workersereen可使用
Ctrl+A+D脱离
0x02 商品对接
1、添加接口


2、编辑产品
固定套餐:

弹性套餐:
魔方财务有个很司马的设定,就是子项不能超过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网络”的原因