ZeroNews内网穿透头像
关注
内网部署 Halo 建站,用 ZeroNews 免费内网穿透安全发布到公网(无公网 IP 也能 HTTPS 访问)封面图

内网部署 Halo 建站,用 ZeroNews 免费内网穿透安全发布到公网(无公网 IP 也能 HTTPS 访问)

Halo 部署在家庭 NAS 或内网服务器上,没有公网 IP、运营商封 80 端口,外网怎么访问?本文用 ZeroNews 内网穿透,把内网 Halo 站点安全映射为固定 HTTPS 公网地址:无需维护 Nginx / TLS 证书 / 域名,访客无需安装任何客户端。附 Docker 部署 Halo(PostgreSQL + Halo 社区版)、安装 ZeroNews 客户端、添加域名与 HTTPS 隧道的完整实操步骤与避坑建议。

前言

很多朋友都有这样的经历:好不容易用 Halo 把博客或官网搭好了,结果只有自己能打开,发给朋友看,对方却访问不了。卡点往往不是建站本身,而是这三个老问题:

  • 家里/公司没有公网 IP,路由器上全是内网地址;
  • 就算有公网 IP,运营商通常封禁了 80/443 端口
  • 租一台云服务器吧,又贵,还得自己折腾 Nginx、SSL 证书、域名解析。

其实,想让内网里的 Halo 被外网访问,核心思路就一句话:站点留在内网,用一个安全隧道把流量"送"出去。本文介绍的就是这套方案——用 ZeroNews 内网穿透,把部署在内网(NAS / 小主机 / 内网服务器)的 Halo 映射成一个固定的 HTTPS 公网地址

  • 不需要公网 IP,不碰 80/443 端口;
  • 不用自己维护 Nginx、TLS 证书、域名;
  • 访客浏览器直接访问,不用装任何客户端软件
  • 站点、主题、附件、数据库全部留在内网,数据不出门。

下面按完整流程走一遍:Docker 部署 Halo → 安装 ZeroNews 客户端 → 添加域名与 HTTPS 隧道 → 验证公网访问 → 更换主题美化站点。


一、Halo 是什么

Halo 是一款强大易用的开源建站工具。个人博客、知识库、企业官网,再到在线商城,都可以落在同一套系统里;主题、插件、附件和评论,也都跑在你自己的机器上——家用 NAS、工作室小主机、公司内网服务器都是很常见的部署环境。

Halo 的安装并不难,难的是**"让外面的人打得开"**。想把内网里的 Halo 博客或官网给别人访问时,卡点多半就是:没有公网 IP、运营商封 80 端口。

二、让内网 Halo 被外网访问:两种方案对比

要实现内网中的 Halo 给外部用户访问,不外乎两种方案:

方案

站点部署位置

Nginx / TLS / 域名维护

主要成本

适用场景

公有云方式

整站部署到公有云 SaaS / 云主机

需要自己维护

云主机费用较高

预算充足、追求极致稳定

内网穿透方式

Halo 仍部署在内网

不用维护,开箱即用

低(免费额度或按需付费)

家庭 NAS、工作室小主机、内网服务器、个人站点

公有云方式:把整站丢进公有云部署,功能上没问题,但你需要维护 nginx/tls/域名,同时面临云主机较高的成本问题。

内网穿透方式:Halo 还是部署在内网,数据留在自己手里,同时不用维护 nginx/tls/域名,简单省事。本文采用的就是这个方案。

三、ZeroNews 内网穿透是什么

ZeroNews 内网穿透(零讯)是一个企业级的安全内网穿透与反向代理平台。简单几分钟,就可以实现企业/个人在无固定公网 IP 的网络环境下,将内网中的 Halo 快速提供为安全稳定的固定 HTTPS 端点暴露到公网。

它的几个关键特点:

  • 用户侧零安装:用户端只要有浏览器就可以访问,无需安装任何客户端软件;
  • 免运维:不用再维护 nginx、TLS 证书、域名;
  • 精确暴露:支持精确发布一个站点或站点下的特定路由,而不是把整机端口裸奔到公网;
  • 安全可控:平台支持 IP 白名单、Basic 认证、路由白名单等访问策略。

整体架构如下:Halo 站点与 PostgreSQL 数据库留在企业内网/NAS,ZeroNews Client 以 HTTPS 出站连接云端平台,访客、编辑、合作方都通过 HTTPS 访问公网域名。

![Halo + ZeroNews 方案架构图](https://aka.doubaocdn.com/s/SLCZXUt98L)


四、第一步:Docker 部署 Halo(PostgreSQL + Halo 社区版)

前置条件:一台能跑 Docker 的内网机器(Linux 服务器 / NAS 均可),已安装 Docker 与 docker compose 插件。

4.1 准备目录与 docker-compose.yaml 部署文件

先创建一个工作目录,并在其中添加 docker-compose.yaml 文件:

mkdir -p /opt/halo && cd /opt/halo

docker-compose.yaml 内容如下(PostgreSQL + Halo 社区版,基于 Halo 官方推荐的 compose 配置;请按需修改数据库密码与数据目录):

services:
  halo:
    image: registry.fit2cloud.com/halo/halo:2.25
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      - halo_network
    volumes:
      - ./halo2:/root/.halo2
    ports:
      - "8090:8090"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    environment:
      - JVM_OPTS=-Xmx256m -Xms256m
    command:
      - --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
      - --spring.r2dbc.username=halo
      - --spring.r2dbc.password=openpostgresql
      - --spring.sql.init.platform=postgresql
      - --halo.external-url=http://0.0.0.0:8090/

  halodb:
    image: postgres:15.4
    restart: on-failure:3
    networks:
      - halo_network
    volumes:
      - ./db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD", "pg_isready"]
      interval: 10s
      timeout: 5s
      retries: 5
    environment:
      - POSTGRES_PASSWORD=openpostgresql
      - POSTGRES_USER=halo
      - POSTGRES_DB=halo
      - PGUSER=halo

networks:
  halo_network:

4.2 启动 Halo 容器

在 docker-compose.yaml 所在目录执行:

docker compose up -d

等容器启动完成后,在内网浏览器中输入服务器 IP 加 8090 端口(例如 http://192.168.1.100:8090/),打开 Halo 平台:

按向导创建站点与管理员, 然后登录即可

到这里,Halo 已经在内网跑起来了,下一步就是把它"发布"到公网。


五、第二步:安装 ZeroNews 客户端

5.1 在线安装

登录 ZeroNews 控制台,在"快速开始"页面中,选择 Linux,复制 Linux 的在线安装命令,回到服务器终端执行。

curl -SLk https://download.zeronews.cc/linux/zeronews-install.sh | sudo sh -s install v3bY3nTVB3K7Yaja

安装完成后,终端里应能直接使用 zeronews 命令,即表示客户端已安装成功。

5.2 以系统服务方式后台运行

为了避免终端关闭导致隧道中断,建议按控制台指引把 ZeroNews 客户端注册为系统服务(如 systemd),实现后台常驻与开机自启。

zeronews service start

5.3 确认客户端在线

回到 ZeroNews 控制台的"关联客户端"页面,确认刚才安装的客户端状态为在线,并记下设备名称(后面添加隧道时要绑定它):


六、第三步:添加域名与 HTTPS 隧道

6.1 添加域名

进入控制台的"自定义域名"页面,点击"添加域名",添加一个子域,前缀可以用 arpblog 这类好记的名字:

添加成功后,该域名会显示为"已激活"。

6.2 添加隧道

进入"隧道管理",新建一条映射(添加隧道),参数如下:

配置项

填写值

隧道模式

标准隧道

隧道特性

Raw(默认透传)

隧道协议

HTTPS

带宽

3 Mbps(按需调整)

公网域名

选择前面添加好的域名(如 arpblog)

绑定设备

前面安装好的客户端

内网 IP

127.0.0.1

内网端口

8090

HTTPS 隧道创建成功后,你会在隧道列表里拿到一个固定的公网地址,例如 https://arpblog.hn.takin.cc

6.3 验证公网访问

在浏览器中打开这个公网域名地址,Halo 博客首页正常访问:

到这里,内网部署的 Halo 已经通过 HTTPS 安全发布到公网,访客无需安装任何客户端,直接浏览器访问即可。


七、第四步:更换主题,让站点更好看

站点能访问之后,还可以进一步美化:

  1. 打开 Halo 控制台,进入"应用市场",筛选"主题",浏览并安装喜欢的主题(有很多免费主题可选):


    通过 ZeroNews 把内网 Halo 映射成 HTTPS 公网地址后:

    • 站点、主题、附件和数据库仍留在内网,数据在自己手里;
    • 访客和编辑用浏览器就能访问,无需安装任何客户端;
    • 不用自己维护 Nginx 和证书,也不必将整机端口裸开到公网。

    一句话总结这套组合:Halo 负责建站能力,ZeroNews 负责安全暴露。几分钟即可完成"内网部署、公网可达",对家庭 NAS、工作室小主机和个人站点来说,是性价比很高的发布方式。


    参考链接

    转载自 CSDN-专业IT技术社区

    原文链接:https://blog.csdn.net/2501_91573548/article/details/166127770

    文章来源转载

    评论

    赞0

    评论列表

    微信小程序
    QQ小程序

    关于作者

    点赞数:0
    关注数:0
    粉丝:0
    文章:0
    关注标签:0
    加入于:--