العمليات والصيانة¶
HTTPS مع Caddy¶
تستخدم VortexUI خادم Caddy لـ HTTPS تلقائي:
- Let's Encrypt تلقائي — تُصدر الشهادات وتُجدد بدون إعداد
- إعادة توجيه HTTP → HTTPS — جميع الحركة تُجبر على HTTPS
- توجيه SPA — واجهة React تُقدَّم بشكل صحيح
- وكيل عكسي — طلبات API تُوجَّه لخلفية Go
- نقطة نهاية DoH —
/dns-queryتُقدَّم إذا كان DoH مفعّلاً
بنية Caddyfile¶
{$VORTEX_DOMAIN} {
encode gzip
handle /api/* {
reverse_proxy localhost:8080
}
handle /sub/* {
reverse_proxy localhost:8080
}
handle /dns-query {
reverse_proxy localhost:8053
}
handle {
root * /opt/vortexui/web/dist
try_files {path} /index.html
file_server
}
}
Tip
إذا كنت بحاجة لإعدادات TLS مخصصة (مثل شهادة عميل، مجموعات تشفير محددة)، عدّل deploy/Caddyfile.
مقاييس Prometheus¶
التفعيل: عيّن VORTEX_METRICS_ENABLED=true و VORTEX_METRICS_LISTEN=:9090.
المقاييس المتاحة¶
| المقياس | النوع | الوصف |
|---|---|---|
vortex_users_total |
Gauge | إجمالي عدد المستخدمين حسب الحالة |
vortex_traffic_bytes |
Counter | بايتات الحركة (رفع/تنزيل) |
vortex_connections_active |
Gauge | الاتصالات النشطة الحالية |
vortex_nodes_status |
Gauge | حالة العقدة (1=متصلة، 0=غير متصلة) |
vortex_node_cpu_percent |
Gauge | استخدام المعالج للعقدة |
vortex_node_memory_percent |
Gauge | استخدام الذاكرة للعقدة |
vortex_orders_total |
Counter | الطلبات حسب الحالة |
vortex_api_requests_total |
Counter | طلبات API حسب نقطة النهاية/الحالة |
vortex_api_latency_seconds |
Histogram | زمن استجابة API |
لوحة معلومات Grafana¶
استورد لوحة المعلومات الجاهزة من deploy/grafana/vortexui-dashboard.json:
- افتح Grafana → Dashboards → Import
- ارفع ملف JSON أو الصق محتواه
- اختر مصدر بيانات Prometheus الخاص بك
- تعرض لوحة المعلومات: اتجاهات الحركة، سلامة العقد، نشاط المستخدمين، أداء API
التوسّع والتوفر العالي¶
التوسّع الأفقي¶
للنشرات الكبيرة:
| المكوّن | استراتيجية التوسّع |
|---|---|
| Panel API | تشغيل عدة نسخ خلف موازن حمل |
| قاعدة البيانات | PostgreSQL مع نسخ قراءة |
| Redis | Redis Cluster أو Sentinel |
| العقد | إضافة بقدر الحاجة (تُدار تلقائياً) |
| الاتحاد | ربط عدة لوحات للتوزيع الإقليمي |
وضع العنقود¶
تشغيل عدة نسخ من لوحة التحكم:
- جميع النسخ تتشارك نفس PostgreSQL و Redis
- استخدم موازن حمل (Caddy، nginx، HAProxy) أمامها
- اتصالات SSE ملتصقة (يُوصى بتقارب الجلسة)
- المهام الخلفية تستخدم أقفال موزّعة مبنية على Redis
اعتبارات قاعدة البيانات¶
| المشكلة | الحل |
|---|---|
| تجمّع الاتصالات | pgBouncer أمام PostgreSQL |
| توسّع القراءة | نسخ قراءة لاستعلامات التحليلات |
| إنتاجية الكتابة | جداول TimescaleDB الفائقة لبيانات الحركة |
| النسخ الاحتياطي | pg_dump + أرشفة WAL لاسترداد نقطة زمنية |
صيانة قاعدة البيانات¶
نصائح TimescaleDB¶
بيانات الحركة تُخزَّن في جداول TimescaleDB الفائقة لاستعلامات سلاسل زمنية فعّالة:
-- فحص أحجام الأجزاء
SELECT show_chunks('traffic_data');
-- تعيين سياسة الاحتفاظ (الاحتفاظ 90 يوماً)
SELECT add_retention_policy('traffic_data', INTERVAL '90 days');
-- ضغط الأجزاء القديمة
SELECT add_compression_policy('traffic_data', INTERVAL '7 days');
صيانة روتينية¶
# Vacuum والتحليل
psql -U vortex -d vortex -c "VACUUM ANALYZE;"
# فحص حجم قاعدة البيانات
psql -U vortex -d vortex -c "SELECT pg_size_pretty(pg_database_size('vortex'));"
# قائمة أكبر الجداول
psql -U vortex -d vortex -c "
SELECT relname, pg_size_pretty(pg_relation_size(oid))
FROM pg_class
ORDER BY pg_relation_size(oid) DESC
LIMIT 10;
"
الترحيلات¶
تعمل الترحيلات تلقائياً عند بدء لوحة التحكم. للتشغيل يدوياً:
فحص حالة الترحيل:
إدارة السجلات¶
سجلات لوحة التحكم¶
# سجلات حيّة
journalctl -u vortexui -f
# آخر 100 سطر
journalctl -u vortexui -n 100
# تصفية حسب المستوى
journalctl -u vortexui | grep ERROR
سجلات عميل العقدة¶
مستويات السجل¶
تُعدّ عبر البيئة:
تدوير السجلات¶
journald في systemd يتولى التدوير افتراضياً. اضبط الحدود:
تحسين الأداء¶
حدود النظام¶
# زيادة حدّ واصفات الملفات
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
# الزيادة لخدمة systemd
# في /etc/systemd/system/vortexui.service
[Service]
LimitNOFILE=65535
تحسين الشبكة¶
# /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
تطبيق: sysctl -p
تحسين Redis¶
تحسين PostgreSQL¶
الإعدادات الرئيسية لأعباء عمل VortexUI:
# postgresql.conf
shared_buffers = 512MB # 25% من الذاكرة
effective_cache_size = 1536MB # 75% من الذاكرة
work_mem = 16MB
maintenance_work_mem = 128MB
random_page_cost = 1.1 # SSD
خدمات Systemd¶
خدمة لوحة التحكم¶
# /etc/systemd/system/vortexui.service
[Unit]
Description=VortexUI Panel
After=postgresql.service redis.service
[Service]
Type=simple
User=vortex
WorkingDirectory=/opt/vortexui
ExecStart=/opt/vortexui/vortexui serve
Restart=always
RestartSec=5
LimitNOFILE=65535
EnvironmentFile=/opt/vortexui/.env
[Install]
WantedBy=multi-user.target
خدمة عميل العقدة¶
# /etc/systemd/system/vortex-node.service
[Unit]
Description=VortexUI Node Agent
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/vortex-node
ExecStart=/opt/vortex-node/vortex-node
Restart=always
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target