Pular para o conteúdo principal

TinyAuth for Nginx

TinyAuth é a forma mais simples de proteger seus aplicativos com uma tela de login

Instalação

Agora é hora de adicionar o TinyAuth ao seu arquivo docker-compose.yml existente ou criar um novo. Se estiver criando um novo arquivo, não se esqueça de adicionar a seção services:. A configuração pode ser tão simples quanto:

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
# Para obter USERS e SECRET leia abaixo

Configurando variáveis

Para gerar seu primeiro hash de usuário, use o seguinte comando

docker run -it --rm ghcr.io/maposia/remnawave-tinyauth:latest user create --interactive

Após a execução, você será solicitado a inserir um nome de usuário e senha. Você também precisará selecionar output format-docker

Depois disso, você verá uma mensagem informando que o usuário foi criado e um username:passwordHash aparecerá, que precisa ser usado no docker-compose.yml na variável de ambiente USERS

informação

Após iniciar o contêiner, você pode gerar um hash para um usuário usando o contêiner tinyAuth em execução com o comando.

docker exec -it tinyauth ./tinyauth user create --interactive
informação

Toda opção de configuração que tem um equivalente FILE (p.ex. USERS e USERS_FILE) pode usar o arquivo em vez da variável de ambiente.

USERS= lista separada por vírgulas de usuários tinyauth. (obrigatório)

USERS_FILE= Um arquivo contendo uma lista de usuários tinyauth.

Todas as variáveis de ambiente podem ser vistas na documentação oficial https://tinyauth.app/docs/reference/configuration

Para gerar a variável de ambiente SECRET use openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | head -c 32.

Configurar

Em seguida, você precisa configurar o nginx.conf para proteger o caminho necessário.

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;
}

#Certifique-se de substituir http://tinyauth.example.com pela URL do seu próprio aplicativo

Executando o contêiner

Depois disso, reinicie o nginx e inicie o tinyAuth

docker compose down && docker compose up -d && docker compose logs -f
aviso

Importante: Se você usou o tinyAuth antes de 01.12.2025 e atualizou, você mudou da versão 3 para a versão 4.

Atualização de v3 para v4

A partir do v4, o Tinyauth é um aplicativo com estado que usa um banco de dados SQLite para armazenar sessões. Esta mudança melhora a segurança. Para configurações Docker, inclua o seguinte volume:

services:
tinyauth:
volumes:
- ./data:/data

Emissão de chaves de API

informação

Você pode usar Basic base64(username:password) no cabeçalho X-Api-Key de suas solicitações à API.

Exemplo: X-Api-Key: Basic dXNlcm5hbWU6cGFzc3dvcmQ=