---
category: 记录
description: 在N100小主机上安装PVE，然后在其中安装飞牛NAS和Debian，实现追番建站分离，并且易扩展，易迁移
draft: false
image: https://sb-r2.afo.im/fuwari-blog/img/N100-PVE_cover.webp
lang: ''
published: 2024-10-28
tags:
- PVE
title: N100 - PVE（fnOS+Debian）基建记录
---
# 配置&需求

- N100 CPU 频率：最小 700 Mhz, 最大 3400 Mhz | TDP：6 W

- 8G RAM

- 128G M.2 NVme SSD

- 512G SATA HDD

- Realtek R8168 有线网卡

- USB有线网卡

- U盘（作PVE引导盘）

# 目标

1. 所有系统通过PVE管理

2. PVE下安装fnOS，作NAS并配置自动追番（直通：`N100核显` `512G SATA HDD` ）

3. PVE下安装Debian，搭建QQBot、博客、AList

* * *

# 1\. PVE

## 安装

- 下载Ventoy最新版可执行文件：
  
  [https://www.ventoy.net/cn/download.html](https://www.ventoy.net/cn/download.html)
  
  - 使用GPT分区表，NTFS格式将Ventoy写入U盘

- 下载PVE最新版ISO（使用USTC镜像源）：
  
  [https://mirrors.ustc.edu.cn/help/proxmox.html](https://mirrors.ustc.edu.cn/help/proxmox.html)
  
  - 将PVE的ISO文件放入U盘根目录

- 插入USB网卡，U盘连接到到N100，开机从U盘启动，进入PVE安装界面，安装PVE。网络配置选择USB网卡

- 重启，进入PVE，通过IP+8006端口进入WebUI，登录进去

## 配置

### 安装PVE快捷管理脚本

- 安装PVE快捷管理脚本：[pve\_source.tar.gz | AcoFork-AList](https://alist.onani.cn/pve_source.tar.gz) 或 [**https://wwp.lanzoul.com/ivHta1ngmo6d**](https://wwp.lanzoul.com/ivHta1ngmo6d) （密码:i1ws）（来自：在下莫老师）
  
  - 解压：`tar zxvf pve_source.tar.gz`
  
  - 运行：`./pve_source`
  
  - 同意许可协议
  
  - 依次执行白框操作![](https://sb-r2.afo.im/fuwari-blog/img/ea205e1a00e7029dfa4bd7850c5a6a68d6d4c0d9.webp)
  
  - 扩容local：`lvextend -rl +100%FREE /dev/pve/root`

### 配置Realtek R8168网卡

> 由于Debian系默认安装R8169驱动，我们需要手动安装R8168驱动，否则无法使用N100小主机自带的有线网口上网

- 下载驱动：
  
  [https://www.realtek.com/Download/List?cate\_id=584](https://www.realtek.com/Download/List?cate_id=584)![](https://sb-r2.afo.im/fuwari-blog/img/0d8457c7fb0d497e12e2c8b544f07c3c37cf96cd.webp)

- 解压，安装：`sh autorun.sh`

- 查看是否有新的网络接口：`ip a`

- ```shell
  root@n100-pve:~# ip a
  ...
  2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master vmbr1 state UP group default qlen 1000
      link/ether 00:e0:4c:08:91:a6 brd ff:ff:ff:ff:ff:ff
  ...
  ```

- 配置网络配置文件：`nano /etc/network/interfaces`
  
  ```
  # network interface settings; autogenerated
  # Please do NOT modify this file directly, unless you know what
  # you're doing.
  #
  # If you want to manage parts of the network configuration manually,
  # please utilize the 'source' or 'source-directory' directives to do
  # so.
  # PVE will preserve these directives, but will NOT read its network
  # configuration from sourced files, so do not attempt to move any of
  # the PVE managed interfaces into external files!
  
  auto lo
  iface lo inet loopback
  
  iface wlp1s0 inet manual
  
  iface enp3s0 inet manual
  
  auto vmbr1
  iface vmbr1 inet static
          address 192.168.124.25/24
          gateway 192.168.124.1
          bridge-ports enp3s0
          bridge-stp off
          bridge-fd 0
  
  iface vmbr1 inet6 auto
          dhcp 1
          accept_ra 2
          request_prefix 1
  
  source /etc/network/interfaces.d/*
  ```

- 重启网络服务：`systemctl restart networking`

- 查看ip：`ip a`
  
  ```shell
  root@n100-pve:~# ip a
  ...
  2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master vmbr1 state UP group default qlen 1000
      link/ether 00:e0:4c:08:91:a6 brd ff:ff:ff:ff:ff:ff
  ...
  4: vmbr1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
      link/ether 00:e0:4c:08:91:a6 brd ff:ff:ff:ff:ff:ff
      inet 192.168.124.25/24 scope global vmbr1
         valid_lft forever preferred_lft forever
      inet6 2409:8a30:320:7fc0:2e0:4cff:fe08:91a6/64 scope global dynamic mngtmpaddr
         valid_lft 2763sec preferred_lft 2762sec
      inet6 fe80::2e0:4cff:fe08:91a6/64 scope link
         valid_lft forever preferred_lft forever
  ```

- 卸除USB网卡

### 配置STUN穿透

#### 路由器设置DMZ主机为PVEIP

- ![](https://sb-r2.afo.im/fuwari-blog/img/dbeb7980e5fc699c696ffa6f2fda4a17c05ee821.webp) 

#### 安装Lucky

- 执行：`curl -o /tmp/install.sh http://6.666666.host:6/files/golucky.sh && sh /tmp/install.sh http://6.666666.host:6/files 2.13.4`

- 通过`host:16601` 进入Lucky后台，设置STUN穿透

- ![](https://sb-r2.afo.im/fuwari-blog/img/2175839424184aee880b91382bd1fbf3c578d258.webp)

# 2\. fnOS

## 安装

- 前往官网下载最新版ISO：
  
  [https://www.fnnas.com/](https://www.fnnas.com/)

- 上传至PVE：![](https://sb-r2.afo.im/fuwari-blog/img/073808516d357e099a866c30b4a77954c5b9b458.webp)

- 创建fnOS虚拟机，CPU类型选择host，步骤略

- 直通核显和硬盘：![](https://sb-r2.afo.im/fuwari-blog/img/08e4f7a3b87ae86334011e1d4c3a384a36ad9866.webp)

- 如果你不知道你的核显和SATA控制器的PCI ID：`lspci`
  
  - 可见核显为`00:02.0`，SATA控制器为`00:17.0`
    
    ```shell
    root@n100-pve:~# lspci
    00:00.0 Host bridge: Intel Corporation Device 461c
    00:02.0 VGA compatible controller: Intel Corporation Alder Lake-N [UHD Graphics]
    00:0a.0 Signal processing controller: Intel Corporation Platform Monitoring Technology (rev 01)
    00:14.0 USB controller: Intel Corporation Alder Lake-N PCH USB 3.2 xHCI Host Controller
    00:14.2 RAM memory: Intel Corporation Alder Lake-N PCH Shared SRAM
    00:16.0 Communication controller: Intel Corporation Alder Lake-N PCH HECI Controller
    00:17.0 SATA controller: Intel Corporation Alder Lake-N SATA AHCI Controller
    00:1a.0 SD Host controller: Intel Corporation Device 54c4
    00:1c.0 PCI bridge: Intel Corporation Device 54be
    00:1d.0 PCI bridge: Intel Corporation Alder Lake-N PCI Express Root Port
    00:1d.1 PCI bridge: Intel Corporation Alder Lake-N PCI Express Root Port
    00:1e.0 Communication controller: Intel Corporation Alder Lake-N Serial IO UART Host Controller
    00:1e.3 Serial bus controller: Intel Corporation Device 54ab
    00:1f.0 ISA bridge: Intel Corporation Alder Lake-N PCH eSPI Controller
    00:1f.3 Audio device: Intel Corporation Alder Lake-N PCH High Definition Audio Controller
    00:1f.4 SMBus: Intel Corporation Alder Lake-N SMBus
    00:1f.5 Serial bus controller: Intel Corporation Alder Lake-N SPI (flash) Controller
    01:00.0 Network controller: Intel Corporation Wireless 3160 (rev 83)
    02:00.0 Non-Volatile memory controller: Realtek Semiconductor Co., Ltd. RTS5765DL NVMe SSD Controller (DRAM-less) (rev 01)
    03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 2b)
    ```

- 启动虚拟机，安装fnOS

## 配置

- 前往飞牛设置，创建储存空间，Linear模式，选择刚才直通的硬盘![](https://sb-r2.afo.im/fuwari-blog/img/581cf01462df545a8662acbb5e20e1676bd17744.webp)

- 前往飞牛应用中心安装qBittorrent、影视，并且在设置给予目录读取权限![](https://sb-r2.afo.im/fuwari-blog/img/92a2e0bf25d630db4858775fdbb6c907f419c25d.webp)

- 配置qBittorrent的用户名和密码

- 打开飞牛Docker，初始化

- 拉取并运行AutoBangumi Docker镜像：
  
  ```shell
  docker run -d \
  --name=AutoBangumi \
  -v /vol1/1000/AutoBangumi/config:/app/config \
  -v /vol1/1000/AutoBangumi/data:/app/data \
  -p 7892:7892 \
  -e TZ=Asia/Shanghai \
  -e PUID=$(id -u) \
  -e PGID=$(id -g) \
  -e UMASK=022 \
  --network=bridge \
  --dns=8.8.8.8 \
  --restart unless-stopped \
  ghcr.onani.cn/estrellaxd/auto_bangumi:latest
  ```

- 进入`host:7892` 让AutoBangumi连接qBittorrent并配置下载地址![](https://sb-r2.afo.im/fuwari-blog/img/82c4a003d2399f82a7ccf5849cd1d5858d5f1f61.webp)

- 添加RSS。可前往[蜜柑计划 - Mikan Project](https://mikanime.tv/)获得各个字幕组的RSS
  
  ![](https://sb-r2.afo.im/fuwari-blog/img/f36daae968d8043bbcd1e4a2bbb9b9cd2d707cee.webp)
  
  注意：使用[蜜柑计划 - Mikan Project](https://mikanime.tv/)时，请订阅单个字幕组的RSS，不要使用个人的RSS，会导致**只能获取到你所有追番的最新一集而不是单个番的全部剧集**

- 打开飞牛影视，初始化并设置媒体库![](https://sb-r2.afo.im/fuwari-blog/img/269b78c3b7dffe7f8cdb861098f44147552b5eb4.webp)
  
  - 注意：如果要刮削旧集旧番，请规范重命名，可以使用自动化工具：[Episode-ReName.zip | AcoFork-AList](https://alist.onani.cn/Episode-ReName.zip)
    
    - 一级目录：即qb下载目录，无需重命名
    
    - 二级目录：番剧名称
    
    - 三级目录：季，如`Season 1`
    
    - 四级目录：集和字幕，如`S01E01.mp4` `S01E01.chs.ass`

# 3\. Debian

## 安装

- 下载Debian12 ISO（USTC镜像源）（建议选择DVD镜像，包更全，安装更快）
  
  [https://mirrors.ustc.edu.cn/help/debian-cd.html](https://mirrors.ustc.edu.cn/help/debian-cd.html)

- 上传至PVE，创建Debian虚拟机，CPU类型选择host，步骤略

### 安装1Panel：

[https://1panel.cn/docs/installation/online\_installation/](https://1panel.cn/docs/installation/online_installation/)

- 在1Panel中安装`Openresty` `MySQL` `Halo` `AList` `Cloudflared` 配置步骤略

### 搭建QQBot

#### 安装OneBotv11协议实现：Lagrange.OneBot

- Docker Run：`docker run -td -p 8081:8081 -v /root/qqbot/lo:/app/data -e UID=$UID -e GID=$(id -g) ghcr.onani.cn/lagrangedev/lagrange.onebot:edge`

- 修改配置文件：`appsettings.json`
  
  ```json
  {
      "Logging": {
          "LogLevel": {
              "Default": "Information",
              "Microsoft": "Warning",
              "Microsoft.Hosting.Lifetime": "Information"
          }
      },
      "SignServerUrl": "",
      "SignProxyUrl": "",
      "MusicSignServerUrl": "",
      "Account": {
          "Uin": 0,
          "Password": "",
          "Protocol": "Linux",
          "AutoReconnect": true,
          "GetOptimumServer": true
      },
      "Message": {
          "IgnoreSelf": true,
          "StringPost": false
      },
      "QrCode": {
          "ConsoleCompatibilityMode": false
      },
      "Implementations": [
          {
              "Type": "ReverseWebSocket",
              "Host": "192.168.124.34",
              "Port": 9090,
              "Suffix": "/onebot/v11/ws",
              "ReconnectInterval": 5000,
              "HeartBeatInterval": 5000,
              "AccessToken": ""
          }
      ]
  }
  ```

- 重启容器，扫码登录

#### 安装NoneBot2

- 安装pip：`apt install python3-pip`

- 配置pip USTC源：`pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/simple`

- 安装pipx：`apt install pipx`

- 安装nb-cli：`pipx install nb-cli`

- 设置pipx变量：`pipx ensurepath`

- 安装nb bootstrap：`nb self install nb-cli-plugin-bootstrap`

- 创建新NoneBot2项目：`nb bs`

- ```
  root@n100-debian:~# nb bs
  加载适配器列表中……
  请输入项目名称
  [?] 请输入 > onani
  [?] 请选择你想要使用的适配器 OneBot V11 (OneBot V11 协议)
  请输入 Bot 超级用户，超级用户拥有对 Bot 的最高权限（如对接 QQ 填 QQ 号即可）（留空回车结束输入）
  [?] 第 1 项 > 666
  [?] 第 2 项 >
  请输入 Bot 昵称，消息以 Bot 昵称开头可以代替艾特（留空回车结束输入）
  [?] 第 1 项 >
  请输入 Bot 命令起始字符，消息以起始符开头将被识别为命令，
  如果有一个指令为 查询，当该配置项中有 "/" 时使用 "/查询" 才能够触发，
  留空将使用默认值 ['', '/', '#']（留空回车结束输入）
  [?] 第 1 项 >
  请输入 Bot 命令分隔符，一般用于二级指令，
  留空将使用默认值 ['.', ' ']（留空回车结束输入）
  [?] 第 1 项 >
  请输入 NoneBot2 监听地址，如果要对公网开放，改为 0.0.0.0 即可
  [?] 请输入 > 0.0.0.0
  请输入 NoneBot2 监听端口，范围 1 ~ 65535，请保证该端口号与连接端配置相同，或与端口映射配置相关
  [?] 请输入 > 9090
  [?] 是否在项目目录中释出快捷启动脚本？ Yes
  [?] 是否将 localstore 插件的存储路径重定向到项目路径下以便于后续迁移 Bot？ Yes
  [?] 是否使用超级用户 Ping 指令回复插件？ Yes
  [?] 是否安装 logpile 插件提供日志记录到文件功能？ Yes
  [?] 是否在启动脚本中使用 webui 插件启动项目以使用网页管理 NoneBot？（该插件仍在开发中，不推荐用于生产环境） No
  成功新建项目 onani
  [?] 是否新建虚拟环境？ Yes
  正在 /root/onani/.venv 中创建虚拟环境
  创建虚拟环境成功
  [?] 是否需要修改或清除 pip 的 PyPI 镜像源配置？ No
  [?] 是否立即安装项目依赖？ Yes
  正在安装项目依赖
  依赖安装成功
  [?] 请选择需要启用的内置插件
  项目配置完毕，开始使用吧！
  ```

# 成果展示（域名已弃用）

![](https://sb-r2.afo.im/fuwari-blog/img/4b4680cc548e0c59ec18cef537c9b1f5412fbbcd.webp)

[https://blog.onani.cn](https://blog.onani.cn)

[https://alist.onani.cn](https://alist.onani.cn)

![](https://sb-r2.afo.im/fuwari-blog/img/7c24ff7d54b2e0ccaecce4b2ef79155c54124fa4.webp)