Termal Desktop

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.

İddia bilerek dar tutuldu: «terminalden iyi» değil, «belirli bir iş kümesinde terminalden hızlı». Termal OS'un içinde gerçek bir PTY kabuğu bulunmasının nedeni tam da terminalin çoğu zaman hâlâ doğru araç olması.

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 curlsunucunun ü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.
Bir sunucuda barındırılan siteleri listeleyen Termal OS; her sitenin gerçekten çalıştığı PHP sürümü ve istatistik, erişim günlükleri, hatalar ve git pull düğmeleri görünüyor
Üçüncü durum, tek ekranda: sunucunun barındırdığı bütün siteler, her birinin gerçekten çalıştığı PHP sürümü ve bekleyen bir güncelleme olup olmadığı. Buraya elle ulaşmak bir düzine komut ve dağıtımınızın neyi nereye sakladığını bilmek demek. Alan adları bulanıklaştırıldı.
Termal OS'ta «sunucular arası aktarım» başlıklı bir pencere; bir dosya kopyalanırken ilerleme çubuğu yüzde 41'i gösteriyor ve iki yanda birer dosya gezgini var
Birinci durum: iki sunucu arasında ilerleyen bir kopyalama; yanıp sönen imleç yerine bir ilerleme çubuğuyla.
Termal OS tarayıcı ayarlarında iki ağ çıkışı: bu bilgisayardan doğrudan bağlantı ya da SSH sunucusu üzerinden SOCKS tüneli; her kart kendi sağlayıcısını gösteriyor
Dördüncü durum bir ayardan ibaret: aynı tarayıcı, dışarı iki yol — doğrudan bilgisayarınızdan ya da SSH tüneliyle sunucu üzerinden. Burada hem genel IP adresleri hem de konum pikselleştirildi.

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.

Termal OS masaüstü: commit geçmişi ve bir diff gösteren Termal Git açık, yanında bir PHP dosyası açılmış Monaco düzenleyici olan Termal Code var
Git geçmişi, bir diff ve Monaco düzenleyici aynı anda açık — sıralı arayüz sorununun en sıkıcı yoldan çözülmüş hâli.
Termal OS'ta uzak bir dosyaya sağ tıklandığında çıkan menü: aç, birlikte aç, indir, bilgisayarıma indir, masaüstünde kısayol oluştur, sıkıştır, kopyala, kes, yeniden adlandır, izinler, çöpe taşı ve kalıcı olarak sil
Uzak bir dosyaya sağ tık: birlikte aç, bilgisayarınıza indir, sıkıştır, izinler, çöpe taşı. Masaüstü gibi davranıyor çünkü bir masaüstü.

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.

Kum havuzunda çalışan üçüncü taraf bir Termal uygulaması; günlüğünde manifesto izinlerinin clipboard ve storage olduğu, panoya yazma, setTitle ve storage set değerinin yeniden başlatmalar arasında kaldığı görünüyor
Yukarıdaki savın çalışır hâli. Bu, kum havuzundaki üçüncü taraf bir uygulama — kendi günlüğünün ilk satırı, beyan ettiği izin kümesinin ta kendisi; altındaki her çağrı da manifestonun izin verdiği bir çağrı.

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.