Rumahweb Journal
Banner - cara install golang di cpanel

Cara Install Golang di cPanel hosting

Install Golang di cPanel menjadi solusi menarik bagi developer yang ingin menjalankan aplikasi Go tanpa harus langsung berpindah ke VPS. Go (Golang) dikenal sebagai bahasa pemrograman yang cepat, efisien, dan ringan, namun banyak pengguna hosting masih ragu apakah Go bisa diinstal di lingkungan shared hosting berbasis cPanel.

Faktanya, selama hosting Anda mendukung akses terminal (SSH), proses install Golang di cPanel dapat dilakukan secara manual dengan aman untuk kebutuhan testing maupun aplikasi berskala ringan.

Melalui artikel ini, kami akan membahas cara install Golang di cPanel hosting secara lengkap dan praktis, sehingga Anda dapat mulai menjalankan aplikasi Go langsung dari hosting Anda.

Apa Itu Golang?

Golang (Go) adalah bahasa pemrograman open-source yang dikembangkan oleh Google. Bahasa ini dikenal cepat, efisien, serta mendukung concurrency melalui fitur goroutine, sehingga sangat cocok digunakan untuk membangun aplikasi web, API, dan layanan backend yang ringan serta mudah diskalakan.

Artikel lebih lengkap tentang apa itu Golang atau Go kami publikasi melalui artikel berikut: Apa Itu Golang?

Secara default, cPanel tidak secara eksplisit mengatakan dukungan Golang sehingga tidak masuk dalam package instalasi cPanel. Oleh karena itu, Anda perlu melakukan sedikit konfigurasi disisi akun hostingnya melalui terminal SSH yang telah disediakan.

Pindah Hosting ke Rumahweb Gratis

System Requirements Golang di Hosting

Berikut adalah spesifikasi minimum hosting yang direkomendasikan untuk instalasi dan penggunaan Golang standar di lingkungan hosting:

Spesifikasi Minimum Hosting:

  • 1 vCPU
  • RAM 2 GB
  • Entry Process: 20+
  • NPROC: 60

Untuk penggunaan yang lebih stabil, terutama jika aplikasi berjalan terus-menerus, disarankan menggunakan Cloud Hosting dengan 2 vCPU atau lebih, atau sesuai kebutuhan aplikasi yang Anda buat.

Catatan Penting:

  • Gunakan konfigurasi GOMAXPROCS=1 agar aplikasi Golang tidak membebani penggunaan CPU pada akun hosting Anda.
  • Pastikan tidak ada aplikasi lain dengan konsumsi resource tinggi, seperti Node.js atau Python, yang berjalan secara bersamaan. Hal ini bertujuan agar Golang dapat berjalan lebih stabil, khususnya untuk kebutuhan backend.

Batasan Golang dalam cPanel

Sebelum menjalankan Golang di lingkungan cPanel hosting, ada beberapa batasan yang perlu Anda pahami:

  • Tentukan tujuan penggunaan Golang: Golang lebih disarankan digunakan sebagai backend service, seperti API, WebSocket, webhook, atau utility (misalnya file converter, parser, atau checker), bukan sebagai web frontend utama.
  • Tidak berjalan otomatis: Aplikasi Go tidak akan berjalan otomatis ketika proses terhenti (killed) atau saat server mengalami reboot. Anda perlu menjalankannya kembali secara manual melalui terminal, kecuali Anda menyiapkan script khusus untuk melakukan pengecekan dan auto-running.
  • Kebutuhan resource jangka panjang: Untuk penggunaan jangka panjang, aplikasi Golang cenderung membutuhkan CPU dan RAM yang lebih besar agar tetap stabil, terutama jika menangani banyak request.
  • Pembatasan port: Golang di cPanel tidak dapat melakukan binding port secara bebas (seperti port 80 atau 8080). Anda perlu menggunakan custom port yang disediakan oleh provider hosting.
  • Pembatasan sistem demi keamanan: Pada beberapa paket hosting, kernel atau sistem operasi yang digunakan masih memiliki keterbatasan tertentu. Beberapa system call dibatasi demi menjaga keamanan lingkungan shared hosting.

Jika Anda membutuhkan lingkungan yang lebih proper, stabil, dan fleksibel untuk menjalankan aplikasi Golang secara penuh, menggunakan VPS adalah pilihan yang lebih ideal karena memberikan kontrol server dan resource yang lebih leluasa.

Install Golang di cPanel

Berikut adalah cara install Golang di cPanel pada level user cPanel. Perlu diketahui, pada demo ini kami menggunakan Cloud Hosting 2 vCPU yang telah mendukung akses SSH, serta Golang versi 1.22 sebagai contoh instalasi.

Step 1. Instal Go di cPanel

Silahkan akses terminal akun hosting Anda, lalu jalankan perintah berikut:

cd ~
wget https://go.dev/dl/go1.22.1.linux-amd64.tar.gz
tar -xzf go1.22.1.linux-amd64.tar.gz

Proses tar diatas akan membuat folder bernama go, selanjutnya tambahkan konfigurasi berikut:

nano ~/.bashrc

Tambahkan dibawah unset rc:

export GOROOT=$HOME/go
export GOPATH=$HOME/go-work
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

Silahkan simpan lalu aktifkan settingan bashrc dengan perintah: source ~/.bashrc

Golang atau Go adalah bahasa pemrograman open-source dari Google yang terkenal cepat, efisien, dan mendukung concurrency dengan goroutine. Bahasa ini ideal untuk membuat aplikasi web, API, dan layanan backend yang ringan dan skalabel

Jalankan perintah go version untuk melihat versi terinstallnya

go version

Selanjutnya tambahkan settingan dibawah dibagian akhir bash_profile, jalankan perintah berikut:

nano ~/.bash_profile
export GOROOT=$HOME/go
export GOPATH=$HOME/go-work
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
export GOMAXPROCS=1
bash_profile golang

Setelah bashrc dan bash_profile di setting, maka Anda tidak akan kehilangan environment milik Go.

Step 2. Buat Web Golang

Silahkan buat file web sederhana dari Go dan letakan diluar public_html. Jalankan perintah berikut untuk percobaannya:

mkdir ~/go-work/src/webapp
cd go-work/src/webapp/
nano main.go

Berikut isi file main.go:

package main

import (
    "fmt"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "text/html") // penting supaya browser render HTML
    fmt.Fprintln(w, `
    <!DOCTYPE html>
    <html>
    <head>
        <title>My Go Web App</title>
        <style>
            body { font-family: Arial; background-color: #f0f0f0; text-align: center; }
            h1 { color: #333; margin-top: 50px; }
        </style>
    </head>
    <body>
        <h1>Hello from Go Web App!</h1>
        <p>Selamat datang di website sederhana Go.</p>
    </body>
    </html>
    `)
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":65534", nil)
}

Pada bagian ListenAndServe, kami menggunakan port 65534. Silahkan simpan scriptnya dan jalankan perintah berikut:

go build -o webapp
./webapp
cara install golang di cpanel

Apabila tidak ada kendala, Anda bisa langsung testing akses melalui browser lengkap beserta port. Contoh gambar dibawa, URL(tanpa SSL): http://journal-rw.my.id:65534

Contoh gambar dibawah dengan URL (tanpa SSL)

Jika Anda ingin agar di akses tanpa port, maka perlu membuat proxy PHP. Contoh script sederhana dengan nama index.php:

<?php
$backend = "http://127.0.0.1:65534";
$target  = $backend . $_SERVER['REQUEST_URI'];

$forwardHeaders = [];
if (function_exists('getallheaders')) {
    foreach (getallheaders() as $k => $v) {
        $lk = strtolower($k);
        
        if (!in_array($lk, ['host', 'content-length', 'transfer-encoding', 'connection'])) {
            $forwardHeaders[] = "$k: $v";
        }
    }
}

$forwardHeaders[] = "X-Real-IP: " . ($_SERVER['REMOTE_ADDR'] ?? '');
$forwardHeaders[] = "X-Forwarded-For: " . ($_SERVER['REMOTE_ADDR'] ?? '');
$forwardHeaders[] = "X-Forwarded-Proto: " . (!empty($_SERVER['HTTPS']) ? 'https' : 'http');
$forwardHeaders[] = "X-Forwarded-Host: " . ($_SERVER['HTTP_HOST'] ?? '');


$body = file_get_contents("php://input");

$ch = curl_init($target);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER         => true,  
    CURLOPT_CUSTOMREQUEST => $_SERVER['REQUEST_METHOD'],
    CURLOPT_POSTFIELDS    => $body,
    CURLOPT_HTTPHEADER    => $forwardHeaders,
    CURLOPT_TIMEOUT       => 15,
    CURLOPT_CONNECTTIMEOUT => 3,
    CURLOPT_FOLLOWLOCATION => false,  
]);

$response = curl_exec($ch);

if ($response === false) {
    http_response_code(502);
    header("Content-Type: application/json");
    echo json_encode(["error" => "Bad Gateway: Backend Go tidak merespon"]);
    exit;
}

$httpCode   = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
curl_close($ch);

$rawHeaders = substr($response, 0, $headerSize);
$body       = substr($response, $headerSize);

http_response_code($httpCode);

foreach (explode("\r\n", trim($rawHeaders)) as $header) {
    if ($header === '') continue;

    if (preg_match('/^(Transfer-Encoding|Content-Length|Connection)/i', $header)) {
        continue;
    }

    header($header, false);
}

echo $body;

script diatas letakan dalam public_html lalu coba akses webnya tanpa port. Jika berhasil, maka akan tampil seperti gambar dibawah:

Contoh gambar dibawah dengan URL (tanpa SSL)

Step 3. Re-desain Web Go Sederhana

Pada langkah ini tidak hanya mengganti tampilan webnya, namun juga dengan cara perbarui tampilan dalam web ke versi terbaru karena Go tidak real konten seperti Anda langsung mengedit file html/php di hosting.

Pada panduan ini kami edit file main.go dengan contoh script dibawah:

package main

import (
    "fmt"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "text/html")

    // Tentukan halaman berdasarkan URL path
    page := r.URL.Path
    var title, content string

    switch page {
    case "/", "/home":
        title = "Home"
        content = "<h2>Welcome to Our Go Web App!</h2><p>This is the Home page.</p>"
    case "/about":
        title = "About Us"
        content = "<h2>About Us</h2><p>We are a small team building Go web apps!</p>"
    case "/contact":
        title = "Contact"
        content = "<h2>Contact</h2><p>Email: info@example.com</p>"
    default:
        title = "404 Not Found"
        content = "<h2>Page not found</h2><p>Sorry, the page does not exist.</p>"
    }

    fmt.Fprintf(w, `
    <!DOCTYPE html>
    <html>
    <head>
        <title>%s</title>
        <style>
            body { font-family: Arial, sans-serif; background-color: #f9f9f9; margin: 0; }
            header { background-color: #0077cc; color: white; padding: 20px; text-align: center; }
            nav { background-color: #004c99; padding: 10px; }
            nav a { color: white; margin: 0 15px; text-decoration: none; font-weight: bold; }
            nav a:hover { text-decoration: underline; }
            main { padding: 30px; text-align: center; }
            footer { background-color: #333; color: white; padding: 10px; text-align: center; }
        </style>
    </head>
    <body>
        <header>
            <h1>Go Web App Landing Page</h1>
        </header>
        <nav>
            <a href="/home">Home</a>
            <a href="/about">About Us</a>
            <a href="/contact">Contact</a>
        </nav>
        <main>
            %s
        </main>
        <footer>
            &copy; 2026 Aplikasi Go sederhana dari Rumahweb.
        </footer>
    </body>
    </html>
    `, title, content)
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":65534", nil)
}

Silahkan Anda simpan, selanjutnya jalankan perintah berikut:

rm -rf webapp
go build -o webapp
./webapp
rebuild golang di cpanel

Jika berhasil, Anda akan melihat tampilan baru seperti gambar dibawah:

golang sederhana

Setiap ada perubahan data, pastikan untuk menjalankan tiga perintah diatas sebelum mengakses halaman webnya.

Jika tampilan belum berubah, Anda perlu kill proses webapp melalui terminal karena cache lama masih running sebagai background, kemudian running kembali dengan perintah ./webapp.

Penutup

Install Golang di cPanel memungkinkan Anda menjalankan aplikasi Go tanpa harus langsung menggunakan VPS, selama hosting yang digunakan mendukung akses SSH dan memiliki resource yang memadai. Dengan konfigurasi yang tepat, Golang dapat dimanfaatkan untuk kebutuhan backend ringan seperti API, webhook, atau utility.

Namun, karena adanya keterbatasan resource dan kontrol sistem pada cPanel, Golang lebih cocok digunakan untuk testing atau aplikasi berskala kecil. Jika Anda membutuhkan performa, stabilitas, dan fleksibilitas yang lebih optimal untuk penggunaan jangka panjang, beralih ke VPS merupakan pilihan yang lebih ideal.

Itu dia panduan kami tentang cara install Golang di cPanel hosting, semoga dapat membantu.

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rating rata-rata 5 / 5. Vote count: 4

Belum ada vote hingga saat ini!

Kami mohon maaf artikel ini kurang berguna untuk Anda!

Mari kita perbaiki artikel ini!

Beri tahu kami bagaimana kami dapat meningkatkan artikel ini?

Fredric Lesomar

I am an ameteur programer and cybersecurity enthusiast. Love much, mother Python language, machine learning and You!

banner Pop Up - Hosting 99K