One-click Tor Bridge/Relay node setup and management tool with live TUI dashboard, Snowflake proxy, Lantern Unbounded proxy, and Telegram notifications.
Per-container overrides: `RELAY_TYPE_N`, `BANDWIDTH_N`, `ORPORT_N` (where N is the container index).
## Uninstall
```bash
sudo torware uninstall
```
This will stop and remove containers, remove systemd services, and optionally delete configuration and backups.
## Contributing
Contributions are welcome. Please open an issue or pull request on [Gitea](https://git.samnet.dev/SamNet-dev/torware).
## License
This project is licensed under the MIT License. See [LICENSE](LICENSE) for details.
## Changelog
### v1.1 — Feature Patch
- **MTProxy (Telegram Proxy)** — Run an official Telegram proxy to help censored users access Telegram
- FakeTLS obfuscation (traffic looks like HTTPS to cloudflare.com, google.com, etc.)
- Host networking mode for reliable DNS resolution
- Prometheus metrics for accurate traffic monitoring
- QR code generation for easy sharing
- Telegram bot integration: send proxy link & QR via `/tor_mtproxy` command
- Menu option to send link via Telegram after setup or changes
- Port change warnings (alerts when proxy URL changes)
- Security settings: connection limits, geo-blocking by country
- CLI command: `torware mtproxy`
- Setup wizard integration (standalone or as add-on)
- **Lantern Unbounded Proxy** — Run Lantern's Unbounded volunteer WebRTC proxy alongside your relay to help censored users access the internet through a second censorship-circumvention network
- Built from source during Docker image creation (pinned to production-compatible commit)
- Live and all-time connection tracking on the dashboard
- Full menu management: start, stop, restart, disable, change resources, remove
- Telegram bot command: `/tor_unbounded`
- CLI command: `torware unbounded`
- Health check integration
- Setup wizard integration (standalone or as add-on to any relay type)
- About & Learn section explaining Unbounded/Lantern
- **Docker images pinned** — All images now use specific version tags for reproducibility (no more `:latest`)
- Bash 4.2+ requirement for safer variable handling
- Health checks for all containers (Tor relays, Snowflake, Unbounded, MTProxy)
- **Structured JSON logging** — Optional JSON log format for integration with log aggregators (`LOG_FORMAT=json`)
- **Centralized configuration** — New CONFIG array for cleaner state management
- **Dashboard optimizations**
- Parallel data fetching for faster refresh
- All graphs limited to top 5 for better screen fit
- MTProxy stats integrated into all dashboard views
- **Compact advanced stats** — Merged upload/download country tables into a single combined traffic table
- **Container details alignment** — Fixed table alignment when container names are long
- **View Logs** menu now includes Unbounded and MTProxy containers
### v1.0.1 — Feature Patch
- Fixed dashboard uptime showing N/A
- Added Snowflake traffic to dashboard totals
- Capped Snowflake CPU limit to available cores
- Increased relay startup check to 3 retries (15s total)
- Fixed bridge line fingerprint replacement and PT port
- Fixed bridge line parsing skipping blank lines
- Fixed startup false failure, live map overflow
- Added Snowflake advanced stats section
### v1.0.0
- Initial release with Bridge, Middle, and Exit relay support
- Live TUI dashboard with 5-second refresh
- Snowflake WebRTC proxy support
- Multi-container support (up to 5)
- Telegram bot notifications and commands
- Background traffic tracker with country-level stats
- 15-point health check
- Built-in About & Learn educational section
- CLI commands for all operations
- Auto-install on Ubuntu, Debian, Fedora, CentOS, Arch, Alpine, and more
## Acknowledgments
- [The Tor Project](https://www.torproject.org/) for building and maintaining the Tor network
- [Snowflake](https://snowflake.torproject.org/) for the WebRTC pluggable transport
- [Lantern](https://lantern.io/) for the Unbounded censorship-circumvention proxy
- All Tor relay operators who keep the network running
---
<div dir="rtl">
## فارسی
### تورویر (Torware) چیست؟
تورویر یک ابزار خط فرمان برای راهاندازی و مدیریت نودهای شبکه تور (Tor) است. با یک دستور ساده، میتوانید یک بریج (Bridge)، رله میانی (Middle Relay) یا رله خروجی (Exit Relay) تور را روی سرور خود راهاندازی کنید.
- **رم**: حداقل ۵۱۲ مگابایت (۱ گیگابایت یا بیشتر توصیه میشود)
- **داکر**: در صورت نبودن، به صورت خودکار نصب میشود
- **پورتها**: 9001 TCP و 9002 TCP — اگر پشت NAT هستید باید Port Forward کنید
### Port Forwarding (کاربران خانگی)
اگر از خانه و پشت روتر اجرا میکنید، باید این پورتها را Forward کنید:
| پورت | پروتکل | کاربرد |
|------|---------|--------|
| 9001 | TCP | پورت اصلی تور (ORPort) |
| 9002 | TCP | انتقال obfs4 |
وارد تنظیمات روتر شوید (معمولا `192.168.1.1` یا `10.0.0.1`)، بخش **Port Forwarding** را پیدا کنید و هر دو پورت TCP را به IP محلی سرور خود Forward کنید.
اسنوفلیک نیازی به Port Forwarding **ندارد** — WebRTC به صورت خودکار از NAT عبور میکند.
### خط بریج (Bridge Line)
بعد از راهاندازی، خط بریج شما ممکن است چند ساعت تا ۱-۲ روز طول بکشد تا در دسترس قرار بگیرد. تور باید مراحل زیر را طی کند:
1. بوتاسترپ کامل و تست دسترسی ORPort
2. انتشار توصیفگر به مرجع بریج
3. اضافه شدن به BridgeDB برای توزیع
میتوانید پیشرفت را با گزینه **Health Check** (شماره ۸ در منو) بررسی کنید.
### چرا بریج اجرا کنیم؟
میلیونها نفر در کشورهایی مانند ایران، چین، روسیه و بسیاری دیگر از کشورها، به دلیل سانسور اینترنت قادر به دسترسی آزاد به اطلاعات نیستند. با اجرای یک بریج تور، شما به این افراد کمک میکنید تا:
- به اینترنت آزاد دسترسی پیدا کنند
- اخبار واقعی را بخوانند
- با خانواده و دوستان خود در خارج از کشور ارتباط برقرار کنند
- از حریم خصوصی خود محافظت کنند
**هر بریج مهم است.** حتی یک بریج کوچک با پهنای باند محدود میتواند به دهها نفر کمک کند.
### تاریخچه تغییرات
#### نسخه ۱.۱ — وصله ویژگی
- **پروکسی MTProxy (تلگرام)** — اجرای پروکسی رسمی تلگرام برای کمک به کاربران سانسورشده
- پنهانسازی FakeTLS (ترافیک شبیه HTTPS به cloudflare.com یا google.com به نظر میرسد)
- حالت شبکه host برای رفع مشکلات DNS
- متریکهای Prometheus برای نظارت دقیق ترافیک
- تولید QR کد برای اشتراکگذاری آسان
- ارسال لینک و QR کد از طریق ربات تلگرام با دستور `/tor_mtproxy`
- هشدار هنگام تغییر پورت (اطلاعرسانی تغییر URL پروکسی)
- **پروکسی آنباندد (Unbounded/Lantern)** — اجرای پروکسی داوطلبانه WebRTC لنترن در کنار رله تور برای کمک به کاربران سانسورشده از طریق شبکه دوم ضد سانسور
- ساخت از سورسکد هنگام ایجاد ایمیج داکر (قفل شده روی کامیت سازگار با سرور اصلی)
- نمایش اتصالات زنده و کل اتصالات در داشبورد
- مدیریت کامل از منو: شروع، توقف، ریاستارت، غیرفعالسازی، تغییر منابع، حذف
- دستور ربات تلگرام: `/tor_unbounded`
- دستور خط فرمان: `torware unbounded`
- **قفل نسخه ایمیجهای داکر** — همه ایمیجها از تگ نسخه خاص استفاده میکنند (بدون `:latest`)
- **بهبودهای امنیتی**
- بارگذاری امن فایل تنظیمات (پارس صریح به جای source بش)
- نیاز به بش ۴.۲ به بالا برای مدیریت امن متغیرها
- بررسی سلامت برای همه کانتینرها
- **لاگ JSON ساختاریافته** — فرمت اختیاری JSON برای یکپارچهسازی با سیستمهای جمعآوری لاگ
- **بهینهسازی داشبورد**
- واکشی موازی دادهها برای بازخوانی سریعتر
- محدود شدن نمودارها به ۵ مورد برتر
- یکپارچهسازی آمار MTProxy در تمام نماها
- **فشردهسازی آمار پیشرفته** — ادغام جداول آپلود/دانلود کشورها در یک جدول واحد
- **منوی مشاهده لاگ** شامل کانتینر آنباندد و MTProxy
#### نسخه ۱.۰.۱ — وصله ویژگی
- رفع نمایش N/A برای آپتایم در داشبورد
- اضافه شدن ترافیک اسنوفلیک به مجموع داشبورد
- محدود شدن CPU اسنوفلیک به هستههای موجود
- افزایش تلاش بررسی راهاندازی رله به ۳ بار (۱۵ ثانیه)
- رفع خط بریج: جایگزینی فینگرپرینت و استفاده از پورت PT
- رفع پارس خط بریج: رد کردن خطوط خالی
- رفع خطای نادرست شروع، سرریز نقشه زنده
- اضافه شدن بخش آمار پیشرفته اسنوفلیک
#### نسخه ۱.۰.۰
- انتشار اولیه با پشتیبانی از بریج، رله میانی و رله خروجی
- داشبورد زنده TUI با بازخوانی ۵ ثانیهای
- پشتیبانی از پروکسی اسنوفلیک WebRTC
- پشتیبانی از چند کانتینر (تا ۵)
- اعلانها و دستورات ربات تلگرام
- ردیاب ترافیک پسزمینه با آمار سطح کشور
- بررسی سلامت ۱۵ نقطهای
- بخش آموزشی داخلی
- دستورات خط فرمان برای تمام عملیات
- نصب خودکار روی اوبونتو، دبیان، فدورا، سنتاواس، آرچ، آلپاین و بیشتر
### مجوز
این پروژه تحت مجوز MIT منتشر شده است. فایل [LICENSE](LICENSE) را ببینید.