Apache Guacamole untuk Remote Desktop via Browser

2 min read

Disclaimer
Saya bekerja di AWS, semua opini adalah dari saya pribadi. (I work for AWS, my opinions are my own.)
Apache Guacamole Remote Desktop
Apache Guacamole Remote Desktop Proxy/Gateway (Logo: guacamole.apache.org)

TeknoCerdas.com – Salam cerdas untuk kita semua. Terdapat beberapa protokol untuk melakukan remote desktop seperti RDP, VNC, X11 via SSH, NoMachine dan masih banyak lagi. Apache Guacamole adalah salah satu protokol untuk melakukan remote access. Mungkin lebih tepat disebut sebagai remote access proxy. Pada tulisan ini TeknoCerdas akan mengajak pembaca untuk mencoba Apache Guacamole untuk remote desktop Windows dan pada Linux dengan SSH menggunakan Browser.

Apache Guacamole server memiliki protokol sendiri untuk melakukan remote desktop. Setelah terkoneksi maka Guacamole akan meneruskan koneksi ke host yang telah dikonfigurasi. Protokol yang didukung RDP, VNC SSH, dan Kubernetes. Sehingga dengan masuk ke Apache Guacamole kita dapat melakukan akses ke beberapa server.

Baca Juga
Remote Desktop Linux dengan NoMachine

Hal yang menarik adalah Apache Guacamole adalah clientless. Artinya “tidak perlu” menginstal aplikasi pada sisi client. Cukup dengan browser yang memiliki kemampuan HTML5 maka remote desktop bisa dilakukan.

Pada tulisan ini kita akan menginstal Apache Guacamole di Ubuntu Server 20.04 LTS menggunakan Docker. Untuk mengakses pada sisi client kita akan menggunakan Google Chrome. Apache Guacamole akan melakukan proxy pada sebuah Windows Desktop lewat RDP dan Linux Server lewat SSH.

Menginstal Apache Guacamole pada Ubuntu Server

Karena menggunakan metode instalasi Docker sebenarnya instalasi ini bisa diaplikasikan pada distribusi Linux apa saja asal mendukung Docker. Instalasi ini membutuhkan tiga container yang saling terhubung.

  1. guacamole/guacad – Container untuk guacamole server
  2. guacamole/guacamole – Container untuk HTML5 web app
  3. mysql – Container untuk otentikasi dan data

Namun untuk memudahkan instalasi kita akan menggunakan custom docker image yaitu maxwaldorf/guacamole. Dengan docker image ini maka tidak perlu melakukan instalasi tiga container tapi cukup satu container karena semua kebutuhan aplikasi dan database dibundle jadi satu. Untuk kebutuhan coba-coba ini yang kita cari.

Gunakan perintah Docker berikut untuk menginstal sekaligus menjalankan Apache Guacamole.

$ mkdir $HOME/config
$ sudo docker run -d --rm --name guacamole \
-p 8080:8080 -v /tmp/config:/config \
maxwaldorf/guacamole:latest

Perintah diatas akan menjalankan container dari image maxwaldorf/guacamole dan mempublish port 8080. Sekarang buka browser dan arahkan ke alaamat IP atau hostname dari Ubuntu Server tempat instalasi Apache Guacamole. Jika IP server adalah 127.1.2.3.4 maka alamatnya adalah http://127.1.2.3.4:8080.

Default username dan password untuk Apache Guacamole yang diinstal dari image tersebut adalah guacadmin dan guacadmin.

Apache Guacamole Home
Apache Guacamole Home

Informasi Koneksi Server

Apache Guacamole bertindak sebagai proxy atau gateway dari beberapa server. Dan berikut ini adalah contoh skema dari dua server yang akan digunakan pada demo.

                            +-----------+
                            |   Client  |
                            +-----------+
                                  |
                                  |
                         +-------------------+
                         | Ubuntu Server w/  |
                         | Apache Guacamole  |
                         +-------------------+
                              172.31.16.31
                                  |
                                  |
                 +---------------------------------------+
                 |                                       |
            RDP port 3389                             SSH port 22
                 |                                       |
                \|/                                     \|/
              172.31.16.32                            172.31.16.32
            +---------------------+                 +---------------+
            | Windows Server 2019 |                 |  Ubuntu 20.04 |
            +---------------------+                 +---------------+

Terdapat dua server yang akan kita coba akses melalui Apache Guacamole. Satu adalah Windows Server 2019 lewat RDP dan Ubuntu Server 20.04 akan kita akses lewat SSH.

Membuat Koneksi di Apache Guacamole

Pertama kita akan membuat koneksi untuk Windows Server 2019. Langkah-langkah yang perlu dilakukan adalah:

  1. Masuk ke menu Settings – tab Connections – klik New Connection
  2. Edit Connection
    • Name: Windows Server 2019
    • Location: ROOT
    • Protocol: RDP
  3. Network
    • Hostname: 172.31.16.32 (Sesuaikan)
    • Port: 3389
  4. Authentication
    • Username: Administrator
    • Password: (Sesuaikan)
    • Ignore server certificate: centang
  5. Display
    • Color depth: Low color (16 bit) (Sesuaikan)
    • Resize method: “Display Update” virtual channel (RDP 8.1+)
  6. Akhiri dengan Save

Selanjutnya adalah membuat koneksi untuk Ubuntu Server 20.04 menggunakan koneksi SSH.

  1. Masuk ke menu Settings – tab Connections – klik New Connection
  2. Edit Connection
    • Name: Ubutnu Server 20.04
    • Location: ROOT
    • Protocol: SSH
  3. Network
    • Hostname: 172.31.16.33 (Sesuaikan)
    • Port: 22
  4. Authentication
    • Username: ubuntu
    • Private key: (Salin isi private key)
  5. Simpan dengan menekan tombol Save

Melakukan Koneksi ke Server dengan Apache Guacamole

Untuk yang pertama kita akan melakukan koneksi remote desktop ke Windows Server 2019 melalui Apache Guacamole.

Buka browser dan arahkan pada alamat Apache Guacamole. Pada halaman Home bagian All Connections pilih koneksi “Windows Server 2019” yang telah dibuat sebelumnya.

Selang beberapa detik harusnya harusnya kita sudah masuk pada Windows Server seperti yang ditunjukkan oleh gambar berikut.

Apache Guacamole koneksi remote desktop Windows
Apache Guacamole koneksi Remote Desktop ke Windows

Dari percobaan saya, koneksi cukup responsive dan ketika window browser diresize maka Windows pun mengikuti. Jadi dapat dikatakan ini adalah client RDP yang cukup mumpuni.

Selanjutnya adalah mencoba koneksi SSH melalui web browser menggunakan Apache Guacamole. Sama seperti pada Windows, pada bagian All Connections pilih koneksi “Ubuntu Server 20.04” yang telah dibuat sebelumnya.

Beberapa saat kemudian harusnya kita sudah masuk pada Shell dari Ubuntu. Hampir semua operasi yang biasa digunakan pada Shell berfungsi. Seperti command history, TAB sebagai auto-complete, resize window dan lain-lain.

Apache Guacamole koneksi SSH
Apache Guacamole melakukan koneksi SSH

Kesimpulan

Dengan Apache Guacamole maka kita dapat melakukan sentralisasi login pada deretan server yang dimiliki. Karena akses melalui web browser jadi mempermudah akses dan dapat diakses darimana saja.

Namun satu catatan penting bahwa secara default Apache Guacamole tidak menggunakan HTTPS. Lebih baik ia diletakkan dibelakang HTTP proxy seperti Nginx dan setup SSL termination disana.