Cách cài đặt Apache Guacamole làm Docker Container trên Ubuntu

theanh

Administrator
Nhân viên
Apache Guacamole là ứng dụng máy tính từ xa không cần máy khách mã nguồn mở miễn phí cho phép bạn truy cập vào máy tính để bàn và máy chủ từ xa thông qua trình duyệt web. Nó hỗ trợ các giao thức chuẩn như VNC, RDP và SSH, và sử dụng HTML5 để kết nối từ xa. Nó có thể chạy trên hầu hết các bản phân phối Linux và máy khách chạy trên bất kỳ trình duyệt web hiện đại nào. Bạn không cần cài đặt bất kỳ phần mềm nào trên hệ thống của mình. Chỉ cần duyệt và kết nối đến bất kỳ máy chủ từ xa nào được xác định trên máy chủ của bạn.

Trong bài đăng này, chúng tôi sẽ chỉ cho bạn cách cài đặt máy chủ và máy khách Apache Guacamole với Docker trên Ubuntu 22.04.

Điều kiện tiên quyết​

  • Máy chủ chạy Ubuntu 22.04.
  • Mật khẩu gốc được cấu hình trên máy chủ.

Cài đặt Docker Engine​

Luôn khuyến nghị cài đặt phiên bản Docker mới nhất vào máy chủ của bạn.

Trước tiên, hãy cài đặt các phụ thuộc bắt buộc bằng lệnh sau:
Mã:
apt install ca-certificates curl gnupg lsb-release -y
Sau khi cài đặt tất cả các phụ thuộc, hãy thêm khóa GPG Docker và kho lưu trữ bằng lệnh sau:
Mã:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor > /etc/apt/trusted.gpg.d/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
Tiếp theo, hãy cập nhật kho lưu trữ và cài đặt gói Docker Engine bằng lệnh sau lệnh:
Mã:
apt update -y
apt install docker-ce docker-ce-cli containerd.io -y
Sau khi cài đặt hoàn tất, hãy xác minh phiên bản Docker bằng lệnh sau:
Mã:
docker --version
Bạn sẽ nhận được thông báo sau đầu ra:
Mã:
Docker version 20.10.18, build b40c2f6

Cài đặt Docker Compose​

Bạn cũng sẽ cần cài đặt Docker Compose trên máy chủ của mình. Bạn có thể cài đặt bằng lệnh sau:
Mã:
curl -sL "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Tiếp theo, xác minh phiên bản Docker Compose bằng lệnh sau:
Mã:
docker-compose --version
Bạn sẽ nhận được thông báo sau đầu ra:
Mã:
docker-compose version 1.29.2, build 5becea4c

Tải xuống Máy chủ và Máy khách Apache Guacamole​

Trước tiên, bạn sẽ cần tải xuống hình ảnh Máy chủ và Máy khách Apache Guacamole từ sổ đăng ký Docker.

Trước tiên, tải xuống hình ảnh máy chủ bằng lệnh sau:
Mã:
docker pull guacamole/guacd
Bạn nên xem kết quả sau:
Mã:
Using default tag: latest
latest: Pulling from guacamole/guacd
4b7b4a8876e2: Pull complete
4e542e9cf89d: Pull complete
9741340fbbb2: Pull complete
96fa725029d6: Pull complete
0f0a6df13f2a: Pull complete
a4fa6e99a790: Pull complete
07365dfaa371: Pull complete
Digest: sha256:efdc09beba21e2c5d7c8c77e8c6b95ffd173d75645c9c41b6024f5b835d2a034
Status: Downloaded newer image for guacamole/guacd:latest
docker.io/guacamole/guacd:latest
Trước tiên, tải xuống hình ảnh máy khách bằng lệnh sau:
Mã:
docker pull guacamole/guacamole
Bạn sẽ thấy kết quả sau đầu ra:
Mã:
Using default tag: latest
latest: Pulling from guacamole/guacamole
2b55860d4c66: Pull complete
2ca45fc4c4ca: Pull complete
0cd32add6672: Pull complete
ac52cbbb8ca2: Pull complete
7f7dc3a9f4cc: Pull complete
5d7996a24402: Pull complete
4819d3e4118d: Pull complete
055afbac1f72: Pull complete
23ee772344b7: Pull complete
e44569de6126: Pull complete
f7d7e8014b18: Pull complete
Digest: sha256:8a8db8cf9f5359aa20547382213a42a720ea1c5fe86460ded727061e1995d9f2
Status: Downloaded newer image for guacamole/guacamole:latest
docker.io/guacamole/guacamole:latest
Tiếp theo, xác minh các hình ảnh đã tải xuống bằng lệnh sau:
Mã:
docker images
Bạn sẽ nhận được thông tin sau đầu ra:
Mã:
REPOSITORY TAG IMAGE ID CREATED SIZE
guacamole/guacd latest 4086ac9e35a7 9 hours ago 271MB
guacamole/guacamole latest 959856a45436 10 hours ago 432MB

Khởi chạy Apache Guacamole MySQL Container​

Đầu tiên, bạn sẽ cần ít nhất một container cơ sở dữ liệu để xác thực Apache Guacamole. Bạn có thể tải xuống và khởi chạy vùng chứa MySQL bằng lệnh sau:
Mã:
docker run --name guacamoledb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=guacdb -d mysql/mysql-server
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
latest: Pulling from mysql/mysql-server
cdd8b07c6082: Pull complete
c2f1720beca1: Pull complete
39f143a8d6de: Pull complete
118a8285b641: Pull complete
b45cbcaf75c7: Pull complete
d4574372e600: Pull complete
1f565a3cbc52: Pull complete
Digest: sha256:e30a0320f2e3c7b7ee18ab903986ada6eb1ce8e5ef29941b36ec331fae5f10b2
Status: Downloaded newer image for mysql/mysql-server:latest
c7a9309eac20a7d0bb6f0a16460bf2b678aae741c201efae8974ea64a3736595
Tiếp theo, tạo một thư mục để lưu trữ cơ sở dữ liệu:
Mã:
mkdir -p /opt/guacamole/mysql
Tiếp theo, tạo tập lệnh khởi tạo MySQL bằng cách sử dụng lệnh sau lệnh:
Mã:
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > /opt/guacamole/mysql/01-initdb.sql
Tiếp theo, sao chép tập lệnh khởi tạo cơ sở dữ liệu MySQL Guacamole vào vùng chứa MySQL Docker:
Mã:
docker cp /opt/guacamole/mysql/01-initdb.sql guacamoledb:/docker-entrypoint-initdb.d
Tiếp theo, kết nối với vùng chứa cơ sở dữ liệu MySQL bằng lệnh sau lệnh:
Mã:
docker exec -it guacamoledb bash
Sau khi kết nối, bạn sẽ nhận được shell sau:
Mã:
bash-4.4#
Tiếp theo, liệt kê tập lệnh khởi tạo MySQL với nội dung sau lệnh:
Mã:
cd /docker-entrypoint-initdb.d/
ls
Đầu ra:
Mã:
01-initdb.sql
Tiếp theo, kết nối với shell MySQL bằng lệnh sau lệnh:
Mã:
mysql -u root -p
Tiếp theo, chuyển cơ sở dữ liệu sang guacd và khởi tạo cơ sở dữ liệu Guacamole:
Mã:
use guacdb;
source 01-initdb.sql;
Tiếp theo, xác minh tất cả các bảng bằng lệnh sau lệnh:
Mã:
show tables;
Bạn sẽ nhận được kết quả sau:
Mã:
+---------------------------------------+
| Tables_in_guacdb |
+---------------------------------------+
| guacamole_connection |
| guacamole_connection_attribute |
| guacamole_connection_group |
| guacamole_connection_group_attribute |
| guacamole_connection_group_permission |
| guacamole_connection_history |
| guacamole_connection_parameter |
| guacamole_connection_permission |
| guacamole_entity |
| guacamole_sharing_profile |
| guacamole_sharing_profile_attribute |
| guacamole_sharing_profile_parameter |
| guacamole_sharing_profile_permission |
| guacamole_system_permission |
| guacamole_user |
| guacamole_user_attribute |
| guacamole_user_group |
| guacamole_user_group_attribute |
| guacamole_user_group_member |
| guacamole_user_group_permission |
| guacamole_user_history |
| guacamole_user_password_history |
| guacamole_user_permission |
+---------------------------------------+
Tiếp theo, tạo một người dùng quản trị và đặt mật khẩu với thông tin sau lệnh:
Mã:
create user guacadmin@'%' identified by 'password';
grant SELECT,UPDATE,INSERT,DELETE on guacdb.* to guacadmin@'%';
Tiếp theo, xóa các đặc quyền và thoát khỏi shell MySQL bằng lệnh sau:
Mã:
flush privileges;
exit;
Tiếp theo, thoát khỏi vùng chứa MySQL bằng lệnh sau lệnh:
Mã:
exit
Bây giờ bạn có thể xác minh vùng chứa đang chạy bằng lệnh sau:
Mã:
docker ps
Bạn sẽ thấy vùng chứa MySQL trong đầu ra:
Mã:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7a9309eac20 mysql/mysql-server "/entrypoint.sh mysq…" 2 minutes ago Up 2 minutes (healthy) 3306/tcp, 33060-33061/tcp guacamoledb
Bạn cũng có thể kiểm tra nhật ký container bằng lệnh sau:
Mã:
docker logs guacamoledb
Bạn sẽ nhận được thông tin sau đầu ra:
Mã:
[Entrypoint] Starting MySQL 8.0.30-1.2.9-server
2022-10-02T11:31:52.589985Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead.
2022-10-02T11:31:52.592352Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.30) starting as process 1
2022-10-02T11:31:52.602604Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-10-02T11:31:52.875859Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-10-02T11:31:53.131572Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2022-10-02T11:31:53.131639Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2022-10-02T11:31:53.163561Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2022-10-02T11:31:53.163648Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.30' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server - GPL.

Khởi chạy Guacamole Server Container​

Bây giờ, hãy chạy lệnh sau để khởi động container máy chủ Guacamole:
Mã:
docker run --name guacamole-server -d guacamole/guacd
Bạn có thể kiểm tra nhật ký container bằng lệnh sau:
Mã:
docker logs --tail 10 guacamole-server
Bạn sẽ nhận được thông báo sau đầu ra:
Mã:
guacd[7]: INFO:	Guacamole proxy daemon (guacd) version 1.4.0 started
guacd[7]: INFO:	Listening on host 0.0.0.0, port 4822
Để kiểm tra container đang chạy, hãy sử dụng lệnh sau:
Mã:
docker ps
Bạn sẽ nhận được thông tin sau đầu ra:
Mã:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
51b2efdab0db guacamole/guacd "/bin/sh -c '/usr/lo…" 26 seconds ago Up 25 seconds (health: starting) 4822/tcp guacamole-server
c7a9309eac20 mysql/mysql-server "/entrypoint.sh mysq…" 3 minutes ago Up 3 minutes (healthy) 3306/tcp, 33060-33061/tcp guacamoledb

Khởi chạy Guacamole Client Container​

Bạn cũng có thể khởi chạy Guacamole client container bằng lệnh sau:
Mã:
docker run --name guacamole-client --link guacamole-server:guacd --link guacamoledb:mysql -e MYSQL_DATABASE=guacdb -e MYSQL_USER=guacadmin -e MYSQL_PASSWORD=password -d -p 80:8080 guacamole/guacamole
Tiếp theo, xác minh container đang chạy bằng lệnh sau lệnh:
Mã:
docker ps
Bạn sẽ thấy đầu ra sau:
Mã:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d4034a72bb69 guacamole/guacamole "/opt/guacamole/bin/…" 58 seconds ago Up 57 seconds 0.0.0.0:80->8080/tcp, :::80->8080/tcp guacamole-client
51b2efdab0db guacamole/guacd "/bin/sh -c '/usr/lo…" About a minute ago Up About a minute (health: starting) 4822/tcp guacamole-server
c7a9309eac20 mysql/mysql-server "/entrypoint.sh mysq…" 5 minutes ago Up 5 minutes (healthy) 3306/tcp, 33060-33061/tcp guacamoledb
Tại thời điểm này, vùng chứa Guacamole đã được khởi động và lắng nghe trên cổng 80. Bạn có thể kiểm tra bằng lệnh sau lệnh:
Mã:
ss -altnp | grep :80
Bạn sẽ nhận được kết quả sau:
Mã:
LISTEN 0 4096 0.0.0.0:80 0.0.0.0:* users:(("docker-proxy",pid=4006,fd=4))
LISTEN 0 4096 [::]:80 [::]:* users:(("docker-proxy",pid=4013,fd=4))

Truy cập Bảng điều khiển Apache Guacamole​

Bây giờ bạn có thể truy cập giao diện web Apache Guacamole bằng URL Bạn sẽ thấy thông tin đăng nhập Guacamole screen:



Cung cấp thông tin xác thực mặc định:

Người dùng: guacadmin

Mật khẩu: guacadmin

Sau đó, nhấp vào nút Đăng nhập. Bạn sẽ thấy bảng điều khiển Guacamole trên màn hình sau:




Kết luận​

Xin chúc mừng! Bạn đã cài đặt thành công máy chủ và máy khách Apache Guacamole bằng Docker trên máy chủ Ubuntu 22.04. Bây giờ bạn có thể tạo kết nối mới và truy cập máy chủ từ xa thông qua trình duyệt web. Hãy thoải mái hỏi tôi nếu bạn có bất kỳ câu hỏi nào.
 
Back
Bên trên