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.
Trước tiên, hãy cài đặt các phụ thuộc bắt buộc bằng lệnh sau:
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:
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:
Sau khi cài đặt hoàn tất, hãy xác minh phiên bản Docker bằng lệnh sau:
Bạn sẽ nhận được thông báo sau đầu ra:
Tiếp theo, xác minh phiên bản Docker Compose bằng lệnh sau:
Bạn sẽ nhận được thông báo sau đầu ra:
Trước tiên, tải xuống hình ảnh máy chủ bằng lệnh sau:
Bạn nên xem kết quả sau:
Trước tiên, tải xuống hình ảnh máy khách bằng lệnh sau:
Bạn sẽ thấy kết quả sau đầu ra:
Tiếp theo, xác minh các hình ảnh đã tải xuống bằng lệnh sau:
Bạn sẽ nhận được thông tin sau đầu ra:
Bạn sẽ nhận được kết quả đầu ra sau:
Tiếp theo, tạo một thư mục để lưu trữ cơ sở dữ liệu:
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:
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:
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:
Sau khi kết nối, bạn sẽ nhận được shell sau:
Tiếp theo, liệt kê tập lệnh khởi tạo MySQL với nội dung sau lệnh:
Đầu ra:
Tiếp theo, kết nối với shell MySQL bằng lệnh sau lệnh:
Tiếp theo, chuyển cơ sở dữ liệu sang guacd và khởi tạo cơ sở dữ liệu Guacamole:
Tiếp theo, xác minh tất cả các bảng bằng lệnh sau lệnh:
Bạn sẽ nhận được kết quả sau:
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:
Tiếp theo, xóa các đặc quyền và thoát khỏi shell MySQL bằng lệnh sau:
Tiếp theo, thoát khỏi vùng chứa MySQL bằng lệnh sau lệnh:
Bây giờ bạn có thể xác minh vùng chứa đang chạy bằng lệnh sau:
Bạn sẽ thấy vùng chứa MySQL trong đầu ra:
Bạn cũng có thể kiểm tra nhật ký container bằng lệnh sau:
Bạn sẽ nhận được thông tin sau đầu ra:
Bạn có thể kiểm tra nhật ký container bằng lệnh sau:
Bạn sẽ nhận được thông báo sau đầu ra:
Để kiểm tra container đang chạy, hãy sử dụng lệnh sau:
Bạn sẽ nhận được thông tin sau đầu ra:
Tiếp theo, xác minh container đang chạy bằng lệnh sau lệnh:
Bạn sẽ thấy đầu ra sau:
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:
Bạn sẽ nhận được kết quả sau:
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:
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
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
Mã:
apt update -y
apt install docker-ce docker-ce-cli containerd.io -y
Mã:
docker --version
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
Mã:
docker-compose --version
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
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
Mã:
docker pull guacamole/guacamole
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
Mã:
docker images
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
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
Mã:
mkdir -p /opt/guacamole/mysql
Mã:
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > /opt/guacamole/mysql/01-initdb.sql
Mã:
docker cp /opt/guacamole/mysql/01-initdb.sql guacamoledb:/docker-entrypoint-initdb.d
Mã:
docker exec -it guacamoledb bash
Mã:
bash-4.4#
Mã:
cd /docker-entrypoint-initdb.d/
ls
Mã:
01-initdb.sql
Mã:
mysql -u root -p
Mã:
use guacdb;
source 01-initdb.sql;
Mã:
show tables;
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 |
+---------------------------------------+
Mã:
create user guacadmin@'%' identified by 'password';
grant SELECT,UPDATE,INSERT,DELETE on guacdb.* to guacadmin@'%';
Mã:
flush privileges;
exit;
Mã:
exit
Mã:
docker ps
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
Mã:
docker logs guacamoledb
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
Mã:
docker logs --tail 10 guacamole-server
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
Mã:
docker ps
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
Mã:
docker ps
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
Mã:
ss -altnp | grep :80
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: