প্রকল্প সম্পর্কে
Theia – গোপনীয়তা‑প্রথম সার্ভার‑সাইড অ্যানালিটিক্স
Overview
Theia কোনো ক্লায়েন্ট‑সাইড JavaScript ছাড়াই ওয়েবসাইট ট্রাফিক পরিসংখ্যান প্রদান করে। এটি nginx অ্যাক্সেস লগকে বাস্তব‑সময়ে tails করে, প্রতিটি লাইন থেকে পাথ, রেফারার, ইউজার‑এজেন্ট, IP, স্ট্যাটাস কোড এবং বাইটস সেন্ট.extract করে, IP‑কে গোপনীয়তার জন্য হ্যাশ করে এবং ফলাফলকে স্থানীয় SQLite ডেটাবেসে সংরক্ষণ করে। যেহেতু সব প্রক্রিয়াসerver‑side‑এ ঘটে, ডেটা অ্যাড‑ব্লকারের প্রভাব থেকে মুক্ত এবং তৃতীয়‑পক্ষ পরিষেবাগে নির্ভর করে না।
Installation
দ্রুত ইনস্টল: curl বা wget দিয়ে ইনস্টল স্ক্রিপ্ট ডাউনলোড করুন এবং sudo bash দিয়ে চালান। স্ক্রিপ্ট আর্কিটেকচার সনাক্ত করে, বাইনারিকে /usr/local/bin/theia‑এ ইনস্টল করে, মাল্টি‑ডোমেইন ট্র্যাকিং (ঐচ্ছিক) জন্য একটি কাস্টম nginx লগ ফরম্যাট যোগ করে, একটি systemd পরিষেবা তৈরি করে এবং /var/lib/theia‑এ ডেটা সংরক্ষণের জন্য প্রস্তুত করে। ম্যানুয়াল ইনস্টলও সমর্থিত – রেপোজিটোরি ক্লোন করুন, go build দিয়ে বিল্ড করুন, বাইনারি কপি করুন, ডেটা ডিরেক্টরি তৈরি করুন এবং প্রদত্ত systemd ইউনিট ইনস্টল করুন।
Running the daemon
ড্যামন nginx অ্যাক্সেস লগ tails করে এবং পার্স করা রেকর্ডগুলো 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)।
Command‑line statistics
stats সাব‑কমান্ড ডেটাবেস পড়ে একটি সারাংশ টেবিল বা JSON আউটপুট প্রিন্ট করে।
সাধারণ ব্যবহার:
theia stats --db-path /var/lib/theia/theia.db
বিকল্পগুলো look‑back পেরিয়ড পরিবর্তন করতে (--days), হস্ট দ্বারা ফিল্টার করতে (--host), আউটপুট ফরম্যাট বেছে নিতে (--format json|table) এবং শীর্ষ এন্ট্রি সংখ্যা সামঞ্জস্য করতে (--top) অনুমতি দেয়।
HTTP API service
serve কমান্ড 127.0.0.1:8081‑এ bearer‑token সুরক্ষিত HTTP/JSON (বা CSV) API চালু করে। এটি 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 completion
theia completion চালু করে বর্তমান শেল সনাক্ত করে এবং bash, zsh বা fish‑এর জন্য সম্পূর্ণ স্ক্রিপ্ট ইনস্টল করার প্রস্তাব দেয়।
Service management
Theia একটি systemd ইউনিট হিসেবে চালায়। मानक systemctl কমান্ড ব্যবহার করে শুরু, বন্ধ, পুনরায় শুরু, স্ট্যাটাস দেখুন এবং লগ অনুসরণ করুন।
How it works internally
1. nginx লগ ফাইলকে বাস্তব‑সময়ে tails করুন।
2. প্রতিটি লাইন থেকে প্রাসঙ্গিক ক্ষেত্রগুলো পার্স করুন।
3. IP + user‑agent + date‑কে হ্যাশ করে অদ্বিতীয়তা বজায় রাখুন।
4. বট এবং স্ট্যাটিক‑অ্যাসেট অনুরোধ স্বয়ংক্রিয়ভাবে সনাক্ত করুন।
5. রেকর্ডগুলো অ্যাসিঙ্ক্রোনাসভাবে SQLite‑এ (WAL মোডে) লিখুন, যাতে đồngnoc পাঠকদের অনুমতি দেওয়া যায়।
6. পর্যায়ক্রমিক ক্লিনআপ ৬০ দিনের বেশি পুরনো হোয়ারি স্ট্যাটস মুছে ফেলে।
Security considerations
ড্যামনকে nginx লগ পড়তে root বা sudo অ্যাক্সেস প্রয়োজন। API টোকেনকে কমান্ড‑লাইনে না रखकर একটি ফাইলে সংরক্ষণ করা উচিত, যাতে প্রসেস তালিকায় প্রকাশ থেকে বাঁচা যায়। শোরুম স্ক্যানারদের জন্য রেট‑লিমিটিং এবং fail2ban নিয়ম প্রয়োগ করা পরামর্শ দেওয়া হয় (docs/nginx-hardening.md দেখুন)।
Limitations
* শুধু পৃষ্ঠা‑দেখার সংখ্যা সংগ্রহ করা হয়; কোনো ক্লায়েন্ট‑সাইড ইভেন্ট নয়।
* आकस्मিক क्रैश पर डेटा हानि संभव है।
* কোনো বিল্ট‑ইন ওয়েব ড্যাশবোর্ড নেই – ব্যবহারকারী CLI আউটপুট, HTTP API, বা সরাসরি SQLite কুয়েরি ব্যবহার করে ডেটা ব্যবহার করতে পারে।
License
Apache License 2.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.