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/