لماذا لا تؤدي هذه الأدوات الثلاثة نفس الوظيفة
Authelia هو وكيل مصادقة (forward auth، OIDC أساسي) وليس نظام IAM متكاملاً. لا يدير دليلاً، لا يدعم SAML 2.0 بشكل أصلي، ولا يُنشئ الحسابات تلقائياً. Authentik هو نظام IAM متكامل: OIDC، SAML 2.0، LDAP، SCIM، proxy. Keycloak هو نظام IAM التاريخي المبني على JVM: OIDC، SAML 2.0، LDAP، Kerberos، SCIM. يعتمد القرار على عدد التطبيقات والحاجة إلى التزويد، وليس على الاسم.
ما يُغيّره هذا الاختيار المدروس عملياً
- Authelia تحت 30 ميغابايت من الذاكرة في وضع الراحة — يعمل على VPS بـ 2 vCPU / 2 غيغابايت مع قاعدة بيانات SQLite.
- Authentik يجمع OIDC وSAML وLDAP وSCIM في مكوّن واحد — ما يفعله أحياناً Keycloak مع مدير SCIM منفصل.
- Keycloak ضروري فقط لـ Kerberos أو تحالف SAML المؤسسي المعقد — حالات لا تغطيها Authelia ولا Authentik.
- سطح الهجوم يتناسب مع النطاق — وكيل خفيف يكشف نواقل أقل من نظام IAM متكامل.
- مكوّنات أقل للصيانة — أداة واحدة مختارة جيداً تقلل عدد CVE المراقبة.
- حجم VPS يتبع مباشرة من الاختيار — Authelia: 2 غيغابايت، Authentik: 4 غيغابايت، Keycloak: 8 غيغابايت كحد أدنى.
المتطلبات المرقّمة حسب الأداة المختارة
Authelia يبدأ بأقل من 30 ميغابايت من الذاكرة، ويعمل على VPS بـ 2 vCPU / 2 غيغابايت. Authentik يستهلك 420 إلى 500 ميغابايت في وضع الراحة موزعةً على أربعة حاويات (server، worker، PostgreSQL 16، Redis) — VPS بـ 2 vCPU / 4 غيغابايت هو الحد الأدنى. Keycloak يتطلب ما لا يقل عن 1 غيغابايت لـ JVM heap زائد 300 ميغابايت خارج الـ heap، أي أرضية 1.3 غيغابايت مخصصة قبل أي حمل؛ توصي الوثائق الرسمية بـ 500 ميغابايت لكل 100,000 جلسة نشطة — VPS أقل من 8 غيغابايت غير مناسب للإنتاج. تتطلب الأدوات الثلاثة: اسم نطاق محلول، TLS صالح (Let's Encrypt كافٍ)، reverse proxy (Traefik أو nginx) وDocker + Compose.
Authelia مقابل Authentik: متى تختار أيهما
| المعيار | Authelia | Authentik |
|---|---|---|
| الذاكرة عند البدء | < 30 ميغابايت | 420–500 ميغابايت (4 حاويات) |
| البروتوكولات | Forward auth + OIDC أساسي | OIDC، SAML 2.0، LDAP، SCIM، proxy |
| تزويد SCIM | لا | نعم |
| VPS الموصى به | 2 vCPU / 2 غيغابايت | 2 vCPU / 4 غيغابايت |
| واجهة الإدارة | YAML + ملفات | واجهة ويب كاملة |
| منحنى التعلم | منخفض | متوسط |
| حالة الاستخدام | وكيل 2FA/SSO خفيف (2–6 تطبيقات) | نظام IAM self-hosted متكامل (> 5 تطبيقات، SAML) |
| CVE الأخيرة أغسطس 2026 | لا شيء معلن | لا شيء معلن |
Authelia: متى تختاره
اختر Authelia لـ 2 إلى 6 تطبيقات داخلية لحمايتها بـ 2FA أو SSO OIDC خفيف، عندما تكون الذاكرة محدودة ولا توجد حاجة لـ SCIM. الحل القياسي لـ Gitea وGrafana ولوحات الإدارة والمراقبة، خلف Traefik أو nginx، على VPS مشترك مع خدمات أخرى. Authelia غير مناسب إذا كانت التطبيقات تتحدث SAML 2.0 وترفض OIDC، أو إذا كان مزامنة LDAP مع إنشاء الحسابات ضرورياً.
نشر Authelia على VPS (Docker Compose)
إنشاء هيكل الإعداد
mkdir -p ~/authelia/config && cd ~/authelia — إنشاء config/configuration.yml مع jwt_secret، default_redirection_url، session، storage (SQLite)، authentication_backend (file).
توليد هاشات كلمة المرور
docker run --rm authelia/authelia:latest authelia crypto hash generate argon2 --password 'كلمةمرورك' — لصق الهاش في config/users_database.yml تحت users.<login>.password.
كتابة docker-compose.yml
تعريف خدمة Authelia، تركيب ./config:/config، كشف المنفذ 9091 داخلياً فقط (لا مباشر للعموم أبداً)، الاتصال بالشبكة المشتركة مع reverse proxy.
إعداد reverse proxy
في Traefik: وسيط forwardAuth نحو http://authelia:9091/api/authz/forward-auth. في nginx: auth_request /authelia; وكتل location /authelia. يمرر reverse proxy الرؤوس Remote-User، Remote-Groups، Remote-Email.
البدء والتحقق
docker compose pull && docker compose up -d && docker compose logs -f authelia — التحقق من الحالة healthy، الاختبار من متصفح في وضع التصفح الخاص.
Authentik: متى تختاره
اختر Authentik لأكثر من خمسة تطبيقات للتوحيد، بعضها يتحدث SAML 2.0 أو يستخدم دليل LDAP، للتزويد التلقائي بـ SCIM، أو كبديل self-hosted لـ Okta/Auth0/Azure AD. واجهة إدارة رسومية متكاملة لإدارة المستخدمين والمجموعات والسياسات دون لمس YAML. Authentik متاح كقالب VPS على Marketplace ServOrbit: حزمة مُعدَّة مسبقاً (4 حاويات)، جاهزة في دقائق.
نشر Authentik على VPS (Docker Compose الرسمي)
تنزيل ملف Compose الرسمي
wget https://goauthentik.io/docker-compose.yml — Authentik يحتفظ بملف Compose مع 4 خدمات: server، worker، postgresql، redis.
توليد الأسرار وملء .env
echo "PG_PASS=$(openssl rand -base64 36 | tr -d '\n')" >> .env && echo "AUTHENTIK_SECRET_KEY=$(openssl rand -base64 60 | tr -d '\n')" >> .env && echo "AUTHENTIK_ERROR_REPORTING__ENABLED=false" >> .envتشغيل الحزمة
docker compose pull && docker compose up -d — التشغيل الأول يستغرق 1 إلى 2 دقيقة (ترحيلات PostgreSQL).
التهيئة عبر المعالج
الوصول إلى https://authentik.yourdomain.com/if/flow/initial-setup/ (المنفذ 9443 إذا لم يكن هناك reverse proxy بعد). إنشاء حساب akadmin. هذا المعالج لا يمكن الوصول إليه إلا مرة واحدة.
إعداد أول مزوّد OIDC
الواجهة → Applications → Providers → Create → OAuth2/OIDC. تعريف الاسم، Authorized redirect URI، تدوين Client ID وClient Secret. ربط المزوّد بتطبيق وتعيين مجموعة وصول.
Keycloak: لماذا نادراً ما يكون الخيار الصحيح على VPS
Keycloak مثبت في البيئات المصرفية والمؤسسية: Kerberos، اتحاد SAML المعقد، التوافر العالي متعدد العقد. هذه القدرات لها تكلفة مباشرة. CVE-2026-15572 (CVSS 8.8) تتيح لمهاجم يمتلك حقوق تسجيل العملاء تصعيد الامتيازات نحو إدارة realm الكاملة عبر تبديل نوع mapper أثناء التحديث — مُصحَّح في Keycloak 26.7.1. CVE-2026-4629 (CVSS 8.1) تستغل role mapper مع أدوار مُشددة في عملاء يديرهم manage-clients، ما يمنح وصولاً لامتيازات غير مصرح بها. على VPS أقل من 8 غيغابايت، تستهلك JVM overhead الموارد المتاحة قبل أي حمل. Keycloak مناسب فقط إذا كانت لديك حاجة Kerberos موثوقة أو اتحاد SAML مؤسسي لا تغطيه Authelia ولا Authentik.
إذا كنت تُشغّل Keycloak: ثلاثة إجراءات فورية
تعطيل Dynamic Client Registration إذا لم تكن مستخدماً (ناقل CVE-2026-15572). تقييد /admin بشبكة داخلية أو bastion — لا وصول إداري مباشر على الواجهة العامة. إعداد Admin Events لإعادة التوجيه إلى syslog أو أداة مراقبة.
استكشاف الأخطاء: الأخطاء المتكررة
Authelia — 404 على /api/authz/forward-auth: منذ الإصدار 4.38، المسار الرسمي هو /api/authz/forward-auth (كان سابقاً /api/verify). تحديث إعداد reverse proxy.
Authelia — حلقة إعادة توجيه لا نهائية: session.domain لا يطابق النطاق الجذري. يجب أن يكون yourdomain.com، وليس auth.yourdomain.com.
Authentik — worker في حلقة تعطل: OOM killer على VPS بـ 2 غيغابايت مع خدمات أخرى. المهام في الخلفية (البريد، SCIM) تتوقف بصمت بينما تستمر صفحة تسجيل الدخول. إضافة ذاكرة أو نقل الخدمات الأخرى.
Authentik — 502 Bad Gateway بعد التشغيل: ترحيلات PostgreSQL لم تنته بعد. الانتظار 1 إلى 2 دقيقة، التحقق بـ docker compose logs server أن الترحيلات مُحددة كـ OK.
Keycloak — OutOfMemoryError: ضبط KC_JVM_HEAP_MIN وKC_JVM_HEAP_MAX؛ التوجيه الرسمي هو تخصيص 70% من الذاكرة المتاحة للـ heap.
أي حل يناسب سياقك
Authelia لـ 2-6 تطبيقات داخلية مع 2FA/OIDC خفيف (2 غيغابايت، YAML، سطح هجوم أدنى)؛ Authentik لأكثر من 5 تطبيقات، SAML 2.0، SCIM، بديل Okta/Auth0 (4 غيغابايت، واجهة رسومية)؛ Keycloak فقط لـ Kerberos أو SAML مؤسسي معقد (8+ غيغابايت). Authentik متاح كقالب VPS على Marketplace ServOrbit.