AI 生成的页面,不用部署也能分享出去。

你用 AI 生成了一份 HTML 或 Markdown,想让朋友直接看。可它要部署——找服务器、配域名,比写它还麻烦。把文件拖进 PageRelay,拿到一条链接发出去,对方点开就看,不下载、不装环境。

单个 Go 二进制SQLite + 本地磁盘自托管

一件每天都会发生的小事

下班前,你用 AI 生成了一份带交互的产品演示页,或者一篇配图齐全的 Markdown 笔记。想发给同事、发给客户、发到群里让人看一眼——然后你卡住了。

发文件过去,对方要下载。微信里发个 HTML,对方打开是乱码;发个 MD,对方连 Markdown 是什么都不知道。你还得附一段"用浏览器打开"的说明,像在给人写小抄。

丢到网盘,数据就出了公司。合规那关过不去。网盘的分享链接又臭又长,过期了、改了权限,你都不知道。

自己搭静态托管,要一台服务器。申请机器、装 Nginx、配域名、传文件、设权限——比写那个页面还久。就为发一眼。

这三件事,每件单独都不算大事,但每天来一遍,磨人。PageRelay 就是替你把这三件事压成一个动作。

本地文件→拖进来→一条链接→对方直接看

share.你的域名.com/s/k7Hm 把这条发给谁都行,不下载、不装环境。
不想发了,把分享开关关掉,这条链接当场失效;再开,会生成新的一条。发出去的东西,你随时收得回。 HTML 在独立的公开域里跑,沙箱隔离,不会动到你管理端的会话;Markdown 走安全渲染,剥掉危险节点。

它不替你存几 TB 的素材库,也不跟对象存储比。它只覆盖这一类"传一眼就完事"的场景——但这类场景,每天都在发生。

怎么把它跑起来

一个二进制 + 一个 SQLite 文件 + 一个磁盘目录,丢到任意 Linux 机器上就能跑,没有外部依赖。

构建

# 需要 Go 1.26+;静态编译,目标机无需 libc
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
  go build -trimpath -ldflags='-s -w' -o filehub .

跑起来

# 管理端 :8080,公开分享端 :8081
./filehub \
  -listen 0.0.0.0:8080 \
  -share-listen 0.0.0.0:8081 \
  -public-base https://share.你的域名.com \
  -db /var/lib/filehub/filehub.db \
  -data /srv/filehub/users

首次启动自动建管理员 admin,日志会提醒你首次登录后改密。更稳妥的是用 -admin-password-file 指定初始密码,写入后删掉那个文件。

用 systemd 守住

# /etc/systemd/system/filehub.service
[Service]
Type=simple
User=filehub
ExecStart=/usr/local/bin/filehub \
  -listen 0.0.0.0:8080 \
  -share-listen 0.0.0.0:8081 \
  -public-base https://share.你的域名.com \
  -cookie-secure
Restart=on-failure
sudo systemctl daemon-reload
sudo systemctl enable --now filehub

反向代理 + TLS

用 Nginx 或 Caddy 把管理端、公开端分别绑到不同域名,开 HTTPS。开了 HTTPS 就记得加 -cookie-secure。

# relay.你的域名.com  → 127.0.0.1:8080  (管理端)
# share.你的域名.com  → 127.0.0.1:8081  (公开分享端)
location / { proxy_pass http://127.0.0.1:8080; }
client_max_body_size 2g;   # 与上传上限对齐

完整参数(-listen / -share-listen / -public-base / -admin-password-file / -cookie-secure)见仓库的 README。

先试,再决定要不要部署

一个只读体验账号,数据定期重置。传个小文件、开个分享、把链接贴到隐身窗口,整套流程就走完了。

在线 Demo

登录后能体验拖拽上传、预览、分享开关,把公开链接贴到隐身窗口,能看到内外两端是怎么隔离的。

地址
pagerelay.348580.xyz/login
账号
demo
密码
1234567890

这是个公开环境,别上传真实或敏感的文件。

打开 Demo