etherpad-go

command module
v0.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 26, 2026 License: Apache-2.0 Imports: 23 Imported by: 0

README

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.

Demo Etherpad Animated Jif

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
  1. Clone the repository

    git clone https://github.com/ether/etherpad-go.git
     cd etherpad-go
    
  2. Create the ui:

    cd ui
    pnpm install
    cd ../admin
    pnpm install
    node build.js
    
  3. Build the Go server:

    go install github.com/a-h/templ/cmd/templ@latest
    templ generate
    go build -o etherpad-go ./main.go
    
  4. Copy the binary where you want to run it

  5. For customization and configuration, copy the settings.json.template to settings.json and edit it to your needs.

  6. Run the server:

    ./etherpad-go
    
  7. 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
  1. Build the Docker image:

    docker build -t etherpad-go .
    
  2. 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

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
admin
assets
admin
templ: version: v0.3.960
templ: version: v0.3.960
export
templ: version: v0.3.960
templ: version: v0.3.960
login
templ: version: v0.3.960
templ: version: v0.3.960
pad
templ: version: v0.3.960
templ: version: v0.3.960
timeslider
templ: version: v0.3.960
templ: version: v0.3.960
welcome
templ: version: v0.3.960
templ: version: v0.3.960
Package docs Code generated by swaggo/swag.
Package docs Code generated by swaggo/swag.
lib
api
cli
db
io
pad
ws

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL