عن المشروع

Theia – تحليلات خصوصية-first من جانب الخادم نظرة عامة يوفر Theia إحصائيات حركة مرور الموقع دون أي JavaScript من جانب العميل. يراقب سجلات وصول nginx في الوقت الفعلي، ويحلل كل سطر لاستخراج المسار، والمُحيل، ووكيل المستخدم، وعنوان IP، ورقم الحالة، والبايت المُرسلة، ثم يُشفر عناوين IP للحفاظ على الخصوصية، ويخزن النتائج في قاعدة بيانات SQLite محلية. نظراً لأن جميع المعالجات تتم على الخادم، فإن البيانات محصنة ضد حجب الإعلانات ولا تعتمد على خدمات pihak ثالث. التثبيت التثبيت السريع: حمّل سكريبت التثبيت باستخدام curl أو wget وقم بتشغيله بصلاحيات sudo bash. يكشف السكريبت عن البنية الثنائية، ويُثبّت الملف الثنائي في /usr/local/bin/theia، ويضيف تنسيق سجل nginx مخصص لتتبع النطاقات المتعددة (اختياري)، وينشئ خدمة systemd ويُجهّز الدليل /var/lib/theia لتخزين البيانات. التثبيت اليدوي مدعوم أيضاً – انسخ المستودع، وبني باستخدام go build، وانسخ الملف الثنائي، وأنشئ دليل البيانات، وثبّت وحدة systemd المرفقة. تشغيل خدمة الخلفية تتابع خدمة الخلفية (daemon) سجل وصول nginx وتكتب السجلات المحللة إلى قاعدة بيانات SQLite. أمر المثال: sudo theia daemon --log-path /var/log/nginx/access.log --db-path /var/lib/theia/theia.db الأعلام الأساسية: --log-path (الافتراضي /var/log/nginx/access.log) و --db-path (الافتراضي ./theia.db). الإحصائيات عبر سطر الأوامر يعمل دليل stats على قراءة قاعدة البيانات وطباعة جدول ملخص أو إخراج JSON. الاستخدام النموذجي: theia stats --db-path /var/lib/theia/theia.db تتيح الخيارات تغيير فترة الرجوع للخلف (--days)، والتصفية حسب النطاق (--host)، واختيار تنسيق الإخراج (--format json|table)، وضبط عدد الإدخالات العليا (--top). خدمة واجهة برمجة التطبيقات HTTP يطلق الأمر serve واجهة HTTP/JSON (أو CSV) محمية بـ bearer token على 127.0.0.1:8081. يمكن توجيهها عبر nginx لإتاحتها خارجياً. يمكن توفير المصادقة عبر ملف رمز، أو متغير بيئة، أو علامة سطر أوامر. نقاط النهاية تشمل: GET /api/v1/stats – بيانات سلسلة زمنية GET /api/v1/stats/paths – أعلى المسارات GET /api/v1/stats/referrers – أعلى المُحالين GET /api/v1/stats/status-codes – تفريغ أرقام الحالة معاملات الاستعلام الشائعة: host, from, to, format, group_by, top. اكتمالShell يقوم الأمر theia completion باكتشاف ال shell الحالي ويعرض تثبيت سكريبتات الإكمال لـ bash أو zsh أو fish. إدارة الخدمة يعمل Theia كوحدة systemd. استخدم أوامر systemctl القياسية للبدء والإيقاف وإعادة التشغيل وعرض الحالة وتتبع السجلات. كيف يعمل داخلياً 1. تتبع ملف سجل nginx في الوقت الفعلي. 2. تحليل كل سطر للحقول ذات الصلة. 3. تشفير عنوان IP + وكيل المستخدم + التاريخ للحفاظ على عدم الكشف. 4. اكتشاف الروبوتات وطلبات الأصول الثابتة تلقائياً. 5. كتابة السجلات بشكل غير متزامن في SQLite (وضع WAL) مما يسمح بالقراءات المتزامنة. 6. تنظيف دوري يزيل الإحصائيات الساعية الأقدم من 60 يوماً. اعتبارات الأمان تحتاج خدمة الخلفية إلى صلاحيات root أو sudo لقراءة سجلات nginx. يجب تخزين رمز API في ملف بدلاً من سطر الأوامر لتجنب التعرض عبر قائمة العمليات. يُوصى بتقييد المعدلات وقواعد fail2ban للماسحين الضارين (راجع docs/nginx-hardening.md). القيود * يتم جمع عدّادات عرض الصفحات فقط؛ لا توجد أحداث من جانب العميل. * فقدان البيانات ممكن في حال الانهيارات المفاجئة. * لا يوجد لوحة تحكم ويب مدمجة – يمكن للمستخدمين تناول مخرجات CLI أو واجهة HTTP API أو استعلام SQLite مباشرة. الرخصة Apache License 2.0.