Skip to content

YuniqueUnic/elizabeth

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

358 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Elizabeth 是一个以房间为中心的实时文件共享与协作平台:在同一个入口里完成建房、消息同步、拖拽上传、图片 / PDF / 文本预览,以及链接邀请分享。

它采用 Rust + Next.js 技术栈构建,单容器即可交付 API、WebSocket 与嵌入式 SPA 前端;默认使用 SQLite,也可按需切换到 PostgreSQL。

Elizabeth room UI

Elizabeth

房间驱动的实时文件共享与协作平台,聚合消息、上传、预览与分享链接于同一工作流。

License: AGPL v3 Language: Rust Framework: Next.js Database: SQLite / PostgreSQL CI: prek


快速导航


核心能力

  • Room-centric 协作模型:所有消息、文件与实时互动都围绕房间展开,分享路径直接、上手成本低。
  • 单容器、单端口交付:Rust 后端统一承载 API、WebSocket 与嵌入式前端静态资源,部署链路简单清晰。
  • 实时消息与多类型预览:支持 Markdown、代码高亮、图片预览、PDF 阅读器、文本文件查看与链接预览。
  • SQLite 默认,PostgreSQL 可切换:开发期可用轻量 SQLite,生产环境可通过 DATABASE_URL 平滑切换至 PostgreSQL。
  • OpenAPI / Scalar 开箱即用:自带交互式 API 文档,便于二次集成、联调与自动化。
  • 安全基线完整:内置 JWT 鉴权、房间权限控制与最小权限容器运行策略。

快速开始 (Docker 部署,默认使用 SQLite)

一键拉取并部署项目(默认搭载轻量级 SQLite 数据库驱动):

# 克隆仓库
git clone https://github.com/YuniqueUnic/elizabeth.git
cd elizabeth

# 准备环境变量配置文件
cp .env.docker .env

# 生产环境务必修改 JWT_SECRET(推荐长度 >= 32 字符的随机安全字符串)
${EDITOR:-nano} .env

# 一键构建并拉起服务
docker compose up -d --build

访问地址索引

部署成功后,您可以通过以下入口访问和调试服务:

  • Web 前端界面http://localhost:4092
  • Scalar 交互式接口文档http://localhost:4092/api/v1/scalar
  • OpenAPI 描述文件 (JSON)http://localhost:4092/api/v1/openapi.json
  • 健康检查接口http://localhost:4092/api/v1/health

高级数据库配置 (自适应驱动切换)

Elizabeth 依靠 sqlx::AnyPool 具备出色的数据库自适应能力,能够根据 .env 中传入的 DATABASE_URL 的协议头自动决策装载哪套驱动,且在迁移(Migrations)上实现了智能切换:

  • 轻量级 SQLite(默认,使用 ./crates/board/migrations / 容器内 /app/migrations
  • 生产级 PostgreSQL(使用 ./crates/board/migrations_pg / 容器内 /app/migrations_pg

使用内置 PostgreSQL 容器部署(推荐生产环境)

如果您希望配合内置的 PostgreSQL 容器一同拉起服务,只需运行:

docker compose -f docker-compose.yml -f docker-compose.postgres.yml up -d --build

使用外部已有的 PostgreSQL

如果您有独立部署的外部 PostgreSQL 数据库,请在 .env 中修改连接串(确保后端 Docker 容器具有网络访问权限):

DATABASE_URL=postgresql://用户名:密码@主机名:端口/数据库名 # pragma: allowlist secret

关键配置说明

在 Docker 容器化环境下,推荐通过项目根目录的 .env 环境变量配置文件覆盖核心行为:

环境变量 默认值 作用说明
JWT_SECRET (必填) 用于生成和签名认证令牌的秘钥。生产环境请务必修改。
DATABASE_URL sqlite:///app/data/elizabeth.db 数据库连接串。协议头决定了使用的驱动类型。
DB_MAX_CONNECTIONS 20 数据库连接池的最大连接数上限。
DB_MIN_CONNECTIONS 5 数据库连接池保留的最小连接数常驻。

Note

项目的静态配置文件位于 docker/backend/config/backend.yaml,该文件在运行时加载(注:YAML 自身不支持动态读取环境变量,密钥和高敏感配置均推荐使用 env 注入来覆盖)。


质量门禁与本地开发

在本地参与 Rust 模块开发时,必须确保以下指令全部正常通过:

# 格式化代码风格
cargo fmt --all

# 静态检查 workspace 语法与编译正确性
cargo check --workspace --all-targets --all-features

# 运行 workspace 内部的所有自动化测试
cargo test --workspace --all-features

# Clippy 强静态类型质量门禁(不能包含任何警告或错误)
cargo clippy --workspace --all-targets --all-features -- -D warnings

Tip

如果本地装有 just,您也可以直接使用命令 just verify 一键跑通上述所有的校验。


文档指南

若要探索和深入了解 Elizabeth,请参阅我们为您准备的系统化文档:


开源许可证 (License)

本项目采用 GNU Affero General Public License v3.0 (AGPL-3.0) 开源许可证托管。

Important

AGPL-3.0 协议与商业授权说明:

  • 任何人均有权自由地商用、修改或分发本项目的全部或部分源代码。
  • 开源义务:如果您对本项目的源代码进行了任何修改,并且利用修改后的源码通过网络以软件即服务(SaaS)的形式向公众提供服务,您必须根据 AGPL-3.0 的条款向公众开源并公布修改后的完整源代码
  • 如果您没有对 Elizabeth 的源代码进行任何修改(仅作为直接部署使用者进行商业运营、团队协作或个人自建),或者您的修改仅限在企业/个人内部私有环境使用且不对外提供网络服务,则您无需公开任何源代码。

About

Elizabeth 项目致力于构建一个现代化的文件分享系统,支持多种文件类型、实时预览和高级安全特性。项目采用模块化设计,使用 Rust 语言确保高性能和内存安全。

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors