Neden SSH üzerinde bir masaüstü.
Uzak bir sunucuda grafik ortam, kulağa problem arayan bir çözüm gibi geliyor. İşte bunun dürüst savunması — bu sayfayı kapatıp terminalinizle devam etmeniz gereken durumlar dâhil.
«Bunların hepsini zaten ssh ve vim ile yapıyorum»
Yapıyorsunuz. Bu sayfadaki her şey, bir SSH oturumu, bir kabuk ve zaten hâkim olduğunuz bir düzenleyiciyle mümkün. Tek bir sunucu yönetiyorsanız, vim'de akıcıysanız ve işiniz bir terminale sığıyorsa — bu size göre değil; kurulu düzeninizi bozmamanızı tercih ederiz.
Grafik katman, terminal yetersiz olduğu için orada değil. Terminal sıralı bir arayüz olduğu ve bazı işler sıralı olmadığı için orada. Bir aktarımı izlerken bir günlüğü okumak ve aynı anda bir yapılandırma dosyasını düzenlemek, herhangi bir masaüstünde üç pencere; terminalde üç tmux bölmesi ve epeyce disiplin demek.
Grafik katmanın yerini asıl hak ettiği yerler
Dört durum; en sık duyduklarımızdan başlayarak.
- Dosyaları taşımak ve bunu görmek.scp ile bir dizini kopyalamak size yanıp sönen bir imleç ve biraz umut verir. Gezgin ise bunu bir iş kuyruğu, aktarım başına canlı bir yüzde ve hedefte aynı ad varsa sessizce üzerine yazmak yerine yeniden adlandırmayla yapar. Yavaş bir hatta 4 GB'lık bir klasör gönderiyorsanız «hâlâ ilerliyor mu?» gerçek bir sorudur.
- Kendi yazmadığınız kodu okumak. Bildiğiniz bir dosyayı düzenlemek vim'in işi. Yabancı bir kod tabanını anlamak — dosyalar arasında gezinmek, bir include'ı izlemek, bütün bir ağaçta aramak — dosya ağacının ve sekmelerin işi. Yerelde hiçbir şey çekmeden, uzak dosya sisteminin üzerinde size bunu veren şey Monaco düzenleyicidir.
- Daha önce hiç görmediğiniz bir sunucuya düşmek. En güçlü gerekçe bu. Termal makinede neyin çalıştığını algılar — Plesk, cPanel, düpedüz nginx ya da Apache —, sunduğu siteleri her birinin gerçekten kullandığı PHP sürümüyle listeler, çalışan servisleri ve konteynerleri gösterir, günlük dosyalarını bulur. Aynı tabloya elle ulaşmak bir düzine komut ve her dağıtımın neyi nereye sakladığını bilmek demektir.
- Sunucunun kendi ağ konumundan test etmek. Yalnızca sunucuda yanıt veren dâhilî bir yolu terminalden incelemek zahmetlidir. HTTP istemcisi curl'ü sunucunun üzerinde çalıştırır ve başlıklarla gövdeyi düzgünce serer. Tarayıcı daha ileri gider: varsayılan olarak kendi bilgisayarınızdan gezinir, ama ağ çıkışını sunucuya çevirebilirsiniz; o zaman trafik, zaten sahip olduğunuz SSH bağlantısı üzerinde açılan bir SOCKS5 tünelinden geçer ve araç çubuğundaki bir rozet hangisinde olduğunuzu söyler. Sekme başına yerleşik geliştirici araçlarıyla, yalnızca içeriden erişilebilen bir sayfa çıkarım yaptığınız değil baktığınız bir şeye dönüşür.
Ve bunların hepsi tek bir bağlantı üzerinde
Mimari açıdan asıl önemli olan kısım burası; masaüstünün bir yığın SSH çağrısının üzerine geçirilmiş bir kabuk olmamasının nedeni de bu.
Termal OS, keepalive'li yeniden kullanılabilir bir SSH bağlantı havuzu — sunucu başına bir tane tutar ve her şey onun üzerinden gider: ölçümler, dosya gezgini, terminal, düzenleyici, günlük takibi. Dosya yöneticisini açmak ikinci bir oturum açmaz. Ek port yok, ajan yok, ikinci bir kimlik doğrulama yok ve makineye kurulan hiçbir şey yok. Sunucunun gözünde siz, sıradan işler yapan tek bir SSH oturumusunuz.
Bu kısıt aynı zamanda masaüstünün, root'unuzun olmadığı ve hiçbir şey kuramadığınız hostinglerde çalışmasını sağlayan şeydir: paylaşımlı hosting, yönetilen hosting, bir müşterinin makinesi. Bir servise ihtiyaç duyan grafik yönetim paneli oralarda hiçbir işe yaramazdı.
Masaüstünde gerçekte ne var
Görev çubuğu, başlat menüsü ve masaüstü simgeleri olan bir pencere yöneticisi ve 23 uygulama. İşi yapanlar şunlar:
- Gezgin — SFTP gezgini: kopyalama, taşıma, yükleme, bir klasörü arşiv olarak indirme, izinler, sürükle bırak, ilerlemeli aktarım kuyruğu.
- Terminal — gerçek bir PTY kabuğu; komut atılan bir kutu değil.
- Termal Code — Monaco (VS Code'un düzenleyicisi), dosya ağacı ve sekmelerle, doğrudan uzak dosya sistemi üzerinde düzenleme.
- Tarayıcı — çoklu sekme, yer imleri, indirmeler, kaynak görüntüleme ve sekme başına yerleşik geliştirici araçları.
- İzleyici, Süreçler, Günlükler — canlı ölçümler, içinden süreç sonlandırabileceğiniz bir liste ve Apache, nginx, PHP, MySQL, syslog'un alışıldık dosyalarını kendiliğinden bulan günlük takibi.
- Web isteği, Zip, Git, FTP, Çöp — olmasa iş ortasında sizi kabuğa geri gönderen küçük araçlar.
- Yardımcı — gündelik dille sorular, komut ve açıklamayla yanıtlanır. Siz tıklamadan hiçbir şey çalışmaz ve kendi API anahtarınızla çalışır.
Ayrıca bir e-posta istemcisi, notlar, hesap makinesi, birim çevirici, renk seçici ve birkaç oyun var. Yirmi üçün on üçü varsayılan olarak kapalı — kalıcı olanlar yalnızca uygulama mağazası, ayarlar, gezgin ve çöp — çünkü dosya gezginini bir oyun menüsünün altına gömen bir ilk açılış, bütün fikre karşı tek başına bir itiraz olurdu. Kullandığınızı açın.
Geliştiricilerin bakması gereken kısım
Masaüstü genişletilebilir ve genişletme modeli kod tabanındaki en ilginç şey.
Üçüncü taraf bir uygulama yalıtılmış bir iframe içinde çalışır. Dosya sistemine, ağa ya da panoya doğrudan dokunamaz. Ayrıcalık gerektiren her çağrı, bir mesaj olarak ana uygulamaya gider; o da bunu, uygulamanın kendi manifestosunda beyan ettiği izinlerle karşılaştırır — ve bunlar yalnızca altı tane: fs.read, fs.write, net, storage, clipboard, webview. Kurulum sırasında size gösterilir. Çalışma zamanının kendi başlık yorumundaki kural dolambaçsız: iframe'e asla güvenilmez, her şeyi ana uygulama doğrular.
Bu, çoğu eklenti sisteminden daha ağır basıyor; çünkü bu uygulamalar, SSH erişimi verdiğiniz sunuculara karşı çalışıyor. Bir eklentinin sessizce anahtarlarınızı okuyabildiği bir uygulama mağazası savunulamaz olurdu.
Ve SDK, dışarıdakiler için sonradan eklenmiş ayrı ve daha zayıf bir API değil: gömülü hesap makinesi de Termal.app() ile kaydediliyor — üçüncü taraf bir uygulamanın kullandığı aynı genel giriş noktasıyla. SDK ile birlikte, not uygulamasından webview taşıyıcısına ve sunucu araç takımına kadar sekiz eksiksiz örnek uygulama geliyor.
Eksiksiz başvuru — manifesto, çalışma zamanı, iletişim kutuları, dosya seçiciler, depolama, ağ, webview, pano, pencere denetimi, çeviriler, paketleme — Termal App Studio sayfasında.
Ne değildir
- Terminalinizin yerini tutmaz. İçinde bir terminal var ve onu kullanacaksınız. İşiniz zaten bir kabuğa sığıyorsa, masaüstü size gereken hiçbir şey katmaz.
- Uzak masaüstü protokolü değildir. X11 yok, VNC yok, RDP yok ve hattın sizin tarafınızda bir görüntü sunucusu yok. Pencere yöneticisi uygulamanın içinde yerel olarak çalışır; SSH bağlantısını yalnızca dosya, kabuk ve ölçüm trafiği geçer.
- Sürekli açık değildir. Pencere kapalıyken toplama sürer, ama uygulamanın uyanık bir makinede çalışıyor olması gerekir. Dizüstünü kapatın, durur — bunun en çok ağırlık taşıdığı Netdata karşılaştırmasına bakın.
- Bin sunucu için değildir. Birkaçtan birkaç düzineye. Yalnızca SSH üzerinden Linux: SNMP yok, Windows yok, ağ keşfi yok.





