TinyAuth for Nginx
TinyAuthはログイン画面でアプリを保護する最も簡単な方法です
インストール
既存のdocker-compose.ymlファイルにTinyAuthを追加するか、新しいファイルを作成します。新しいファイルを作成する場合は、services:セクションを追加することを忘れないでください。設定は次のように簡単にできます:
tinyauth:
container_name: tinyauth
hostname: tinyauth
image: ghcr.io/maposia/remnawave-tinyauth:latest
restart: always
ports:
- '127.0.0.1:3002:3002'
networks:
- remnawave-network
environment:
- PORT=3002
- APP_URL=https://tinyauth.example.com
- USERS=your-username-password-hash
- SECRET=some-random-32-chars-string
volumes:
- ./data:/data
# USERSとSECRETの取得は以下をお読みください
変数の設定
ユーザーの最初のハッシュを生成するには、次のコマンドを使用します
docker run -it --rm ghcr.io/maposia/remnawave-tinyauth:latest user create --interactive
実行後、ユーザー名とパスワードの入力を求められます。また output format-docker を選択する必要があります
その後、ユーザーが作成されたというメッセージと、docker-compose.ymlの USERS 環境変数で使用する username:passwordHash が表示されます
コンテナを起動した後、実行中のtinyAuthコンテナを使用して次のコマンドでユーザーのハッシュを生成できます。
docker exec -it tinyauth ./tinyauth user create --interactive
FILEの対応オプションがある設定オプション(例:USERSとUSERS_FILE)は、環境変数の代わりにファイルを使用できます。
USERS= tinyauthユーザーのカンマ区切りリスト。(必須)
USERS_FILE= tinyauthユーザーのリストを含むファイル。
すべての環境変数は公式ドキュメント https://tinyauth.app/docs/reference/configuration で確認できます
SECRET 環境変数を生成するには openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | head -c 32 を使用します。
設定
次に、必要なパスを保護するためにnginx.confを設定する必要があります。
upstream tinyauth {
server 127.0.0.1:3002;
}
server {
server_name tinyauth.example.com;
listen 443 ssl;
http2 on;
ssl_certificate "/etc/nginx/ssl/tinyauth.example.com/fullchain.pem";
ssl_certificate_key "/etc/nginx/ssl/tinyauth.example.com/privkey.pem";
ssl_trusted_certificate "/etc/nginx/ssl/tinyauth.example.com/fullchain.pem";
location / {
proxy_pass http://tinyauth;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}
server {
server_name panel.remnawave.com;
listen 443 ssl;
http2 on;
ssl_certificate "/etc/nginx/ssl/panel.remnawave.com/fullchain.pem";
ssl_certificate_key "/etc/nginx/ssl/panel.remnawave.com/privkey.pem";
ssl_trusted_certificate "/etc/nginx/ssl/panel.remnawave.com/fullchain.pem";
location / {
auth_request /tinyauth;
error_page 401 = @tinyauth_login;
proxy_http_version 1.1;
proxy_pass http://remnawave;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
location /tinyauth {
proxy_pass http://tinyauth/api/auth/nginx;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header x-forwarded-proto $scheme;
proxy_set_header x-forwarded-host $http_host;
proxy_set_header x-forwarded-uri $request_uri;
}
location @tinyauth_login {
return 302 https://tinyauth.example.com/login?redirect_uri=$scheme://$http_host$request_uri;
}
#http://tinyauth.example.com を自分のアプリURLに置き換えてください
コンテナの起動
その後、nginxを再起動してtinyAuthを起動します
docker compose down && docker compose up -d && docker compose logs -f
重要:01.12.2025以前にtinyAuthを使用して更新した場合、バージョン3からバージョン4に移行しています。
v3からv4へのアップデート
v4以降、TinyauthはSQLiteデータベースを使用してセッションを保存するステートフルアプリケーションです。この変更によりセキュリティが向上します。Dockerセットアップには次のボリュームを含めてください:
services:
tinyauth:
volumes:
- ./data:/data
APIキーの発行
APIへのリクエストの X-Api-Key ヘッダーで Basic base64(username:password) を使用できます。
例:X-Api-Key: Basic dXNlcm5hbWU6cGFzc3dvcmQ=