لماذا تستضيف بياناتك المالية على خادمك الخاص
إسناد بياناتك المالية إلى طرف ثالث يعني قبول شروط التخزين وسياسات مشاركة البيانات والاستمرارية التجارية لهذه الخدمة. رفعت عدة خدمات شهيرة أسعارها بنسبة 30 إلى 60 بالمئة بين عامَي 2023 و2025، أو أغلقت أبوابها كلياً. الاستضافة الذاتية تعالج تساؤلاً مشروعاً: «بياناتي المالية حساسة جداً كي أضعها على خادم أديره بنفسي.» عملياً، يوفر VPS مُهيَّأ بشكل صحيح تشفيراً أثناء النقل عبر TLS، وتشفيراً لوحدة تخزين PostgreSQL على مستوى القرص، ونسخاً احتياطية تلقائية، وقيوداً على الوصول تقتصر على عنوان IP الخاص بك. هذا أصغر بكثير من سطح الهجوم المكشوف لخدمة SaaS تجمع بيانات عشرات الآلاف من المستخدمين.
ما يقدمه Maybe
يجمع Maybe إدارة الميزانية وتتبع الاستثمارات وحساب صافي الثروة في واجهة واحدة قابلة للاستضافة الذاتية.
- لوحة تحكم لصافي الثروة (الأصول والخصوم والتطور عبر الزمن)
- تتبع المعاملات مع تصنيف تلقائي وقواعد قابلة للتخصيص
- ربط الحسابات البنكية عبر Plaid (الولايات المتحدة وكندا) أو الإدخال اليدوي
- تتبع الاستثمارات والمحافظ المالية مع أسعار لحظية عبر Synth Finance
- ميزانيات وأهداف ادخار حسب الفئة
- تقارير شهرية وسنوية قابلة للتصدير
- مساعد ذكاء اصطناعي اختياري (يتطلب مفتاح OpenAI) لتحليل المصروفات
- واجهة متعددة الحسابات: الشريك أو أفراد الأسرة أو العملاء
المتطلبات التقنية
يعمل Maybe كتطبيق Ruby on Rails مع أربعة خدمات Docker: خادم الويب، وعامل Sidekiq للمهام غير المتزامنة، وPostgreSQL 16، وRedis. للاستخدام الشخصي أو الفريق الصغير، يكفي VPS بمعالجَين افتراضيَّين و2 غيغابايت من الذاكرة. للاستخدام المهني مع مستخدمين متعددين ومزامنة بنكية نشطة، يُنصح بـ4 غيغابايت من الذاكرة. يجب أن يكون المنفذ 3000 متاحاً (أو عبر بروكسي عكسي من المنفذ 443). خصص 5 غيغابايت لبيانات التطبيق وقاعدة البيانات، إضافة إلى مساحة للنسخ الاحتياطية.
تثبيت Maybe على VPS باستخدام Docker Compose
يعتمد التثبيت على Docker Compose وملف .env. تبدأ الخطوات التالية من VPS Debian 12 نظيف.
تثبيت Docker Engine
على Debian/Ubuntu:
curl -fsSL https://get.docker.com | sh. تحقق من التثبيت بتشغيلdocker run hello-world. يتضمن Docker Engine 23 وما بعده Docker Compose v2 تلقائياً.إنشاء دليل العمل
نفّذ
mkdir -p /opt/maybe && cd /opt/maybe. سيحتوي هذا الدليل على ملفcompose.ymlوملف.env.تنزيل ملف Compose الرسمي
احصل على المثال المُرفق بالمشروع:
curl -o compose.yml https://raw.githubusercontent.com/maybe-finance/maybe/main/compose.example.yml. يُعرِّف هذا الملف الخدمات الأربع والأقراص المسماة.إنشاء ملف .env
أنشئ
/opt/maybe/.envبالمحتوى التالي:SECRET_KEY_BASE=$(openssl rand -hex 64)،POSTGRES_PASSWORD=كلمة_مرور_قوية،SELF_HOSTED=true،APP_DOMAIN=finance.your-domain.com. أنشئ مفتاحاً سرياً باستخدامopenssl rand -hex 64.تشغيل الخدمات
من داخل
/opt/maybe، شغّلdocker compose up -d. سيقوم Docker بتنزيل صورghcr.io/maybe-finance/maybe:stableوPostgreSQL 16 وRedis ثم تشغيل الحاويات. يستغرق تهيئة قاعدة البيانات دقيقة إلى دقيقتين.إعداد بروكسي عكسي
ضع Nginx أو Caddy أمام المنفذ 3000 لخدمة Maybe عبر HTTPS. مع Caddy: أضف
finance.your-domain.com { reverse_proxy localhost:3000 }في ملفCaddyfile. يتولى Caddy إدارة شهادة Let's Encrypt تلقائياً.إنشاء أول حساب
انتقل إلى
https://finance.your-domain.com. يعرض Maybe نموذج تسجيل عند أول تشغيل. في وضعSELF_HOSTED=true، يصبح أول حساب منشأ مدير النظام. عطّل التسجيل العام من الإعدادات إذا كانت النسخة شخصية.
ربط الحسابات البنكية
يدعم Maybe طريقتَين لربط الحسابات. يتيح الربط التلقائي عبر Plaid البنوك الأمريكية والكندية: أضف بيانات اعتماد Plaid API (PLAID_CLIENT_ID وPLAID_SECRET) في ملف .env، ثم اربط حساباتك من الواجهة. بالنسبة للبنوك الأوروبية والعربية، يبقى الإدخال اليدوي للمعاملات الطريقة الرئيسية. يقبل Maybe استيراد ملفات CSV بتنسيق قياسي، مما يتيح الترحيل من جدول بيانات أو تصدير من البنك. يعتمد تتبع الاستثمارات على واجهة Synth Finance API لأسعار الأسهم: أضف SYNTH_API_KEY لتفعيل التقييم التلقائي للمحافظ.
النسخ الاحتياطي لـPostgreSQL والتشفير
تُخزَّن قاعدة بيانات PostgreSQL في وحدة تخزين Docker المسماة maybe_postgres-data. للنسخ الاحتياطي المنتظم: أنشئ سكريبتاً ينفّذ docker exec maybe-db-1 pg_dump -U maybe_user maybe_production | gzip > /backups/maybe-$(date +%Y%m%d).sql.gz، ثم جدوله بمؤقت systemd أو cron. لاستراتيجية 3-2-1 كاملة، أرسل هذه النسخ المشفرة إلى تخزين كائنات متوافق مع S3 باستخدام Restic أو rclone. يدعم Maybe أيضاً تخزين ملفات التطبيق على Amazon S3 أو Cloudflare R2 عبر متغيرات ACTIVE_STORAGE_SERVICE والمتغيرات المرتبطة بها. يعتمد تشفير البيانات الحساسة في قاعدة البيانات (مفاتيح API والرموز) على مفاتيح ACTIVE_RECORD_ENCRYPTION_* — إن لم تُحددها صراحةً، تُشتق من SECRET_KEY_BASE.
قيّد الوصول إلى نسخة Maybe الخاصة بك بوضعها خلف VPN (Tailscale أو Headscale) أو بتصفية الوصول حسب عنوان IP في Nginx باستخدام allow 203.0.113.10; deny all;. نسخة المالية الشخصية لا تحتاج إلى أن تكون متاحة للعموم: الوصول الخاص يقلص سطح الهجوم بشكل كبير دون التأثير على سهولة الاستخدام.
استكشاف الأخطاء: المشكلات الشائعة
الأخطاء الأكثر شيوعاً بعد تثبيت Maybe على VPS، وحلولها.
-
web exited with code 1عند بدء التشغيل: قاعدة البيانات لم تكن جاهزة بعد. تحقق بـdocker compose logs dbأن PostgreSQL انطلق، ثم نفّذdocker compose restart web worker. - صفحة بيضاء أو خطأ 500 بعد التسجيل: تأكد أن
SECRET_KEY_BASEمُعرَّف وغير فارغ في.env. مفتاح غائب يمنع Rails من فك تشفير الجلسة. -
PG::ConnectionBadفي سجلات الويب: يجب أن تكون قيمةDB_HOSTهيdb(اسم خدمة Docker) وليسlocalhost. راجع ملف.env. - المهام غير المتزامنة (مزامنة البنك، التقارير) لا تعمل: خدمة
workerغير مُشغَّلة. تحقق بـdocker compose psأن الخدمات الأربع في حالةrunning. - تراجع بعد التحديث: بعد
docker compose pull، شغّلdocker compose up --no-deps -d web workerبدلاً منdocker compose up -dلتجنب إعادة إنشاء حاويات قاعدة البيانات دون داعٍ.
مقارنة: Maybe ذاتي الاستضافة مقابل YNAB وMonarch Money
تقارن هذه الجدول Maybe ذاتية الاستضافة مع تطبيقات SaaS الرئيسية لإدارة التمويل الشخصي.
مرّر الجدول أفقيًا
| المعيار | Maybe (ذاتي الاستضافة) | YNAB | Monarch Money |
|---|---|---|---|
| التكلفة السنوية | تكلفة VPS (5-10 €/شهر) | 109 $/سنة | 99.99 $/سنة |
| التحكم في البيانات | كامل — البيانات على خادمك | لا — البيانات لدى YNAB | لا — البيانات لدى Monarch |
| ربط البنوك | Plaid (أمريكا/كندا) أو يدوي | Plaid (أمريكا/كندا/أوروبا جزئي) | Plaid (أمريكا/كندا) |
| تتبع الاستثمارات | نعم (عبر Synth Finance) | لا نتيجة أصلية | نعم |
| لوحة صافي الثروة | نعم | لا | نعم |
| مساعد ذكاء اصطناعي | اختياري (يتطلب مفتاح OpenAI) | لا | نعم (مضمّن) |
| الصيانة المطلوبة | نعم — تحديثات يدوية | لا | لا |
| الرخصة | AGPLv3 (مفتوح المصدر) | ملكية خاصة | ملكية خاصة |
لمزيد من التعمق
يتناول مقال استضافة PostgreSQL على VPS الضبط الدقيق لمحرك قاعدة البيانات لأحمال عمل الإنتاج. يشرح مقال استراتيجية النسخ الاحتياطي 3-2-1 مع Restic وS3 كيفية إعداد احتفاظ مشفر وموثَّق الإصدارات. لتأمين الوصول إلى نسخة Maybe دون VPN كامل، يقدم مقال Nextcloud نموذجاً لإعداد Nginx مع مصادقة أساسية.