TinyAuth for Nginx
TinyAuth est le moyen le plus simple de protéger vos applications avec un écran de connexion
Installation
Il est maintenant temps d'ajouter TinyAuth à votre fichier docker-compose.yml existant ou d'en créer un nouveau. Si vous créez un nouveau fichier, n'oubliez pas d'ajouter la section services:. La configuration peut être aussi simple que ceci :
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
# Pour obtenir USERS et SECRET, lisez ci-dessous
Configuration des variables
Pour générer votre premier hash d'utilisateur, utilisez la commande suivante
docker run -it --rm ghcr.io/maposia/remnawave-tinyauth:latest user create --interactive
Après l'exécution, vous serez invité à saisir un nom d'utilisateur et un mot de passe. Vous devrez également sélectionner output format-docker
Après cela, vous verrez un message indiquant que l'utilisateur a été créé et un username:passwordHash apparaîtra, qui doit être utilisé dans docker-compose.yml dans la variable d'environnement USERS
Après avoir démarré le conteneur, vous pouvez générer un hash pour un utilisateur en utilisant le conteneur tinyAuth en cours d'exécution avec la commande.
docker exec -it tinyauth ./tinyauth user create --interactive
Chaque option de configuration ayant un équivalent FILE (p. ex. USERS et USERS_FILE) peut utiliser le fichier à la place de la variable d'environnement.
USERS= liste séparée par des virgules des utilisateurs tinyauth. (requis)
USERS_FILE= Un fichier contenant une liste d'utilisateurs tinyauth.
Toutes les variables d'environnement sont disponibles dans la documentation officielle https://tinyauth.app/docs/reference/configuration
Pour générer la variable d'environnement SECRET, utilisez openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | head -c 32.
Configuration
Ensuite, vous devez configurer nginx.conf pour protéger le chemin requis.
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;
}
#Assurez-vous de remplacer http://tinyauth.example.com par l'URL de votre propre application
Démarrage du conteneur
Ensuite, redémarrez nginx et lancez tinyAuth
docker compose down && docker compose up -d && docker compose logs -f
Important : Si vous avez utilisé tinyAuth avant le 01.12.2025 et mis à jour, vous êtes passé de la version 3 à la version 4.
Mise à jour de v3 vers v4
À partir de v4, Tinyauth est une application avec état qui utilise une base de données SQLite pour stocker les sessions. Ce changement améliore la sécurité. Pour les configurations Docker, incluez le volume suivant :
services:
tinyauth:
volumes:
- ./data:/data
Émission de clés API
Vous pouvez utiliser Basic base64(username:password) dans l'en-tête X-Api-Key de vos requêtes vers l'API.
Exemple : X-Api-Key: Basic dXNlcm5hbWU6cGFzc3dvcmQ=