Etherpad-Go: A real-time collaborative editor for the web
Etherpad-Go is a performance focused 1 to 1 rewrite of Etherpad-Lite in Go. The old implementation was written in NodeJS and was still in CommonJS.
A new implementation in Go allows us to take advantage of Go's concurrency model, static typing, and performance optimizations.

Etherpad is a real-time collaborative editor scalable to thousands of
simultaneous real time users. It provides full
data export
Config
All the configuration already documents in Etherpad-Go itself. You can just run
./etherpad-go --help
to find root level options. The sublevel commands e.g. like ./etherpad-go config also have their own help pages.
Requirements to run Etherpad-Go
- For a blank app. Just download the binary for your platform from the releases page and run it. It uses an in memory database which should be more than enough. The base path is
var/etherpad.db but again all the defaults are also shown with ./etherpad-go config show or for a particular config ./etherpad-go config get <key>.
Requirements to get started (only for building from source)
Installation
-
Clone the repository
git clone https://github.com/ether/etherpad-go.git
cd etherpad-go
-
Create the ui:
cd ui
pnpm install
cd ../admin
pnpm install
node build.js
-
Build the Go server:
go install github.com/a-h/templ/cmd/templ@latest
templ generate
go build -o etherpad-go ./main.go
-
Copy the binary where you want to run it
-
For customization and configuration, copy the settings.json.template to settings.json and edit it to your needs.
-
Run the server:
./etherpad-go
-
Etherpad should start within less than a second. Open your browser and navigate to http://localhost:9001 to access the Etherpad interface.
Docker
You can also run Etherpad-Go using Docker. Here's how to do it:
Build it your own
-
Build the Docker image:
docker build -t etherpad-go .
-
Use a prebuilt one which is available at GitHub Container Registry
Starting the Docker Container
You can start the Docker container with a postgres database with docker compose:
docker compose up -d
This will start both the Etherpad-Go server and a Postgres database. The server will be accessible at http://localhost:9001.
You can find the docker compose file in docker-compose.yml
Importing things to note
You can import existing pads from Etherpad-Lite into Etherpad-Go. You can do this with the migrate command e.g.
migration 192.28.91.4:5432 --type postgres --username myOldEtherpadDBUser --database myoldEtherpadDB
This will connect to the old Etherpad-Lite database and migrate all pads to the new Etherpad-Go database. The new Etherpad database is already specified as expected in the settings.json file or environment variables.
Plugins
Etherpad-Go supports plugins, but the plugin system is not yet fully fleshed out. Currently, only a few plugins are supported. You can find the list of supported plugins in the plugins directory.
You can activate them in the settings.json file or via environment variables.
E.g.
{
"plugins": {
"ep_align":{ "enabled": true }
}
}
or ETHERPAD_PLUGINS_EP_ALIGN_ENABLED=true