a E2E encrypted collaborative online editor, simpler and not bloated like etherpad-lite
https://betterpad.terabyte.gg
- TypeScript 30.3%
- Rust 27.1%
- Svelte 19.2%
- Shell 16.6%
- CSS 2.6%
- Other 4.2%
|
Some checks failed
CI / Frontend Lint (push) Failing after 18s
CI / Frontend Type Check (push) Failing after 14s
CI / Frontend Unit Tests (push) Failing after 14s
CI / Frontend Build (push) Failing after 16s
CI / Backend Format Check (push) Failing after 3s
CI / Backend Clippy (push) Failing after 3s
CI / Backend Build (push) Failing after 3s
CI / E2E Tests (push) Has been skipped
|
||
|---|---|---|
| .forgejo/workflows | ||
| backend-rust | ||
| frontend | ||
| nginx | ||
| .dockerignore | ||
| .gitignore | ||
| appunti.txt | ||
| compose.build.yml | ||
| compose.rust.yml | ||
| compose.yml | ||
| deploy.rust.sh | ||
| deploy.sh | ||
| DEVELOPMENT.md | ||
| Dockerfile | ||
| justfile | ||
| README.md | ||
| SECURITY-AUDIT.md | ||
| Vagrantfile | ||
Betterpad
A fast, collaborative text editor that works in your browser.
Write together in real-time.
Getting Started
Self-Host
Prerequisites
- Docker and Docker Compose
Quick Start
git clone https://git.lattuga.net/0d0acre/betterpad
cd betterpad
docker compose up -d
docker compose exec backend bunx drizzle-kit push
The app will be available at http://localhost:8060.
Data Persistence
Database data is stored in ./db_data/.
Database Migrations
After starting the services for the first time (or after schema updates), push the database schema:
docker compose exec backend bunx drizzle-kit push
Environment Variables
| Variable | Description | Default |
|---|---|---|
PUBLIC_WEBSOCKET_URL |
WebSocket URL for real-time sync | ws://localhost/pad |
ALLOWED_ORIGINS |
CORS allowed origins | http://localhost |
ORIGIN |
App origin URL | http://localhost |
DATABASE_URL |
PostgreSQL connection string | (internal) |
Deploying with a Custom Domain
To deploy BetterPad instance on a domain with HTTPS:
-
Update
compose.ymlenvironment variables:ALLOWED_ORIGINS→https://yourdomain.comPUBLIC_WEBSOCKET_URL→wss://yourdomain.com/padORIGIN→https://yourdomain.com
-
Configure your reverse proxy for TLS termination
-
docker compose up -d