1.介绍

Demo : https://nav.cpcp.cc.cd/

2.部署

第一步:注册登录Cloudflare账号

Cloudflare官网:https://dash.cloudflare.com

第二步:Fork Navihive 开源项目

前往 Navihive 的 GitHub 官方仓库 https://github.com/zqq-nuli/Cloudflare-Navihive 。点击页面右上角的 “Fork” 按钮,将该项目完整复制到你自己的 GitHub 账号下。这是你进行后续操作的基础。

第三步:修改 README 文件

在 Github 仓库中把 README 文件中的 Deploy to Cloudflare 按钮跳转链接更换成自己的。

第四步:一键部署

点击 Deploy to Cloudflare 按钮一键部署到 Cloudflare Workers 上。

第五步:修改用户名和密码

密码处需填写bcrypt 哈希值(非明文)

  • 访问 https://bcrypt-generator.com/
  • 输入你的密码(比如 admin123
  • 生成类似 $2a$12$Q9X8hY5JkLmNpQrStUvWxYzAbCdEfGhIjKlMnOpQrStUvWxYz 的字符串
  • 把这个完整的哈希值填入 AUTH_PASSWORD

第六步:设置D1数据库

进入 D1 SQL Database(D1 SQL 数据库),找到你的数据库,点击 Console(控制台) 标签,执行以下 SQL 语句创建表:

CREATE TABLE IF NOT EXISTS groups (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  name TEXT NOT NULL,
  order_num INTEGER NOT NULL,
  is_public INTEGER DEFAULT 1,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE IF NOT EXISTS sites (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  group_id INTEGER NOT NULL,
  name TEXT NOT NULL,
  url TEXT NOT NULL,
  icon TEXT,
  description TEXT,
  notes TEXT,
  order_num INTEGER NOT NULL,
  is_public INTEGER DEFAULT 1,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (group_id) REFERENCES groups(id) ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS configs (
  key TEXT PRIMARY KEY,
  value TEXT NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO configs (key, value) VALUES ('DB_INITIALIZED', 'true');

CREATE INDEX IF NOT EXISTS idx_groups_is_public ON groups(is_public);
CREATE INDEX IF NOT EXISTS idx_sites_is_public ON sites(is_public);

第七步:新建 wrangler.jsonc 文件

在 Cloudflare 部署成功后,Github 中会新增一个 navihive(你自己命名的)仓库。在里面新建 wrangler.jsonc 文件,输入以下代码:

注意:
把里面的 database_id 替换成你自己的 数据库ID,否则会出错

/**
 * For more details on how to configure Wrangler, refer to:
 * https://developers.cloudflare.com/workers/wrangler/configuration/
 */
{
    "$schema": "node_modules/wrangler/config-schema.json",
    "name": "navihive",
    "main": "worker/index.ts",
    "compatibility_date": "2025-04-05",
    "assets": {
        "not_found_handling": "single-page-application"
    },
    "observability": {
        "enabled": true
    },
    "keep_vars": true,
    // D1数据库绑定
    "d1_databases": [
        {
            "binding": "DB",
            "database_name": "navigation-db",
            "database_id": "f91476e6-b9c4-4b06-8d88-5caedf51c628"  //替换成你自己的数据库ID
        }
    ],
    "vars": {
        "AUTH_ENABLED": "true"
    }
}