Set Up Apache Guacamole Remote Desktop on Ubuntu 22.04 Server

Tutorial kali ini akan menunjukkan kepada Anda cara mengatur desktop jarak jauh Guacamole di server Ubuntu 22.04 Guacamole adalah gateway desktop jarak jauh sumber terbuka dan gratis yang dikembangkan oleh perangkat lunak Apache.

Fitur Guacamole

  • Ini memungkinkan Anda mengakses desktop jarak jauh dari browser web. Tidak ada perangkat lunak lain yang perlu diinstal di sisi klien.
  • Mendukung protokol standar seperti VNC, RDP, SSH dan Kubernetes.
  • Sesi VNC dapat direkam secara grafis.
  • Sistem Masuk Tunggal dengan CAS, OpenID Connect, atau SAML 2.0
  • wake-on-lAN
  • Kelola beberapa sesi desktop jarak jauh dengan mudah.
  • Mendukung otentikasi dua faktor TOTP.
  • Mendukung clipboard (salin dan tempel) dan transfer file melalui SFTP.
  • Mendukung masukan dan keluaran audio
  • dan banyak lagi.

Guacamole sendiri bukanlah protokol desktop jarak jauh. Ini adalah proxy antara desktop jarak jauh dan klien, sehingga desktop jarak jauh dapat ditampilkan dan dikontrol di browser web.

 

Step 1: Build the Guacamole Server From Source

Masuk ke server Ubuntu 22.04 Anda dan instal paket.

 
sudo apt update 
 
sudo apt install build-essential libcairo2-dev libjpeg-turbo8-dev libpng-dev libtool-bin libossp-uuid-dev libvncserver-dev freerdp2-dev libssh2-1-dev libtelnet-dev libwebsockets-dev libpulse-dev libvorbis-dev libwebp-dev libssl-dev libpango1.0-dev libswscale-dev libavcodec-dev libavutil-dev libavformat-dev

Unduh server guacamole versi stabil terbaru.

 
wget "https://downloads.apache.org/guacamole/1.5.3/source/guacamole-server-1.5.3.tar.gz"

Ekstrak arsipnya

 
tar -xvf guacamole-server-1.5.3.tar.gz

Ubah ke direktori yang diekstraksi

 
cd guacamole-server-1.5.3

Konfigurasikan lingkungan build

 
./configure --with-init-dir=/etc/init.d

Kemudian kompilasi server guacamole

 
sudo make 
sudo make install 
sudo ldconfig 

Muat ulang systemd, sehingga dapat menemukan layanan guacd (Guacamole proxy daemon) yang terinstal di direktori /etc/init.d/.

 
sudo systemctl daemon-reload

Mulai layanan guacd

 
sudo systemctl start guacd

Aktifkan start otomatis saat boot.

 
sudo systemctl enable guacd

Guacd listen pada 127.0.0.1:4822, seperti yang ditunjukkan dengan utilitas ss.

 
sudo ss -lnpt | grep guacd

Step 2: Install the Guacamole Web Application

Aplikasi web Guacamole ditulis dalam Java, jadi kita perlu menginstal container Java Servlet seperti Apache Tomcat.

 
sudo apt install tomcat9 tomcat9-admin tomcat9-common tomcat9-user

Apache Tomcat akan listen pada port 8080, seperti yang ditunjukkan dengan:

 
sudo ss -lnpt | grep java

Jika Anda memiliki perangkat lunak lain yang menggunakan port 8080, maka Tomcat tidak dapat berjalan ke port 8080. Anda harus mengonfigurasi perangkat lunai lain untuk menggunakan port yang berbeda, lalu restart Tomcat (sudo systemctl restart tomcat9).

Selanjutnya, unduh aplikasi web Guacamole

 
wget "https://downloads.apache.org/guacamole/1.5.3/binary/guacamole-1.5.3.war"

Pindahkan file ke direktori aplikasi web (/var/lib/tomcat9/webapps) dan sekaligus ganti nama file (hapus nomor versi).

 
sudo mv guacamole-1.5.3.war /var/lib/tomcat9/webapps/guacamole.war

Mulai ulang Tomcat dan guacd

 
sudo systemctl restart tomcat9 guacd

Step 3: Configure Guacamole

Buat direktori konfigurasi untuk Guacamole

 
sudo mkdir -p /etc/guacamole/{extensions,lib}
 
sudo sh -c "echo 'GUACAMOLE_HOME=/etc/guacamole' >> /etc/default/tomcat9"

Buat file konfigurasi

 
sudo nano /etc/guacamole/guacamole.properties

Tambahkan baris berikut dalam file ini. Bisa juga Anda tidak perlu menambahkan baris ini karena itu adalah nilai default. Saya tunjukkan konfigurasi dasar, sehingga Anda dapat menyesuaikannya bila diperlukan.

 
# Hostname and port of guacamole proxy 
guacd-hostname: localhost 
guacd-port:     4822 
 
# Auth provider class (authenticates user/pass combination, needed if using the provided login screen) 
auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider 
basic-user-mapping: /etc/guacamole/user-mapping.xml

Simpan dan tutup file. Modul autentikasi default di Guacamole membaca nama pengguna dan kata sandi dari file XML: /etc/guacamole/user-mapping.xml. Sebelum membuat file ini, kita perlu membuat hash MD5 untuk kata sandi Anda dengan perintah berikut. Ganti kata your_password dengan kata sandi pilihan Anda.

 
echo -n your_password | openssl md5

Sample output:

 
MD5(stdin)= 1060b7b46a3bd36b3a0d66e0127d0517

Selanjutnya, buat file XML pemetaan pengguna

 
sudo nano /etc/guacamole/user-mapping.xml

Tambahkan baris berikut. Disini kita tentukan bahwa backend akan menggunakan protokol VNC (Vritual Network Computing). Ganti username dan hash password. Nanti kita akan membuat password VNC.

 
<user-mapping> 
        <authorize 
                username="admin" 
                password="1060b7b46a3bd36b3a0d66e0127d0517" 
                encoding="md5"> 
                <connection name="vnclocal"> 
                        <protocol>vnc</protocol> 
                        <param name="hostname">localhost</param> 
                        <param name="port">5901</param> 
                        <param name="password">your_vncpassword</param> 
                </connection> 
        </authorize> 
</user-mapping>

Simpan dan tutup file. Mulai ulang Tomcat dan guacd

 
sudo systemctl restart tomcat9 guacd

Step 4: Install a Desktop Environment on Ubuntu 22.04 Server

Karena kita akan menyiapkan desktop jarak jauh, kita memerlukan lingkungan desktop. Pastikan server Anda memiliki cukup RAM sebelum menginstal lingkungan desktop. Ada banyak lingkungan desktop. Saya menemukan lingkungan desktop XFCE yang ringan berfungsi baik dengan VNC, jadi instal dengan perintah berikut

 
sudo apt install xfce4 xfce4-goodies

Selama instalasi, Anda mungkin diminta untuk memilih pengelola tampilan default. Pilihan ini tidak terlalu menjadi masalah, karena Anda tidak akan melihat layar login di sesi VNC.

Karena terdapat lingkungan desktop yang berjalan di server, sangat disarankan agar Anda menggunakan firewall seperti UFW untuk membatasi akses dan hanya membuka port yang diperlukan untuk publik.

Step 5: Install a VNC Server on Ubuntu 22.04 Server

Ada beberapa perangkat lunak server VNC yang tersedia untuk pengguna Linux. Kami akan menggunakan server TigerVNC karena berfungsi paling baik dengan Guacamole

 
sudo apt install tigervnc-standalone-server

Jalankan perintah berikut untuk memulai server VNC

 
vncserver

Ketika TigerVNC pertama kali dimulai, ia meminta Anda untuk mengatur kata sandi VNC. Perhatikan bahwa kata sandi tidak boleh lebih dari 8 karakter. Kemudian Anda dapat memilih apakah Anda memerlukan kata sandi hanya lihat

Sekarang Anda harus mengedit file /etc/guacamole/user-mapping.xml dan mengubah kata sandi VNC. Kemudian restart Tomcat dan guacd.

 
sudo systemctl restart tomcat9 guacd

Perintah vncserver membuat dua file di bawah direktori home Anda

  • ~/.Xauthorirty
  • ~/.vnc/xstartup

File xstartup menentukan aplikasi yang akan dijalankan oleh server TigerVNC. Sunting berkas ini

 
nano ~/.vnc/xstartup
 
#!/bin/bash 
xsetroot -solid grey 
export XKL_XMODMAP_DISABLE=1 
/etc/X11/Xsession 
startxfce4 &
 
chmod +x ~/.vnc/xstartup

Selanjutnya jalankan baris berikut yang akan membuat server TigerVNC memulai lingkungan desktop LXQT. Biner startxfce4 diinstal oleh paket xfce4-session.

 
startxfce4 &

Simpan dan tutup file

Step 6: How to run

 
/usr/bin/vncserver -kill :1 
/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :1

Script bash tersebut bisa ditaruh dalam sebuah file yg bisa di eksekusi ataupun bisa langsung pada schedule (crontab -e)

 
@reboot { /usr/bin/vncserver -kill :1; /usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :1 }

Step 6: Access via your remote Browser

Anda bisa menggunakan browser untuk melakukan remote dengan mengakses url seperti berikut, bisa jadi keadaan disisi anda berbeda, silahkan sesuaikan

 
http://your.ip.addr:8080/guacamole/

 

 

 

The power of documents

Kami sajikan dengan bahasa yang mudah dengan disertai command line yang bisa di copy-paste sehingga memudahkan untuk melakukan modifikasi command line