H618 Armbian 个人数字门户搭建

2026-09-26T12:52:26+08:00 | 7分钟阅读

Mizar
H618 Armbian 个人数字门户搭建

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。

配置路由:

  1. 进入 Cloudflare Zero Trust → Networks → Tunnels
  2. 添加 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
HomepageHTTP(s)https://home.example.com
VaultwardenHTTP(s)https://vault.example.com
1PanelHTTP(s)https://panel.example.com
Uptime KumaHTTP(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 应用

  1. Zero Trust → Access → Applications → Add an application
  2. 类型选「自托管」
  3. 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 访问 404Nginx 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(管理面板)

效果图

  • HomePageimage-20260927152431911

  • Vaultwardenimage-20260927152612428

  • Uptime Kuma

    image-20260927152748636

  • 1Panelimage-20260927152830195


后续可扩展方向

强烈建议补上

  1. 备份(Restic 或 1Panel 计划任务)
    • 备份内容:Vaultwarden 数据库、Homepage 配置、网站文件
    • 备份目标:外接硬盘或云存储
  2. Samba 文件共享
    • 共享 2T 硬盘里的子文件夹(不格式化,保护现有数据)
    • 局域网电脑手机直接读写

可选

  1. AdGuard Home(全屋去广告,需要 53 端口)
  2. Memos(轻量笔记)
  3. 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 需求,零备案,全部数据自控。

© 2024 - 2026 拾光舍

湘ICP备2025117227号-1 | 公安备案图标 湘公网安备43040002000293号
在线工具资源网站

在线工具官网

ProcessOn:👉ProcessOn在线作图

腾讯文档:👉腾讯文档

FlowUs 息流:👉FlowUs 息流

Mermaid Live Editor:👉在线流程图和图表编辑器 - 美人鱼实时编辑器

ME2在线工具(加密工具):👉ME2在线工具-在线开发学习生活工具箱

Textln:👉Textln文本智能云平台-通用文本解析

MinerU:👉MinerU数据提取工具

Crontab:👉Cron Expression Examples - Crontab.guru

正则表达式测试网站:👉regex101: build, test, and debug regex

技术资源网站

技术资源官网

Spring:👉Spring官网

MyBatis中文网 :👉MyBatis 中文网

Redis中文网:👉Redis中文网

Zookeeper:👉Apache ZooKeeper官网

Raft算法:👉Raft Consensus Algorithm官网

Hadoop:👉Apache Hadoop官网

Hive:👉Apache Hive官网

Phoenix:👉Apache Phoenix官网

Bootstrap中文网:👉Bootstrap中文网

Element:👉组件 | Element

Layui :👉Layui - 极简模块化前端 UI 组件库(官方文档)

FreeMarker :👉FreeMarker 中文官方参考手册

ztree树插件: 👉zTree – jQuery 树插件官网

x File Storage:👉x File Storage官网

社交链接

© 2024 - 2026 拾光舍

湘ICP备2025117227号-1 | 公安备案图标 湘公网安备43040002000293号

ESC

使用扫一扫,扫码加我