Skip to content

ether/etherpad-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

612 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

Docker Compose (recommended)

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.

About

Etherpad: A modern really-real-time collaborative document editor. Now written in Go!

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors