Closed18

guacamoleサーバインストール

ピン留めされたアイテム
not75743not75743

記事にしていないが一旦クローズ

not75743not75743

参考

https://www.linode.com/docs/guides/installing-apache-guacamole-on-ubuntu-and-debian/
https://zenn.dev/seiwell/articles/b52b124370ad81

メモ

https://guacamole.apache.org/doc/gug/installing-guacamole.html

$ 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
not75743not75743

ビルド

ビルド用に

$ 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
not75743not75743

インストール

$ sudo make install

# 共有ライブラリをキャッシュへ反映
$ sudo ldconfig

# systemdで再読込
sudo systemctl daemon-reload
not75743not75743

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
not75743not75743

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/
not75743not75743

その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;
not75743not75743

その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
not75743not75743

ログイン

guacadmin
guacadmin

ログインしたらパスワード、管理者ユーザの作成を行う

not75743not75743

windowsサーバに接続

  • プロトコル:RDP
  • ホスト名、ポート
  • ユーザ、パス
  • サーバ証明書を無視するにチェック

OK

not75743not75743

レコーディング

接続設定追加

  • ログ保存ディレクトリ:/var/log/guacd/${GUAC_CLIENT_ADDRESS}/
  • ログファイル名:{GUAC_DATE}_{GUAC_TIME}.log
  • ログの保存ディレクトリを自動で作成するにチェック

で接続すると/var/log/guacdが権限不足で書き込めないため、暫定対処

sudo mkdir /var/log/guacd
sudo chmod 777 guacd
not75743not75743

レコーディング②

$ 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はセッションマネージャ経由だからです

not75743not75743

レコーディングしたファイルをエンコードする

# 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
not75743not75743

リバプロ

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にクローズされました