HedgeDoc?
HackMDのオープンソース版という位置付けのプロジェクトのようです。
元々はCodiMDと呼ばれるプロジェクトでしたが、名前が変わったようです
このHedgeDocですが現在2.x系の開発が活発に進んでいます。
が、まだリリースはされておらず、利用方法のドキュメントなどは1.x系のものが充実しています。
新しいもの好きの自分は、ちょっと最新版のHedgeDocも試してみたいということで、簡単に試す方法を調べてみました
安定版を使いたい
HedgeDocの安定版であるv1.9.4を同じようにdocker-composeで試す方法は公式ドキュメントによくまとまっています
docker-composeを使ったデプロイ
最新版である2.x系も安定版と同じようにdocker-composeで動かせると楽なのに・・ということでその方法を調べました。
HedgeDocの2.x系はフロントエンドとバックエンドが分離されており、それぞれを連携させて動作させる必要があります。
こういう時に便利なのがdocker-composeです。
ということでdocker-compose.ymlを用意します
services:
proxy:
image: caddy
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
ports:
- "8080:8080"
links:
- frontend
- backend
frontend:
image: ghcr.io/hedgedoc/react-client:main
environment:
- HD_EDITOR_BASE_URL=http://localhost:8080/
backend:
image: ghcr.io/hedgedoc/hedgedoc:develop
environment:
- HD_AUTH_LOCAL_ENABLE_LOGIN=true
- HD_AUTH_LOCAL_ENABLE_REGISTER=true
- HD_DOMAIN=http://localhost:8080
- HD_MEDIA_BACKEND=filesystem
- HD_MEDIA_BACKEND_FILESYSTEM_UPLOAD_PATH=uploads/
- HD_DATABASE_TYPE=sqlite
- HD_DATABASE_NAME=./hedgedoc.sqlite
- HD_SESSION_SECRET=hogehoge
フロントエンドとバックエンドはURLのパスによって呼び分ける必要があります。
ここでCaddyというリバースプロキシを使ってこれを実現しています。
Caddyの設定ファイルは以下です。
:8080
log {
output stdout
}
reverse_proxy /realtime http://backend:3000
reverse_proxy /api/* http://backend:3000
reverse_proxy /public/* http://backend:3000
reverse_proxy /* http://frontend:3001
これら2つのファイルを用意してdocker-compose up
を実行すると http://localhost:8080/
でHedgeDocの最新版を試すことができます。
まとめ
リアルタイム共同編集でMarkDownを扱うことができるWebアプリケーションとしてHackMDや、そのオープンソース版であるHedgeDocは非常に良いものです。
docker-composeで簡単に試せるので気になる方は是非動かしてみてください。
参考
https://github.com/hedgedoc/react-client/tree/main/dev-reverse-proxy にDockerを使わずローカル環境でHedgeDocの最新版を動かす方法が書かれていたので、この記事ではこれをdocker-composeを使う方法に変換しただけです。