Real-time collaborative scratchpad web application written in Rust with WebSocket Operational Transformation.
Run the official zero-dependency container on port 4402:
docker run -d --name pad -p 4402:4402 -v /mnt/user/appdata/pad:/config ghcr.io/studio2201/pad:latestOpen your browser to http://localhost:4402 to start creating collaborative scratchpads immediately.
On Debian, Ubuntu, Fedora, or RHEL:
curl -fsSL https://studio2201.github.io/packages/install.sh | sudo bashDeploy via the official Unraid Template:
- Copy
pad.xmlto your Unraid flash drive under/boot/config/plugins/dockerMan/templates-user/. - Open Docker -> Add Container -> Select pad from the template dropdown.
- Click Apply.
The backend service can be customized using the following environment variables:
| Variable | Description | Default |
|---|---|---|
PORT |
Network port the web server binds to | 4402 |
PAD_PIN |
Security PIN required for application access | (Disabled) |
PAD_DATA_DIR |
Directory path for persistent data and notepads | /config |
PAD_ALLOWED_ORIGINS |
CORS allowed origins list (comma-separated) | * |
TRUST_PROXY |
Honor reverse proxy headers (X-Forwarded-For) |
false |
TRUSTED_PROXY_IPS |
Comma-separated CIDR list of trusted reverse proxies | (None) |
LOG_LEVEL |
Tracing filter (error, warn, info, debug) |
info |
Every container and package includes a built-in administration utility (pad).
Launch interactive TUI dashboard:
docker exec -it pad pad tuiSystem diagnostics and self-healing check:
docker exec -it pad pad doctorCLI Command Reference:
pad tui— Interactive terminal user interface.pad doctor— Diagnoses storage permissions, ports, and database health.pad status— Displays network configuration and security parameters.pad data stats— Shows storage utilization and entry metrics.pad data list— Lists notepads and active document entries.
- Axum Web Backend: High-concurrency async streaming runtime built on Tokio with WebSocket RFC 6455 framing.
- Yew WebAssembly Frontend: Type-safe client bundle running natively in browser WASM runtime.
- Operational Transformation (OT): Concurrent document editing without lock contention.
- Strict Input & Path Sanitization: Path canonicalization guards preventing directory traversal escapes.
Distributed under the Apache 2.0 License. See LICENSE for details.