Releases: weisser-dev/openpastebin
Releases · weisser-dev/openpastebin
v1.0.0 – OpenPasteBin
OpenPasteBin v1.0.0
Release Date: March 24, 2026
Status: Feature-complete, production-ready
A lightweight, privacy-first, open-source pastebin — zero logging, AES-256-GCM encryption, fully self-hostable via Docker.
What's Included
Core Features
- Share text, code snippets, and files (up to 5 MB)
- Syntax highlighting for 15+ languages via highlight.js (JavaScript, Python, Java, Go, Rust, PHP, HTML, CSS, JSON, SQL, Bash, and more)
- Auto language detection from paste content
- Paste editing with optional separate edit password
- Raw content view and one-click file download
- One-click JSON prettifier (shown only when code is detected)
- Exact content preservation — whitespace, tabs, and newlines always intact
Security & Privacy
- AES-256-GCM encryption — all content encrypted at application level before writing to MongoDB; never stored in cleartext
- View password — bcrypt-hashed (10 rounds)
- Edit password — separate optional bcrypt-hashed password
- Burn After Read — set a max view count (1, 2, 5, or 10); paste auto-deletes on limit
- Split Token — content split across two independent URLs for sharing via separate channels
- Security warnings — auto-detection of API keys, tokens, and passwords in paste content
- Zero logging —
access_log offin Nginx,logging: driver: "none"in Docker Compose, MongoDB runs with--logpath /dev/null - No user accounts, no analytics, no cookies
Expiration
- Configurable TTL: seconds, minutes, hours, or days
- Max 30 days for text; max 24 hours for file uploads
- Auto-cleanup job deletes expired pastes every minute
URL Options
- Default: 8-char random IDs via nanoid (281 trillion combinations)
- Custom slugs: padded with 2 leading + 1 trailing random digits; min 6 chars with at least 1 number or special character
UI/UX
- Light/Dark theme toggle with animated moon/sun transition (View Transitions API), persisted in localStorage
- "Hacker-lite" design — optimized for desktop and mobile
- Custom URL warning (yellow border) when slug used without password
Tech Stack
| Layer | Technology |
|---|---|
| Frontend | React 18, Vite 5, highlight.js 11, Axios |
| Backend | Node.js 20, Express 4, Mongoose 8, bcrypt 5, nanoid 3 |
| Database | MongoDB 7 |
| Encryption | AES-256-GCM (Node.js built-in crypto) |
| Containers | Docker Compose (3 services), Nginx Alpine, Node Alpine |
| Reverse Proxy | Caddy (recommended) or Nginx |
Quick Start
# Clone and configure
git clone https://github.com/weisser-dev/openpastebin.git
cd openpastebin
cp .env.example .env
# Set ENCRYPTION_KEY to a 64-char hex string — keep it safe!
# Start
docker compose up -dApp runs at http://localhost · API at http://localhost:5000
Production with Caddy:
docker network create caddy-net
docker compose up -dpaste.yourdomain.com {
reverse_proxy openpastebin-frontend:80
encode gzip zstd
}
API
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/paste |
Create paste |
GET |
/api/paste/:id |
Get paste |
PUT |
/api/paste/:id |
Edit paste |
DELETE |
/api/paste/:id |
Delete paste |
POST |
/api/upload |
Upload file |
GET |
/api/raw/:id |
Raw content |
GET |
/api/health |
Health check |
GET |
/api/stats |
Stats |
© 2026 weisser-dev · Built with OpenCode & Anthropic Claude via Amazon Bedrock