رله روی اندروید     رله روی ویندوز # رله ⚡ ### **اینترنت گوشی‌ات را با کامپیوترت به اشتراک بگذار.** ### **یک QR اسکن کن. تنظیمات همین بود.**
[![دانلود برای ویندوز](https://img.shields.io/badge/Download-Windows-0078D4?style=for-the-badge)](https://github.com/Mahdi-mortazavi/relay/releases/latest/download/Relay-Setup-x64.exe)   [![دانلود برای اندروید](https://img.shields.io/badge/Download-Android-3DDC84?style=for-the-badge)](https://github.com/Mahdi-mortazavi/relay/releases/latest/download/Relay-android-arm64-v8a.apk) همیشه جدیدترین نسخه · [همهٔ فایل‌ها و توضیحات](https://github.com/Mahdi-mortazavi/relay/releases/latest)
[![CI](https://github.com/Mahdi-mortazavi/relay/actions/workflows/ci.yml/badge.svg)](https://github.com/Mahdi-mortazavi/relay/actions/workflows/ci.yml) [![E2E device lab](https://github.com/Mahdi-mortazavi/relay/actions/workflows/e2e.yml/badge.svg)](https://github.com/Mahdi-mortazavi/relay/actions/workflows/e2e.yml) [![نسخه](https://img.shields.io/github/v/release/Mahdi-mortazavi/relay?sort=semver&color=4ADFBF&label=release)](https://github.com/Mahdi-mortazavi/relay/releases/latest) [![پروانه](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE) **🌍 [English](README.md) · [فارسی](README.fa.md)**
--- ## 📥 دانلود | | فایل | برای چه کسی | |---|---|---| | **ویندوز** | [**Relay-Setup-x64.exe**](https://github.com/Mahdi-mortazavi/relay/releases/latest/download/Relay-Setup-x64.exe) | ویندوز ۱۰ و ۱۱. فقط برای کاربر خودتان نصب می‌شود — بدون نیاز به ادمین. | | ویندوز ۳۲ بیتی | [Relay-Setup-x86.exe](https://github.com/Mahdi-mortazavi/relay/releases/latest/download/Relay-Setup-x86.exe) | فقط اگر مطمئنید به آن نیاز دارید. | | **اندروید** | [**Relay-android-arm64-v8a.apk**](https://github.com/Mahdi-mortazavi/relay/releases/latest/download/Relay-android-arm64-v8a.apk) | اندروید ۸ به بالا. تقریباً هر گوشی از ۲۰۱۷ به بعد. | | اندروید (هر دستگاهی) | [Relay-android-universal.apk](https://github.com/Mahdi-mortazavi/relay/releases/latest/download/Relay-android-universal.apk) | حجیم‌تر، ولی همه‌جا کار می‌کند. اگر فایل بالا گفت **«برنامه سازگار نیست»**، این را بگیرید. | | checksum ها | [SHA256SUMS.txt](https://github.com/Mahdi-mortazavi/relay/releases/latest/download/SHA256SUMS.txt) | `sha256sum -c SHA256SUMS.txt` | **نسخهٔ فعلی `1.8.0` است و تنها ریلیزِ موجود روی این مخزن است.** نسخه‌های قبلی عمداً حذف شده‌اند. همهٔ لینک‌های بالا همیشه به تازه‌ترین نسخه اشاره می‌کنند، و حالا هر دو برنامه شمارهٔ نسخهٔ خود را زیر **پیشرفته** نشان می‌دهند — پس اگر روزی به نظر رسید گوشی و کامپیوتر با هم نمی‌خوانند، اول همین دو عدد را مقایسه کنید. باید یکی باشند؛ اگر نبودند، تمام ماجرا همان است. دو فایل اندروید **یک برنامهٔ واحدند** که در یک بیلد ساخته شده‌اند و فقط در معماری‌های CPU که همراه دارند فرق می‌کنند. ممکن نیست رفتار متفاوتی داشته باشند. اگر یکی متفاوت به نظر رسید، نسخهٔ قدیمی است — حذفش کنید و از همین لینک‌ها دوباره نصب کنید. ویندوز بار اول هشدار می‌دهد چون هنوز installer امضای کد ندارد — **More info ← Run anyway**. اگر اندروید گفت **«App not installed»**، [این صفحه](docs/install-troubleshooting.md) همهٔ دلایلی را که دیده‌ام پوشش می‌دهد. --- ## 🚀 چطور استفاده کنیم **روی گوشی** ۱. هات‌اسپات را روشن کنید — یا گوشی و کامپیوتر را روی یک وای‌فای بگذارید. ۲. رله را باز کنید و **Start Sharing** را بزنید. ۳. صفحه یک QR و یک **عدد دو رقمی** نشان می‌دهد. **روی کامپیوتر** ۴. رله را باز کنید. گوشی‌هایی که همین حالا در حال اشتراک‌گذاری‌اند، هرکدام با کدی که نشان می‌دهند، فهرست می‌شوند — روی مال خودتان بزنید. یا **Scan QR** را بزنید و گوشی را جلوی وبکم بگیرید، یا **واردکردن کد ۲ رقمی** را بزنید و همان دو رقم را تایپ کنید. ۵. روی گوشی، درخواستی که ظاهر می‌شود را تأیید کنید. تمام — مرورگر و بقیهٔ برنامه‌ها از طریق گوشی وصل می‌شوند. آخر کار **Disconnect** را بزنید و ویندوز دقیقاً به حالت قبل برمی‌گردد.
چرا ویندوز یک بار اجازه می‌خواهد
رله **همه‌چیز** را عبور می‌دهد — مرور وب، دانلود، تماس تصویری و بازی. هم TCP و هم UDP، چون یک تونل واقعی WireGuard می‌سازد نه پروکسی‌ای که فقط بعضی برنامه‌ها به آن اعتنا کنند. تونل به یک آداپتور شبکه نیاز دارد و ویندوز آداپتور را فقط با اجازهٔ شما می‌سازد. پس اولین بار که وصل می‌شوید یک پیام **UAC** می‌بینید — **بله** را بزنید. این اجازه فقط به همان پروسهٔ کوچک تونل داده می‌شود، نه به کل برنامه، و دقیقاً به اندازهٔ عمر همان اتصال دوام دارد. خود رله برای شما تنها نصب می‌شود و هیچ‌جای دیگری اجازهٔ مدیر نمی‌خواهد. قبلاً حالت دومی بود که این پیام را رد می‌کرد. آن حالت فقط TCP را عبور می‌داد، پس بازی و تماس بی‌صدا کار نمی‌کردند، و برای این کار یک تنظیم پروکسی در سطح کل ویندوز را عوض می‌کرد که رله باید هر بار درست سر جایش برمی‌گرداند — حتی بعد از یک کرش. یک پیام روشن، معاملهٔ بهتری است از تنظیمی که ممکن است خراب رها شود. ([ADR-0009](docs/adr/0009-full-mode-only-and-code-pairing.md))
اگر مشکلی پیش آمد
رله تلاش می‌کند به‌جای «اتصال برقرار نشد»، بگوید واقعاً چه اتفاقی افتاده. هر خطا اسم دارد و یک قدم بعدی — فهرست کامل در [docs/errors.md](docs/errors.md). **اول از همه شمارهٔ نسخه را ببینید.** هر دو برنامه آن را زیر **پیشرفته** نشان می‌دهند. تفاوت نسخه رایج‌ترین دلیلِ «این دو با هم کار نمی‌کنند» است، و تا پیش از ۱.۸.۰ برنامهٔ ویندوز نسخهٔ خود را اشتباه گزارش می‌کرد، برای همین کسی نمی‌توانست این را ببیند. **مرورگرها باید بدون هیچ کاری وصل شوند** — نه افزونه‌ای لازم است، نه واردکردن دستی پروکسی. اگر قبلاً برای عبور کروم از رله به چیزی مثل SwitchyOmega نیاز داشتید، آن یک باگ در نحوهٔ معرفی پروکسی به ویندوز بود و ۱.۸.۰ آن را درست کرده است. افزونه را خاموش کنید. هر دو برنامه یک لاگ محلی دارند که می‌توانید بخوانید و بفرستید (**Advanced ← Logs**). هیچ‌چیز خودبه‌خود جایی آپلود نمی‌شود.
--- ## 💡 چرا ساختمش همیشه یک جای مشترک گیر می‌کردم: لپ‌تاپ بدون اینترنت، گوشی با اینترنت. هات‌اسپات ویندوز راه نمی‌افتاد. تترینگ USB درایور می‌خواست. برنامه‌های دیگر اشتراک می‌خواستند، حساب کاربری می‌خواستند، و اجازهٔ دیدن همه‌چیز. اتصال همیشه همان‌جا بود. مشکل هیچ‌وقت شبکه نبود — راه‌اندازی‌اش بود. برای همین رله نه حساب کاربری دارد، نه سرور، نه تله‌متری، نه اشتراک. ترافیک شما از گوشی به کامپیوتر روی وای‌فای خودتان می‌رود و به هیچ‌چیز من دست نمی‌زند. **یک کد را اسکن کن و کار می‌کند** — و وقتی کار نکرد، می‌گوید چرا. --- ## 🔐 صادقانه دربارهٔ امنیت ترافیک شما داخل **WireGuard** جابه‌جا می‌شود، با کلیدهایی که برای یک نشست ساخته می‌شوند و با توقف اشتراک دور ریخته می‌شوند. چیزی روی دیسک نوشته نمی‌شود و چیزی از این دو دستگاه بیرون نمی‌رود. سؤال جالب، خودِ تونل نیست؛ این است که چه کسی اجازهٔ استفاده از آن را دارد. عدد دو رقمی **رمز نیست** — نود عدد هیچ‌وقت نمی‌توانست رمز باشد. آن عدد فقط گوشی شما را از بین گوشی‌های اطراف انتخاب می‌کند. **چیزی که غریبه‌ها را بیرون نگه می‌دارد خود شما هستید:** وقتی کامپیوتری کلیدها را می‌خواهد، گوشی می‌ایستد و اول از شما می‌پرسد و نشان می‌دهد کدام کامپیوتر درخواست داده. تا وقتی گوشی در جیب شماست کسی وارد نمی‌شود — بی‌پاسخ ماندن تا یک دقیقه یعنی «نه». اسکن QR این سؤال را رد می‌کند، چون گرفتن گوشی جلوی دوربین خودش جواب داده است. مدل تهدید کامل در [SECURITY.md](SECURITY.md) است — از جمله چیزهایی که رله از آن‌ها محافظت **نمی‌کند**. --- ## 🧪 چطور تست می‌شود هر کامیت، برنامهٔ واقعی را روی ایمیج‌های واقعی اندروید (API ۳۰ تا ۳۶) نصب می‌کند و از داخل UI خودش عبورش می‌دهد: شروع اشتراک، نمایش QR، جفت‌شدن یک لپ‌تاپ با کد، پاسخ به پیام تأیید، و توقف. کد سمت ویندوز مقابل یک **گوشی زنده** روی `adb` اجرا می‌شود. installer واقعی نصب، اجرا و حذف می‌شود. تونل روی یک آداپتور واقعی WinTun بالا می‌آید و handshake واقعی WireGuard از رویش تأیید می‌شود — و کلاینت تا وقتی آن handshake واقعاً انجام نشود حاضر نیست بگوید «متصل شد». بعد، APK **منتشرشده** روی اندروید ۱۱ تا ۱۶ نصب می‌شود — چون نسخه‌ای که کسی نتواند نصبش کند، نسخه نیست. آنچه هنوز فقط سخت‌افزار می‌تواند ثابت کند در [docs/testing.md](docs/testing.md) نوشته شده، نه پنهان. --- ## 🗺️ وضعیت | | | |:---|:---| | 🚀 تونل WireGuard، TCP + UDP | ✅ **منتشر شده** — هر دو پلتفرم | | 🔢 جفت‌شدن با QR **یا** کد دو رقمی | ✅ **منتشر شده** | | 🔄 اتصال مجدد خودکار، خطاهای قابل‌اقدام، فارسی و انگلیسی | ✅ **منتشر شده** | | ✍️ installer امضاشدهٔ ویندوز | 🔨 در برنامه | | 🍎 کلاینت macOS | 💭 بعداً | جزئیات در [`docs/roadmap.md`](docs/roadmap.md) · [CHANGELOG](CHANGELOG.md) ---
## 👋 سازنده مهدی مرتضوی ### **مهدی مرتضوی** · Mahdi Mortazavi **توسعه‌دهندهٔ Full-Stack × سازندهٔ محصول × حل‌کنندهٔ مسئله** 📍 ایران
من مهدی‌ام. دمو نمی‌سازم — چیزی را می‌سازم که خودم لازم داشته‌ام، و آن‌قدر رویش کار می‌کنم تا به درد دست دیگران هم بخورد. رله دقیقاً همین است. از سرخوردگی خودم شروع شد: لپ‌تاپی بدون اینترنت و گوشی‌ای با اینترنت. حالا روی هر کامیت یک آزمایشگاه دستگاه واقعی اجرا می‌کند، روی دو پلتفرم منتشر می‌شود، و دربارهٔ کارهایی که هنوز بلد نیست راستش را می‌گوید. **همین قسمت آخر، معیار من برای کارم است** — ترجیح می‌دهم یک محدودیت را بنویسم تا اینکه شما خودتان کشفش کنید. اگر رله به دردتان خورد، یک ⭐ واقعاً کمک می‌کند. اگر خراب شد، [به من بگویید](https://github.com/Mahdi-mortazavi/relay/issues/new/choose) — همه را می‌خوانم.
### 💬 در ارتباط باشیم [![کامیونیتی تلگرام](https://img.shields.io/badge/Community-Startup_Legend-26A5E4?style=for-the-badge&logo=telegram&logoColor=white)](https://t.me/Startup_legend) [![تلگرام](https://img.shields.io/badge/Telegram-@Mahdi__mortazavi1-26A5E4?style=for-the-badge&logo=telegram&logoColor=white)](https://t.me/Mahdi_mortazavi1)   [![ایمیل](https://img.shields.io/badge/Email-Get_in_touch-EA4335?style=for-the-badge&logo=gmail&logoColor=white)](mailto:Mahdi.mortazavi.135@gmail.com) [![گیت‌هاب](https://img.shields.io/badge/GitHub-@Mahdi--mortazavi-181717?style=for-the-badge&logo=github&logoColor=white)](https://github.com/Mahdi-mortazavi)   [![وب‌سایت](https://img.shields.io/badge/Website-mahdi--mortazavi.github.io-4ADFBF?style=for-the-badge&logo=googlechrome&logoColor=white)](https://mahdi-mortazavi.github.io) **🚀 [Startup Legend](https://t.me/Startup_legend)** — کامیونیتی من، جایی که می‌نویسم چه می‌سازم، چه چیزی خراب شد و از درست کردنش چه یاد گرفتم.
--- ## 🛠️ برای توسعه‌دهنده‌ها دو برنامه و یک قرارداد مشترک. اندروید با Kotlin و Compose؛ ویندوز با ‎.NET 8‎ و WinUI 3؛ تونل حالت کامل با Go (`wg/`) که هر دو سر از آن استفاده می‌کنند. **نیازی به build محلی نیست** — CI خودش سیستم build است (ADR-0004). push کنید و pipeline می‌سازد، روی دستگاه واقعی تست می‌کند و می‌تواند نسخه منتشر کند. ``` android/ Kotlin + Compose windows/ .NET 8 + WinUI 3 wg/ endpoint وایرگارد (Go) shared/ قرارداد بین دو پلتفرم docs/ معماری، ADR ها، تست، خطاها ``` از [`docs/architecture.md`](docs/architecture.md) و [ADR ها](docs/adr/) شروع کنید — هر تصمیم مهم، همراه با دلیلی که به آن رسیده، نوشته شده است. بقیه‌اش در [`CONTRIBUTING.md`](CONTRIBUTING.md) است.

**ساخته‌شده در ایران 🇮🇷 · [Apache-2.0](LICENSE)** «WireGuard» علامت تجاری ثبت‌شدهٔ Jason A. Donenfeld است.