侧边栏壁纸
  • 累计撰写 2 篇文章
  • 累计创建 1 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

DIY 小主机记录

yyyu
2025-01-29 / 0 评论 / 2 点赞 / 132 阅读 / 0 字

一、需求分析与硬件选型

1.1 核心需求清单

  • 🛠️ 开发测试环境:独立隔离的 Linux 容器集群(支持 Docker/Kubernetes)
  • 🗃️ 轻量级 NAS 系统:自动相册备份 + Alist 云盘挂载
  • 🎮 游戏联机服务器:支持 6 人同时在线,7x24 小时稳定运行
  • 附加要求:整机功耗<15W、夜间噪音<30dB、体积<0.5L

1.2 硬件配置方案

组件 型号 价格 特性说明
主机 GMK 极摩客 N150 ¥570 英特尔 N100 处理器/双网口
内存 光威天策 DDR4 3200 ¥280 32GB 单通道/CL22 时序
存储 幻隐 HV3000 ¥170 512GB PCIe3.0/TLC 颗粒
总计 ¥1020 JD 自营次日达

硬件选购经验

  1. N100 处理器相比 J4125 单核性能提升 40%,TDP 仅 6W
  2. 内存选择单条 32GB 避免兼容性问题,实测可超频至 4000MHz
  3. 固态硬盘选择无缓存方案,避免小主机散热压力

实测数据:待机功耗 6.8W(不含外接存储),满载温度 65℃(环境温度 25℃)


二、系统架构设计

2.1 虚拟化方案对比

graph TD A[Ubuntu 24.04 Desktop] --> B{虚拟化方案} B --> C[Proxmox VE] --> |无线驱动支持差| D[放弃] B --> E[Incus 6.0] --> |LXD生态兼容| F[系统容器] B --> G[QEMU/KVM] --> |直通核显| H[NAS虚拟机]

2.2 服务部署架构

graph BT subgraph 宿主机 A[WiFi 6驱动] --> B[Incus网桥] B --> C[Dev容器] B --> D[Game容器] B --> E[Network容器] F[KVM] --> G[飞牛OS虚拟机] end C --> |SSH隧道| H[开发PC] D --> |UDP 10999| I[游戏客户端] G --> |SMB/NFS| J[存储设备]

服务资源分配策略

  • 🐳 Dev 容器:2 核 + 12GB 内存(运行 VSCode Server + Docker)
  • 🎮 Game 容器:不设限制(游戏专用服务器突发负载高)
  • 📦 NAS 虚拟机:2 核 + 8GB 内存(直通 USB3.0 接口)
  • 🌐 Network 容器:1 核 + 1GB 内存(运行 v2raya 透明代理)

三、系统设计与调优

3.1 Incus 核心优势

  1. 混合虚拟化:同时支持系统容器和 KVM 虚拟机
  2. 资源隔离:通过 cgroups v2 实现精细控制
  3. 热迁移支持:配合 ZFS 实现服务无缝迁移
  4. Web Dashboard:可视化监控容器状态和配置

3.2 关键配置命令

# 创建开发容器
incus launch ubuntu:24.04 dev-env --profile default

# 分配资源限制
incus config set dev-env \
    limits.cpu=2 \
    limits.memory=12GB \
    limits.disk.priority=5

# 设置游戏服务器无限制
incus config set game-server \
    limits.cpu="" \
    limits.memory="" \
    security.privileged=true

3.3 性能调优实践

  1. IO 调度优化
echo 'ACTION=="add", SUBSYSTEM=="block", KERNEL=="nvme0n1", ATTR{queue/scheduler}="none"'
sudo tee /etc/udev/rules.d/60- ioscheduler.rules
  1. 网络加速配置
# /etc/sysctl.d/99-network.conf
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_fastopen=3
  1. 内存压缩
sudo apt install zram-config
echo "ALGO=zstd" | sudo tee /etc/default/zramswap

四、远程访问方案

4.1 混合组网架构

graph LR A[校园网环境] --> B[Tailscale组网] B --> C[自建Derper节点] B --> D[FRP公网暴露] C --> |加密中继| E[家庭NAS] D --> |UDP穿透| F[游戏服务器]

4.2 方案实施步骤

Tailscale 自建 Derper 节点

derper:
  image: yangchuansheng/ip_derper:latest
    container_name: derper
    restart: always
    ports:
      - "37470:37470"
      - "3478:3478/udp" # stun端口
    volumes:
      - /var/run/tailscale/:/var/run/tailscale/ # 连接本地tailscale
    environment:
      - DERP_ADDR=:37470 #和上面的端口相同
      - DERP_CERTS=/app/certs
      - DERP_VERIFY_CLIENTS=true # 启动客户端验证

FRP 服务端配置

# frps.toml
[common]
bind_port = xxx
vhost_http_port = xxx
authentication_method = token
token = your_secure_token

客户端穿透配置

# frpc.toml
[game-server]
type = udp
local_ip = xxxxxx
local_port = xxx
remote_port = xxx

五、总结

5.1 最终效果

  • 开发环境:VSCode Web 版响应时间<200ms
  • NAS 性能:SMB 传输速度稳定在 110MB/s
  • 游戏服务器:同时在线 6 人延迟<80ms
  • 整机功耗:日常负载 9.2W(不含外接硬盘)

5.2 优化方向

  1. 存储扩展:通过 USB3.0 外接 RAID 硬盘盒
  2. 网络升级:更换 Intel AX210 WiFi6E 网卡
  3. 安全加固:部署 Fail2ban + CrowdSec 防护

经验总结:通过 Incus 实现服务隔离与资源复用的平衡,混合组网方案兼顾安全与性能。建议优先选择高性能 SSD,小主机持续写入负载下 TLC 颗粒存在性能衰减问题。

pie title 资源占用分布 "开发环境" : 35 "游戏服务器" : 45 "NAS系统" : 15 "基础服务" : 5
2

评论区