دليل النشر

Authelia على VPS: المصادقة الثنائية وSSO لعمليتك بأكملها

انشر على VPS Cloud ←

دليل عملي

Authelia على VPS: المصادقة الثنائية وSSO لعمليتك بأكملها

الأمان والمراقبة10 دقائق للقراءةعدد الخطوات: 9

Authelia بوابة مصادقة مفتوحة المصدر مكتوبة بـ Go، تتوضع أمام خدماتك المستضافة ذاتياً عبر الوكيل العكسي. في حاوية واحدة خفيفة (~30 ميغابايت)، تُمركز المصادقة وتفرض MFA ويمكنها أن تكون موفر OIDC لـ SSO حقيقي على كامل بنيتك. يغطي هذا الدليل التثبيت الكامل، قواعد الوصول المبنية على المجموعات، طرق MFA المتاحة — بما فيها مفاتيح المرور WebAuthn — الانتقال إلى LLDAP، التحديثات السلسة، والمراقبة.

المحتويات· لماذا بوابة مصادقة في الوكيل العكسي1/13
  1. 01لماذا بوابة مصادقة في الوكيل العكسي
  2. 02ما تمنحك إياه Authelia المستضافة ذاتياً
  3. 03المتطلبات المسبقة
  4. 04نشر Authelia مع Docker Compose
  5. 05استخدام Authelia كموفر OIDC لـ SSO حقيقي
  6. 06قواعد التحكم في الوصول: أمثلة عملية
  7. 07MFA: TOTP، WebAuthn/مفاتيح المرور، وDuo
  8. 08الانتقال إلى LLDAP: إدارة الفرق
  9. 09تحديث Authelia: تجنب التغييرات الجذرية
  10. 10المراقبة: السجلات ومقاييس Prometheus
  11. 11Authelia مقابل Authentik: أيهما تختار؟
  12. 12استكشاف الأخطاء الشائعة وإصلاحها
  13. 13نصيحة أخيرة: ابدأ بسيطاً وتطور تدريجياً

لماذا بوابة مصادقة في الوكيل العكسي

بدون بوابة مركزية، تُدير كل خدمة تسجيل الدخول الخاص بها: Grafana لها قاعدة مستخدمين، Nextcloud لها قاعدتها، Portainer لها قاعدتها. النتيجة: كلمات مرور مختلفة في كل مكان، لا MFA متسق، وسطح هجوم متعدد. تحل Authelia هذه المشكلة بالتوضع في مسار HTTP: يُرسل وكيلك العكسي كل طلب إليها قبل إعادة توجيهه، وتقرر Authelia — بناءً على الهوية والمجموعة والمسار المطلوب ومستوى MFA المطلوب — إذا كان يجب السماح بالطلب. لا يرى التطبيق المحمي إلا طلباً مصادقاً مع ترويسات هوية مُضافة.

ما تمنحك إياه Authelia المستضافة ذاتياً

  • مصادقة مركزية لجميع خدماتك دون تعديل كودها
  • MFA أصلي: TOTP (Google Authenticator، Aegis)، WebAuthn/مفاتيح مرور (مفاتيح مادية، Touch ID، Windows Hello)، Duo
  • موفر OIDC في الإنتاج منذ v4.34: تفويض المصادقة من تطبيقاتك المتوافقة مع OIDC إلى Authelia
  • تحكم دقيق في الوصول حسب النطاق، المسار، مجموعة المستخدمين، ومستوى المصادقة
  • تكامل أصلي مع Traefik (forwardAuth) وNginx (auth_request) وCaddy (forward_auth)
  • دعم LDAP/Active Directory لإدارة الفرق، متوافق مع LLDAP
  • ملف ثنائي Go واحد (~30 ميغابايت)، صورة Docker خفيفة، استهلاك ذاكرة منخفض
  • سجلات JSON منظمة ومقاييس Prometheus للمراقبة

المتطلبات المسبقة

قبل نشر Authelia، تحقق من جاهزية بيئتك. تحتاج إلى VPS يعمل بـ Linux مع Docker وDocker Compose مثبتَين، وكيل عكسي موجود (Traefik v2/v3 أو Nginx)، اسم نطاق مع شهادة TLS صالحة (Let's Encrypt موصى به)، ونسخة Redis يمكن لـ Authelia الوصول إليها لتخزين الجلسات (إلزامي في الإنتاج). لتخزين المستخدمين، يمكنك البدء بملف YAML محلي أو ربط خادم LDAP مثل LLDAP. تحتاج Authelia أيضاً إلى مفتاح JWT، مفتاح تشفير الجلسة، وسر OIDC إذا فعّلت هذا الوضع: أنشئها بـ openssl rand -hex 32.

نشر Authelia مع Docker Compose

  1. إنشاء هيكل الدلائل

    أنشئ /opt/authelia/config/ لملفات الإعداد و/opt/authelia/data/ لتخزين SQLite والمفاتيح. عيّن الأذونات المناسبة: mkdir -p /opt/authelia/{config,data} && chown -R 1000:1000 /opt/authelia.

  2. كتابة ملف configuration.yml

    أنشئ /opt/authelia/config/configuration.yml. حدد default_redirection_url، jwt_secret، session.secret، storage.encryption_key، وعيّن خلفية المصادقة (ملف أو LDAP)، Redis للجلسات، وسياسة الوصول الافتراضية (deny موصى به).

  3. إنشاء ملف users_database.yml (خلفية الملف)

    للبدء السريع، أنشئ /opt/authelia/config/users_database.yml بمستخدميك. يجب تجزئة كلمات المرور بـ Argon2id: docker run --rm authelia/authelia:latest authelia crypto hash generate argon2 --password 'كلمةمرورك'. انسخ التجزئة المولّدة في الملف.

  4. إعداد Redis للجلسات

    أضف Redis إلى docker-compose.yml. في configuration.yml، عيّن session.redis.host: redis وsession.redis.port: 6379. Redis ضروري لاستمرار الجلسات بعد إعادة تشغيل Authelia.

  5. كتابة docker-compose.yml

    عرّف خدمات authelia وredis، وإذا كنت تستخدم Traefik أضف التسميات المناسبة. ثبّت /opt/authelia/config للقراءة فقط و/opt/authelia/data للقراءة والكتابة. اكشف المنفذ 9091 داخلياً فقط، لا تكشفه للإنترنت مباشرة.

  6. إعداد Traefik مع forwardAuth

    أنشئ وسيطاً في Traefik يشير إلى http://authelia:9091/api/authz/forward-auth. طبّق هذا الوسيط على موجّهات الخدمات المراد حمايتها. بالنسبة لـ Nginx، استخدم auth_request /authelia مع توجيهات proxy_pass المناسبة.

  7. إعداد نطاق الجلسة

    في configuration.yml، عيّن session.domain إلى نطاقك الجذر (مثل mynomain.com) ليتشارك الكوكي بين النطاقات الفرعية. هذا هو السبب الأكثر شيوعاً لحلقات التحويل اللانهائية.

  8. التشغيل والتحقق

    شغّل بـ docker compose up -d. راجع السجلات: docker compose logs -f authelia. ادخل إلى https://auth.mynomain.com لرؤية بوابة تسجيل الدخول. اختبر بالدخول إلى خدمة محمية: يجب أن تُعاد توجيهك إلى البوابة ثم تُرسل إلى الخدمة بعد المصادقة.

  9. تفعيل موفر OIDC (اختياري)

    منذ v4.34، موفر OIDC جاهز للإنتاج. أضف قسم identity_providers.oidc إلى إعداداتك مع عملاءك (Nextcloud، Grafana، Gitea...). كل عميل له id، secret (مُجزّأ بـ Argon2id)، وredirect_uris المصرح بها.

استخدام Authelia كموفر OIDC لـ SSO حقيقي

يحوّل وضع موفر OIDC Authelia إلى SSO حقيقي: يسجل المستخدم الدخول مرة واحدة على بوابة Authelia، وجميع التطبيقات المُعدّة كعملاء OIDC تسترجع الهوية دون طلب كلمة مرور مرة أخرى. Nextcloud وGrafana وGitea وPortainer وOutline... كلها تدعم OIDC. عيّن نطاق groups لنقل مجموعات Authelia إلى التطبيقات العميلة لإدارة الأدوار.

قواعد التحكم في الوصول: أمثلة عملية

قسم access_control هو قلب منطق Authelia. منذ v4.37، أُعيد تصميم السياسات. وصول عام بدون مصادقة: {domain: 'status.mynomain.com', policy: bypass}. وصول MFA قوي مقتصر على المديرين: {domain: 'portainer.mynomain.com', subject: 'group:admins', policy: two_factor}. مسار API بدون مصادقة (webhooks): {domain: 'n8n.mynomain.com', resources: ['^/webhook/.*'], policy: bypass}. باقي N8N بـ MFA بسيط: {domain: 'n8n.mynomain.com', policy: one_factor}. default_policy: deny يضمن حظر كل ما لم يُذكر صراحة. ترتيب القواعد مهم: تُطبّق أول قاعدة مطابقة.

MFA: TOTP، WebAuthn/مفاتيح المرور، وDuo

تدعم Authelia ثلاث طرق للعامل الثاني، لكل منها مزاياها.

TOTP (كلمة المرور لمرة واحدة المبنية على الوقت) هي الطريقة الأكثر عالمية: يمسح المستخدم رمز QR بتطبيق كـ Aegis (أندرويد) أو Raivo (iOS). رمز مكوّن من 6 أرقام يتغير كل 30 ثانية. بسيطة النشر، متوافقة مع جميع الأجهزة، لكنها عرضة للتصيد الاحتيالي.

WebAuthn/مفاتيح المرور هي الطريقة الأكثر متانة، مدعومة أصلياً في Authelia منذ v4.36. يسجّل المستخدم مفتاحاً مادياً (YubiKey، Nitrokey) أو محقق نظام الأساس (Touch ID على macOS، Windows Hello، Face ID على iOS). تشفير المفتاح العام يجعل التصيد الاحتيالي مستحيلاً: المفتاح الخاص لا يغادر الجهاز أبداً. Authelia تُنفّذ مواصفات WebAuthn Level 2 الكاملة، بما يشمل مفاتيح المرور المتزامنة عبر iCloud Keychain أو Google Password Manager.

Duo تُفوّض العامل الثاني إلى خدمة Duo Security السحابية: دفع موبايل، رسالة نصية، أو مكالمة هاتفية. مناسب للفرق التي تستخدم Duo بالفعل.

للمعظم من البنى المستضافة ذاتياً، الجمع الموصى به هو TOTP كطريقة أساسية وWebAuthn كطريقة مفضلة للمستخدمين الذين لديهم YubiKey أو جهاز Apple/Windows حديث.

الانتقال إلى LLDAP: إدارة الفرق

خلفية الملف (users_database.yml) مناسبة لمستخدم واحد أو عائلة صغيرة، لكنها تصبح صعبة الإدارة مع أكثر من 5-10 مستخدمين. LLDAP تطبيق LDAP خفيف مكتوب بـ Rust مع واجهة ويب بسيطة، يتكامل بشكل مثالي مع Authelia.

انشر LLDAP بإضافة خدمته إلى docker-compose.yml مع المتغيرات LLDAP_JWT_SECRET وLLDAP_LDAP_BASE_DN. أنشئ مجموعاتك في واجهة LLDAP (admins، users، devops...)، ثم عدّل configuration.yml للتبديل من خلفية file إلى خلفية ldap.

انتبه لتغيير v4.35 الجذري: كان اسم الحقل authentification_backend (بخطأ إملائي) قبل v4.35 وصُحّح إلى authentication_backend. تحقق من إعداداتك إذا كنت تنقل من إصدار سابق.

تحديث Authelia: تجنب التغييرات الجذرية

تتبع Authelia إصدارات دلالية صارمة وتوثّق تغييراتها الجذرية لكل إصدار — اقرأ سجل التغييرات من إصدارك الحالي قبل أي ترقية.

v4.34: موفر OIDC يصل إلى مرحلة الإنتاج. إذا كنت تستخدمه في الوضع التجريبي، تحقق من تغييرات الأسماء في الخيارات.

v4.35: تصحيح الخطأ المطبعي authentification_backend ← authentication_backend. أي إعداد يستخدم الاسم القديم يمنع الإطلاق مع خطأ تحقق من الإعداد.

v4.37: إعادة تصميم سياسات access_control — راجع سجل التغييرات الرسمي قبل الترقية من v4.36 أو أقدم.

v4.38.x (الإصدار الحالي): استقرار، بدون تغييرات جذرية كبيرة منذ v4.37.

إجراء الترقية الموصى به: (1) اقرأ سجل التغييرات؛ (2) احتفظ بنسخة احتياطية من /opt/authelia/config/ و/opt/authelia/data/؛ (3) اختبر الإعداد الجديد بـ docker run --rm -v /opt/authelia/config:/config authelia/authelia:4.38.x authelia validate-config قبل إعادة التشغيل؛ (4) حدّث الوسم في docker-compose.yml وأعد التشغيل.

المراقبة: السجلات ومقاييس Prometheus

تكشف Authelia مقاييسها لـ Prometheus على /metrics (المنفذ الافتراضي 9959). فعّلها في configuration.yml بإضافة telemetry.metrics.enabled: true وtelemetry.metrics.address: 'tcp://0.0.0.0:9959'. لا تكشف هذا المنفذ للعموم: اجعله متاحاً فقط لخط المراقبة الداخلي (Prometheus/Grafana).

المقاييس الرئيسية للرصد: authelia_authn_requests_total (إجمالي محاولات التوثيق مصنّفةً بالنجاح والفشل)، وauthelia_authn_duration_seconds (زمن الاستجابة)، إضافةً إلى مقاييس Redis لمراقبة صحة الجلسات. للسجلات، يدعم Authelia الصيغة المنظمة JSON (log.format: json) المثالية للاستيعاب في Loki أو نظام SIEM. استخدم log.level: info في الإنتاج (تجنب debug الذي يسجّل ترويسات كاملة). سجلات التوثيق تتضمن عنوان IP المصدر، واسم المستخدم، والخدمة المستهدفة، والنتيجة — قيّمة لاكتشاف هجمات القوة الغاشمة مبكراً.

Authelia مقابل Authentik: أيهما تختار؟

مرّر الجدول أفقيًا

المعيارAutheliaAuthentik
حجم Docker~30 ميغابايت (ثنائي Go)~1.5 غيغابايت (Python/Django + worker)
الحد الأدنى للذاكرة~50 ميغابايت~512 ميغابايت موصى به
موفر OIDCنعم، منذ v4.34نعم، ناضج وغني
موفر SAMLلانعم
واجهة الإدارةإعداد YAML فقطواجهة ويب كاملة
وكيل التطبيقاتلانعم (أنفاق Authentik)
توفير SCIMلانعم
حالة الاستخدام المثاليةبنية خفيفة، وكيل عكسي بحت، إعداد كـ كودIAM كامل، SSO مؤسسي، احتياجات SAML/SCIM

استكشاف الأخطاء الشائعة وإصلاحها

حلقة تحويل لانهائية. يُعاد توجيه المستخدم في حلقة بين الخدمة وبوابة Authelia. السبب الأكثر شيوعاً: session.domain لا يتطابق مع نطاق الخدمة. تحقق أيضاً من تطبيق forwardAuth middleware وأن default_redirection_url يشير إلى عنوان URL صالح.

عدم تطابق النطاق للكوكي. يجب أن يكون session.domain هو النطاق الأب المشترك (mysite.com)، وليس نطاقاً فرعياً. تحقق في أدوات المطورين (Application > Cookies) أن authelia_session يحمل النطاق الصحيح.

Redis غير متاح. تعمل Authelia لكن الجلسات لا تستمر. تحقق أن حاوية Redis على الشبكة ذاتها في Docker وأن host يتطابق مع اسم الخدمة (وليس localhost).

إعداد غير صالح عند البدء. منذ v4.35، يُتحقق من المخطط بصرامة. استخدم authelia validate-config قبل أي إعادة تشغيل. الأخطاء الأكثر شيوعاً: الخطأ المطبعي authentification_backend، مسافة بادئة YAML خاطئة، أو client_secret يجب تجزئته بـ Argon2id منذ v4.37.

عدم طرح المصادقة الثنائية رغم قواعد two_factor. تأكد أن المستخدم قد سجّل عاملاً ثانياً في ملفه الشخصي. بدون جهاز MFA مسجّل، قد تطبّق Authelia خياراً احتياطياً لـ one_factor بحسب إعداد default_2fa_method.

نصيحة أخيرة: ابدأ بسيطاً وتطور تدريجياً

انشر أولاً Authelia مع خلفية الملف، قاعدة two_factor واحدة لخدماتك الأكثر تعرضاً، وTOTP كطريقة MFA. بمجرد الاستقرار، انتقل إلى LLDAP لإدارة الفرق، فعّل موفر OIDC لـ SSO، ثم أضف WebAuthn للمستخدمين الذين لديهم مفتاح مادي أو جهاز يدعم مفاتيح المرور. هذا التدرج يمنعك من تصحيح عدة مكوّنات جديدة في آنٍ واحد.

انشر Authelia على خادم VPS الخاص بك بنقرة واحدة

أضِف المصادقة الثنائية والدخول الموحّد إلى كامل منظومتك المُستضافة ذاتياً دون تغيير أي تطبيق. يوفّر ServOrbit نسخة Authelia جاهزة للاستخدام — التهيئة مُولّدة، ومستخدم المسؤول مُنشأ، وتكامل الوكيل العكسي جاهز.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو تواصل مع فريقنا — معاودة اتصال أو WhatsApp أو بريد إلكتروني. الدعم بـالعربية والفرنسية والإنجليزية.

راسلنا على WhatsAppيُفتح في علامة تبويب جديدة