Microbin selbst hosten – Der private Pastebin-Server mit Docker Compose

Was ist Microbin?

Microbin ist ein minimalistischer, selbst-gehosteter Pastebin-Dienst – ideal zum Teilen von Code, Logs, Konfigurationen oder Text-Snippets. Anders als öffentliche Dienste wie Pastebin.com bleibt alles unter deiner Kontrolle: verschlüsselt, mit Passwortschutz, automatischer Löschung und QR-Code.

Architektur

  Client (Browser)
       │
       ▼
  Nginx (SSL:443)
       │
       ▼
  Microbin (Docker:8080)
       │
       ▼
  microbin_data (SQLite + Files)

Super simpel – nur ein Container, eine SQLite-Datenbank, keine externen Abhängigkeiten.

1. docker-compose.yml

services:
  microbin:
    container_name: microbin
    image: danielszabo99/microbin:latest
    restart: unless-stopped
    ports:
      - "127.0.0.1:9765:8080"
    volumes:
      - ./microbin_data:/app/microbin_data
    env_file:
      - .env
    environment:
      - MICROBIN_PUBLIC_PATH=https://paste.example.com
      - MICROBIN_PORT=8080
      - MICROBIN_WIDE=true
      - MICROBIN_HIGHLIGHTSYNTAX=true
      - MICROBIN_QR=true
      - MICROBIN_EDITABLE=true
      - MICROBIN_PRIVATE=true
      - MICROBIN_NO_LISTING=true
      - MICROBIN_ENABLE_BURN_AFTER=true
      - MICROBIN_GC_DAYS=90
      - MICROBIN_DEFAULT_EXPIRY=24hour

.env (Umgebungsvariablen)

MICROBIN_ADMIN_USERNAME=admin
MICROBIN_ADMIN_PASSWORD=DEIN_SICHERES_PASSWORT

2. Nginx Reverse-Proxy

server {
    listen 443 ssl http2;
    server_name paste.example.com;

    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:9765;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 90;
        proxy_connect_timeout 90;
        proxy_redirect off;
        client_max_body_size 10M;
    }
}

3. Alle Environment-Variablen erklärt

Variable Wert Beschreibung
MICROBIN_PUBLIC_PATH https://paste.example.com Öffentliche URL (wichtig für QR-Codes & Links)
MICROBIN_WIDE true Breites Layout für mehr Platz
MICROBIN_HIGHLIGHTSYNTAX true Syntax-Highlighting für Code
MICROBIN_QR true QR-Code für jeden Paste generieren
MICROBIN_EDITABLE true Pastes nachträglich bearbeitbar
MICROBIN_PRIVATE true Nur mit Link einsehbar (keine öffentliche Liste)
MICROBIN_NO_LISTING true Keine öffentliche Paste-Liste
MICROBIN_ENABLE_BURN_AFTER true Paste nach einmaligem Lesen löschen
MICROBIN_GC_DAYS 90 Autom. Aufräumen nach 90 Tagen
MICROBIN_DEFAULT_EXPIRY 24hour Standard-Ablaufzeit: 24h

4. Schnellstart

# Verzeichnis anlegen
mkdir -p /opt/microbin && cd /opt/microbin

# docker-compose.yml erstellen (siehe oben)
nano docker-compose.yml

# .env mit Admin-Zugang
nano .env

# Stack starten
docker compose up -d

# Prüfen
docker compose ps
curl http://127.0.0.1:9765

5. Nginx-Konfiguration für ISPConfig

Wenn Microbin hinter ISPConfig läuft, nutze die ISPConfig-Web-GUI, um die Domain paste.example.com anzulegen, und füge in der Nginx-Direktiven-Option folgendes ein:

location / {
    proxy_pass http://127.0.0.1:9765;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_read_timeout 90;
    proxy_connect_timeout 90;
    proxy_redirect off;
    client_max_body_size 10M;
}

6. Funktionen im Detail

🔒 Privatmodus

Mit MICROBIN_PRIVATE=true sind alle Pastes standardmäßig privat – nur wer den direkten Link kennt, kann sie sehen. Perfekt für Team-internen Austausch.

🔥 Burn after reading

Pastes können so konfiguriert werden, dass sie sich nach dem ersten Aufruf selbst zerstören. Ideal für Passwörter, API-Keys oder temporäre Zugangsdaten.

📱 QR-Codes

Jeder Paste bekommt automatisch einen QR-Code generiert. Perfekt zum Teilen per Handy – einfach scannen und los.

🧹 Auto-Cleanup

Microbin löscht automatisch Pastes, die älter als 90 Tage sind (MICROBIN_GC_DAYS=90). Der Speicher bleibt sauber.

✨ Syntax-Highlighting

Code wird automatisch farbig hervorgehoben. Unterstützt die gängigsten Sprachen (Python, JavaScript, Go, Bash, YAML, JSON, etc.).

7. Backup

Da Microbin SQLite nutzt, reicht ein einfaches File-Backup:

# Container stoppen
docker compose down

# Daten sichern
tar -czf microbin-backup-$(date +%Y%m%d).tar.gz microbin_data/

# Container starten
docker compose up -d

Fazit

Microbin ist mit einem Docker-Container in 5 Minuten einsatzbereit. Perfekt als privater Pastebin-Dienst für Entwickler, Teams oder den eigenen Bedarf.

🔗 GitHub: danielszabo99/microbin | Weitere Projekte auf GitHub

X

Basti

Entwickler und Smart-Home-Enthusiast aus Deutschland. Ich entwickle Open-Source-Integrationen für Home Assistant (IDM Wärmepumpe, Violet Pool Controller), Modbus-Tools (ModBridge) und betreibe verschiedene Server-Dienste (Matrix, Seafile, SOGo).

GitHub →

Schreibe einen Kommentar