Skip to content

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

License

Notifications You must be signed in to change notification settings

ether/etherpad-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

559 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 supports plugins, but the plugin system is still evolving.

Supported plugins can be found in the plugins directory.

Enable plugins via settings.json:

{
  "plugins": {
    "ep_align": { "enabled": true }
  }
}

Or via environment variables:

ETHERPAD_PLUGINS_EP_ALIGN_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 3

  •  
  •  
  •