← SynchroRemote

SynchroRemote

AnyDesk benzeri uzak masaüstü uygulaması. Tek binary, Cloudflare Worker relay üzerinden çalışır — port açma yok, kurulum yok, AnyDesk tarzı 9 haneli ID.

RustCloudflare WorkersWSS / TLS4 PlatformMIT
9
Haneli ID
~10
FPS Yakalama
1
Tek Binary
0
Port Açma
synchroremote.com →Platformlara Git

Proje Hakkında

SynchroRemote, AnyDesk\'in temel kullanıcı deneyimini yeniden üreten ama altyapısını tek binary + Cloudflare Worker üzerine kuran açık kaynaklı bir uzak masaüstü uygulamasıdır. Aynı yürütülebilir dosya hem Host (paylaşan) hem Viewer (bağlanan) modlarını içerir; iki taraf da binary\'yi indirir, açılışta birinde "Paylaşımı Başlat"\'a basıp 9 haneli ID alır, diğeri ID\'yi girip bağlanır. Tüm trafik Cloudflare üzerinden WSS ile yönlendirilir — port açma, statik IP veya VPN gerektirmez.

Desteklenen İşletim Sistemleri

GitHub Releases üzerinden 4 platform için pre-build binary\'ler — kaynaktan derleme de mümkün

🐧

Linux

x86_64
synchro-linux-x86_64
Destekleniyor
🪟

Windows

x86_64
synchro-windows-x86_64.exe
Destekleniyor
🍎

macOS

ARM64
Apple Silicon (M1/M2/M3/M4)
synchro-macos-arm64
Destekleniyor
🍎

macOS

Intel
Intel x86_64
synchro-macos-x86_64
Destekleniyor
Cross-Platform Mimarisi: Aynı Rust kaynak kodundan 4 platform için cross-compile — GitHub Actions matrisi ile her tag push\'unda otomatik build. Kullanıcı kendi platformuna uygun binary\'yi indirir, executable bayrağı verir, çalıştırır. Kurulum, Administrator/sudo veya bağımlılık paketi gerekmez. macOS\'ta Gatekeeper için ilk açılışta sağ-tık → "Aç" gerekebilir.

Sistem Mimarisi

İki kullanıcı + tek Cloudflare Worker = tüm sistem

                        CLOUDFLARE WORKER (Sunucu)
                      ┌────────────────────────────────┐
                      │  Durable Objects                │
                      │  ┌──────────────────────────┐   │
[PC-A: Host modu] ←→  │  │ Room: 847291035           │  │ ←→ [PC-B: Viewer modu]
  synchro binary      │  │ - Host WebSocket         │   │   synchro binary
  "Paylaşımı Başlat"  │  │ - Viewer WebSocket       │   │   "Bağlan"
  ID: 847291035       │  │ - Mesaj Yönlendirme      │   │
                      │  └──────────────────────────┘   │
                      └────────────────────────────────┘
                                    ↕
                      ┌────────────────────────────────┐
                      │  synchroremote.com (Web)        │
                      │  - Tanıtım sayfaları            │
                      │  - Binary indirme               │
                      │  - Blog (markdown)              │
                      │  - Next.js + Cloudflare Pages   │
                      └────────────────────────────────┘

Desktop App

app/
Rust + scrap + enigo + tokio + tungstenite

Tek binary; GUI (gui.rs) hem Host (host.rs) hem Viewer (viewer.rs) modlarını içerir. capture.rs ekran yakalama, input.rs fare/klavye, video_codec.rs sıkıştırma, audio.rs ses, file_transfer.rs dosya, service.rs sistem servisi.

main.rsgui.rshost.rsviewer.rscapture.rsinput.rsvideo_codec.rsaudio.rsfile_transfer.rsservice.rsconfig.rs

Relay Server

relay/
Cloudflare Workers + Durable Objects

WebSocket relay ve Room yönetimi. Durable Object her oturum için tek bir koordinasyon noktası sağlar; mesajlar Host↔Viewer arasında yönlendirilir. Veri saklanmaz — sadece transit.

src/index.jswrangler.tomlRELAY_SECRET

Web (Tanıtım & İndirme)

synchroremote-web/
Next.js 16 + Tailwind v4 + Drizzle ORM + Cloudflare Pages

synchroremote.com tanıtım sitesi; özellik sayfaları, indirme bağlantıları, blog (remark/rehype + frontmatter), içerik markdown'dan üretilir. opennextjs-cloudflare ile Cloudflare'a deploy.

Next.js 16Drizzle ORMEmbla Carouselunified + remark/rehypeOpenNext + Wrangler

Shared Protocol

shared/
Rust crate

Host ve Viewer arasındaki mesaj formatı; protokol versiyonlama, paket tipleri, serde serialization.

lib.rsprotocol.rs

CI/CD

.github/workflows/
GitHub Actions

release.yml — git tag push edildiğinde 4 platform için cross-compile build; binary'ler GitHub Releases'a yüklenir.

release.yml4-platform matrixcargo build --release

Özellikler

Tek Binary

Host ve Viewer aynı uygulamada — kullanıcı modlar arasında geçiş yapar, ayrı yazılım kurmaz.

9 Haneli Bağlantı ID

AnyDesk tarzı kısa numerik ID; Durable Object'ler tarafından atanır, sözlü iletişimle paylaşılabilir.

Şifreli Trafik (WSS/TLS)

Tüm relay trafiği WSS üzerinden TLS ile şifrelenir; kurumsal proxy'lerden geçer, port açma gerekmez.

Şifre Korumalı Oturum

Host tarafı oturum başına şifre belirler; viewer doğru şifreyi girmedikçe ekran paylaşımı başlamaz.

Native Ekran Yakalama

Linux X11, Windows GDI/DXGI ve macOS CoreGraphics üzerinde scrap kütüphanesi ile ~10 FPS yakalama.

Fare + Klavye Kontrolü

Viewer tarafından gönderilen input event'leri Host'ta enigo/xdotool ile yeniden oynatılır.

Video Codec

Adaptif video codec (`video_codec.rs`) — düşük bant genişliğinde otomatik downscale + sıkıştırma.

Dosya Transferi

Bağlı oturum üzerinden iki yönlü dosya transferi (`file_transfer.rs`).

Audio Aktarımı

Host'tan Viewer'a ses aktarımı (`audio.rs`) — uzak ses kullanma desteği.

Servis Modu

`service.rs` ile sistem hizmeti olarak kurulabilir; oturum açılışında otomatik çalışma.

Port Açma Gerekmez

Cloudflare Worker relay ile her iki taraf da outbound bağlantı kurar — NAT/firewall ardındaki cihazlar erişilebilir.

Çevre Değişkeniyle Ayar

SYNCHRO_TARGET_WIDTH/HEIGHT, DOWNSCALE_FILTER, COMPRESSION ile performans ince ayarı.

Bağlantı Akışı — Adım Adım

İki kullanıcı arasında tam bir uzak masaüstü oturumu — 5 adım

01

İndir & Çalıştır

Kullanıcı GitHub Releases sayfasından kendi platformuna uygun tek binary'yi indirir, executable bayrağı verip çalıştırır. Kurulum yok; uygulama açılışta GUI gösterir.

02

Host: Paylaşım Başlat

PC-A'da kullanıcı sol panelde "Bu Bilgisayar"'da "Paylaşımı Başlat"'a tıklar. Uygulama Cloudflare Worker relay'a WebSocket bağlantısı açar; Durable Object 9 haneli ID atar. ID ekranda görünür.

03

Viewer: Bağlan

PC-B'de kullanıcı sağ panelde "Uzak Bağlantı"'ya 9 haneli ID + (varsa) şifreyi girer. Viewer'ın WebSocket'i aynı Durable Object Room'a katılır; Host ile mesaj kanalı kurulur.

04

Ekran + Input Akışı

Host: scrap ile ekran karelerini yakalar → video_codec ile sıkıştırır → relay üzerinden Viewer'a stream eder. Viewer: Host'a fare/klavye event'leri gönderir, Host bunları enigo/xdotool ile uygular.

05

Bağlantıyı Kapat

Her iki taraf da pencereyi kapatabilir; WebSocket kapanışı Durable Object tarafından temizlenir, Room silinir, ID havuza geri döner.

Çevre Değişkenleri

Performans ve kalite ince ayarı için SYNCHRO_* değişkenleri

SYNCHRO_RELAY_URLwss://relay.synchroremote.comÖzel relay sunucusu URL'i; varsayılan production relay yerine kendi worker'ınız
SYNCHRO_TARGET_WIDTH1280Viewer'a gönderilen kare hedef genişliği (downscale uygulanır)
SYNCHRO_TARGET_HEIGHT720Viewer'a gönderilen kare hedef yüksekliği
SYNCHRO_DOWNSCALE_FILTERaverage | nearestLinux genelde nearest, macOS genelde average tercih edilir
SYNCHRO_QUALITY_FIRST1Kaliteyi hız/bant genişliğine tercih et
SYNCHRO_COMPRESSIONbest | fast | default | 0..9PNG/sıkıştırma kalite/hız dengesi
SYNCHRO_MAX_DOWNSCALE4Maksimum kademeli downscale faktörü
SYNCHRO_SLOW_FRAME_TRIGGER15Yavaş kare sayısı eşiği — kalite düşürme tetikleyicisi
SYNCHRO_STABLE_TICKS240Kalite yükseltme öncesi gerekli stabil tick sayısı
SYNCHRO_QUALITY_DROP_MS30Kalite düşürme tepki süresi (ms)

Güvenlik Tasarımı

Uzak erişim güvenliği için 8 koruma katmanı

WSS / TLS Tüm Trafik

Host ↔ Relay ↔ Viewer arasındaki tüm WebSocket bağlantıları TLS ile şifrelenir; veri pasifçe dinlenemez.

Şifre Korumalı Oturum

Host tarafı oturum şifresini belirler; relay sunucu şifreyi görmez, doğrulama uçlar arası yapılır.

Geçici Bağlantı ID'leri

9 haneli ID'ler oturum bittiğinde havuza geri döner; kalıcı kimlik değildir, brute-force kullanışsız.

Veri Saklamayan Relay

Cloudflare Worker yalnızca paket aktarır; ekran/audio/dosya verileri loglanmaz, depolanmaz.

Outbound-Only Bağlantı

Her iki taraf da Cloudflare'a outbound bağlantı kurar — gelen port açmak gerekmez, kurumsal firewall'lar engel olmaz.

RELAY_SECRET

Self-hosted relay deploy edenler kendi RELAY_SECRET'ını wrangler.toml içinde belirler; yetkisiz worker erişimi engellenir.

Self-Host Edilebilir

Tüm sunucu tarafı (relay) açık kaynak; kurum kendi Cloudflare hesabında deploy edebilir, üçüncü taraf güvenir.

Stripped Release Binary

Cargo release profilinde strip = true, lto = true; debug sembolleri ve gereksiz veri çıkarılır, reverse engineering zorlaştırılır.

Teknoloji Yığını

Desktop
Rust 2021 (workspace: app + shared)
Ekran
scrap (X11/Win32/CoreGraphics)
Input
enigo (cross-platform) + xdotool (Linux)
Async
tokio (process, sync, time)
WebSocket
tungstenite-rs (rustls TLS)
Codec
image + custom video_codec
Audio
cpal (cross-platform)
Relay
Cloudflare Workers + Durable Objects
Web
Next.js 16 + Tailwind v4 + Drizzle ORM
Web Deploy
opennextjs-cloudflare + Wrangler
CI/CD
GitHub Actions (4-platform matrix)
Lisans
MIT

Resmi Site & İndirme

Pre-build binary\'ler ve detaylı dokümantasyon için resmi siteyi ziyaret edin. Cross-platform: Windows, macOS (Intel + Apple Silicon), Linux.

synchroremote.com →

MIT lisansı · Cloudflare Workers · Tek binary