中文 | English
Pebble Web 是一个可自托管的 Web 邮件客户端,基于桌面端 Pebble 改造而来,默认面向中文用户编写文档,支持 Docker 部署和浏览器访问。
在已安装 Docker 和 Docker Compose 的 Linux 服务器上运行:
curl -fsSL https://raw.githubusercontent.com/QingJ01/Pebble-Web/master/scripts/deploy.sh | bash
脚本会自动拉取项目、生成 .env、构建镜像并启动服务。默认安装目录为 ~/pebble-web,默认端口为 8080。
如需自定义目录、端口或登录密码:
curl -fsSL https://raw.githubusercontent.com/QingJ01/Pebble-Web/master/scripts/deploy.sh | env PEBBLE_INSTALL_DIR=/opt/pebble-web PEBBLE_PORT=8080 PEBBLE_PASSWORD='change-me' bash
推荐使用 Docker Compose 部署:
git clone https://github.com/QingJ01/Pebble-Web.git
cd Pebble-Web
cp .env.example .env
编辑 .env,至少设置:
PEBBLE_PASSWORD=请替换为登录密码
PEBBLE_JWT_SECRET=请替换为至少32位的随机字符串
启动服务:
docker-compose up -d
浏览器访问:
http://localhost:8080
环境要求:
cd frontend
npm install
npm run build
cd ..
cargo build --release
运行前设置环境变量:
export PEBBLE_PASSWORD=your-password
export PEBBLE_JWT_SECRET=your-random-secret-at-least-32-chars
export PEBBLE_DATA_DIR=./data
export PEBBLE_STATIC_DIR=./frontend/dist
./target/release/pebble-web
Windows PowerShell 示例:
$env:PEBBLE_PASSWORD="your-password"
$env:PEBBLE_JWT_SECRET="your-random-secret-at-least-32-chars"
$env:PEBBLE_DATA_DIR="./data"
$env:PEBBLE_STATIC_DIR="./frontend/dist"
.\target\release\pebble-web.exe
后端:
cargo run
前端:
cd frontend
npm install
npm run dev
开发服务器会把前端请求代理到后端服务。
| 变量 | 必填 | 默认值 | 说明 |
|---|---|---|---|
PEBBLE_PASSWORD | 是 | 无 | Web 登录密码 |
PEBBLE_JWT_SECRET | 是 | 无 | 登录令牌签名密钥,至少 32 字符 |
PEBBLE_PORT | 否 | 8080 | 服务端口 |
PEBBLE_DATA_DIR | 否 | /data | 数据目录 |
PEBBLE_STATIC_DIR | 否 | ./frontend/dist | 前端静态文件目录 |
PEBBLE_SYNC_INTERVAL | 否 | 300 | 邮件同步间隔,单位秒 |
PEBBLE_ENCRYPTION_KEY | 否 | 自动生成 | 32 字节 Hex 编码加密密钥 |
安全建议:
.env.example 中的占位密码和密钥。PEBBLE_DATA_DIR。默认数据目录结构:
data/
├─ pebble.db
├─ index/
├─ attachments/
│ └─ staging/
└─ encryption.key
其中:
pebble.db 保存账户、邮件元数据、文件夹、标签、规则等信息。index/ 保存全文搜索索引。attachments/ 保存附件和上传暂存文件。encryption.key 用于本地敏感数据加密,丢失后无法解密已有凭据。| 模块 | 技术 |
|---|---|
| 前端 | React 19、TypeScript、Vite、Tailwind CSS、Zustand、TanStack Query |
| 编辑器 | TipTap、Markdown 支持 |
| 后端 | Rust、Axum、Tokio |
| 存储 | SQLite、rusqlite |
| 搜索 | Tantivy |
| 邮件 | IMAP、SMTP |
| 加密 | AES-256-GCM、Argon2、JWT |
| 部署 | Docker、Docker Compose |
Pebble-Web/
├─ src/ # Rust Web 后端
├─ crates/ # Rust workspace 子包
├─ frontend/ # React 前端
├─ Dockerfile
├─ docker-compose.yml
├─ .env.example
├─ README.md
├─ README_EN.md
└─ LICENSE
本项目基于 GNU Affero General Public License v3.0 开源,SPDX 标识为 AGPL-3.0-only。
Content type
Image
Digest
sha256:9e8351297…
Size
14.5 MB
Last updated
3 months ago
docker pull birdxs/pebble-web