跳至主要内容

TinyAuth for Nginx

TinyAuth 是使用登入畫面保護應用程式的最簡單方式

安裝

現在是時候將 TinyAuth 新增到現有的 docker-compose.yml 檔案或建立新檔案了。如果建立新檔案,不要忘記新增 services: 部分。設定可以像這樣簡單:

docker-compose.yml
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 對應項目的設定選項(例如 USERSUSERS_FILE),都可以使用檔案代替環境變數。

USERS= 以逗號分隔的 tinyauth 使用者清單。(必填)

USERS_FILE= 包含 tinyauth 使用者清單的檔案。

所有環境變數可在官方文件中查看 https://tinyauth.app/docs/reference/configuration

使用 openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | head -c 32 產生 SECRET 環境變數。

設定

接下來,您需要設定 nginx.conf 以保護所需的路徑。

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=