EtherCalc
EtherCalc is a web spreadsheet based on node-js and redis. People can edit the same document at the same time. Everybody’s changes are instantly reflected on all screens. Work together on inventories, survey forms, list management, brainstorming sessions and more!
Note
For this guide you should be familiar with the basic concepts of
License
EtherCalc is distributed under different licenses, including Common Public Attribution License (Socialtext Inc.), Apache License 2.0 (SheetJS) and MIT License.
Prerequisites
We’re using Node.js in the stable version 20:
[isabell@stardust ~]$ uberspace tools version show node
Using 'Node.js' version: '20'
[isabell@stardust ~]$
Your URL needs to be setup:
[isabell@stardust ~]$ uberspace web domain list
isabell.uber.space
[isabell@stardust ~]$
We’ll also need Redis, so follow the Redis guide and come back when it’s running.
Installation
Install node module
Create a directory, cd
into it and install the node module using the provided node packet manager npm:
[isabell@stardust ~]$ mkdir ethercalc
[isabell@stardust ~]$ cd ethercalc
[isabell@stardust ethercalc]$ npm install ethercalc
[isabell@stardust ethercalc]$
Warning
Make sure that you installed and configured Redis as described in the guide before, otherwise EtherCalc will crash immediately.
Fixing Path Issue
Note
At the time of creating this guide there is an issue of EtherCalc trying to access the Nodemule Socialcalc in an outdated directory. You can skip this step, but if you ran into issues, set the following symlink to fix it:
[isabell@stardust ~]$ ln -s ~/ethercalc/node_modules/ ~/ethercalc/node_modules/ethercalc/node_modules
[isabell@stardust ~]$
Configuration
Setup web backend
Note
EtherCalc is running on port 8000.
To make the application accessible from the outside, configure a web backend:
[isabell@stardust ~]$ uberspace web backend set / --http --port <port>
Set backend for / to port <port>; please make sure something is listening!
You can always check the status of your backend using "uberspace web backend list".
[isabell@stardust ~]$
Setup daemon
Use your favourite editor to create ~/etc/services.d/ethercalc.ini
with the following content:
Note
EtherCalc tries to connect to Redis via TCP/IP, which will accepts connections on both TCP/IP and UNIX socket. If you configured redis by following the guide it is currently configured for UNIX socket only as this is also the more stylish, secure and faster version. So by now the connection between EtherCalc and Redis won’t be established.
Adding the environment variable REDIS_SOCKPATH
pointing to our the unix-socket to the supervisord
-config forces EtherCalc to connect to Redis through the UNIX socket.
[program:ethercalc]
command=%(ENV_HOME)s/ethercalc/node_modules/ethercalc/bin/ethercalc
environment=NODE_ENV="production",REDIS_SOCKPATH="%(ENV_HOME)s/.redis/sock"
autorestart=true
After creating the configuration, tell supervisord to refresh its configuration and start the service:
[isabell@stardust ~]$ supervisorctl reread
SERVICE: available
[isabell@stardust ~]$ supervisorctl update
SERVICE: added process group
[isabell@stardust ~]$ supervisorctl status
SERVICE RUNNING pid 26020, uptime 0:03:14
[isabell@stardust ~]$
If it’s not in state RUNNING, check your configuration.
Finishing installation
You’re done. Point your Browser to your installation URL https://isabell.uber.space
and
start collaborating in your shiny new EtherCalc!
To get started, create a new Spreadsheet by visiting the URL https://isabell.uber.space/_new
.
Update
Note
Check the update feed regularly to stay informed about the newest version.
To get the latest version of EtherCalc you can use the npm
package manager:
[isabell@stardust ~]$ cd ethercalc
[isabell@stardust ethercalc]$ npm update ethercalc
[isabell@stardust ethercalc]$
After creating the configuration, tell supervisord to refresh its configuration and start the service:
[isabell@stardust ~]$ supervisorctl reread
SERVICE: available
[isabell@stardust ~]$ supervisorctl update
SERVICE: added process group
[isabell@stardust ~]$ supervisorctl status
SERVICE RUNNING pid 26020, uptime 0:03:14
[isabell@stardust ~]$
Restart your supervisorctl afterwards. If it’s not in state RUNNING, check your configuration.
It might take a few minutes before your EtherCalc comes back online because npm
re-checks and installs dependencies. You can check the service’s log file using supervisorctl tail -f ethercalc
.
Tested with EtherCalc 0.20201228.1, Uberspace 7.15.6
Written by: Achim | pxlfrk <hallo@pxlfrk.de>