Operations grimoire/Etherpad

From Nasqueron Agora

Shared between Nasqueron and Wolfplex

The same Etherpad installation is served at two domains:


The easiest way is to spin a new container.

You can also upgrade code in the live container, updating Git code then restarting Node.

Procedure A - upgrade container

First, pull new image and remove old container on Equatower:

$ docker pull nasqueron/etherpad
$ docker stop pad
$ docker rm pad
$ rm /srv/etherpad/.ok*

Then, on the Salt master, spin the new container:

$ cd /opt/salt/nasqueron-operations
$ salt equatower state.apply roles/paas-docker/containers/etherpad

If something weird happens after the update:

  • if you forget to remove /srv/etherpad/.ok-plugins, plugins won't be reinstalled
  • if you forget to remove /srv/etherpad/.ok-apikey, you'll get an API key issue (see below)
  • if you forget to remove /srv/etherpad/.ok-abiword, abiword won't be reinstalled

To use `rm /srv/etherpad/.ok*` on Equatower and then repplay the roles/paas-docker/containers/etherpad state works to fix the situation, as those three steps can be done when the container is live.

Procedure B - upgrade code

$ docker exec -it pad bash
$ git pull

Updating 2e81b39..45266f9

$ logout
$ docker restart pad 
$ docker logs pad 

[2016-08-25 00:40:24.711] [INFO] console - Your Etherpad version is 1.6.0 (45266f9)

Check the two versions match.

Note most recent code lives in the develop branch, not the master one.

Launch container


Source script available at https://devcentral.nasqueron.org/P210.

Maintenance tasks

Delete a pad

As no admin dashboard plugin is installed, there are two methods to delete a pad:

In the past, the few delete pad requests occurred for privacy reasons. Privacy is an acceptable justification to delete a pad.


There are scripts to delete a pad or to repair a corrupted pad.

Those are documented at https://github.com/ether/etherpad-lite/wiki/Getting-to-know-the-tools-in-bin

Past known issues


When a copy/paste was done, server could crash.

This has been fixed by switching database to utf8mb4_bin:

ALTER DATABASE `etherpad` CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
ALTER TABLE `etherpad.store` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

Missing plugins

The installation requires two plugins, provided as npm packages:

  • ep_ether-o-meter
  • ep_author_neat

We now install them in run-pad:

PLUGINS="ep_ether-o-meter ep_author_neat"

for plugin in $PLUGINS; do
        docker exec $INSTANCE npm install $plugin

API key issue

http://www.wolfplex.be/pad/ could be empty. When that occurs, the API key on this site diverges from ours.

They store their API on Ysul at /var/wwwroot/wolfplex.be/.dat/secrets-api.json.

Normally, this is now handled by the following line from run-pad script: docker cp /data/etherpad/APIKEY.txt $INSTANCE:opt/etherpad-lite/APIKEY.txt

Vault secrets migration.

This service have secrets. They should be properly migrated in Vault.