TinyAuth for Nginx
TinyAuth 是用登录屏幕保护应用程序的最简单方式
安装
现在是时候将 TinyAuth 添加到现有的 docker-compose.yml 文件或创建一个新文件了。如果创建新文件,不要忘记添加 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
使用 openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | head -c 32 生成 SECRET 环境变量。
配置
接下来,您需要配置 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=