TinyAuth for Nginx
TinyAuth ist der einfachste Weg, Ihre Apps mit einem Login-Bildschirm zu schützen
Installation
Jetzt ist es an der Zeit, TinyAuth zu Ihrer bestehenden docker-compose.yml-Datei hinzuzufügen oder eine neue zu erstellen. Wenn Sie eine neue Datei erstellen, vergessen Sie nicht, den Abschnitt services: hinzuzufügen. Die Konfiguration kann so einfach sein:
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
# Um USERS und SECRET zu erhalten, lesen Sie unten
Variablen konfigurieren
Um Ihren ersten Hash für einen Benutzer zu generieren, verwenden Sie den folgenden Befehl
docker run -it --rm ghcr.io/maposia/remnawave-tinyauth:latest user create --interactive
Nach der Ausführung werden Sie aufgefordert, einen Benutzernamen und ein Passwort einzugeben. Sie müssen auch output format-docker auswählen
Danach sehen Sie eine Meldung, dass der Benutzer erstellt wurde, und ein username:passwordHash, der in docker-compose.yml in der USERS-Umgebungsvariable verwendet werden muss
Nachdem Sie den Container gestartet haben, können Sie mit dem laufenden tinyAuth-Container einen Hash für einen Benutzer generieren.
docker exec -it tinyauth ./tinyauth user create --interactive
Jede Konfigurationsoption mit einem FILE-Äquivalent (z.B. USERS und USERS_FILE) kann eine Datei statt der Umgebungsvariable verwenden.
USERS= kommagetrennte Liste der tinyauth-Benutzer. (erforderlich)
USERS_FILE= Eine Datei mit einer Liste der tinyauth-Benutzer.
Alle Umgebungsvariablen finden Sie in der offiziellen Dokumentation https://tinyauth.app/docs/reference/configuration
Um die SECRET-Umgebungsvariable zu generieren, verwenden Sie openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | head -c 32.
Konfigurieren
Als Nächstes müssen Sie nginx.conf konfigurieren, um den erforderlichen Pfad zu schützen.
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;
}
#Ersetzen Sie http://tinyauth.example.com durch Ihre eigene App-URL
Container starten
Starten Sie dann Nginx neu und starten Sie tinyAuth
docker compose down && docker compose up -d && docker compose logs -f
Wichtig: Wenn Sie tinyAuth vor dem 01.12.2025 verwendet und aktualisiert haben, sind Sie von Version 3 auf Version 4 gewechselt.
Update von v3 auf v4
Ab v4 ist Tinyauth eine zustandsbehaftete Anwendung, die eine SQLite-Datenbank zur Sitzungsspeicherung verwendet. Diese Änderung verbessert die Sicherheit. Fügen Sie für Docker-Setups das folgende Volume hinzu:
services:
tinyauth:
volumes:
- ./data:/data
API-Schlüssel ausstellen
Sie können Basic base64(username:password) im X-Api-Key-Header Ihrer API-Anfragen verwenden.
Beispiel: X-Api-Key: Basic dXNlcm5hbWU6cGFzc3dvcmQ=