دليل عملي

استضافة Homepage على خادم VPS الخاص بك

الاستضافة الذاتية7 دقائق للقراءةعدد الخطوات: 5

Homepage لوحة تحكم مستضافة ذاتياً تجمع كل خدماتك وأدواتك المصغّرة وروابطك المفضّلة في صفحة واحدة. نشرها على خادم VPS الخاص بك يمنحك صفحة بداية قابلة للتخصيص بالكامل، يمكن الوصول إليها من أي متصفح، دون الاعتماد على خدمة خارجية. يغطي هذا الدليل التثبيت الكامل مع Docker، وإعداد الأدوات المصغّرة المتقدم، وتأمين الوصول والنسخ الاحتياطي.

المحتويات· لماذا تستضيف Homepage على خادم VPS الخاص بك1/8
  1. 01لماذا تستضيف Homepage على خادم VPS الخاص بك
  2. 02الفوائد الملموسة لـ Homepage المستضاف ذاتياً
  3. 03المتطلبات التقنية
  4. 04انشر Homepage مع Docker في 5 خطوات
  5. 05إعداد أدوات خدمات مصغّرة
  6. 06تأمين الوصول إلى لوحة التحكم
  7. 07النسخ الاحتياطي واستعادة الإعدادات
  8. 08تثبيت Homepage عبر Marketplace من ServOrbit

لماذا تستضيف Homepage على خادم VPS الخاص بك

Homepage (gethomepage.dev) لوحة تحكم ساكنة مكتوبة بـ Next.js، مصمَّمة لتكون صفحة البداية لبنيتك التحتية. خلافاً لحلول SaaS من نوع صفحة البداية، يبقى كل شيء تحت سيطرتك: تعيش الإعدادات في ملفات YAML بسيطة، وتستعلم الأدوات المصغّرة عن خدماتك أنت (Proxmox, qBittorrent, Sonarr, Pi-hole…)، ولا تمرّ أي بيانات عبر سحابة خارجية. واستضافتها على خادم VPS تجعلها متاحة في كل مكان، من أي متصفح، بأدنى تأخّر لأن الصفحة تُقدَّم كمحتوى ساكن بالكامل تقريباً.

هي أيضاً نقطة الدخول المثالية لقيادة حزمة Docker متنامية: يكفي ملف services.yaml واحد لرسم خريطة عشرات الحاويات. حين تزداد بنيتك التحتية تعقيداً — تطبيقات متعددة، ونطاقات فرعية متعددة، وخدمات على خوادم VPS متعددة — يصبح Homepage بمثابة قمرة القيادة الوحيدة التي تتحقق منها من حالة كل شيء بنظرة واحدة.

الفوائد الملموسة لـ Homepage المستضاف ذاتياً

  • إعدادات بصيغة YAML قابلة للإصدار في Git: تُعيد بناء لوحة تحكمك طبق الأصل خلال ثوانٍ بعد إعادة التثبيت.
  • أدوات مصغّرة أصلية لأكثر من 100 خدمة (Docker, Proxmox, Plex, Grafana, AdGuard, Pi-hole, Portainer…) مع عرض إحصاءات آنيّة.
  • اكتشاف تلقائي لحاويات Docker عبر الوسوم (labels)، دون إدخال يدوي للروابط.
  • بصمة ذاكرة ضئيلة: أقل من 128 ميغابايت من الذاكرة، مثالية على خادم VPS صغير يشغّل حاويات أخرى.
  • لا قياس عن بُعد ولا اعتماد على السحابة: تبقى صفحة بدايتك خاصة 100%، حتى في حالة انقطاع الشبكة.
  • تخصيص كامل للمظهر، وخلفيات الشاشة، وشريط البحث، ومجموعات الخدمات.
  • إعادة تحميل الإعدادات فوريًا: لا حاجة لإعادة تشغيل الحاوية بعد تعديل ملفات YAML.

المتطلبات التقنية

Homepage خفيفة جداً. خادم VPS بـ 1 vCPU و512 ميغابايت من الذاكرة كافٍ عملياً، حتى مع تشغيل حاويات أخرى بجانبه. احسب نحو 300 ميغابايت من مساحة القرص للصورة والإعدادات. ستحتاج إلى:

- Docker وDocker Compose v2 مثبَّتَين (تحقق بـ docker compose version).
- اسم نطاق أو نطاق فرعي يشير إلى IP العام لخادم VPS، مثل home.yourdomain.com.
- وسيط عكسي — Caddy أو Traefik — للتعامل مع HTTPS وشهادة Let's Encrypt.
- مقبس Docker /var/run/docker.sock مربوط للقراءة فقط إن أردت استخدام أدوات Docker المصغّرة والاكتشاف التلقائي.

إن انطلقت من خادم VPS جديد، ثبّت Docker وفق الوثائق الرسمية، ثم فعّل الإقلاع التلقائي بـ systemctl enable --now docker.

انشر Homepage مع Docker في 5 خطوات

  1. تجهيز شجرة المجلدات

    اتصل بخادم VPS عبر SSH وأنشئ المجلدات:

    mkdir -p ~/homepage/config
    cd ~/homepage

    ستُولَّد الملفات services.yaml وwidgets.yaml وsettings.yaml وbookmarks.yaml تلقائياً عند أول تشغيل داخل مجلد config/. يمكنك أيضاً إنشاؤها فارغة مسبقاً للتحكم في محتواها منذ البداية.

  2. كتابة ملف docker-compose.yml

    أنشئ ~/homepage/docker-compose.yml بالمحتوى التالي:

    services:
      homepage:
        image: ghcr.io/gethomepage/homepage:latest
        container_name: homepage
        restart: unless-stopped
        ports:
          - 127.0.0.1:3000:3000
        volumes:
          - ./config:/app/config
          - /var/run/docker.sock:/var/run/docker.sock:ro
        environment:
          - HOMEPAGE_ALLOWED_HOSTS=home.yourdomain.com

    لاحظ الربط 127.0.0.1:3000:3000: لا يمكن الوصول إلى المنفذ إلا من loopback المحلي، ولا يُعرَّض مباشرةً على IP العام. الوسيط العكسي هو بوابة الدخول الوحيدة.

  3. تشغيل الحاوية

    ابدأ Homepage في الخلفية وتحقق من السجلات:

    docker compose up -d
    docker compose logs -f

    يستمع Homepage افتراضياً على المنفذ 3000. اختبر محلياً قبل فتح الوسيط العكسي:

    curl http://localhost:3000

    إن كان الرد مستنداً HTML، فالحاوية تعمل.

  4. ربط الوسيط العكسي وSSL

    مع Caddy — أضف في Caddyfile:

    home.yourdomain.com {
        reverse_proxy localhost:3000
    }

    يولّد Caddy شهادة Let's Encrypt ويجدّدها تلقائياً. أعد التحميل: systemctl reload caddy.

    مع Traefik — أضف وسوماً للخدمة في docker-compose.yml:

    labels:
      - traefik.enable=true
      - traefik.http.routers.homepage.rule=Host(`home.yourdomain.com`)
      - traefik.http.routers.homepage.entrypoints=websecure
      - traefik.http.routers.homepage.tls.certresolver=letsencrypt

    في كلتا الحالتين، تأكد أن DNS يشير إلى IP الخادم VPS قبل محاولة تحدي ACME.

  5. تخصيص الخدمات والأدوات المصغّرة

    حرّر config/services.yaml لتعريف تطبيقاتك في مجموعات:

    - الأدوات:
        - Portainer:
            href: https://portainer.yourdomain.com
            description: إدارة الحاويات
            icon: portainer.png

    أضف أدوات موارد النظام في config/widgets.yaml:

    - resources:
        cpu: true
        memory: true
        disk: /

    يُعيد Homepage قراءة الإعدادات فوريًا: أعد تحميل الصفحة في المتصفح بعد كل تعديل، دون إعادة تشغيل الحاوية.

إعداد أدوات خدمات مصغّرة

الأدوات المصغّرة هي القيمة المضافة لـ Homepage مقارنةً بقائمة روابط بسيطة. تستعلم كل أداة مصغّرة عن واجهة API للخدمة المستهدفة وتعرض مقاييس آنية مباشرة على البطاقة.

لتفعيل أداة مصغّرة، أضف كتلة widget تحت تعريف الخدمة في services.yaml. مثال مع Portainer:

- Portainer:
    href: https://portainer.yourdomain.com
    widget:
      type: portainer
      url: https://portainer.yourdomain.com
      env: 1
      key: your-api-token

لا يجب أبداً كتابة مفاتيح API بنص صريح في services.yaml إن كان هذا الملف مُصدَراً في مستودع عام. أنشئ ملف .env بجانب docker-compose.yml وأشِر إلى الأسرار بالتدوين {{PORTAINER_KEY}} في YAML — يحلّ Homepage هذه المتغيرات عند الإقلاع.

أدوات مصغّرة أخرى شائعة الاستخدام: Proxmox (المعالج، الذاكرة، تخزين الكتلة)، Pi-hole (الطلبات المحظورة، العملاء النشطون)، Sonarr / Radarr (التنزيلات الجارية)، Grafana (اللوحات المدمجة)، Uptime Kuma (حالة كل مراقب). القائمة الكاملة موجودة في الوثائق الرسمية لـ gethomepage.dev.

فعّل الاكتشاف التلقائي بإضافة وسوم homepage.group وhomepage.name وhomepage.href وhomepage.icon مباشرةً على حاويات Docker الأخرى لديك. يكتشفها Homepage عبر المقبس المربوط ويضيفها إلى لوحة التحكم دون المساس بـ services.yaml. بدمج هذا النهج مع ملف .env لتخزين مفاتيح API الخاصة بأدواتك المصغّرة (لا تكن ظاهرةً أبداً في YAML المُصدَر)، تحصل على لوحة تحكم تُحدِّث نفسها مع كل نشر جديد: ضع الوسوم مرة واحدة، ويقرأها Homepage باستمرار.

تأمين الوصول إلى لوحة التحكم

لوحة تحكم تُدرج جميع خدماتك هدف جذّاب. إجراءان أساسيان ضروريان قبل كشف Homepage على الإنترنت.

تقييد الوصول بالـ IP أو المصادقة. إن كان Homepage مخصصاً لك وحدك، فأبسط حل هو السماح لعنوان IP الخاص بك فقط في إعدادات الوسيط العكسي. مع Caddy:

home.yourdomain.com {
    @allowed remote_ip 203.0.113.42
    handle @allowed {
        reverse_proxy localhost:3000
    }
    respond 403
}

إن كنت تصل إلى لوحة التحكم من شبكات متعددة، فضّل مصادقة HTTP الأساسية أو وسيط مصادقة مثل Authelia أو Authentik أمام Homepage.

لا تكشف مقبس Docker بصلاحية الكتابة. الربط /var/run/docker.sock:/var/run/docker.sock:ro بالقراءة فقط كافٍ لـ Homepage. لا تمنح الكتابة أبداً: حاوية مخترقة تملك صلاحية الكتابة على المقبس يمكنها إنشاء حاويات جديدة بأحجام عشوائية على المضيف.

حدّث الصورة بانتظام. استخدم docker compose pull && docker compose up -d لتحديث Homepage متى توفّرت صورة جديدة. يمكنك أتمتة هذا بـ Watchtower مُعدّاً لمراقبة حاوية homepage فقط.

النسخ الاحتياطي واستعادة الإعدادات

تعيش كل إعدادات Homepage في مجلد config/: هو المجلد الوحيد الذي تحتاج إلى نسخه احتياطياً. لا قاعدة بيانات، لا حالة مستمرة خارج ملفات YAML هذه.

إصدار في Git. أكثر الأساليب موثوقيةً هو تهيئة مستودع Git في ~/homepage/config/ والتنفيذ (commit) بعد كل تعديل. إن احتوت إعداداتك مفاتيح API (حتى عبر متغيرات)، أضف .gitignore لاستبعاد ملف .env وإصدار ملفات YAML فقط.

نسخ احتياطي تدريجي إلى تخزين الكائنات. مع restic وحاوية S3 متوافقة (Garage, MinIO, Backblaze B2)، جدوِل نسخاً احتياطياً يومياً من cron:

restic -r s3:s3.example.com/my-bucket/homepage backup ~/homepage/config

الاستعادة. في حالة فقدان الخادم VPS، أعد إنشاء الحاوية، وأعد config/ من النسخة الاحتياطية، ونفّذ docker compose up -d. يعمل Homepage في أقل من دقيقة — أحد المزايا الملموسة لإعداد 100% تعريفي بـ YAML.

تثبيت Homepage عبر Marketplace من ServOrbit

إن كنت تفضّل عدم ضبط Docker يدوياً، يوفّر Marketplace من ServOrbit Homepage كتثبيت موجَّه. بضع نقرات من لوحة تحكم عميلك تُنشئ خادم VPS مع Homepage جاهزاً للاستخدام: الصورة الرسمية، ومنفذ مربوط على loopback، ومتغيّر HOMEPAGE_ALLOWED_HOSTS مضبوط مسبقاً.

يتضمن القالب أيضاً Caddy مثبَّتاً مسبقاً بإعداد الوسيط العكسي الأدنى، بحيث يكون داشبوردك متاحاً عبر HTTPS فور اكتمال التزويد. لا يتبقى عليك سوى تعريف نطاقك الفرعي وتخصيص ملفات YAML في config/.

اعثر على الصفحة الكاملة للمواصفات، والمتطلبات الدنيا، وزرّ التثبيت في صفحة Marketplace المخصصة.

ثبّت Homepage بنقرة واحدة

انشر Homepage على خادم VPS Cloud من ServOrbit بقالب Docker مُعدّ مسبقاً. قرص SSD، وDocker جاهز للاستخدام، ونطاق ترددي سخي لتقديم صفحة بدايتك دون تأخّر.

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

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

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