This guide uses Docker Compose to run Etherpad in containers. Etherpad is a real-time collaborative text editor (like Google Docs) that supports multiple authors, version history, and export to various formats.
For Docker installation, see Docker.
Create a docker-compose.yml file with the following content:
version: '3.8'
services:
etherpad:
image: etherpad/etherpad:latest
container_name: etherpad
restart: unless-stopped
ports:
- "9001:9001"
volumes:
- ./data:/opt/etherpad-lite/var
environment:
- TITLE=My Etherpad Server
- PORT=9001
- TRUST_PROXY=true
- DB_TYPE=postgres
- DB_HOST=db
- DB_PORT=5432
- DB_NAME=etherpad
- DB_USER=etherpad
- DB_PASS=your-db-password
depends_on:
- db
db:
image: postgres:15
container_name: etherpad-db
restart: unless-stopped
environment:
- POSTGRES_USER=etherpad
- POSTGRES_PASSWORD=your-db-password
- POSTGRES_DB=etherpad
volumes:
- ./db-data:/var/lib/postgresql/data
Security Note: Replace your-db-password with a strong database password before deployment.
docker compose up -d
Wait for the containers to start (approximately 1-2 minutes for first run).
Open http://YOUR-SERVER:9001 to access Etherpad.
You can create new pads by navigating to http://YOUR-SERVER:9001/p/your-pad-name.
For production deployments:
Install the ep_hash_auth plugin for password protection:
environment:
- REQUIRE_AUTHENTICATION=true
- SESSION_KEY=your-session-key
- TRUST_PROXY=true
For quick testing without a database container:
services:
etherpad:
image: etherpad/etherpad:latest
ports:
- "9001:9001"
volumes:
- ./data:/opt/etherpad-lite/var
environment:
- DB_TYPE=sqlite
Note: SQLite is only recommended for development/testing. Use PostgreSQL or MySQL for production.
See Configuration and Security for production hardening.
Any questions?
Feel free to contact us. Find all contact information on our contact page.