etherpad-go

command module
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Apr 6, 2026 License: Apache-2.0 Imports: 11 Imported by: 0

README

Etherpad-Go

A fast, modern, real-time collaborative editor written in Go

CI Go Version License Release Docker Image

Etherpad-Go is a performance-focused, 1:1 rewrite of Etherpad-Lite in Go. The original implementation was written in Node.js (CommonJS). Rewriting Etherpad in Go allows us to leverage Go’s concurrency model, static typing, fast startup times, and lower memory usage.

Etherpad-Go Logo

Etherpad in action

Etherpad is a real-time collaborative editor scalable to thousands of simultaneous users and supports full data export.


Quick Start (Binary)

The easiest way to run Etherpad-Go:

  1. Download the binary for your platform from the
    Releases page
  2. Run it:
./etherpad-go

Etherpad-Go starts in under a second and uses an in-memory database by default, which is sufficient for many use cases.

Open your browser at:
http://localhost:9001


Configuration

All configuration options are self-documented in the binary.

Show global options:

./etherpad-go --help

Show all configuration values:

./etherpad-go config show

Get a specific configuration value:

./etherpad-go config get <key>

For customization, copy:

settings.json.template → settings.json

and adjust it to your needs.


Docker

You can run Etherpad-Go using Docker.

Start Etherpad-Go with PostgreSQL:

docker compose up -d

Etherpad will be available at:
http://localhost:9001

The compose file can be found here:
docker-compose.yml

Build your own image
docker build -t etherpad-go .
Prebuilt images

Prebuilt images are available via GitHub Container Registry:

ghcr.io/ether/etherpad-go:<version>

Building from Source

Requirements
Installation
  1. Clone the repository:

    git clone https://github.com/ether/etherpad-go.git
    cd etherpad-go
    
  2. Build etherpad-go:

    go run main.go prepare
    
  3. Run the server. The server path is printed after a successful build:

    ./<your-built-binary>
    

Etherpad should start in less than a second.


Migration from Etherpad-Lite

You can migrate existing pads from Etherpad-Lite using the migration command:

migration 192.28.91.4:5432 \
  --type postgres \
  --username myOldEtherpadDBUser \
  --database myoldEtherpadDB

This connects to the old Etherpad-Lite database and migrates all pads to the Etherpad-Go database configured in settings.json or via environment variables.


Plugins

Etherpad-Go ships with 15 built-in plugins ported from the original Etherpad ecosystem. All plugins are disabled by default and can be enabled individually.

Available Plugins
Plugin Description
ep_align Text alignment (left, center, right, justify)
ep_author_hover Show author name on text hover
ep_chat_log_join_leave Log user join/leave events in the chat
ep_clear_formatting Remove all formatting from selected text
ep_cursortrace Show other users' cursor positions in real time
ep_font_color Change text color (6 colors)
ep_font_family Change font family (10 fonts)
ep_font_size Change font size (15 sizes from 8px to 60px)
ep_heading Heading levels (h1-h4)
ep_markdown Markdown editing support
ep_print Print the pad
ep_rss RSS feed for pad content
ep_spellcheck Browser spell checking
ep_table_of_contents Sidebar table of contents from headings
Enabling Plugins

Via settings.json:

{
  "plugins": {
    "ep_align": { "enabled": true },
    "ep_cursortrace": { "enabled": true },
    "ep_font_color": { "enabled": true }
  }
}

Or via environment variables:

ETHERPAD_PLUGINS_EP_ALIGN_ENABLED=true
ETHERPAD_PLUGINS_EP_CURSORTRACE_ENABLED=true

Status

Etherpad-Go is under active development. Feedback, issues, and contributions are welcome.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

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