Autheliaをローカル環境で実行する
本記事は、Authelia をローカル環境で実行し、その操作手順や設定方法、発生し得るエラーとその解決策を記録した備忘録です。
とりあえず Authelia をローカルで実行してみたい方
環境と前提条件
Section titled “環境と前提条件”Authelia の動作環境、および設定ファイルの前提について整理します。
バージョン・設定ファイル
Section titled “バージョン・設定ファイル”- Authelia コンテナ
docker.io/authelia/authelia:latest
 - 設定ファイル
authelia/config/configuration.yamlcompose.yaml
 
Authelia の起動手順
Section titled “Authelia の起動手順”Authelia をローカル環境で起動するための手順を以下に記載します。
.├── authelia│   ├── config│   │   ├── configuration.yml│   │   └── users_database.yml # docker compose upで自動生成される│   └── secrets│       ├── JWT_SECRET│       ├── SESSION_SECRET│       └── STORAGE_ENCRYPTION_KEY├── compose.yaml└── README.md設定ファイルの準備
Section titled “設定ファイルの準備”以下のコードブロックは、Authelia の基本設定例です。
# config.template.yaml# https://github.com/authelia/authelia/blob/master/config.template.yml
log:  level: debug  format: json
session:  # 環境変数でAUTHELIA_SESSION_SECRET_FILEを設定しているためsecretは設定しない  # secret: 'DO_NOT_EDIT'  name: 'authelia_session'  same_site: 'lax'  inactivity: '5m'  expiration: '1h'  remember_me: '1M'  cookies:    - domain: '127.0.0.1'      authelia_url: 'https://127.0.0.1:9091'      name: 'authelia_session'      same_site: 'lax'      inactivity: '5m'      expiration: '1h'      remember_me: '1d'
authentication_backend:  file:    path: /config/users_database.yml
storage:  local:    path: /data/db.sqlite3
notifier:  filesystem:    filename: /data/notification.txt
access_control:  default_policy: one_factor次に、コンテナ起動用の compose.yaml の例です。
---services:  authelia:    container_name: 'authelia'    image: 'docker.io/authelia/authelia:latest'    restart: 'unless-stopped'    environment:      AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET_FILE: '/secrets/JWT_SECRET'      AUTHELIA_SESSION_SECRET_FILE: '/secrets/SESSION_SECRET'      AUTHELIA_STORAGE_ENCRYPTION_KEY_FILE: '/secrets/STORAGE_ENCRYPTION_KEY'    volumes:      - '${PWD}/authelia/config:/config'      - '${PWD}/authelia/secrets:/secrets'    ports:      - '9091:9091'シークレットファイルの生成
Section titled “シークレットファイルの生成”Authelia では CLI を利用して、セキュリティ上必要なランダムな英数字の文字列を生成できます。下記のコマンド例を参考にしてください。
$ docker run --rm authelia/authelia:latest authelia crypto rand --length 64 --charset alphanumericRandom Value: Gy....ghB引用: Generating a Random Alphanumeric String
Gy....ghBGy....ghBGy....ghBAuthelia の起動
Section titled “Authelia の起動”以下の手順で Authelia を起動します。
- Docker Compose によりコンテナを起動
 
docker compose up- 
Webブラウザで
http://127.0.0.1:9091にアクセス - 
初期ユーザー情報
- ユーザー名:
authelia - パスワード:
authelia 
 - ユーザー名:
 
※ コンテナ起動時に自動生成される users_database.yml により詳細を確認可能です。
users:  authelia:    disabled: false    displayname: "Test User"    password: "$argon2id$v=19$m=32768,t=1,p=8$eUhVT1dQa082YVk2VUhDMQ$E8QI4jHbUBt3EdsU1NFDu4Bq5jObKNx7nBKSn1EYQxk"  # Password is 'authelia'    email: authelia@authelia.com    groups:      - admins      - dev
Authelia の設定解説
Section titled “Authelia の設定解説”Authelia の各種設定項目と設定方法について整理します。
Authelia の環境変数には、先頭に AUTHELIA_ の prefix をつける必要があります。
例として、log.level は AUTHELIA_LOG_LEVEL=info で設定可能です。
log:  level: 'info'シークレット設定
Section titled “シークレット設定”Authelia ではシークレットの設定方法が以下の4通り存在します。
_FILEが付く環境変数で秘密ファイルを指定- file filter を使用する方法
 _FILE無しの環境変数で直接設定(4.30.0以降)configuration.yamlに直接記述
以下の文字が付いている設定項目は、環境変数名の後ろに _FILE の suffix をつけることで、secret file を参照します。
- key
 - secret
 - password
 - token
 - certificate_chain
 
例として、storage.encryption_key は AUTHELIA_STORAGE_ENCRYPTION_KEY_FILE で設定可能です。
storage:  encryption_key: "xxxxxxxxxx"AUTHELIA_STORAGE_ENCRYPTION_KEY_FILE="secretがあるファイルパス"ユーザーデータベース設定
Section titled “ユーザーデータベース設定”ユーザーのパスワードは、以下のコマンドで生成できます。
docker run --rm authelia/authelia:latest authelia crypto hash generate argon2 --password 'password'ストレージ設定
Section titled “ストレージ設定”ローカル環境では、SQLite3 を使用します。
- Environment variables - Authelia
 - Security Sensitive Values - Authelia
 - Why you shouldn’t use ENV variables for secret data
 
メモ・トラブルシューティング
Section titled “メモ・トラブルシューティング”実際に遭遇したエラー事例とそれぞれの原因および対策を以下にまとめます。
エラーと対策
Section titled “エラーと対策”シークレットエラー
Section titled “シークレットエラー”- エラーメッセージ: “Configuration: secrets: error loading secret into key ‘session.secret’: it’s already defined in other configuration sources”
 - 原因: 
compose.yamlで環境変数とconfiguration.yamlの両方で設定が行われている。 - 対策: 
configuration.yamlの該当設定を削除し、環境変数で統一する。 
Storage オプションの競合
Section titled “Storage オプションの競合”- エラーメッセージ: “Configuration: storage: option ‘local’, ‘mysql’ and ‘postgres’ are mutually exclusive but ‘local’ and ‘postgres’ have been configured”
 - 原因: 
configuration.yamlでは local を指定しているが、compose.yamlにAUTHELIA_STORAGE_POSTGRES_PASSWORD_FILEが設定されている。 - 対策: 不要な環境変数(例:
AUTHELIA_STORAGE_POSTGRES_PASSWORD_FILE)を削除する。 
Cookie ドメイン不正
Section titled “Cookie ドメイン不正”- エラーメッセージ: “Configuration: session: domain config #1 (domain ‘localhost’): option ‘domain’ is not a valid cookie domain: must have at least a single period or be an ip address”
 - 原因: ドメインが 
localhostのみ指定されているため、.が含まれていない。 - 対策: 
cookies.domainにdev.localhostや127.0.0.1:9091などを設定する。 
その他の注意点
Section titled “その他の注意点”- ログイン後、
authelia_sessionが Cookie に設定される。 - NTP サーバーとの時刻同期エラーについては Understanding what this error means #6865 を参照。
 - default_redirection_url は、ユーザーがターゲット URL を指定しなかった場合のリダイレクト先として設定。