LIVEReading: Run Your Own Real-Time Collaborative Editor in MinutesTotal time: 8 minSteps: 6Worked first time: 82% LIVEReading: Run Your Own Real-Time Collaborative Editor in MinutesTotal time: 8 minSteps: 6Worked first time: 82%
CBW
Run Your Own Real-Time Collaborative Editor in Minutes
Easygithub.com/ether/etherpad2026-07-02

Run Your Own Real-Time Collaborative Editor in Minutes

Etherpad gives you a self-hosted, real-time collaborative document editor with full revision history and author tracking. No cloud accounts, no telemetry, your data stays on your machine.

// Build stats

  • Total time8 min
  • Number of steps6
  • DifficultyEasy
  • Worked first time82%
// Before you start

What you need

  • A Mac, Linux machine, or Windows PC with WSL or PowerShell
  • Node.js version 24 or higher installed (nodejs.org)
  • Git installed (git-scm.com)
  • pnpm installed: run 'npm install -g pnpm' in a terminal
  • A terminal / command prompt you can type into
01
Step 1 of 6

Run the one-line installer

3 min

This single command downloads Etherpad, installs all its dependencies, and builds the frontend automatically. It clones the project into a new folder called 'etherpad-lite' in whatever directory your terminal is currently in. Pick the command that matches your operating system.

Terminal · mac
$ # macOS / Linux / WSL:
$ curl -fsSL https://raw.githubusercontent.com/ether/etherpad/master/bin/installer.sh | sh
$
$ # Windows PowerShell:
$ irm https://raw.githubusercontent.com/ether/etherpad/master/bin/installer.ps1 | iex
What you should see
A stream of install messages ending with something like 'Installation complete' or 'Build finished'. No red error lines.
This might happen

Command fails immediately with 'node: command not found' or 'pnpm: command not found'

Install Node.js 24+ from nodejs.org first, then run 'npm install -g pnpm' in your terminal, then retry the installer.

02
Step 2 of 6

Start the Etherpad server

1 min

Move into the newly created folder and start Etherpad in production mode. This launches the web server that your browser will connect to. Keep this terminal window open — closing it stops the server.

Terminal · mac
$ cd etherpad-lite && pnpm run prod
What you should see
Lines like 'Etherpad is running' and 'You can access your Etherpad instance at http://localhost:9001'. The terminal stays active (it does not return to a prompt).
This might happen

Port 9001 is already in use — you see an 'EADDRINUSE' error

Another app is using that port. Stop that app, or open 'settings.json' inside the etherpad-lite folder and change the 'port' value to something like 9002, then restart.

03
Step 3 of 6

Open Etherpad in your browser

1 min

With the server running, open your web browser and go to the address below. You will land on the Etherpad home page where you can create a new document pad instantly.

Terminal · mac
$ http://localhost:9001
What you should see
The Etherpad home page loads with a text field and a 'New Pad' button.
04
Step 4 of 6

Create a pad and invite a collaborator

2 min

Click 'New Pad' to create a document. Etherpad gives it a unique URL. Copy that URL from your browser's address bar and send it to anyone on the same network. They open the link, pick a display name, and you will both see each other's keystrokes in real time, each highlighted in a different colour.

Terminal · mac
$ # No command needed — use the browser.
$ # Copy the pad URL from the address bar, e.g.:
$ # http://localhost:9001/p/your-pad-id
What you should see
Both users see the same document. Each person's text appears in a distinct colour. The author list on the right updates live.
This might happen

A collaborator on a different machine cannot reach your pad

By default Etherpad only listens on localhost. To share across a network, open 'settings.json' in the etherpad-lite folder, find '"ip": "127.0.0.1"' and change it to '"ip": "0.0.0.0"', then restart. Make sure your firewall allows port 9001.

05
Step 5 of 6

Explore revision history with the timeslider

1 min

Every change is saved automatically. Click the clock icon in the toolbar (or add '/timeslider' to the pad URL) to open the timeslider. Drag the slider to scrub through the entire edit history character by character. This is useful for accountability, editorial review, or just curiosity.

Terminal · mac
$ # In your browser, go to:
$ http://localhost:9001/p/your-pad-id/timeslider
What you should see
A timeline view of the document opens. Dragging the slider replays every edit in order, with author colours intact.
06
Step 6 of 6

(Optional) Run with Docker Compose for a persistent setup

5 min

The quick installer stores data in a simple local file. For a more durable setup — one that survives reboots and stores data in a real database — use Docker Compose. You need Docker Desktop installed. Save the block below as a file named 'docker-compose.yml' in an empty folder, then run the start command. Data is stored in named Docker volumes so it persists across restarts.

Terminal · mac
$ # 1. Save this as docker-compose.yml in a new folder, then run:
$ docker compose up -d
$
$ # Full docker-compose.yml content to paste into the file:
$ # services:
$ # app:
$ # user: "0:0"
$ # image: etherpad/etherpad:latest
$ # tty: true
$ # stdin_open: true
$ # volumes:
$ # - plugins:/opt/etherpad-lite/src/plugin_packages
$ # - etherpad-var:/opt/etherpad-lite/var
$ # depends_on:
$ # - postgres
$ # environment:
$ # NODE_ENV: production
$ # ADMIN_PASSWORD: admin
$ # DB_HOST: postgres
$ # DB_NAME: etherpad
$ # DB_PASS: admin
$ # DB_PORT: 5432
$ # DB_TYPE: postgres
$ # DB_USER: admin
$ # DEFAULT_PAD_TEXT: " "
$ # TRUST_PROXY: "true"
$ # restart: always
$ # ports:
$ # - "9001:9001"
$ # postgres:
$ # image: postgres:15-alpine
$ # environment:
$ # POSTGRES_DB: etherpad
$ # POSTGRES_PASSWORD: admin
$ # POSTGRES_USER: admin
$ # PGDATA: /var/lib/postgresql/data/pgdata
$ # restart: always
$ # volumes:
$ # - postgres_data:/var/lib/postgresql/data
$ # volumes:
$ # postgres_data:
$ # plugins:
$ # etherpad-var:
What you should see
Docker pulls the images and starts two containers (app and postgres). Running 'docker compose ps' shows both as 'running'. Etherpad is available at http://localhost:9001.
This might happen

Docker Compose starts but the app container exits immediately

Run 'docker compose logs app' to read the error. The most common cause is the postgres container not being ready yet — wait 10 seconds and run 'docker compose restart app'.

// Status

cooked. baked. worked.

A fully working Etherpad server running on your own machine at http://localhost:9001. You can create unlimited collaborative documents, see live author-coloured edits, and replay the full revision history of any pad.

// the honest bit

The honest part

The quick installer is genuinely easy for a single machine. Sharing pads with people outside your local network requires either changing the listen IP and opening a firewall port, or putting Etherpad behind a reverse proxy (nginx/Caddy) — that part involves config file editing and is not covered here. The default admin password in the Docker Compose example is 'admin'; change it before exposing the instance to the internet. Plugin installation is done through the admin panel at /admin but some plugins require a server restart to take effect.