DockerでEtherCalcを動かす
Dockerを使ってEtherCalcというオンラインスプレッドシートを動かしてみる。要するにオンラインのExcelであり、Googleスプレッドシートを使えばいいじゃないかと思うかもしれないが、Googleにスパイされるのが嫌なので、オープンソースのオンラインスプレッドシートを使うことにする。
まともに使ったことが無いので、Googleスプレッドシートもそうなのかわからないのだが、EtherCalcの面白いところは、複数のユーザが一つのスプレッドシートを編集していた場合、互いに相手の編集がリアルタイムで見れるところである。だから、相手がどこを編集しているのかわかる。
これによって、通常のデスクトップのExcelのように、互いの上書きによっていつのまにかデータが消えるようなことはない。リモートで複数の人間が一つのスプレッドシートファイルをいじっていれば、これはありうることだ。実際に経験して困ったことはないのだが。
今回もDockerを使って簡単にインストールし、Traefikを使って簡単にSSL化する。
しかし、困ったことにEtherCalcは、ユーザ認証を全く考えていないようなので、BASIC認証を付加して、パスワードを知っている者だけが使えるようにする。
ちなみに、このEtherCalcの開発者の何とか言う人は、現在台湾のデジタル大臣だそうな。もともと名うてのハッカーだったらしいのだが、物のわかっている人間をデジタル大臣にするところは、もはや日本と台湾のレベルの違いがあまりに大きすぎるというところだろう。
docker-compose.yml
docker-compose.ymlは以下
version: '3'
services:
ethercalc:
image: audreyt/ethercalc
# Traefikに任せるのでポートオープンしない
# ports:
# - "80:8000"
environment:
REDIS_PORT_6379_TCP_ADDR: redis
REDIS_PORT_6379_TCP_PORT: 6379
links:
- redis:redis
restart: always
labels:
- "traefik.enable=true"
- "traefik.http.routers.ec-https.rule=Host(`ec.example.com`)"
- "traefik.http.routers.ec-https.entrypoints=websecure"
- "traefik.http.routers.ec-https.tls=true"
- "traefik.http.routers.ec-https.tls.certResolver=myresolver"
- "traefik.http.middlewares.ec-https.redirectscheme.scheme=https"
# EtherCalcのhttpポート番号は8000なので、それをTraefikに教えてやるため
- "traefik.http.services.ec-https.loadbalancer.server.port=8000"
# basic認証の文字列は以下のようにして作成する
# echo $(htpasswd -nb user password) | sed -e s/\\$/\\$\\$/g
- "traefik.http.routers.ec-https.middlewares=test-auth"
- "traefik.http.middlewares.test-auth.basicauth.users=user:$$apr1$$kyJ21Ke1$$************"
redis:
image: redis:latest
volumes:
- ./redis:/data
command: redis-server --appendonly yes
restart: always
networks:
default:
external:
# traefikがこちら側にアクセスするために、共通ネットワークを使う
name: traefik-network
これだけだ。後は、redisデータベースの定期的なバックアップでも考えてやればいいだろう。