diff --git a/README.md b/README.md index 4d7f997..bfb4d29 100644 --- a/README.md +++ b/README.md @@ -31,55 +31,17 @@ wget https://raw.githubusercontent.com/SamNet-dev/conduit-manager/main/conduit.s sudo bash conduit.sh ``` -> For beta/preview releases, use `beta-releases` instead of `main` in the URL above. - ## What's New in v1.2 -**New Features** -- Per-container CPU and memory resource limits via Settings menu -- Resource limit prompts when adding containers in Container Management -- Smart defaults based on system specs (CPU cores, RAM) -- Telegram bot container management commands (`/containers`, `/restart_N`, `/stop_N`, `/start_N`) -- Telegram bot notifications with guided setup wizard (periodic status reports via Telegram) -- Systemd-based notification service (survives reboots and TUI exits) -- Compact number display — large counts show as 16.5K, 1.2M -- Active clients count in dashboard and Telegram reports -- Total bandwidth served in reports -- Timestamps on all Telegram reports - -**Performance** -- Parallelized docker commands across all TUI screens (Status, Container Management, Advanced Stats, Live Peers) -- Batched docker inspect calls instead of per-container -- Parallel container stop/remove operations -- Reduced screen refresh time from ~10s to ~2-3s with multiple containers - -**Bug Fixes** -- Auto-restart for stuck containers with improved detection -- False WAITING status in health check for connected containers without stats -- Container start/stop/restart logic with resource limit change detection -- Duplicate country entries in GeoIP data with broader name normalization -- TUI stability (multiple fixes) -- Health check edge cases -- CPU normalization in reports (divide by core count) -- Peers count consistency across views -- Telegram markdown escaping (backslash handling) -- Telegram container name mismatch (`conduit2` → `conduit-2`) -- Wizard failure paths now preserve existing config -- Uninstall cleanup for Telegram service -- Menu no longer restarts notification loop on every open -- PID management for background processes -- Consistent `[STATS]` grep pattern across all screens -- Temp dir cleanup to prevent stale data reads -- Atomic settings file writes to prevent corruption - -**Security** -- Silent bot token input (not echoed) -- Numeric-only chat ID validation -- Restricted PID file permissions (600) -- BotFather privacy guidance in setup wizard -- OPSEC warning for operators in censored regions -- Curl calls with `--max-filesize` and `--max-time` limits -- Secure temp directories with `mktemp` +- **Per-Container Resource Limits** — Set CPU and memory limits per container via Settings menu with smart defaults +- **Telegram Bot Integration** — Periodic status reports, alerts, and container management commands (`/containers`, `/restart_N`, `/stop_N`, `/start_N`) +- **Systemd Notification Service** — Telegram bot runs as a systemd service, survives reboots and TUI exits +- **Performance Overhaul** — Parallelized docker commands across all TUI screens, reduced refresh from ~10s to ~2-3s +- **Compact Number Display** — Large counts show as 16.5K, 1.2M +- **Active Clients Count** — Connected and connecting peers in dashboard and Telegram reports +- **Atomic Config Writes** — Settings file writes are now crash-safe +- **Secure Temp Directories** — All temp dirs use `mktemp` for secure random names +- **20+ Bug Fixes** — TUI stability, health check edge cases, Telegram escaping, peer count consistency, and more ## Features @@ -94,8 +56,10 @@ sudo bash conduit.sh - **Telegram Notifications** — Optional periodic status reports and alerts via Telegram bot - **Per-Container Settings** — Configure max-clients, bandwidth, CPU, and memory per container - **Resource Limits** — Set CPU and memory limits with smart defaults based on system specs +- **Easy Management** — Powerful CLI commands or interactive menu - **Backup & Restore** — Backup and restore your node identity keys - **Health Checks** — Comprehensive diagnostics for troubleshooting +- **Info & Help** — Built-in multi-page guide explaining how everything works - **Complete Uninstall** — Clean removal of all components including Telegram service ## Supported Distributions @@ -112,31 +76,105 @@ sudo bash conduit.sh After installation, use the `conduit` command: +### Status & Monitoring ```bash -conduit menu # Open interactive management menu -conduit status # Show current status -conduit stats # Live statistics dashboard -conduit peers # Live peer traffic by country -conduit start # Start all containers -conduit stop # Stop all containers -conduit restart # Restart all containers -conduit update # Update Conduit image -conduit backup # Backup node identity keys -conduit restore # Restore from backup -conduit qr # Show QR code for rewards -conduit health # Run health diagnostics -conduit uninstall # Remove all components +conduit status # Show current status and resource usage +conduit stats # View live statistics (real-time dashboard) +conduit logs # View raw Docker logs +conduit health # Run health check diagnostics +conduit peers # Live peer traffic by country (GeoIP) ``` -## Configuration +### Rewards +```bash +conduit qr # Show QR code to claim rewards via Ryve app +``` + +### Container Management +```bash +conduit start # Start all Conduit containers +conduit stop # Stop all Conduit containers +conduit restart # Restart all Conduit containers +conduit update # Update to the latest Conduit image +``` + +### Configuration +```bash +conduit settings # Change max-clients, bandwidth, CPU, memory per container +conduit menu # Open interactive management menu +``` + +### Backup & Restore +```bash +conduit backup # Backup your node identity keys +conduit restore # Restore node identity from backup +``` + +### Maintenance +```bash +conduit uninstall # Remove all components +conduit version # Show version information +conduit help # Show help message +``` + +## Interactive Menu + +The interactive menu (`conduit menu`) provides access to all features: + +| Option | Description | +|--------|-------------| +| **1** | View status dashboard — real-time stats with active clients and top upload by country | +| **2** | Live connection stats — streaming stats from Docker logs | +| **3** | View logs — raw Docker log output | +| **4** | Live peers by country — per-country traffic table with speed and client counts | +| **5** | Start Conduit | +| **6** | Stop Conduit | +| **7** | Restart Conduit | +| **8** | Update Conduit image | +| **9** | Settings & Tools — resource limits, QR code, backup, restore, health check, Telegram, uninstall | +| **c** | Manage containers — add or remove containers (up to 5) | +| **a** | Advanced stats — top 5 charts for peers, download, upload, unique IPs | +| **i** | Info & Help — multi-page guide with tracker, stats, containers, privacy, about | +| **0** | Exit | + +## Configuration Options | Option | Default | Range | Description | |--------|---------|-------|-------------| -| `max-clients` | 200 | 1–1000 | Max concurrent clients per container | -| `bandwidth` | 5 | 1–40, -1 | Bandwidth limit per peer (Mbps). -1 for unlimited | +| `max-clients` | 200 | 1–1000 | Maximum concurrent proxy clients per container | +| `bandwidth` | 5 | 1–40, -1 | Bandwidth limit per peer (Mbps). Use -1 for unlimited. | | `cpu` | Unlimited | 0.1–N cores | CPU limit per container (e.g. 1.0 = one core) | | `memory` | Unlimited | 64m–system RAM | Memory limit per container (e.g. 256m, 1g) | +**Recommended values based on server hardware:** + +| CPU Cores | RAM | Recommended Containers | Max Clients (per container) | +|-----------|-----|------------------------|-----------------------------| +| 1 Core | < 1 GB | 1 | 100 | +| 2 Cores | 2 GB | 1–2 | 200 | +| 4 Cores | 4 GB+ | 2–3 | 400 | +| 8+ Cores | 8 GB+ | 3–5 | 800 | + +## Installation Options + +```bash +# Standard install +sudo bash conduit.sh + +# Force reinstall +sudo bash conduit.sh --reinstall + +# Uninstall everything +sudo bash conduit.sh --uninstall + +# Show help +sudo bash conduit.sh --help +``` + +## Upgrading + +Just run the install command above or use `conduit update` from the menu. Existing containers are recognized automatically. Telegram settings and node identity keys are preserved across upgrades. + ## Requirements - Linux server (any supported distribution) @@ -144,26 +182,233 @@ conduit uninstall # Remove all components - Internet connection - Minimum 512MB RAM (1GB+ recommended for multi-container) -## Upgrading +## How It Works -Just run the install command above or use `conduit update` from the menu. Existing containers are recognized automatically. Telegram settings are preserved across upgrades. +1. **Detection** — Identifies your Linux distribution and init system +2. **Docker Setup** — Installs Docker if not present +3. **Hardware Check** — Detects CPU/RAM and recommends container count +4. **Container Deployment** — Pulls and runs the official Psiphon Conduit image +5. **Auto-Start Configuration** — Sets up systemd/OpenRC/SysVinit service +6. **Tracker Service** — Starts background traffic tracker with GeoIP resolution +7. **CLI Installation** — Creates the `conduit` management command ## Claim Rewards (OAT Tokens) -1. Install the **Ryve app** on your phone -2. Create a **crypto wallet** within the app -3. Run `conduit qr` or use the menu to show your QR code -4. Scan with Ryve to link your node and start earning +Conduit node operators can earn OAT tokens for contributing to the Psiphon network. To claim rewards: + +1. **Install the Ryve app** on your phone +2. **Create a crypto wallet** within the app +3. **Link your Conduit containers** by scanning the QR code: + - From the menu: Select Settings & Tools **Option 6 → Show QR Code & Conduit ID** + - From Manage Containers: press **[q]** to display QR code + - CLI: `conduit qr` +4. **Scan the QR code** with the Ryve app to link your node +5. **Monitor & earn** — the app shows your last 48 hours of connection activity and OAT token rewards + +> Each container has its own unique Conduit ID and QR code. If running multiple containers, you'll need to link each one separately. ## Security -- **Secure Backups**: Node identity keys stored with restricted permissions (600) +- **Secure Backups**: Node identity keys are stored with restricted permissions (600) - **No Telemetry**: The manager collects no data and sends nothing externally - **Local Tracking Only**: Traffic stats are stored locally and never transmitted - **Telegram Optional**: Bot notifications are opt-in only, zero resources used if disabled --- +
+ +# راهنمای فارسی - مدیریت کاندوییت + +ابزار قدرتمند برای راه‌اندازی و مدیریت نود سایفون کاندوییت روی سرورهای لینوکس. به کاربران کمک کنید تا در زمان محدودیت‌های اینترنتی به اینترنت آزاد دسترسی داشته باشند. + +## نصب سریع + +دستور زیر را در ترمینال سرور اجرا کنید: + +```bash +curl -sL https://raw.githubusercontent.com/SamNet-dev/conduit-manager/main/conduit.sh | sudo bash +``` + +یا دانلود و اجرای دستی: + +```bash +wget https://raw.githubusercontent.com/SamNet-dev/conduit-manager/main/conduit.sh +sudo bash conduit.sh +``` + +## تازه‌های نسخه 1.2 + +- **محدودیت منابع هر کانتینر** — تنظیم محدودیت CPU و حافظه برای هر کانتینر با پیش‌فرض‌های هوشمند +- **ربات تلگرام** — گزارش‌های دوره‌ای، هشدارها و دستورات مدیریت کانتینر (`/containers`، `/restart_N`، `/stop_N`، `/start_N`) +- **سرویس اعلان سیستمی** — ربات تلگرام به عنوان سرویس systemd اجرا می‌شود و پس از ریستارت سرور فعال می‌ماند +- **بهبود عملکرد** — دستورات داکر به صورت موازی اجرا شده، زمان رفرش از ~۱۰ ثانیه به ~۲-۳ ثانیه کاهش یافته +- **نمایش فشرده اعداد** — اعداد بزرگ به صورت 16.5K و 1.2M نمایش داده می‌شوند +- **شمارش کلاینت‌های فعال** — تعداد متصل و در حال اتصال در داشبورد و گزارش تلگرام +- **ذخیره امن تنظیمات** — نوشتن فایل تنظیمات به صورت اتمیک برای جلوگیری از خرابی +- **۲۰+ رفع باگ** — پایداری رابط کاربری، بررسی سلامت، فرمت تلگرام، هماهنگی تعداد کاربران و موارد دیگر + +## ویژگی‌ها + +- **نصب با یک کلیک** — داکر و تمام موارد مورد نیاز به صورت خودکار نصب می‌شود +- **مقیاس‌پذیری چند کانتینره** — اجرای ۱ تا ۵ کانتینر برای حداکثر استفاده از سرور +- **پشتیبانی از توزیع‌های مختلف** — اوبونتو، دبیان، سنت‌اواس، فدورا، آرچ، آلپاین، اوپن‌سوزه +- **راه‌اندازی خودکار** — پس از ریستارت سرور، سرویس به صورت خودکار اجرا می‌شود +- **داشبورد زنده** — نمایش لحظه‌ای وضعیت، تعداد کاربران، مصرف CPU و RAM +- **آمار پیشرفته** — نمودار میله‌ای برترین کشورها بر اساس اتصال، دانلود، آپلود و IP +- **مانیتورینگ ترافیک** — جدول لحظه‌ای ترافیک بر اساس کشور با سرعت و تعداد کلاینت +- **ردیاب پس‌زمینه** — سرویس ردیابی مداوم ترافیک با تشخیص جغرافیایی +- **اعلان‌های تلگرام** — گزارش‌های دوره‌ای و هشدارها از طریق ربات تلگرام (اختیاری) +- **تنظیمات هر کانتینر** — پیکربندی حداکثر کاربران، پهنای باند، CPU و حافظه برای هر کانتینر +- **محدودیت منابع** — تنظیم محدودیت CPU و حافظه با پیش‌فرض‌های هوشمند +- **مدیریت آسان** — دستورات قدرتمند CLI یا منوی تعاملی +- **پشتیبان‌گیری و بازیابی** — پشتیبان‌گیری و بازیابی کلیدهای هویت نود +- **بررسی سلامت** — تشخیص جامع برای عیب‌یابی +- **راهنما و اطلاعات** — راهنمای چندصفحه‌ای داخلی +- **حذف کامل** — پاکسازی تمام فایل‌ها و تنظیمات شامل سرویس تلگرام + +## دستورات CLI + +### وضعیت و مانیتورینگ +```bash +conduit status # نمایش وضعیت و مصرف منابع +conduit stats # داشبورد زنده (لحظه‌ای) +conduit logs # لاگ‌های داکر +conduit health # بررسی سلامت سیستم +conduit peers # ترافیک بر اساس کشور (GeoIP) +``` + +### پاداش +```bash +conduit qr # نمایش QR کد برای دریافت پاداش از اپلیکیشن Ryve +``` + +### مدیریت کانتینر +```bash +conduit start # شروع تمام کانتینرها +conduit stop # توقف تمام کانتینرها +conduit restart # ریستارت تمام کانتینرها +conduit update # به‌روزرسانی به آخرین نسخه +``` + +### پیکربندی +```bash +conduit settings # تغییر تنظیمات هر کانتینر +conduit menu # منوی تعاملی +``` + +### پشتیبان‌گیری و بازیابی +```bash +conduit backup # پشتیبان‌گیری از کلیدهای نود +conduit restore # بازیابی کلیدهای نود از پشتیبان +``` + +### نگهداری +```bash +conduit uninstall # حذف کامل +conduit version # نمایش نسخه +conduit help # راهنما +``` + +## منوی تعاملی + +| گزینه | توضیحات | +|-------|---------| +| **1** | داشبورد وضعیت — آمار لحظه‌ای با کلاینت‌های فعال و آپلود برتر | +| **2** | آمار زنده اتصال — استریم آمار از لاگ داکر | +| **3** | مشاهده لاگ — خروجی لاگ داکر | +| **4** | ترافیک زنده به تفکیک کشور — جدول ترافیک با سرعت و تعداد کلاینت | +| **5** | شروع کاندوییت | +| **6** | توقف کاندوییت | +| **7** | ریستارت کاندوییت | +| **8** | به‌روزرسانی ایمیج و اسکریپت | +| **9** | تنظیمات و ابزارها — محدودیت منابع، QR کد، پشتیبان‌گیری، بازیابی، تلگرام، حذف نصب | +| **c** | مدیریت کانتینرها — اضافه یا حذف (تا ۵) | +| **a** | آمار پیشرفته — نمودار برترین کشورها | +| **i** | راهنما — توضیحات ردیاب، آمار، کانتینرها، حریم خصوصی | +| **0** | خروج | + +## تنظیمات + +| گزینه | پیش‌فرض | محدوده | توضیحات | +|-------|---------|--------|---------| +| `max-clients` | 200 | ۱–۱۰۰۰ | حداکثر کاربران همزمان برای هر کانتینر | +| `bandwidth` | 5 | ۱–۴۰ یا ۱- | محدودیت پهنای باند (Mbps). برای نامحدود ۱- وارد کنید. | +| `cpu` | نامحدود | 0.1–N هسته | محدودیت CPU هر کانتینر (مثلاً 1.0 = یک هسته) | +| `memory` | نامحدود | 64m–حافظه سیستم | محدودیت حافظه هر کانتینر (مثلاً 256m، 1g) | + +**مقادیر پیشنهادی بر اساس سخت‌افزار سرور:** + +| پردازنده | رم | کانتینر پیشنهادی | حداکثر کاربران (هر کانتینر) | +|----------|-----|-------------------|----------------------------| +| ۱ هسته | کمتر از ۱ گیگ | ۱ | ۱۰۰ | +| ۲ هسته | ۲ گیگ | ۱–۲ | ۲۰۰ | +| ۴ هسته | ۴ گیگ+ | ۲–۳ | ۴۰۰ | +| ۸+ هسته | ۸ گیگ+ | ۳–۵ | ۸۰۰ | + +## گزینه‌های نصب + +```bash +# نصب استاندارد +sudo bash conduit.sh + +# نصب مجدد اجباری +sudo bash conduit.sh --reinstall + +# حذف کامل +sudo bash conduit.sh --uninstall + +# نمایش راهنما +sudo bash conduit.sh --help +``` + +## ارتقا از نسخه‌های قبلی + +فقط دستور نصب بالا را اجرا کنید یا از منو گزینه `conduit update` را بزنید. کانتینرهای موجود به صورت خودکار شناسایی می‌شوند. تنظیمات تلگرام و کلیدهای هویت نود در به‌روزرسانی حفظ می‌شوند. + +## پیش‌نیازها + +- سرور لینوکس +- دسترسی root یا sudo +- اتصال اینترنت +- حداقل ۵۱۲ مگابایت رم (۱ گیگ+ برای چند کانتینر پیشنهاد می‌شود) + +## نحوه عملکرد + +1. **تشخیص** — شناسایی توزیع لینوکس و سیستم init +2. **نصب داکر** — در صورت نبود، داکر نصب می‌شود +3. **بررسی سخت‌افزار** — تشخیص CPU و RAM و پیشنهاد تعداد کانتینر +4. **راه‌اندازی کانتینر** — دانلود و اجرای ایمیج رسمی سایفون +5. **پیکربندی سرویس** — تنظیم سرویس خودکار (systemd/OpenRC/SysVinit) +6. **سرویس ردیاب** — شروع ردیاب ترافیک پس‌زمینه +7. **نصب CLI** — ایجاد دستور مدیریت `conduit` + +## دریافت پاداش (توکن OAT) + +اپراتورهای نود کاندوییت می‌توانند با مشارکت در شبکه سایفون توکن OAT کسب کنند. مراحل دریافت پاداش: + +1. **اپلیکیشن Ryve** را روی گوشی نصب کنید +2. **یک کیف پول کریپتو** در اپلیکیشن بسازید +3. **کانتینرهای خود را لینک کنید** با اسکن QR کد: + - از منو تنظیمات: **گزینه ۶ ← نمایش QR کد و شناسه کاندوییت** + - از مدیریت کانتینرها: کلید **[q]** را بزنید + - CLI: `conduit qr` +4. **QR کد را اسکن کنید** با اپلیکیشن Ryve تا نود شما لینک شود +5. **مانیتور و کسب درآمد** — اپلیکیشن فعالیت ۴۸ ساعت اخیر و توکن‌های OAT را نمایش می‌دهد + +> هر کانتینر شناسه و QR کد منحصر به فرد خود را دارد. اگر چند کانتینر اجرا می‌کنید، باید هر کدام را جداگانه لینک کنید. + +## امنیت + +- **پشتیبان‌گیری امن**: کلیدهای هویت نود با دسترسی محدود (600) ذخیره می‌شوند +- **بدون تلمتری**: هیچ داده‌ای جمع‌آوری یا ارسال نمی‌شود +- **ردیابی محلی**: آمار ترافیک فقط به صورت محلی ذخیره شده و هرگز ارسال نمی‌شود +- **تلگرام اختیاری**: اعلان‌های ربات کاملاً اختیاری هستند و در صورت غیرفعال بودن هیچ منبعی مصرف نمی‌شود + +
+ +--- + ## License MIT License