Closed18
guacamoleサーバインストール
ピン留めされたアイテム
記事にしていないが一旦クローズ
参考
メモ
$ sudo apt install libcairo2-dev \
libjpeg62-dev \
libpng-dev \
libtool-bin \
uuid-dev \
libavcodec-dev \
libavformat-dev \
libavutil-dev \
libswscale-dev \
libjpeg-turbo8-dev
$ sudo apt install libpango1.0-dev \
freerdp2-dev \
libssh2-1-dev \
libtelnet-dev \
libvncserver-dev \
libwebsockets-dev \
libpulse-dev \
libssl-dev \
libvorbis-dev \
libwebp-dev
$ sudo apt install ffmpeg
guacamole-serverのソース
1.5.2が最新
落とす
$ wget -O guacamole-server-1.5.2.tar.gz https://apache.org/dyn/closer.lua/guacamole/1.5.2/source/guacamole-server-1.5.2.tar.gz?action=download
$ tar -xzvf guacamole-server-1.5.2.tar.gz
ビルド
ビルド用に
$ sudo apt install build-essential
ビルドする
$ sudo ./configure --with-init-dir=/etc/init.d
------------------------------------------------
guacamole-server version 1.5.2
------------------------------------------------
Library status:
freerdp2 ............ yes
pango ............... yes
libavcodec .......... yes
libavformat.......... yes
libavutil ........... yes
libssh2 ............. yes
libssl .............. yes
libswscale .......... yes
libtelnet ........... yes
libVNCServer ........ yes
libvorbis ........... yes
libpulse ............ yes
libwebsockets ....... yes
libwebp ............. yes
wsock32 ............. no
Protocol support:
Kubernetes .... yes
RDP ........... yes
SSH ........... yes
Telnet ........ yes
VNC ........... yes
Services / tools:
guacd ...... yes
guacenc .... yes
guaclog .... yes
FreeRDP plugins: /usr/lib/x86_64-linux-gnu/freerdp2
Init scripts: /etc/init.d
Systemd units: no
Type "make" to compile guacamole-server.
$ make
インストール
$ sudo make install
# 共有ライブラリをキャッシュへ反映
$ sudo ldconfig
# systemdで再読込
sudo systemctl daemon-reload
確認
$ sudo systemctl start guacd
$ systemctl status guacd
ここまではRDPであったり録画機能を行うguacd
の起動を設定した
次はwebインターフェースであるguacamole
を設定する
ちなみにguacamole周りの全容は以下に記載
guacamoleはwarファイルで配布されているため、展開用のtomcatをインストールする
tomcatでguacamoleを展開するまで
bash
$ sudo apt install tomcat9 tomcat9-admin tomcat9-common tomcat9-user
$ wget -O guacamole-1.5.2.war https://apache.org/dyn/closer.lua/guacamole/1.5.2/binary/guacamole-1.5.2.war?action=download
$ sudo cp guacamole-1.5.2.war /var/lib/tomcat9/webapps/guacamole.war
$ sudo systemctl restart tomcat9 guacd
$ sudo vi /etc/default/tomcat9
+ GUACAMOLE_HOME=/etc/guacamole
DB周り
sudo apt install mariadb-server -y
sudo mysql_secure_installation
sudo mkdir -p /etc/guacamole/extensions
sudo mkdir -p /etc/guacamole/lib
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-8.0.33.tar.gz
tar -xvzf mysql-connector-j-8.0.33.tar.gz
sudo cp mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar /etc/guacamole/lib/
wget https://downloads.apache.org/guacamole/1.5.2/binary/guacamole-auth-jdbc-1.5.2.tar.gz
tar xvzf guacamole-auth-jdbc-1.5.2.tar.gz
sudo cp guacamole-auth-jdbc-1.5.2/mysql/guacamole-auth-jdbc-mysql-1.5.2.jar /etc/guacamole/extensions/
その2
$ sudo mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '<rootパスワード>';
CREATE DATABASE guacamole_db;
CREATE USER 'guacamole_user'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'localhost';
FLUSH PRIVILEGES;
その3
bash
cd guacamole-auth-jdbc-1.5.2/
cd mysql/schema/
cat *.sql | mysql -u root -p guacamole_db
sudo vi /etc/guacamole/guacamole.properties
+ mysql-hostname: 127.0.0.1
+ mysql-port: 3306
+ mysql-database: guacamole_db
+ mysql-username: guacamole_user
+ mysql-password: <rootパスワード>
sudo systemctl restart tomcat9 guacd mariadb
ログイン
guacadmin
guacadmin
ログインしたらパスワード、管理者ユーザの作成を行う
windowsサーバに接続
- プロトコル:RDP
- ホスト名、ポート
- ユーザ、パス
-
サーバ証明書を無視する
にチェック
OK
レコーディング
接続設定追加
- ログ保存ディレクトリ:/var/log/guacd/${GUAC_CLIENT_ADDRESS}/
- ログファイル名:
{GUAC_TIME}.log{GUAC_DATE}_ - ログの保存ディレクトリを自動で作成するにチェック
で接続すると/var/log/guacd
が権限不足で書き込めないため、暫定対処
sudo mkdir /var/log/guacd
sudo chmod 777 guacd
レコーディング②
$ pwd
/var/log/guacd
$ sudo ls -lR
.:
total 4
drwxr-x--- 2 root root 4096 Jun 29 23:48 127.0.0.1
./127.0.0.1:
total 2228
-rw-r----- 1 root root 2279774 Jun 29 23:49 20230629_234835.log
OKです。
127.0.0.1はセッションマネージャ経由だからです
レコーディングしたファイルをエンコードする
# guacenc 20230629_234835.log
guacenc: INFO: Guacamole video encoder (guacenc) version 1.5.2
guacenc: INFO: 1 input file(s) provided.
guacenc: INFO: Video will be encoded at 640x480 and 2000000 bps.
guacenc: INFO: Encoding "20230629_234835.log" to "20230629_234835.log.m4v" ...
guacenc: INFO: All files encoded successfully.
# ls -l
-rw-r----- 1 root root 2279774 Jun 29 23:49 20230629_234835.log
-rw-r--r-- 1 root root 1118891 Jun 30 00:18 20230629_234835.log.m4v
m4vは自分の環境だとおそらく読み込めないため、ffmpegで変換します
$ ffmpeg -i 20230629_234835.log.m4v 20230629_234835.log.mp4
// 略
$ ls -l
-rw-r----- 1 root root 2279774 Jun 29 23:49 20230629_234835.log
-rw-r--r-- 1 root root 1118891 Jun 30 00:18 20230629_234835.log.m4v
-rw-r--r-- 1 root root 99560 Jun 30 00:20 20230629_234835.log.mp4
閲覧
できればOK
リバプロ
nginxでリバプロする設定
証明書設定する場合は書き換える
server {
listen 80;
server_name <domain>;
location /guacamole/ {
proxy_pass http://localhost: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;
access_log /var/log/nginx/guacamole_access.log;
}
}
ログは/var/log/nginx/guacamole_access.log
にある
最低限はOKでしょう。
このスクラップは2023/07/01にクローズされました