OutlineをDockerでサクッと建てる

Posted on Nov 1, 2023

Outlineを建てる

本体はDockerで適当に建てられますが認証周りが地獄なのでセットアップ方法の備忘録も兼ねて記事にしときます

注意

Outlineは本来グループワーク用で、デフォルトの公開範囲がサーバーにアカウント登録した人間は誰でも見れてしまう範囲なので気をつけてください。 TailscaleやらVPN経由でしかアクセスできないようにするかCloudflare Accessを使うかして必ず限られた人しかアクセスできないようにしてください。

コンテナを生やす

以下2つのファイルを適当なディレクトリに生やします

docker-compose.yml
version: "3.2"
services:
  outline:
    image: docker.io/outlinewiki/outline:latest
    env_file: ./config.env
    network_mode: host
    restart: always
config.env
PORT=3020
FORCE_HTTPS=true
DATABASE_URL=postgres://USERNAME:PASSWD@HOST:PORT/DBNAME
REDIS_URL=redis://[適当なRedisサーバー]:6379
PGSSLMODE=disable
SECRET_KEY=[20文字以上のランダムな小文字と数字]
UTILS_SECRET=[20文字以上のランダムな小文字と数字 (SECRET_KEYとは別のやつ)]

URL=https://outline.example.com

# 画像使わないなら適当に入れとけばok
AWS_ACCESS_KEY_ID=オブジェクトストレージのアクセスキーのID
AWS_REGION=tokyo
AWS_SECRET_ACCESS_KEY=オブジェクトストレージのアクセスキー
AWS_S3_UPLOAD_BUCKET_URL=https://s3.example.com
AWS_S3_UPLOAD_BUCKET_NAME=outline
AWS_S3_UPLOAD_MAX_SIZE=26214400
AWS_S3_FORCE_PATH_STYLE=true
AWS_S3_ACL=private

# GitLab以外のOIDC使うなら適当に変える
OIDC_AUTH_URI=https://gitlab.com/oauth/authorize
OIDC_TOKEN_URI=https://gitlab.com/oauth/token
OIDC_USERINFO_URI=https://gitlab.com/oauth/userinfo
OIDC_DISPLAY_NAME=GitLab
OIDC_SCOPES=openid email

認証のプロパイダを用意する

OIDCのプロパイダを適当に用意して使います。ここではAutheliaとかを建てるのが面倒なのでGitLab.comのものを使います。

  1. GitLabの設定ページにアクセス
  2. “Add new Application” → ScopesのAPI・read_user ・openid ・emailを有効に + Callback URLはhttps://outline.example.com/auth/oidc.callbackに設定してトークン作成

config.envにOIDC周りの設定を追記

OIDC_USERNAME_CLAIM=[GitLabのユーザー名]
OIDC_CLIENT_ID=[さっき生成したトークンの Application ID ]
OIDC_CLIENT_SECRET=[さっき生成したシークレット]

Done

後はdocker compose up -dでなんとかなります