HackMD(https://hackmd.io/) は Webブラウザで動く Markdown エディタです。
HackMD の素晴しい特徴として複数のクライアントによるリアルタイム同時編集機能があります。1人でも Web ブラウザを複数起動させれば試せるのでぜひ実際に試してみていただきたいのですが、複数の編集がリアルタイムに画面に反映されるのは今までにない体験で、かなり楽しいです。使いどころを問われると答えに窮しますが、それはこれから探っていくとして……。
この HackMD の OSS として CodiMD があります。CodiMD は公式が docker-compose.yaml を提供してくれているので自分でも簡単に環境構築を行えます。
この際、一つだけ落し穴があって注意する必要があります。HackMD は編集画面上に画像をそのままペーストできるのですが、その時の画像の保存先がデフォルトで imgur なので Ctrl + V した瞬間に全世界に公開されてしまうのです。これはうっかり大惨事を引き起しかねません。
docker-compose.yaml を数行変更するだけでこれを回避できるので、今回はその手順で環境を構築してみます。普段は Debian なのですが、今回は使っているサーバの都合で Ubuntu 18.04 LTS です。
ubuntu@dev:~$ cat /etc/os-release | grep VERSION= VERSION="18.04.2 LTS (Bionic Beaver)"
ubuntu@dev:~$ git clone https://github.com/hackmdio/docker-hackmd.git Cloning into 'docker-hackmd'… remote: Enumerating objects: 731, done. remote: Total 731 (delta 0), reused 0 (delta 0), pack-reused 731 Receiving objects: 100% (731/731), 222.28 KiB | 702.00 KiB/s, done. Resolving deltas: 100% (343/343), done.
docker-hackmd/docker-compose.yml を編集します。app の environment 下に CMD_IMAGE_UPLOAD_TYPE と CMD_DOMIN を追加します。CMD_IMAGE_UPLOAD_TYPE の指定だけではエラーを吐くらしいので CMD_DOMAIN も指定します。
もう一つ、自分の場合は CMD_URL_ADDPORT = false を追加しました。これを入れないとすべての URL に :3000 が付加されてしまい、サイトの表示が崩れてしまいました。直接ポートを指定して使う場合は問題になりませんが、今回は Nginx によるリバースプロキシを経由してサブドメインで運用する予定なのでポートの指定は不要でした。
- HMD_DB_URL=postgres://hackmd:hackmdpass@database:5432/hackmd - CMD_IMAGE_UPLOAD_TYPE = filesystem - CMD_DOMAIN = hmd.kuratsuki.net - CMD_URL_ADDPORT = false ports:
編集が完了したら docker-compose up して HackMD を起動します。
ubuntu@dev:~/docker-hackmd$ sudo docker-compose up -d [sudo] password for ubuntu: Pulling database (postgres:9.6-alpine)… 9.6-alpine: Pulling from library/postgres bdf0201b3a05: Pull complete 365f27dc05d7: Pull complete bf541d40dfbc: Pull complete 2042c4eafdd8: Pull complete 925cd0367a3b: Pull complete 47c141dded4c: Pull complete 751c0956cd65: Pull complete a9a85eacf5bb: Pull complete ba84e9ab01c0: Pull complete Pulling app (hackmdio/hackmd:1.2.0)… 1.2.0: Pulling from hackmdio/hackmd f189db1b88b3: Pull complete 3d06cf2f1b5e: Pull complete 687ebdda822c: Pull complete 99119ca3f34e: Pull complete e771d6006054: Pull complete b0cc28d0be2c: Pull complete 7225c154ac40: Pull complete 7659da3c5093: Pull complete 8138c3c27b70: Pull complete 3ac8c3e5ade3: Pull complete b2c8cd9cc032: Pull complete 53f21b305291: Pull complete bb60fd15638c: Pull complete 6b6e9067f162: Pull complete Creating docker-hackmd_database_1 … done Creating docker-hackmd_app_1 … done
起動したら http://CMD_DOMAINで指定した名前またはIPアドレス:3000/ を開きましょう。ここで CMD_DOMAIN とは異なる名前でアクセスすると画面が思いっきり崩れます。CSS を相対 URL 指定ではなく絶対 URL 指定しているようです。
docker-compose up は初回だけで、2回目以降は docker-compose start/stop を使いましょう。環境を再構築したいときは docker-compose rm で一旦削除するだけです。docker-compose は便利ですね。
参考
- https://github.com/hackmdio/codimd/blob/master/README.md