H618 Armbian 个人数字门户搭建
2026-09-26T12:52:26+08:00 | 7分钟阅读

H618 Armbian 个人数字门户搭建
从零开始,在一台 H618(4核 / 4GB 内存 / 128GB eMMC)的 Armbian 盒子上,搭建一套包含博客、密码管理、监控、对象存储、反向代理和内网穿透的个人数字门户。
硬件与系统环境
| 项目 | 配置 |
|---|---|
| 设备 | H618 盒子(4核 Cortex-A53) |
| 内存 | 4GB DDR3 |
| 存储 | 128GB eMMC + 2T 外接硬盘(exFAT,有数据) |
| 系统 | Armbian(基于 Debian) |
| 网络 | 千兆网口,但路由器为小米 R4AC(百兆口) |
| 公网 | 无公网 IP,运营商内网 IP |
核心服务架构
[公网]
|
v
[Cloudflare Tunnel + Access]
|
+--> www.example.com → Hugo 博客
+--> home.example.com → Homepage 面板(TOTP + MFA)
+--> vault.example.com → Vaultwarden(/admin 路径保护)
+--> status.example.com → Uptime Kuma 状态页
+--> panel.example.com → 1Panel(TOTP + MFA)
|
v
[H618 + Docker]
├── OpenResty(反向代理)
├── Homepage(门户)
├── Vaultwarden(密码库)
├── Uptime Kuma(监控)
├── Cloudflare Tunnel(穿透)
└── 1Panel(管理面板)
部署过程
1Panel 管理面板
背景:设备刷的 Armbian 镜像中已经预装了 1Panel(非 Armbian 默认,是刷机包作者集成)。
验证运行状态:
systemctl status 1panel
获取登录信息:
1pctl user-info
关键配置:
- 在「面板设置」中把「服务器地址」设为
http://192.168.1.100 - 通过 1Panel 管理所有 Docker 容器
OpenResty 反向代理
安装方式:1Panel 应用商店 → 搜索 OpenResty → 安装
配置参数:
- HTTP 端口:80
- HTTPS 端口:443
- 网络模式:host
- CPU / 内存限制:0(不限制)
用途:托管静态网站、反向代理其他服务。
Hugo 静态博客
本地构建:
hugo --minify
得到 public/ 目录。
在 1Panel 中创建静态网站:
- 主域名:
www.example.com - 代号:
www.example.com - 网站目录:
/opt/1panel/apps/openresty/openresty/www/sites/www.example.com/index
上传文件:把 public/ 里的所有内容上传到网站目录。
关键问题:访问 http://192.168.1.100 返回 404。
原因:Nginx 配置的 server_name 是 www.example.com,用 IP 访问匹配不到。
解决:把 IP 也加入 server_name:
server_name www.example.com 192.168.1.100;
Cloudflare Tunnel 内网穿透
背景:家宽没有公网 IP,无法直接做域名 A 记录解析。
方案:使用 Cloudflare Tunnel(Zero Trust),通过 cloudflared 容器主动建立加密隧道。
在 1Panel 中部署:容器名为 cloudflared,镜像 cloudflare/cloudflared。
配置路由:
- 进入 Cloudflare Zero Trust → Networks → Tunnels
- 添加 Public Hostname:
www.example.com→http://localhost:80(Hugo 博客)home.example.com→http://localhost:3000(Homepage)vault.example.com→http://localhost:40031(Vaultwarden)status.example.com→http://localhost:3001(Uptime Kuma)
DNS 自动配置:Cloudflare 会自动为每个 Public Hostname 创建 CNAME 记录。
Vaultwarden 密码管理
部署方式:1Panel 应用商店安装,容器名 vaultwarden。
端口映射问题:默认只绑定 127.0.0.1:40031,局域网无法访问。
解决:在容器编辑页面把端口改为 0.0.0.0:40031。
启用后台管理:
openssl rand -base64 32
在容器环境变量中添加:
ADMIN_TOKEN=生成的强密码
访问后台:https://vault.example.com/admin
Homepage 个人门户
部署方式:1Panel 应用商店安装。
镜像拉取问题:官方 ghcr.io 源在国内拉取极慢。
解决:用国内镜像源拉取后重新打标签:
docker pull docker.1ms.run/gethomepage/homepage:latest
docker tag docker.1ms.run/gethomepage/homepage:latest ghcr.io/gethomepage/homepage:latest
端口映射问题:默认绑定 127.0.0.1:3000,局域网无法访问。
解决:改为 0.0.0.0:3000。
Host 验证问题:访问时提示 Host validation failed。
解决:在 settings.yaml 中添加:
allowedHosts:
- 192.168.1.100:3000
- home.example.com
服务配置:编辑 /opt/1panel/apps/homepage/homepage/config/services.yaml:
- 基础设施:
- OpenResty:
description: 反向代理 / 静态网站
icon: si-nginx
- Cloudflare Tunnel:
description: 内网穿透,无公网 IP 发布服务
icon: cloudflare.png
- Vaultwarden:
href: https://vault.example.com
description: 自托管密码管理
icon: vaultwarden.png
- Uptime Kuma:
href: https://status.example.com/status/main
description: 服务存活监控
icon: uptime-kuma.png
widget:
type: uptimekuma
url: http://192.168.1.100:3001
slug: main
- 网站:
- QuietSea 博客:
href: https://www.example.com
description: Hugo 静态博客
icon: hugo.png
- 工具:
- 1Panel:
href: https://panel.example.com
description: 服务器管理面板
icon: 1panel.png
Uptime Kuma 服务监控
部署方式:1Panel 应用商店安装。
端口映射问题:默认绑定 127.0.0.1:3001,局域网无法访问。
解决:改为 0.0.0.0:3001。
数据库选择:保持默认 Embedded MariaDB。
创建监控项:
| 监控名称 | 类型 | URL |
|---|---|---|
| Hugo 博客 | HTTP(s) | https://www.example.com |
| Homepage | HTTP(s) | https://home.example.com |
| Vaultwarden | HTTP(s) | https://vault.example.com |
| 1Panel | HTTP(s) | https://panel.example.com |
| Uptime Kuma | HTTP(s) | http://192.168.1.100:3001 |
自监控注意:Uptime Kuma 监控自己要用 HTTP 类型 + 内网 IP,不要用 HTTPS,否则会报 write EPROTO 错误。
通知配置(邮件 SMTP):
- 主机名:
smtp.qq.com - 端口:
465 - 安全性:
TLS - 用户名:QQ 邮箱地址
- 密码:QQ 邮箱授权码(不是 QQ 密码)
- 发件人 / 收件人:你的邮箱地址
自定义邮件模板:
邮件主题:
[{{ name }}] {{ status }} - {{ msg }}
自定义正文:
服务名称:{{ name }}
当前状态:{{ status }}
监控地址:{{ hostnameOrURL }}
详细信息:{{ msg }}
创建状态页:
- 名称:
服务状态 - 路径(slug):
main - 添加分组:
基础设施和网站 - 把监控项加入分组
Cloudflare Access 安全保护
保护对象:Homepage、Vaultwarden(/admin)、1Panel、Uptime Kuma。
创建 Access 应用
- Zero Trust → Access → Applications → Add an application
- 类型选「自托管」
- Application domain 填对应域名
配置策略(推荐 TOTP + MFA)
因为邮箱验证码在国内经常收不到,改用 TOTP 身份验证应用程序:
- 包含(Include):认证方法 → 身份验证应用程序
- 要求(Require):认证方法 → MFA
- 身份验证持续时间:每次登录时提示 MFA
首次登录绑定 TOTP
从外网访问受保护域名时,会弹出二维码页面,用手机验证器 App(Google Authenticator、Microsoft Authenticator)扫码绑定,之后每次登录输入 6 位动态码。
各服务的保护范围
| 服务 | 保护范围 | 说明 |
|---|---|---|
| Homepage | 整个域名 | 全站保护 |
| Vaultwarden | /admin 路径 | 只保护后台,手机 App 同步不受影响 |
| 1Panel | 整个域名 | 全站保护 |
| Uptime Kuma | 整个域名 | 全站保护 |
遇到的关键问题与解决
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 1Panel 应用无法局域网访问 | 默认端口绑定 127.0.0.1 | 改为 0.0.0.0 |
| Homepage 镜像拉取慢 | 国内访问 ghcr.io 不稳定 | 用国内镜像源拉取后重打标签 |
| Homepage 提示 Host validation failed | 未在 allowedHosts 中添加域名 | 在 settings.yaml 中添加域名 |
| Hugo 博客用 IP 访问 404 | Nginx server_name 未匹配 IP | 把 IP 加入 server_name |
| Access 邮箱验证码收不到 | 国内邮箱投递不稳定 | 改用 TOTP + MFA |
| Uptime Kuma 自监控报 EPROTO | 用 HTTPS 监控 HTTP 端口 | 改用 HTTP 类型或 TCP Port |
| Vaultwarden 提示需要 HTTPS | 未通过 HTTPS 访问 | 通过 Cloudflare Tunnel 发布 |
当前完整架构
[公网]
|
v
[Cloudflare Tunnel + Access]
|
+--> www.example.com → Hugo 博客(公开)
+--> home.example.com → Homepage 面板(TOTP + MFA)
+--> vault.example.com → Vaultwarden(/admin 路径保护)
+--> status.example.com → Uptime Kuma 状态页
+--> panel.example.com → 1Panel(TOTP + MFA)
|
v
[H618 + Docker]
├── OpenResty(反向代理)
├── Homepage(门户)
├── Vaultwarden(密码库)
├── Uptime Kuma(监控)
├── Cloudflare Tunnel(穿透)
└── 1Panel(管理面板)
效果图
HomePage

Vaultwarden

Uptime Kuma

1Panel

后续可扩展方向
强烈建议补上
- 备份(Restic 或 1Panel 计划任务)
- 备份内容:Vaultwarden 数据库、Homepage 配置、网站文件
- 备份目标:外接硬盘或云存储
- Samba 文件共享
- 共享 2T 硬盘里的子文件夹(不格式化,保护现有数据)
- 局域网电脑手机直接读写
可选
- AdGuard Home(全屋去广告,需要 53 端口)
- Memos(轻量笔记)
- Tailscale(备用访问通道,不依赖 Cloudflare)
不建议在 H618 上跑
- Immich(照片 AI 识别)
- Jellyfin / Plex(无 GPU 转码)
- PostgreSQL + Redis + 重型应用
总结
通过这套架构,你在一台 4GB 内存的 ARM 盒子上,实现了:
- ✅ 公网可访问的 Hugo 静态博客
- ✅ 自托管密码管理(Vaultwarden)
- ✅ 服务存活监控(Uptime Kuma)+ 邮件告警
- ✅ 个人数字门户(Homepage)+ 自动发现
- ✅ 统一入口 + 自动 HTTPS(Cloudflare Tunnel)
- ✅ 安全保护(Cloudflare Access + TOTP + MFA)
总功耗 < 10W,零公网 IP 需求,零备案,全部数据自控。

湘公网安备43040002000293号