A fast, self-hosted, private-first ghostbin with syntax highlighting, file attachments, and End-to-End Encryption (E2EE), powered by Rust and React.
- Backend powered by Rust and SQLite
- Syntax highlighting for 50+ languages via Shiki
- File attachments with configurable size limits
- End-to-End Encryption (E2EE) derived from your auth passphrase
- Single-user authentication (no accounts needed)
- PWA support for mobile and desktop installation
- Pin important pastes to the top
- 8 Character Code based sharing
- Zero tracking (no analytics, no tracking cookies)
View All 18 Themes
Themes ported from herdr.
You can run ghostbin by pulling the pre-built Docker image or by building it yourself.
docker run -d \
-p 8788:8788 \
-v ghostbin-data:/app/data \
-e AUTH_KEY="your_secure_passphrase" \
akshad135/ghostbin-
Clone the repository:
git clone https://github.com/Akshad135/ghostbin.git cd ghostbin -
Start the services via Docker Compose:
# Make sure to set a secure AUTH_KEY. This protects login and derives the encryption key. AUTH_KEY="your_secure_passphrase" docker-compose up -d
-
Open
http://localhost:8788in your browser.
Note: You can also define
AUTH_KEY,MAX_TEXT_SIZE, andMAX_FILE_SIZEin an.envfile in the root directory.
If you want to run the project natively you will need Node.js and Rust.
- Node.js & npm
- Rust (
cargo)
# 1. Install frontend dependencies
npm install
# 2. Start the Rust backend (runs on :8788 by default)
# Make sure to set the AUTH_KEY environment variable.
AUTH_KEY="your_secure_passphrase" npm run dev:backend
# 3. Start the Vite frontend in a new terminal
npm run devVisit http://localhost:5173 to see the frontend. API requests are automatically proxied to the backend.
Branding is configured in config.yaml (committed to the repo). Edit it to customize your instance (app name, description, icons, etc).
For backend limits, you can adjust environment variables:
MAX_TEXT_SIZE: Max size in bytes for a text paste (Default: 512 KB).MAX_FILE_SIZE: Max size in bytes for a single file attachment (Default: 50 MB).
Icons: Drop your own images into
public/and updateconfig.yaml. The bundled ghost icon is used by default and adapts its color to the active theme.
This project is licensed under the MIT License.

