Skip to content

Releases: weisser-dev/openpastebin

v1.0.0 – OpenPasteBin

24 Mar 09:24

Choose a tag to compare

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 loggingaccess_log off in 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 -d

App runs at http://localhost · API at http://localhost:5000

Production with Caddy:

docker network create caddy-net
docker compose up -d
paste.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