HedgeDoc を Docker compose で動かす(SSL + リバースプロキシ)

概要

HedgeDoc というマークダウンでメモを書けるサービスが便利そうだったので自分用に立ち上げてみた。
サクッと閲覧のみで公開できるのはすごく便利そうに思える。

  • フロントエンドの nginx をリバースプロキシとして使っているので、そこからプロキシされるように設定。
  • サブディレクトリ /hedgedoc/ で運用。
  • 外部とは SSL でやり取りさせる。

HedgeDoc 提供コンテナ群

HedgeDoc を提供するためのコンテナ群はこのようにした。
shared はフロントエンドの nginx から hedgedoc:3000 でアクセスできるようにするために接続している。

version: '3.1'

services:

  database:
    image: postgres:13.4-alpine
    environment:
      - POSTGRES_USER=hedgedoc
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=hedgedoc
    volumes:
      - ./database:/var/lib/postgresql/data
    restart: always

  app:
    container_name: hedgedoc
    image: quay.io/hedgedoc/hedgedoc:latest
    environment:
      - CMD_DB_URL=postgres://hedgedoc:password@database:5432/hedgedoc
      - CMD_DOMAIN=www8281uo.sakura.ne.jp
      - CMD_HOST=hedgedoc
      - CMD_PORT=3000
      - CMD_URL_PATH=hedgedoc
      - CMD_URL_ADDPORT=false
      - CMD_ALLOW_ANONYMOUS=false
      - CMD_ALLOW_EMAIL_REGISTER=false
      - CMD_PROTOCOL_USESSL=true
    volumes:
      - ./uploads:/hedgedoc/public/uploads
    restart: always
    depends_on:
      - database

networks:
  default:
    external:
      name: shared

リバースプロキシの設定

リバースプロキシにしている nginx の設定はこんな感じ。
socket.io の項目をどうしたらいいか少し難しかったけど以下の内容でうまくいくようだ。

location /hedgedoc/ {
    proxy_set_header Host \$host;
    proxy_set_header X-Real-IP \$remote_addr;
    #proxy_set_header X-Forwarded-Host \$host;
    #proxy_set_header X-Forwarded-Server \$host;
    proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto \$scheme;
    proxy_pass http://hedgedoc:3000/;
}
location /hedgedoc/socket.io/ {
    proxy_set_header Host \$host;
    proxy_set_header X-Real-IP \$remote_addr;
    #proxy_set_header X-Forwarded-Host \$host;
    #proxy_set_header X-Forwarded-Server \$host;
    proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto \$scheme;
    proxy_set_header Upgrade \$http_upgrade;
    proxy_set_header Connection \$connection_upgrade;
    proxy_pass http://hedgedoc:3000/socket.io/;
}

参考サイト

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です