https://skyao.net/learning-pve/templates/debian12/devserver/
1 - 创建模板(debian13)
准备工作
以 debian 13 为例,debian13 后开发服务器不再是一台独立服务器和两块单独的 ssd 硬盘。所有构建方式和之前的有比较大的差异。
准备虚拟机
从模版 template-debian13-basic-v01 (取最新版本) full clone 克隆一个虚拟机,命名为 template-debian13-devserver-v01,VM ID 为 990201.
开发需要的 cpu 和内存稍大,修改虚拟机参数,cpu 修改为 8 核,内存 16g(mini 8192,memory 16384)。
准备磁盘
devserver 预计会有两台实例,用于两个异地的开发环境。
为每台实例准备了 2 块两块额外的磁盘,一块用于应用(如数据库,redis,queue等),一块用于数据(如pve需要的nfs,habor / nexus 代理仓库等)。在虚拟机硬件中,增加两块 hard disk,大小为 1024g,scsi 类型,virtIO scsi 控制器。注意把 backup 选项勾选去掉。
在 pve 中,将两块 hard disk 磁盘添加到虚拟机:

在虚拟机中可以看到这两块磁盘:
lspci | grep storage
09:01.0 SCSI storage controller: Red Hat, Inc. Virtio SCSI
09:02.0 SCSI storage controller: Red Hat, Inc. Virtio SCSI
09:03.0 SCSI storage controller: Red Hat, Inc. Virtio SCSI
文件共享
数据存放在 /mnt/data 目录下,包括:
- downloads: 下载的文件
- pve-shared: pve 共享目录
- shared: 共享目录
sftp 服务
安装了 sftp 服务,可以用于上传和下载文件。
nfs 共享
其中 pve-shared 目录用于 pve 共享目录,shared 目录用于其他的共享,两者都挂载到 nfs 服务器上。
参考本读书笔记中的 devserver193 一节, 配置好磁盘并进行分区,并挂载到 /mnt/data 和 /mnt/app 目录, 然后安装 nfs server。
nginx下载
另外新建一个 downloads 目录,用于存放供其他机器下载的文件,通常是只读的,通过 nginx 提供 http 下载服务。
$ cd /mnt/data
$ ls
downloads lost+found pve-shared services shared
$ cd downloads
$ ls
docker docker-compose kubernetes
然后修改 nginx 配置,将 downloads 目录映射到 /var/www/html/downloads 目录。
sudo vi /etc/nginx/sites-available/default
添加如下配置:
location /downloads {
alias /mnt/data/downloads;
autoindex on; # 开启目录浏览
autoindex_exact_size off; # 显示文件大小时用 KB/MB
autoindex_localtime on; # 显示本地时间
}
然后重启 nginx 服务:
sudo systemctl restart nginx
搭建开发环境
安装 docker 和 habor
- docker/docker-compose: https://skyao.net/learning-docker/docs/installation/debian12/
- habor: https://skyao.net/learning-docker/docs/repository/habor/
安装开发工具
参考本读书笔记中的 开发工具 一节, 安装开发工具:
- sdkman
- nexus
语言 sdk 和 nexus 私库
参考本读书笔记中的 编程语言 一节, 安装语言 sdk 和对应的 nexus 私库:
- Java: 包括 maven
- golang
- rust
- python
- nodejs
2 - 创建模板(debian12)
准备工作
准备虚拟机
从模版 template-debian13-basic-v01 (取最新版本) full clone 克隆一个虚拟机,命名为 template-debian13-devserver-v01,VM ID 为 990201.
开发需要的 cpu 和内存稍大,修改虚拟机参数,cpu 修改为 8 核,内存 16g(mini 8192,memory 16384)。
准备磁盘
devserver 预计会有两台实例,用于两个异地的开发环境。
我为每台实例都准备了 2 块三星 pm983a 900G 的 ssd 磁盘,一块用于应用(如数据库,redis,queue等),一块用于数据(如pve需要的nfs,nexus 代理仓库等)。
在 pve 中,将两块 ssd 磁盘直通给到虚拟机,并挂载到 /mnt/data 目录。

在虚拟机中可以看到这两块磁盘:
lspci | grep Non-Volatile
01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983
02:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983
参考本读书笔记中的 devserver91 一节, 配置好磁盘并进行分区,然后安装 nfs server。
搭建开发环境
安装 docker 和 habor
- docker/docker-compose: https://skyao.net/learning-docker/docs/installation/debian12/
- habor: https://skyao.net/learning-docker/docs/repository/habor/
安装开发工具
参考本读书笔记中的 开发工具 一节, 安装开发工具:
- sdkman
- nexus
语言 sdk 和 nexus 私库
参考本读书笔记中的 编程语言 一节, 安装语言 sdk 和对应的 nexus 私库:
- Java: 包括 maven
- golang
- rust
- python
- nodejs
3 - 创建虚拟机
创建虚拟机
devserver 模板实际只会有两个虚拟机实例:
- devserver91: ip 192.168.3.91, 用于苏州汾湖的开发环境
- devserver92: ip 192.168.0.92, 用于广州南沙的开发环境
由于两个虚拟机都使用到直通的两块 900g 三星 pm983a ssd,因此无法简单的从模板克隆就能自动恢复所有的数据。
实践中,先按照 devserver91 的配置搭建好虚拟机,然后直接使用直通的 ssd 就能正常工作了。
devserver92 是将模板(去除直通的两块 ssd)传送到广州南沙,然后从模板克隆虚拟机,再直通两块空的 ssd 硬盘。
配置 devserver91
几乎不需要配置。
配置 devserver92
原则上需要按照搭建模板的方式, 重头走一遍所有流程来完成 devserver92 的配置。
中间很多步骤是可以重用之前已有的资料和信息,但是需要检查每一个步骤,看是否有需要改动的地方,最重要的改动就是这个机器的 ip 地址从 devserver91 的 192.168.3.91 修改为 devserver92 的 192.168.0.92。
而这个 ip 地址的修改,散落在很多地方, 为了不疏漏,只能重新走一遍完成的流程,好在大部分操作都还继续有效,只是修改个别配置文件更改 ip 地址即可。