GoSuda

Portalite: SDK Go Portal yang ringan berbasis multi-relay binding dan net.Listener standar

By Lemon Mint views ...

Sebelumnya, ketika memperkenalkan Portal, kami membahas masalah web modern. Dengan munculnya alat pengodean AI, siapa pun kini dapat membuat situs web, tetapi proses untuk mempublikasikannya ke dunia tetap berada di bawah monopoli platform raksasa dan layanan cloud. Portal memisahkan hosting web dari pembuatan konten, dan dengan menghubungkan layanan lokal milik individu ke seluruh dunia melalui relai terenkripsi ujung-ke-ujung, Portal mengembalikan hak untuk mempublikasikan kepada individu.

Kami Memperkenalkan Portalite

Hari ini saya mengumumkan Portalite. Portalite adalah klien Portal ultra-ringan dan SDK Go yang dibangun dengan dependensi minimal.

Jika Portal adalah filosofi tentang "bagaimana mengubah web", maka Portalite adalah perekat paling tipis yang menghubungkan filosofi tersebut ke aplikasi pengembang. Pengembang cukup mengimpor SDK dan menambahkan beberapa baris kode, tanpa konfigurasi cloud yang rumit atau pipeline deployment, untuk memasang ingress portal ke aplikasi mereka. Begitu aplikasi berjalan, server yang sebelumnya hanya aktif secara lokal menjadi layanan publik yang dapat diakses dari mana pun di internet.

1. Ingress Publik yang Cukup dengan Dua Baris Kode

Portalite mendukung net.Listener, antarmuka standar Go. Cukup dengan mengganti listener pada kerangka kerja web atau kode server yang sudah ada, Portalite langsung berfungsi.

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 sama sekali pengaturan port forwarding, IP tetap, maupun aturan inbound firewall.
  • Kompatibilitas standar: Kompatibel 100% dengan http.Server, grpc.Server, Gin, Echo, Chi, dan seluruh pustaka Go lain yang menggunakan net.Listener standar.

2. Inti: Pengikatan Multi-Relay Secara Bersamaan (Multi-Relay Binding)

Sebagian besar alat tunneling bergantung pada satu endpoint sehingga layanan ikut terputus ketika server relai mati. Portalite beroperasi dengan terhubung secara bersamaan ke beberapa server relai.

  • Isolasi kegagalan tanpa henti (Failover): Meskipun sebagian relai mati atau mengalami latensi jaringan, relai lain yang masih aktif terus menerima lalu lintas melalui listener virtual yang sama.
  • Penghapusan titik kegagalan tunggal (SPOF): Selama tidak semua sesi relai terputus secara bersamaan, loop Accept() aplikasi tidak akan berhenti.
  • Enkripsi ujung-ke-ujung (E2EE): Lalu lintas dienkripsi selama diteruskan, sehingga server relai tidak dapat melihat atau memanipulasi data.
  • Penyambungan ulang otomatis dan pemulihan mandiri (Self-Healing): Bahkan ketika terjadi gangguan jaringan sementara atau relai dimulai ulang, sesi dan token dinegosiasikan ulang secara otomatis di latar belakang untuk memulihkan koneksi.

3. Langsung Digunakan dengan Satu Baris Perintah CLI

Jika Anda tidak menggunakan kode Go atau memerlukan pengujian cepat, cukup berikan nomor port kepada 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

Segera setelah perintah dijalankan, URL multi-relay diterbitkan dan layanan langsung dapat diakses dari luar.

4. Ringan namun Bertenaga

  • Dependensi minimal: Dengan meminimalkan dependensi pihak ketiga, biner menjadi ringan dan proses build lebih cepat.
  • Dukungan TLS & UDP: Selain lalu lintas TLS seperti HTTP/gRPC, layanan UDP seperti server game juga dapat diekspos dengan mudah melalui backhaul datagram QUIC.

Memulai