Self-host a multi-account web email client on a Linux box via Docker Compose
Run full-text search across years of mail using a local Tantivy index
Translate incoming messages inline through DeepL, DeepLX, or a configured LLM
Back up settings to WebDAV and sync IMAP folders on a custom interval
Needs Docker plus a JWT secret of at least 32 characters, and the auto-generated encryption key file must be backed up or stored credentials become unreadable.
Pebble Web is a self-hosted web email client adapted from a desktop application called Pebble. The README is written mainly in Chinese and the interface offers both Chinese and English. It is meant to be installed on a Linux server through Docker and then opened in a browser, so a user runs their own mail client on hardware they control instead of relying on a hosted service. The feature list covers multi-account management with inboxes, folders, threads, starring, archive, and a trash bin. Mail is composed with rich text, Markdown, HTML, attachments, plus reply, forward, and draft support. Accounts sync over IMAP and SMTP at a configurable interval. Full-text search uses Tantivy. Other features include batch operations, custom labels, a task board view of messages, snooze and follow-up lists, translation through DeepLX, DeepL, generic translation services, or a configured large language model, blocking of remote images by default with a trusted-sender list, attachment upload and download, WebDAV backup of settings, and a bilingual interface. For quick deployment, the README shows a one-line install script that pulls the project, writes a .env file, builds the Docker image, and starts the service on port 8080. There is also a Docker Compose flow that clones the repo, copies an example env file, and brings up the stack after setting a login password and a JWT signing secret of at least 32 characters. A manual build path uses Rust 1.80 or newer and Node.js 20 or newer, building the frontend with npm and the backend with cargo. A configuration table lists environment variables for password, JWT secret, port, data directory, static asset directory, sync interval in seconds, and a 32-byte hex encryption key that is auto-generated if not set. The data directory contains a SQLite database, a search index folder, an attachments folder, and an encryption key file that, if lost, makes already-stored credentials unreadable. The technology stack section names React 19, TypeScript, Vite, Tailwind CSS, Zustand, and TanStack Query on the front end, with TipTap for editing, and Rust with Axum and Tokio on the back end. Storage is SQLite through rusqlite, search is Tantivy, and security uses AES-256-GCM, Argon2, and JWT. The license is AGPL-3.0-only.
Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.