feat: add Turso (libSQL) storage support for EdgeOne deployment

- Add TursoAdapter implementing DatabaseAdapter interface using @libsql/client
- Add 'turso' storage type to db.ts storage selector (reuses D1Storage)
- Add init-turso.js script for database migration and admin initialization
- Add @libsql/client dependency to package.json
- Update next.config.js to exclude @libsql/client from client-side bundle
- Update edgeone-deploy.yml workflow with TURSO_URL and TURSO_TOKEN secrets
- Update edgeone-build.mjs runtime env keys to include Turso variables
- Update .env.edgeone.example with Turso deployment instructions
- Update README.md with Turso as recommended storage for EdgeOne

Turso provides free SQLite-compatible cloud database (libSQL) with:
- 500 databases, 9GB storage, 1B row reads/month on free tier
- HTTP API compatible with edge/serverless environments
- Full SQLite syntax compatibility, reuses existing migrations
This commit is contained in:
mtvpls-turso
2026-07-11 17:04:27 +00:00
parent f55a1f50de
commit 8e464c463b
10 changed files with 625 additions and 27 deletions
+19 -3
View File
@@ -204,7 +204,7 @@ EdgeOne Pages/Makers 支持通过 API Token 在 GitHub Actions 中自动构建
1. 一个腾讯云 EdgeOne 账号
2. Fork 本项目到你的 GitHub 账号
3. 准备一个 Upstash Redis 实例(推荐)
3. 准备一个 Turso 数据库实例(推荐,免费 SQLite 云数据库)或 Upstash Redis 实例
4. 准备 EdgeOne API Token
#### 配置步骤
@@ -224,7 +224,21 @@ EdgeOne Pages/Makers 支持通过 API Token 在 GitHub Actions 中自动构建
| `EDGEONE_API_TOKEN` | EdgeOne API Token | `your_edgeone_token` |
| `USERNAME` | 站长账号 | `admin` |
| `PASSWORD` | 站长密码 | `your_secure_password` |
| `NEXT_PUBLIC_STORAGE_TYPE` | 存储类型 | `upstash` |
| `NEXT_PUBLIC_STORAGE_TYPE` | 存储类型 | `turso``upstash` |
**使用 Turso(推荐):**
在 [Turso](https://turso.tech/) 注册账号并创建数据库,然后运行 `pnpm init:turso` 初始化表结构(需设置 TURSO_URL 和 TURSO_TOKEN 环境变量)。
| Secret 名称 | 说明 | 示例值 |
| -------------------------- | ------------------- | --------------------------------- |
| `TURSO_URL` | Turso 数据库 URL | `libsql://your-db.turso.io` |
| `TURSO_TOKEN` | Turso 访问令牌 | `your_turso_token` |
**使用 Upstash Redis**
| Secret 名称 | 说明 | 示例值 |
| -------------------------- | ------------------- | ------------------------ |
| `UPSTASH_URL` | Upstash Redis URL | `https://xxx.upstash.io` |
| `UPSTASH_TOKEN` | Upstash Redis Token | `your_upstash_token` |
@@ -458,11 +472,13 @@ dockge/komodo 等 docker compose UI 也有自动更新功能
| NEXT_PUBLIC_SITE_NAME | 站点名称 | 任意字符串 | MoonTV |
| ANNOUNCEMENT | 站点公告 | 任意字符串 | 本网站仅提供影视信息搜索服务,所有内容均来自第三方网站。本站不存储任何视频资源,不对任何内容的准确性、合法性、完整性负责。 |
| ANNOUNCEMENT_DISPLAY_MODE | 公告显示模式 | once、every | once |
| NEXT_PUBLIC_STORAGE_TYPE | 播放记录/收藏的存储方式 | redis、kvrocks、upstash、d1 | 无默认,必填字段 |
| NEXT_PUBLIC_STORAGE_TYPE | 播放记录/收藏的存储方式 | redis、kvrocks、upstash、d1、turso、postgres | 无默认,必填字段 |
| KVROCKS_URL | kvrocks 连接 url | 连接 url | 空 |
| REDIS_URL | redis 连接 url | 连接 url | 空 |
| UPSTASH_URL | upstash redis 连接 url | 连接 url | 空 |
| UPSTASH_TOKEN | upstash redis 连接 token | 连接 token | 空 |
| TURSO_URL | Turso (libSQL) 数据库连接 url | libsql://xxx.turso.io | 空 |
| TURSO_TOKEN | Turso (libSQL) 数据库访问令牌 | 访问令牌 | 空 |
| NEXT_PUBLIC_SEARCH_MAX_PAGE | 搜索接口可拉取的最大页数 | 1-50 | 5 |
| NEXT_PUBLIC_DOUBAN_PROXY_TYPE | 豆瓣数据源请求方式 | 见下方 | direct |
| NEXT_PUBLIC_DOUBAN_PROXY | 自定义豆瓣数据代理 URL | url prefix | (空) |