Skip to content

自托管

WARNING

请注意,你必须让自己的实例与官方站点(fmhy.net)有所区别,以免造成混淆。具体操作步骤见第 4 步。

本指南将帮助你搭建并运行自己的 FMHY 本地实例。

Docker(实验性)

要运行本地实例,你需要安装 DockerDocker Compose

两者都安装好后,运行以下命令:

bash
git clone https://github.com/fmhy/edit.git
cd edit
sudo docker compose up --build

构建镜像并启动容器可能需要几分钟,服务运行在 4173 端口。

Nix Flake

你可以使用 nix 来搭建开发环境,我们提供了一个会自动配置 nodejspnpmflake

  1. 复刻(fork)仓库并用 git clone https://github.com/fmhy/edit.git. 克隆到本地。
  2. 运行 nix flake update 更新 flake 锁定文件。
  3. 运行 nix develop 进入开发环境。
  4. 进行你的修改。
  5. 运行 exit 退出开发环境。

手动安装

你需要安装以下内容:

第 1 步:克隆仓库

bash
git clone https://github.com/fmhy/edit.git
cd edit

第 2 步:安装依赖

使用 pnpm 安装项目依赖:

bash
pnpm install

第 3 步:开发模式

以开发模式运行项目:

bash
# 以开发模式启动文档站点
pnpm docs:dev

# 以开发模式启动 API(如有需要)
pnpm api:dev

开发服务器默认将在 http://localhost:5173 启动。

第 4 步:生产环境构建

你需要更新:

  • metadocs/.vitepress/constants.ts 中的常量
    • name:你的实例名称
    • hostname:你的域名
    • description:你的实例描述
    • tags:Opengraph 标签
    • build:构建选项(可通过环境变量配置)
  • docs/index.md
    • title
    • description
    • hero.name
    • hero.tagline

为生产环境构建项目:

bash
# 构建文档站点
pnpm docs:build

# 使用 Node.js preset 构建 API(如有需要)
NITRO_PRESET=node pnpm api:build

第 5 步:预览生产构建

在本地预览生产构建:

bash
# 预览文档站点
pnpm docs:preview

# 预览 API(如有需要)
pnpm api:preview

第 6 步:部署

更多信息请参阅 VitePress 部署指南

API 部署

如果你想部署 API 组件(反馈系统),需要设置 Cloudflare Workers 和 KV 存储。

前置条件

第 1 步:配置 Wrangler

用你的 Cloudflare 账号信息更新 wrangler.toml

  1. 在 Cloudflare 控制面板中获取你的账号 ID(位于右侧边栏)
  2. wrangler.toml 中的 account_id 值替换为你的账号 ID
  3. 如果你使用自定义域名,保持 workers_dev = false 并更新 routes 部分
  4. 如果你部署到 *.workers.dev,请设置 workers_dev = true 并删除 routes 部分

第 2 步:创建 KV 命名空间

创建用于数据存储的 KV 命名空间:

bash
npx wrangler kv:namespace create STORAGE

该命令会返回一个命名空间 ID。复制此 ID,并替换 wrangler.toml[[kv_namespaces]] 部分的 id 值(第 14 行)。

Note: 如果你不想在本地运行 Wrangler 就完成部署(例如在 CI/CD 中),你需要:

  1. 在 Cloudflare 控制面板中手动创建 KV 命名空间
  2. 在你的复刻仓库中更新 wrangler.toml 里的 account_idid 两个值

第 3 步:构建与部署

构建并部署 API:

bash
# 构建 API
pnpm api:build

# 部署到 Cloudflare Workers
pnpm api:deploy

API 将部署到你配置的域名或 *.workers.dev 子域名。

速率限制(可选)

速率限制绑定需要通过 Cloudflare 控制面板设置。基础部署可以跳过这一步,稍后再通过 Workers 控制面板中的 "Rate limiting" 部分进行配置。

环境变量

构建时变量(用于文档站点)

这些变量控制构建文档站点时包含哪些内容:

  • FMHY_BUILD_NSFW - 启用 NSFW 侧边栏条目(实验性)
  • FMHY_BUILD_API - 启用反馈系统的 API 组件
运行时变量(用于 API Worker)

这些变量由部署的 Cloudflare Worker API 使用:

  • WEBHOOK_URL - 用于发布反馈消息的 Discord webhook URL(API 反馈功能必需)

故障排查

  1. 如果遇到 Node.js 版本问题,请确保使用 Node.js 21+
  2. 遇到 pnpm 相关问题时,请确保使用 pnpm 9+
  3. 如果构建出现问题,尝试清理缓存:
    bash
    # Linux
    rm -rf docs/.vitepress/cache
    
    # PowerShell
    rm -r -fo docs/.vitepress/cache

反向代理

任何反向代理都可以搭配这个 vitepress 网站使用,nginx 服务器的合理配置可在仓库中的这里找到