Lightweight, browser-based shared clipboard. Paste text, images or files on one computer and instantly pick them up on another. Real-time sync via WebSocket, no sign-up required.
- Make sure Docker is installed.
- Create a
docker-compose.ymlfile:
services:
wklejka:
image: ghcr.io/krbob/wklejka:latest
ports:
- "3000:3000"
volumes:
- ./data:/app/data
restart: unless-stopped- Start the service:
docker compose up -d. - Open
http://localhost:3000in a browser (from another machine:http://<IP>:3000).
Alternatively, run the container directly:
docker run --rm -p 3000:3000 -v ./data:/app/data ghcr.io/krbob/wklejka:latest- Text, images & files – paste (Ctrl+V), drag and drop, or use the file picker. Any file type up to 50 MB. Inline preview for PDFs, videos, and audio.
- Real-time sync – WebSocket instantly propagates changes to every open browser.
- Tabs – separate virtual documents (e.g. "Work", "Home") with optional auto-expiry (1 h, 24 h, 7 d, 30 d). Drag to reorder, double-click to rename.
- Tab locking – lock a tab to prevent accidental deletion of the tab or its clips. Unlocking requires typing the tab name (like deleting a GitHub repo).
- Copy / Download / Delete – on every entry. Delete requires inline confirmation.
- Link previews – URLs in text clips automatically show a preview card with title, description, and image.
- Dark mode – auto-detects system preference, manual toggle in header. Persisted across sessions.
- Persistent storage – data lives in the
data/directory and survives container restarts. - Startup orphan cleanup – unreferenced files in
data/filesanddata/imagesare removed when the app starts. - Multilingual – UI automatically switches between Polish and English based on browser language.
Language is detected automatically from navigator.language. You can override it with a URL parameter:
http://localhost:3000?lang=pl– Polishhttp://localhost:3000?lang=en– English
