- このインストールでは、Docker Compose、ローカルユーザー、およびSQLiteによるストレージを使用します。
- 機密情報はYAMLファイルの外に保存し、保護されたファイルとしてマウントする必要があります。
- 設定フォルダには、アップデートの間もユーザー、データベース、通知が保持されます。
- SQLiteは単一インスタンスに適しており、PostgreSQLは高可用性に適している。
サーバー上に複数のアプリケーションをホストしている場合、それぞれのログインを個別に管理するのは非常に面倒な作業になります。さらに、パスワードのみで保護された内部ダッシュボードを公開すると、認証情報の漏洩や自動化された攻撃によって第三者がアクセスするリスクが高まります。
このインフラを強化する一つの方法は、 AutheliaをDockerでインストールするこのオープンソースプラットフォームは、集中型認証ゲートウェイとして機能し、リバースプロキシの背後にあるアプリケーションにシングルサインオン、アクセスポリシー、多要素認証を追加できます。
このガイドでは、単一サーバーに対して簡単なデプロイメントを実行します。 Docker Compose、ファイルに保存されたユーザー、およびSQLiteデータベース異なる意図が混同されるのを避けるため、高度なプロキシ設定、ルール、および二要素認証については個別に説明します。
AutheliaをDockerでインストールするために必要なもの

始める前に、Linuxサーバーが必要です。 Docker EngineとDocker Composeプラグイン インストール済みであること。また、フォルダ、ネットワーク、コンテナを作成するための権限も必要です。
ブラウザで認証ポータルを正しく動作させるには、以下のものが必要です。
- Un 有効なドメインまたはサブドメイン、 として
auth.ejemplo.com. - Nginx Proxy Manager、Traefik、Caddy、Nginxなどのリバースプロキシ。
- アクセスするには有効なTLS証明書が必要です HTTPS.
- Autheliaとリバースプロキシ間で共有されるDockerネットワーク。
AutheliaはDockerプライベートネットワーク内でHTTPを介してプロキシと通信できます。ブラウザからプロキシへの接続にはHTTPS暗号化を適用する必要があります。 コンテナ自体の中でTLSを設定する必要はありません。.
このガイドでは、単一インスタンスに適したSQLiteを使用しています。複数のレプリカや高可用性が必要な場合は、PostgreSQLまたはMySQLを使用し、Redisを共有セッションストアとして構成してください。
Dockerフォルダとネットワークの準備方法
まず、設定が他のコンテナと混ざらないように、専用のフォルダを作成します。
mkdir -p authelia/config authelia/secrets
cd authelia
次に、リバースプロキシを使用する外部ネットワークを作成します。
docker network create proxy
このコマンドは一度だけ実行すれば十分です。ネットワークが既に存在する場合は、Dockerが通知を表示するので、インストールを続行できます。
最終的な構造は以下のようになります。
authelia/
├── docker-compose.yml
├── .env
├── config/
│ ├── configuration.yml
│ └── users_database.yml
└── secrets/
├── JWT_SECRET
├── SESSION_SECRET
└── STORAGE_ENCRYPTION_KEY
音量 config 設定、ユーザー、および SQLite データベースを保存します。この永続性のおかげで、 コンテナが再作成または更新されても、データは消えません。.
オーテリアの秘密の作り方
Autheliaは、セッション、ストレージ、およびパスワード回復プロセスを保護するために、いくつかのランダムな文字列を必要とします。これらはOpenSSLを使用して生成できます。
openssl rand -hex 64 > secrets/JWT_SECRET
openssl rand -hex 64 > secrets/SESSION_SECRET
openssl rand -hex 64 > secrets/STORAGE_ENCRYPTION_KEY
chmod 600 secrets/*
これらの値は直接書き込むべきではありません configuration.ymlそれらを読み取り専用ファイルとしてマウントし、末尾が _FILE そうすればオーテリアがそれらを読める。
それは重要です 同じ秘密を2つの異なる方法で定義しないYAMLと変数に値が同時に出現する場合 _FILEAutheliaは、設定の曖昧さを回避するために、起動プロセスを停止します。
AutheliaのDocker Composeファイルを作成する方法
まず、ユーザーIDとグループIDを確認してください。
id -u
id -g
ファイルを作成する .env 識別子が異なる場合は、数字を置き換えてください。
AUTHELIA_UID=1000
AUTHELIA_GID=1000
TZ=Europe/Madrid
次に、ファイルを作成します。 docker-compose.yml:
services:
authelia:
image: docker.io/authelia/authelia:latest
container_name: authelia
restart: unless-stopped
user: "${AUTHELIA_UID}:${AUTHELIA_GID}"
environment:
TZ: "${TZ}"
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:
- ./config:/config
- ./secrets:/secrets:ro
networks:
- proxy
expose:
- "9091"
ports:
- "127.0.0.1:9091:9091"
networks:
proxy:
external: true
ポート9091は、 127.0.0.1したがって、インターネットやローカルネットワークに直接公開されることはありません。プロキシは内部アドレスを使用してサービスと通信できます。 http://authelia:9091.
プロキシとの統合が完了したら、そのセクションを完全に削除できます。 ports指令 expose 両方のコンテナがネットワークを共有している限り、これで十分です。 proxy.
本番環境では、 latest のために 特定の安定版イメージを再度ダウンロードする際に、予期せぬアップデートが発生するのを回避します。
最小限のAuthelia構成を準備する方法
ファイルを作成する config/configuration.yml 以下の内容に置き換えてください。 ejemplo.com 実際のドメインの場合:
theme: auto
server:
address: "tcp://:9091/"
log:
level: info
authentication_backend:
file:
path: /config/users_database.yml
watch: false
password:
algorithm: argon2
access_control:
default_policy: deny
session:
cookies:
- domain: ejemplo.com
authelia_url: https://auth.ejemplo.com
default_redirection_url: https://ejemplo.com
storage:
local:
path: /config/db.sqlite3
notifier:
filesystem:
filename: /config/notification.txt
デフォルトポリシー deny 明示的なルールを追加するまで、すべてのアプリケーションを閉じたままにします。これは、 デフォルト拒否の原則 また、過失によってサービスが利用できなくなるリスクを軽減します。
ファイルベースの通知機能は、登録リンクとリカバリリンクをファイルに書き込むため、テスト中に役立ちます。 notification.txtただし、最終的な展開では、SMTP を構成する必要があります。 ファイルベースの通知システムは、本番環境での使用には推奨されません。.
具体的なルールは後ほど、専用のガイドに従って追加される予定です。 Autheliaでアクセスルールを設定する このインストールを過度に長い記事にすることなく。
Autheliaの最初のユーザーを作成する方法
ファイルバックエンドのパスワードは、安全なハッシュを使用して保存する必要があります。公式イメージに含まれているジェネレーターを実行してください。
docker run --rm -it docker.io/authelia/authelia:latest authelia crypto hash generate argon2
コマンドの指示に従ってパスワードを入力してください。出力に「password」という名前の行が表示されます。 Digestで始まるハッシュのみをコピーします $argon2id$単語を含めずに Digest:.
次に作成します config/users_database.yml:
users:
maria:
disabled: false
displayname: "María"
password: "$argon2id$v=19$m=65536,t=3,p=4$SUSTITUYE_ESTE_VALOR"
email: "[email protected]"
groups:
- "admins"
サーバー上の他のユーザーがファイルを読み取れないように保護してください。
chmod 600 config/users_database.yml
ファイルには元のパスワードは含まれていませんが、ハッシュは依然として機密情報であり、 リポジトリに公開したり、不必要に共有したりすべきではありません。.
Autheliaの検証と起動方法
コンテナを起動する前に、まずComposeファイルの構造を確認してください。
docker compose config
次に、Autheliaバリデーターを使用して、未知のプロパティ、構文エラー、または互換性のない構成を検出します。
docker compose run --rm authelia authelia config validate --config /config/configuration.yml
検証が正常に完了したら、サービスを開始します。
docker compose up -d
ステータスを確認し、記録を表示する:
docker compose ps
docker compose logs -f authelia
コンテナは起動済みとして表示され、内部チェック完了後には正常状態と表示されるはずです。もしコンテナが繰り返し再起動状態になる場合は、通常、ログにどのキー、ファイル、または権限が障害の原因となっているかが示されます。
Autheliaが正常に動作しているかどうかを確認する方法
アプリケーションを設定する前に、コンテナがポート 9091 でローカルに応答していること、およびプロキシが名前解決できることを確認してください。 authelia 共有ネットワーク内。
通常アクセスは、次のようなURL経由で行う必要があります。
https://auth.ejemplo.com
サブドメインはリバースプロキシを指し、有効な証明書を持っている必要があります。Autheliaがセッションクッキーを正しく作成するには、HTTPS URLとブラウザが受け入れるドメインが必要です。 localhost はポータルの最終ドメインとして使用できません.
ログイン画面が表示されたら、先ほど作成したユーザーでログインしてください。TOTP、WebAuthn、その他の認証要素の登録は、後ほど設定するポリシーと選択した通知システムによって異なります。
ここから Autheliaでアプリケーションを保護しましょうリバースプロキシに接続するか、 AutheliaでOpenID Connectを設定する OIDC準拠アプリケーション向け。
Docker Composeを使用してAutheliaをアップデートする方法
アップデートする前に、フォルダのコピーを作成してください。 config y secretsSQLiteを使用している場合は、データベースをコピーする前にコンテナを一時的に停止するのが最も安全です。
docker compose stop authelia
cp -a config "config-backup-$(date +%F-%H%M)"
cp -a secrets "secrets-backup-$(date +%F-%H%M)"
次に、イメージをダウンロードしてサービスを再作成します。
docker compose pull
docker compose up -d
最後に、ログを確認して、移行とチェックが正常に完了したことを確認してください。
docker compose logs --tail=100 authelia
メジャーバージョン間でアップグレードする前に、リリースノートを確認することをお勧めします。アップグレードプロセス中に構成ボリュームを削除しないでください。構成ボリュームには、 データベース、ユーザー、および永続的な設定.
Dockerを使用してAutheliaをインストールする際によく発生するエラー
最もよくあるエラーの 1 つは、外部ネットワークが存在しないことです。Docker が次のように表示する場合 network proxy declared as external, but could not be found作成方法:
docker network create proxy
権限エラーが表示された場合 /config o /secrets識別子が .env フォルダの所有権を一致させます。これは、以下の方法で確認できます。 id -u e id -g.
もう一つのよくある問題は 秘密を2回定義する次のような変数を使用する場合 AUTHELIA_SESSION_SECRET_FILE同じ値を に含めてはいけません configuration.yml.
Autheliaがパスワードを受け付けない場合は、ファイルを確認してください。 users_database.yml. フィールド password それは、 $argon2id$含めないでください Digest: また、鎖を複数の線に切断してはならない。
コンテナは動作するがポータルがロードされない場合は、次の点に注意してください。 expose ホスト上のポートは公開されません。プロキシは同じネットワークに接続され、 authelia サーバー名として使用されます。その後のリダイレクト、ヘッダー、または認証エラーは、コンテナのインストールではなく、プロキシの設定に関するものです。
最後に、SQLiteを使用している場合は、同じファイルで複数のAutheliaレプリカを実行しようとしないでください。分散デプロイメントには、 外部データベースと共有セッションプロバイダ.
Docker Compose を使用して Authelia をインストールすることで、ポートを直接公開することなく、認証を一元化するための強固な基盤を構築できます。設定、シークレット、永続データを分離することで、サービスを管理された方法で更新でき、後からリバースプロキシ、アクセスルール、多要素認証、または OpenID Connect を追加して拡張することも可能です。
私はテクノロジー愛好家であり、その「オタク」の興味を職業に変えています。私は 10 年以上、純粋な好奇心から最先端のテクノロジーを使用し、あらゆる種類のプログラムをいじくり回してきました。現在はコンピューター技術とビデオゲームを専門にしています。これは、私が 5 年以上、テクノロジーやビデオ ゲームに関するさまざまな Web サイトに執筆し、誰にでも理解できる言語で必要な情報を提供することを目的とした記事を作成しているためです。
ご質問がございましたら、私の知識は Windows オペレーティング システムから携帯電話用の Android に関連するあらゆるものまで多岐にわたります。そして、私はあなたに対して、いつでも喜んで数分を費やして、このインターネットの世界であなたが抱いている疑問を解決するお手伝いをしたいと考えています。