【docker】outline wikiでストレージにGCSを利用する
概要
outline wikiでアップロードファイル(添付ファイル)の格納先にGCSを利用する方法をまとめます。
公式ではAWS、minioがサポートされています。
今回は公式サポートではないGCSを、S3互換エンドポイントで利用します。
outlineとは
ossのナレッジベースツールです。
使用感はnotionのドキュメント機能に特化した感じです。
GCPの設定
GCSバケットを用意
まずはGCSで任意のバケットを作成します。
bucketの権限を編集
作成したらbucketの「アクセス権の編集」を行います。
CORSによるアクセスを実施するため、「きめ細かい管理」でACLを有効にしてください。
bucketにCORSを設定
次にbacketにCORSを設定します。
コンソールからはできないのでgcloud cliで実施します。
CORSファイル内容
originはGCSにアクセスするoutlineのドメインを記載します。
今回はローカルで利用する場合の記載を例とします。
[
{
"origin": ["http://localhost:3000"],
"responseHeader": ["*"],
"method": ["PUT", "POST"],
"maxAgeSeconds": 3600
},
{
"origin": ["*"],
"responseHeader": [],
"method": ["GET"],
"maxAgeSeconds": 3600
}
]
CORS設定
以下のコマンドで設定できます。
gcloud storage buckets update gs://<bucket名> --cors-file=<CORSファイルへのパス>
設定状態は以下のコマンドで確認できます。
gcloud storage buckets describe gs://<bucket名> --format="default(cors_config)"
CORSの参考
HMACを用意
outlineからGCSへアクセスする際の認証に利用するHMACを用意します。
HMACとはハッシュ化された認証コードです。
GCPではユーザアカウント・サービスアカウントに対して発行できます。
今回はサービスアカウントを利用します。
利用するサービスアカウントにはあらかじめ「Storage オブジェクト ユーザー(roles/storage.objectUser)」のロールを割り当てています。
GCSの「相互運用性」タブから「サービスアカウントのキー作成」で作成できます。
設定の詳細は公式が一番わかりやすいので確認しつつ実施します。
outline wikiの設定
次にoutline側の設定を実施します。
設定ファイル
docker.envで、AWS/minio用の環境変数を以下のように設定します。
FILE_STORAGE=s3
AWS_S3_UPLOAD_BUCKET_URL=https://storage.googleapis.com
AWS_S3_FORCE_PATH_STYLE=true
AWS_S3_UPLOAD_BUCKET_NAME=<バケット名>
AWS_S3_ACL=private
AWS_S3_UPLOAD_MAX_SIZE=104857600
AWS_REGION=us
AWS_ACCESS_KEY_ID=<HMACキー>
AWS_SECRET_ACCESS_KEY=<HMACシークレット>
起動
あとはoutlineを起動すればGCSにファイル配置できるようになっています。
docker-compose up -d
参考:dockerでのoutline wiki構築
公式のdocker構築手順は以下です。
最後に
outline wiki自体のdockerでの構築についてはまた別の記事でまとめてみようと思います。
Discussion