GoSuda

Memperkenalkan Portalite: Klien dan SDK sumber terbuka ultra-ringan untuk menambahkan Portal Ingress ke aplikasi Anda

By Lemon Mint
views ...

Dalam memperkenalkan Portal sebelumnya, kami telah menguraikan berbagai permasalahan pada web modern. Dengan kemunculan perangkat pengkodean AI, setiap individu kini mampu membangun situs web, tetapi proses publikasinya ke dunia luar tetap menjadi ranah monopoli platform raksasa dan komputasi awan. Portal adalah sebuah proyek yang memisahkan antara hosting web dan pembuatan konten, serta mengembalikan hak publikasi kepada individu dengan menghubungkan layanan lokal personal ke seluruh dunia melalui relai yang terenkripsi secara ujung ke ujung (end-to-end).

Memperkenalkan Portalite

Hari ini, saya mengumumkan Portalite. Portalite adalah klien Portal ultra-ringan dengan dependensi minimal serta SDK Go.

Jika Portal merepresentasikan filosofi mengenai "bagaimana web akan diubah", maka Portalite bertindak sebagai perekat tertipis yang melekatkan filosofi tersebut ke dalam aplikasi pengembang. Tanpa konfigurasi cloud yang rumit atau pipeline deployment, para pengembang dapat memasukkan ingress portal ke dalam aplikasi mereka hanya dengan mengimpor SDK dan menambahkan beberapa baris kode. Seketika aplikasi tersebut dijalankan, server yang sebelumnya hanya hidup secara lokal akan berubah menjadi layanan publik yang dapat diakses dari mana saja di internet.

1. Ingress Publik yang Selesai dalam Dua Baris Kode

Portalite mendukung antarmuka standar Go, yaitu net.Listener. Sistem ini langsung beroperasi hanya dengan mengganti listener pada kerangka kerja web atau kode server yang sudah ada.

1identity, err := portalite.GenerateIdentity("my-service")
2
3listener, err := portalite.Expose(ctx, portalite.ExposeConfig{
4    Relays:   portalite.DefaultRelays(),
5    Identity: identity,
6})
7
8http.Serve(listener, handler)
  • Tanpa Konfigurasi (Zero-config): Tidak diperlukan pengaturan port forwarding, IP statis, ataupun aturan inbound firewall sama sekali.
  • Kompatibel dengan Standar: Kompatibel 100% dengan seluruh pustaka Go yang menggunakan net.Listener standar, seperti http.Server, grpc.Server, Gin, Echo, dan Chi.

2. Inti: Pengikatan Multi-Relai Simultan (Multi-Relay Binding)

Sebagian besar perangkat tunneling bergantung pada titik akhir tunggal, sehingga apabila server relai mengalami kegagalan, layanan tersebut juga akan terputus. Portalite terhubung ke beberapa server relai secara bersamaan untuk beroperasi.

  • Isolasi Kegagalan Tanpa Henti (Failover): Apabila sebagian relai mengalami kegagalan atau latensi jaringan, relai yang tersisa tetap mengalirkan trafik melalui listener virtual yang identik.
  • Penghapusan Titik Kegagalan Tunggal (SPOF): Selama seluruh sesi relai tidak terputus secara bersamaan, loop Accept() pada aplikasi tidak akan berhenti.
  • Enskripsi Ujung ke Ujung (E2EE): Trafik dienkripsi dan diteruskan sedemikian rupa sehingga server relai tidak dapat membaca atau memodifikasi data.
  • Penyambungan Ulang Otomatis dan Pemulihan Mandiri (Self-Healing): Koneksi dipulihkan secara otomatis melalui negosiasi ulang sesi dan token di latar belakang, bahkan saat terjadi pemutusan jaringan sementara atau reboot relai.

3. Penggunaan Instan dengan Satu Baris Perintah CLI

Jika Anda tidak menggunakan kode Go atau membutuhkan pengujian cepat, Anda hanya perlu meneruskan nomor port melalui CLI.

1$ go install gosuda.org/portalite/cmd/portalite@latest && portalite expose --name "my-service" 3000
2URL https://my-service.rly.best
3URL https://my-service.s-h.day
4

URL multi-relai diterbitkan seketika saat perintah dijalankan, dan layanan langsung berada dalam status yang dapat diakses dari luar.

4. Ringan namun Kaya Fitur

  • Dependensi Minimal: Mengurangi dependensi pihak ketiga sehingga menghasilkan biner yang ringan dan proses build yang cepat.
  • Dukungan TLS & UDP: Selain trafik TLS seperti HTTP/gRPC, layanan UDP seperti server game juga dapat diekspos dengan mudah melalui backhaul datagram QUIC.

Memulai