Tutorial ini akan menunjukkan kepada Anda cara mengatur desktop jarak jauh Guacamole di server Ubuntu 20.04. Guacamole adalah gerbang desktop jarak jauh sumber terbuka gratis yang dikembangkan oleh yayasan 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.
- Single Sign-on dengan CAS, OpenID Connect, atau SAML 2.0
- Wake-on-LAN
- Kelola beberapa sesi desktop jarak jauh dengan mudah.
- Mendukung autentikasi 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.
Langkah 1:Bangun Server Guacamole Dari Sumber
Masuk ke server Ubuntu 20.04 Anda dan instal paket ketergantungan.
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 versi stabil terbaru dari guacamole-server.
wget http://mirror.cc.columbia.edu/pub/software/apache/guacamole/1.2.0/source/guacamole-server-1.2.0.tar.gz
Ekstrak arsip.
tar -xvf guacamole-server-1.2.0.tar.gz
Ubah ke direktori yang diekstrak.
cd guacamole-server-1.2.0
Konfigurasikan lingkungan build.
./configure --with-init-dir=/etc/init.d
Kemudian kompilasi guacamole-server.
sudo make
Instal server guacamole.
sudo make install
Perbarui cache sistem dari perpustakaan yang diinstal.
sudo ldconfig
Muat ulang systemd, sehingga dapat menemukan guacd
(Daemon proxy Guacamole) diinstal di /etc/init.d/
direktori.
sudo systemctl daemon-reload
Mulai guacd
layanan.
sudo systemctl start guacd
Aktifkan mulai otomatis saat boot.
sudo systemctl enable guacd
Periksa statusnya.
systemctl status guacd
Seperti yang Anda lihat, ini aktif (berjalan) .
Guacd mendengarkan 127.0.0.1:4822
, seperti yang ditunjukkan dengan ss
utilitas.
sudo ss -lnpt | grep guacd
Langkah 2:Instal Aplikasi Web Guacamole
Aplikasi web Guacamole ditulis dalam Java, jadi kita perlu menginstal wadah Java Servlet seperti Apache Tomcat.
sudo apt install tomcat9 tomcat9-admin tomcat9-common tomcat9-user
Apache Tomcat akan mendengarkan pada port 8080, seperti yang ditunjukkan dengan:
sudo ss -lnpt | grep java
Jika Anda memiliki perangkat lunak lain yang mendengarkan pada port 8080, maka Tomcat tidak dapat mengikat ke port 8080. Anda harus mengonfigurasi proses lain untuk menggunakan port yang berbeda, kemudian restart Tomcat (sudo systemctl restart tomcat9
).
Selanjutnya, unduh aplikasi web Guacamole.
wget https://downloads.apache.org/guacamole/1.2.0/binary/guacamole-1.2.0.war
Pindahkan file ke direktori aplikasi web (/var/lib/tomcat9/webapps
) dan ganti nama file secara bersamaan (hapus nomor versi).
sudo mv guacamole-1.2.0.war /var/lib/tomcat9/webapps/guacamole.war
Mulai ulang Tomcat dan guacd.
sudo systemctl restart tomcat9 guacd
Langkah 3:Konfigurasi Guacamole
Buat direktori konfigurasi untuk Guacamole.
sudo mkdir /etc/guacamole/
Buat file konfigurasi.
sudo nano /etc/guacamole/guacamole.properties
Tambahkan baris berikut dalam file ini. Beberapa orang mungkin mengatakan Anda tidak perlu menambahkan baris ini karena itu adalah nilai default. Saya menunjukkan kepada Anda konfigurasi dasar, sehingga Anda dapat menyesuaikannya saat 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 otentikasi 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 your_password
dengan kata sandi pilihan Anda.
echo -n your_password | openssl md5
Contoh keluaran:
(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 nama pengguna dan hash kata sandi. Kami akan membuat kata sandi VNC nanti.
<user-mapping> <!-- Per-user authentication and config information --> <authorize username="your_preferred_username" password="1060b7b46a3bd36b3a0d66e0127d0517" encoding="md5"> <connection name="default"> <protocol>vnc</protocol> <param name="hostname">localhost</param> <param name="port">5901</param> <param name="password">vnc_password</param> </connection> </authorize> </user-mapping>
Simpan dan tutup file. Mulai ulang Tomcat dan guacd.
sudo systemctl restart tomcat9 guacd
Langkah 4:Instal Lingkungan Desktop di Server Ubuntu 20.04
Karena kita akan mengatur desktop jarak jauh, kita memerlukan lingkungan desktop. Pastikan server Anda memiliki RAM yang cukup sebelum menginstal lingkungan desktop. Ada banyak lingkungan desktop. Saya menemukan lingkungan desktop XFCE yang ringan bekerja dengan baik dengan VNC, jadi instal dengan perintah berikut.
sudo apt install xfce4 xfce4-goodies firefox
Selama instalasi, Anda mungkin diminta untuk memilih pengelola tampilan default. Pilihan ini tidak terlalu menjadi masalah, karena Anda tidak akan melihat layar login dalam sesi VNC.
Karena ada 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. Anda dapat membaca tutorial berikut untuk mempelajari cara mengaktifkan dan menggunakan UFW di Ubuntu.
- Cara Menggunakan Firewall UFW di Debian, Ubuntu, Linux Mint
Langkah 5:Instal Server VNC di Server Ubuntu 20.04
Ada beberapa perangkat lunak server VNC yang tersedia untuk pengguna Linux. Kami akan menggunakan server TigerVNC karena bekerja 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 sandi hanya lihat.
Sekarang Anda harus mengedit /etc/guacamole/user-mapping.xml
file dan ubah kata sandi VNC. Kemudian restart Tomcat dan guacd.
sudo systemctl restart tomcat9 guacd
vncserver
perintah membuat dua file di bawah direktori home Anda.
- ~/.Xauthrirty
- ~/.vnc/xstartup
File xstartup menentukan aplikasi yang akan dijalankan oleh server TigerVNC. Edit file ini.
nano ~/.vnc/xstartup
Ubah
#!/bin/sh
untuk
#!/bin/bash
Karena Bash adalah Shell standar di Linux. Kemudian beri komentar pada baris berikut. (Tambahkan #
karakter di awal setiap baris).
xsetroot -solid grey export XKL_XMODMAP_DISABLE=1 /etc/X11/Xsession
Selanjutnya, tambahkan baris berikut di bagian bawah, yang akan membuat server TigerVNC memulai lingkungan desktop LXQT. startxfce4
biner diinstal oleh xfce4-session
paket.
startxfce4 &
Simpan dan tutup file.
Pemecahan Masalah
Jika server tigerVNC Anda tidak membuat ~/.vnc/xstartup
file dan server VNC gagal seperti di bawah ini:
Kemudian Anda dapat membuat file secara manual.
nano ~/.vnc/xstartup
Tambahkan baris berikut dalam file.
#!/bin/sh xrdb $HOME/.Xresources startxfce4 &
Simpan dan tutup file.
Membuat Layanan Systemd
Server TigerVNC tidak dikirimkan dengan unit layanan systemd apa pun. Untuk memulainya saat boot, kita perlu membuat unit layanan systemd.
sudo nano /etc/systemd/system/[email protected]
Tambahkan baris berikut dalam file. Ganti nama pengguna dengan nama pengguna asli Anda.
[Unit] Description=a wrapper to launch an X server for VNC After=syslog.target network.target [Service] Type=forking User=username Group=username WorkingDirectory=/home/username ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target
Simpan dan tutup file. Hentikan instance server VNC saat ini.
vncserver -kill :1
Mulai server VNC dengan systemd.
sudo systemctl start [email protected]
Aktifkan mulai otomatis saat boot.
sudo systemctl enable [email protected]
Periksa statusnya:
systemctl status [email protected]
Seperti yang Anda lihat, ini aktif (berjalan).
Sekarang Server TigerVNC mendengarkan pada port 5901.
sudo ss -lnpt | grep vnc
Langkah 6:Siapkan Proxy Terbalik untuk Aplikasi Web Guacamole
Apache Tomcat mendengarkan pada port 8080. Untuk memiliki cara mudah mengakses aplikasi web Guacamole, kita dapat mengatur proxy terbalik dengan Apache atau Nginx, sehingga pengguna akhir akan dapat menggunakan nama domain untuk mengakses aplikasi web. Ini juga memungkinkan kami memasang sertifikat TLS dengan mudah untuk mengenkripsi koneksi.
Apache
Jika Anda lebih suka menggunakan Apache, instal Apache dari repositori perangkat lunak default Ubuntu.
sudo apt install apache2
Untuk menggunakan Apache sebagai proxy terbalik, kita perlu mengaktifkan proxy
modul dan modul header.
sudo a2enmod proxy proxy_http headers proxy_wstunnel
Kemudian buat file host virtual untuk Guacamole.
sudo nano /etc/apache2/sites-available/guacamole.conf
Tambahkan baris berikut dalam file. Ganti guacamole.example.com
dengan nama domain Anda sendiri. Ingatlah untuk membuat catatan A untuk sub-domain di pengelola DNS Anda. Jika Anda tidak memiliki nama domain asli, saya sarankan pergi ke NameCheap untuk membelinya. Harganya rendah dan mereka memberikan perlindungan privasi whois gratis seumur hidup.
<VirtualHost *:80> ServerName guacamole.example.com ErrorLog ${APACHE_LOG_DIR}/guacamole_error.log CustomLog ${APACHE_LOG_DIR}/guacamole_access.log combined <Location /> Require all granted ProxyPass http://localhost:8080/guacamole/ flushpackets=on ProxyPassReverse http://localhost:8080/guacamole/ </Location> <Location /websocket-tunnel> Require all granted ProxyPass ws://localhost:8080/guacamole/websocket-tunnel ProxyPassReverse ws://localhost:8080/guacamole/websocket-tunnel </Location> Header always unset X-Frame-Options </VirtualHost>
Simpan dan tutup file. Uji Sintaksnya.
sudo apachectl -t
Jika Syntx OK, maka aktifkan virtual host ini.
sudo a2ensite guacamole.conf
Mulai ulang Apache
sudo systemctl restart apache2
Sekarang Anda dapat mengakses halaman login Apache Guacamole melalui guacamole.example.com
. Jika Anda melihat "permintaan tidak valid" atau pesan kesalahan serupa, itu bisa berarti bahwa Apache Tomcat tidak dapat mengikat ke port 8080, karena port ini sudah diambil oleh proses lain di server. Anda harus mengonfigurasi proses lain untuk menggunakan port yang berbeda, lalu mulai ulang Tomcat.
Nginx
Jika Anda lebih suka menggunakan Nginx, instal Nginx dari repositori perangkat lunak default Ubuntu.
sudo apt install nginx
Buat file blok server untuk Guacamole.
sudo nano /etc/nginx/conf.d/guacamole.conf
Tambahkan baris berikut dalam file. Ganti guacamole.example.com
dengan nama domain Anda sendiri. Ingatlah untuk membuat catatan A untuk sub-domain di pengelola DNS Anda. Jika Anda tidak memiliki nama domain asli, saya sarankan pergi ke NameCheap untuk membelinya. Harganya rendah dan mereka memberikan perlindungan privasi whois gratis seumur hidup.
server { listen 80; listen [::]:80; server_name guacamole.example.com; access_log /var/log/nginx/guac_access.log; error_log /var/log/nginx/guac_error.log; location / { proxy_pass http://127.0.0.1:8080/guacamole/; proxy_buffering off; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_cookie_path /guacamole/ /; } }
Simpan dan tutup file ini. Kemudian uji konfigurasi Nginx.
sudo nginx -t
Jika pengujian berhasil, muat ulang Nginx agar perubahan diterapkan.
sudo systemctl reload nginx
Sekarang Anda dapat mengakses halaman login Apache Guacamole melalui guacamole.example.com
. Jika Anda melihat "permintaan tidak valid" atau pesan kesalahan serupa, itu bisa berarti bahwa Apache Tomcat tidak dapat mengikat ke port 8080, karena port ini sudah diambil oleh proses lain di server. Anda harus mengonfigurasi proses lain untuk menggunakan port yang berbeda, lalu mulai ulang Tomcat.
Aktifkan HTTPS
Untuk mengenkripsi lalu lintas HTTP saat Anda mengunjungi antarmuka web Guacamole, kami dapat mengaktifkan HTTPS dengan memasang sertifikat TLS gratis yang dikeluarkan dari Let's Encrypt. Jalankan perintah berikut untuk menginstal klien Let's Encrypt (certbot) di Ubuntu 20.04.
sudo apt install certbot
Jika Anda menggunakan Apache, maka Anda perlu menginstal plugin Certbot Apache.
sudo apt install python3-certbot-apache
Selanjutnya, jalankan perintah berikut untuk mendapatkan dan menginstal sertifikat TLS.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d guacamole.example.com
Jika Anda menggunakan Nginx, maka Anda juga perlu menginstal plugin Certbot Nginx.
sudo apt install python3-certbot-nginx
Selanjutnya, jalankan perintah berikut untuk mendapatkan dan menginstal sertifikat TLS.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d guacamole.example.com
Dimana:
--nginx
:Gunakan plugin nginx.--apache
:Gunakan plugin Apache.--agree-tos
:Menyetujui persyaratan layanan.--redirect
:Memaksa HTTPS dengan pengalihan 301.--hsts
:Tambahkan header Strict-Transport-Security ke setiap respons HTTP. Memaksa browser untuk selalu menggunakan TLS untuk domain. Mempertahankan dari SSL/TLS Stripping.--staple-ocsp
:Mengaktifkan Stapel OCSP. Respons OCSP yang valid ditempelkan ke sertifikat yang ditawarkan server selama TLS.
Sertifikat sekarang harus diperoleh dan diinstal secara otomatis.
Dan Anda dapat mengakses antarmuka web Guacamole melalui HTTPS. (https://guacamole.example.com).
Setelah masuk, Anda akan dapat menggunakan desktop jarak jauh.
Menyelesaikan
Saya harap tutorial ini membantu Anda mengatur desktop jarak jauh Apache Guacamole di server Ubuntu 20.04. Seperti biasa, jika menurut Anda postingan ini bermanfaat, berlangganan newsletter gratis kami untuk mendapatkan lebih banyak tips dan trik. Hati-hati