Skip to content

ether/etherpad-go

Repository files navigation

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

Requirements to get started

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

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages