GNU/Linux >> Belajar Linux >  >> Ubuntu

Siapkan Desktop Jarak Jauh Apache Guacamole di Server Ubuntu 20.04

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


Ubuntu
  1. Cara Menginstal Remote Desktop (Xrdp) di Ubuntu 18.04

  2. Ubuntu Remote Desktop:Cara Mengatur dan Menghubungkannya

  3. Ubah Desktop Ubuntu 14.04 Ke Server?

  1. Cara Memulai, Menghentikan, atau Memulai Ulang Server Apache di Ubuntu

  2. Berbagi desktop jarak jauh dengan AnyDesk di Ubuntu 20.04 Focal Fossa

  3. Cara Menginstal Xrdp (Desktop Jarak Jauh) di Ubuntu 20.04 LTS

  1. Cara Menginstal Server Xrdp (Desktop Jarak Jauh) di Ubuntu 18.04

  2. Cara Menginstal Server Xrdp (Desktop Jarak Jauh) di Ubuntu 20.04

  3. Instal Apache Tomcat 9 Server di Ubuntu 20.04