Caddy مع إعداد بسيط
Caddy هو خادم ويب قوي ومرن يمكن استخدامه لتأمين لوحة Remnawave الخاصة بك.
التثبيت
أولاً، أنشئ مجلداً لـ Caddy.
mkdir -p /opt/remnawave/caddy && cd /opt/remnawave/caddy
وأنشئ ملف docker-compose.yml.
touch docker-compose.yml && nano docker-compose.yml
وأضف المحتوى التالي إلى الملف:
services:
remnawave-caddy:
image: remnawave/caddy-with-auth:latest
container_name: 'remnawave-caddy'
hostname: remnawave-caddy
restart: always
environment:
- AUTH_TOKEN_LIFETIME=3600
- REMNAWAVE_PANEL_DOMAIN=PANEL_DOMAIN
- AUTHP_ADMIN_USER=LOGIN_USERNAME
- AUTHP_ADMIN_EMAIL=LOGIN_EMAIL
- AUTHP_ADMIN_SECRET=LOGIN_PASSWORD
ports:
- '0.0.0.0:443:443'
networks:
- remnawave-network
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- remnawave-caddy-ssl-data:/data
networks:
remnawave-network:
name: remnawave-network
driver: bridge
external: true
volumes:
remnawave-caddy-ssl-data:
driver: local
external: false
name: remnawave-caddy-ssl-data
ضبط متغيرات .env
تحتاج إلى تعيين اسم نطاق للوحة Remnawave. سيصدر Caddy شهادة تلقائياً لهذا النطاق.
REMNAWAVE_PANEL_DOMAIN=panel.domain.com
بيانات اعتماد المدير. تأكد من استخدام كلمة مرور قوية.
AUTHP_ADMIN_USER=admin
AUTHP_ADMIN_EMAIL=[email protected]
AUTHP_ADMIN_SECRET=strong_password
مدة الرمز المميز.
AUTH_TOKEN_LIFETIME=3600
ملف Caddyfile
دعنا نتعمق في ملف Caddyfile.
أولاً، تحتاج إلى اختيار أحد الإعدادات المحددة مسبقاً.
إعداد الأمان الكامل مع MFA
- جميع المسارات محمية بالمصادقة. (الواجهة الأمامية، الخلفية)
- جميع نقاط نهاية API محمية، بما في ذلك نقاط /api/sub/*.
- تسجيل الدخول يتطلب MFA مع رموز OTP.
- يمكن إصدار مفاتيح API خاصة لنقاط /api/*.
- حماية كاملة للنطاق.
شغّل الأمر أدناه لتنزيل ملف Caddyfile.
curl -o Caddyfile https://raw.githubusercontent.com/remnawave/caddy-with-auth/refs/heads/main/examples/minimal-security-setup-with-mfa/Caddyfile
مسارات API بدون مصادقة (api/*)
- المسارات محمية بالمصادقة. (الواجهة الأمامية)
- تسجيل الدخول يتطلب MFA مع رموز OTP. (الواجهة الأمامية)
- جميع نقاط نهاية API غير محمية! (/api/* عامة)
هذا الإعداد يعرض نقاط نهاية /api/* للإنترنت العام.
لن تتطلب جميع نقاط النهاية المصادقة، لكنها ستستخدم ميزات أمان Remnawave.
نوصي باستخدام إعداد الأمان الكامل مع MFA لبيئات الإنتاج حيث ستصدر مفاتيح API.
شغّل الأمر أدناه لتنزيل ملف Caddyfile.
curl -o Caddyfile https://raw.githubusercontent.com/remnawave/caddy-with-auth/refs/heads/main/examples/minimal-security-setup-with-mfa-with-api-without-auth/Caddyfile
نقاط نهاية /api/sub/* بدون مصادقة
- المسارات محمية بالمصادقة. (الواجهة الأمامية)
- تسجيل الدخول يتطلب MFA مع رموز OTP. (الواجهة الأمامية)
- فقط نقاط نهاية
/api/sub/*عامة، النقاط الأخرى محمية.
هذا الإعداد يعرض نقاط نهاية /api/sub/* للإنترنت العام.
نوصي باستخدام إعداد الأمان الكامل مع MFA لبيئات الإنتاج حيث ستصدر مفاتيح API وتستخدم @remnawave/subscription-page لصفحة الاشتراك العامة.
شغّل الأمر أدناه لتنزيل ملف Caddyfile.
curl -o Caddyfile https://raw.githubusercontent.com/remnawave/caddy-with-auth/refs/heads/main/examples/minimal-security-setup-with-mfa-with-api-without-auth/Caddyfile
تشغيل الحاوية
بعد اختيار أحد الإعدادات أعلاه، يمكنك بدء الحاوية بالأمر التالي.
docker compose up -d && docker compose logs -f
الوصول إلى اللوحة
بعد تشغيل الحاوية، يمكنك الوصول إلى اللوحة على https://panel.domain.com.
بعد ذلك، ستتم إعادة توجيهك إلى صفحة تسجيل دخول Caddy Auth.
في أول تشغيل، سيُطلب منك إنشاء طريقة MFA.
نوصي باستخدام Google Authenticator لهذا الغرض.
تعطيل MFA
إذا أردت تعطيل MFA تماماً، يمكنك ذلك بتعديل ملف Caddyfile.
افتح ملف Caddyfile وغيّر السطر التالي:
cd /opt/remnawave/caddy && nano Caddyfile
ابحث عن الأسطر التالية وأزل سطر require mfa.
transform user {
match origin local
action add role authp/admin
require mfa
}
بعد ذلك، يمكنك إعادة تشغيل الحاوية بالأمر التالي.
docker compose down && docker compose up -d && docker compose logs -f
الوصول إلى صفحة بوابة المصادقة
يمكنك الوصول إلى صفحة بوابة المصادقة على https://<your-domain>/r.

هنا يمكنك الانتقال بسرعة إلى لوحة Remnawave أو إدارة بعض إعدادات بوابة المصادقة.
في قسم MFA، يمكنك حذف أو إضافة أجهزة MFA جديدة.
إصدار مفاتيح API
يمكنك الوصول إلى صفحة بوابة المصادقة على https://<your-domain>/r.
في صفحة بوابة المصادقة، يمكنك إصدار مفاتيح API، انقر على تبويب API-keys.
بعد إصدار مفتاح API، يمكنك استخدامه في رأس X-Api-Key لطلباتك إلى API.
مثال: X-Api-Key: YxOovHLnpkcmSig5082egcHnyTk8SK4dNGAFHgZ2LKZezgj5oUj2FA2IR2sMwbALnP9YNpzZ
