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
بعد ذلك، ستظهر رسالة تفيد بإنشاء المستخدم وسيظهر username:passwordHash الذي يجب استخدامه في docker-compose.yml في المتغير USERS
بعد تشغيل الحاوية، يمكنك إنشاء تجزئة للمستخدم باستخدام حاوية tinyAuth الجارية بالأمر.
docker exec -it tinyauth ./tinyauth user create --interactive
كل متغير إعداد له مكافئ بـ FILE (مثل USERS وUSERS_FILE)، يمكن استخدام الملف بدلاً من متغير البيئة.
USERS= قائمة مفصولة بفواصل لمستخدمي tinyauth. (مطلوب)
USERS_FILE= ملف يحتوي على قائمة مستخدمي tinyauth.
جميع متغيرات البيئة متاحة في الوثائق الرسمية https://tinyauth.app/docs/reference/configuration
لإنشاء متغير البيئة SECRET استخدم openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | head -c 32.
الإعداد
بعد ذلك، تحتاج إلى إعداد 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
هام: إذا كنت تستخدم tinyAuth قبل 01.12.2025 وقمت بالتحديث، فقد انتقلت من الإصدار 3 إلى الإصدار 4.
التحديث من v3 إلى v4
اعتباراً من v4، أصبح Tinyauth تطبيقاً ذو حالة يستخدم قاعدة بيانات SQLite لتخزين الجلسات. هذا التغيير يحسن الأمان. لإعدادات Docker، أضف المجلد التالي:
services:
tinyauth:
volumes:
- ./data:/data
إصدار مفاتيح API
يمكنك استخدام Basic base64(username:password) في رأس X-Api-Key لطلباتك إلى API.
مثال: X-Api-Key: Basic dXNlcm5hbWU6cGFzc3dvcmQ=