21
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Apache Guacamole 1.4.0 インストール

Last updated at Posted at 2022-01-03

Guacamoleの1.4.0がリリースされたので、早速入れてみました!
Windows11にRDP接続してみたいと思います。

1. 環境

  • OS: CentOS 7.9 (3.10.0-1160.49.1)
  • Maven: 3.8.4
  • Tomcat: 9.0.56
  • Nginx: 1.20.1
  • CPU: 4CPU(11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz)
  • Mem: 4GB

2. 事前設定

OS最新化

yum update -y
reboot

パッケージインストール/firewalld変更/ipv6無効化

yum install -y git vim wget policycoreutils-python

firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload

vim /etc/sysctl.d/disable_ipv6.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
:wq

sysctl -p /etc/sysctl.d/disable_ipv6.conf

3. tomcat関連作業

最新のtomcatとmavenをダウンロードします。

cd /opt
wget https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz
tar zxvf apache-maven-3.8.4-bin.tar.gz
mv apache-maven-3.8.4 maven
rm -rf apache-maven-3.8.4-bin.tar.gz


wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gz
tar zxvf apache-tomcat-9.0.56.tar.gz
mv apache-tomcat-9.0.56 tomcat
rm -rf apache-tomcat-9.0.56.tar.gz

java(1.8.0)をインストールします。(なぜか11ではmvn packageが通りませんでした。。)

yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

tomcatユーザを作成してダウンロードしたファイルをしかるべき場所に配置します。

groupadd -g 2000 tomcat
useradd -g 2000 -u 2000 -d /usr/share/tomcat -s /sbin/nologin tomcat
chown -R tomcat:tomcat /opt/tomcat


cd /opt/tomcat
cp -pr conf /etc/tomcat
chmod 750 /etc/tomcat
cp -pr bin /usr/libexec/tomcat
cp -pr logs /var/log/tomcat
mkdir /var/cache/tomcat
chown tomcat:tomcat /var/cache/tomcat
cp -pr work /var/cache/tomcat/work
cp -pr temp /var/cache/tomcat/temp

mkdir /var/lib/tomcat
chown tomcat:tomcat /var/lib/tomcat
cp -pr webapps /var/lib/tomcat/
cp -pr lib /usr/share/java/tomcat

cd /usr/share/tomcat
ln -s /usr/libexec/tomcat bin
ln -s /etc/tomcat conf
ln -s /var/log/tomcat logs
ln -s /usr/share/java/tomcat lib
ln -s /var/cache/tomcat/work work
ln -s /var/lib/tomcat/webapps webapps
ln -s /var/cache/tomcat/temp temp

mavenのPATHを通しておきます。

vim ~/.bash_profile

PATH=$PATH:$HOME/bin
↓
PATH=$PATH:$HOME/bin:/opt/maven/bin
:wq

source ~/.bash_profile

4. guacamole-server(guacd)インストール

RDP接続に利用するguacdをインストールします。

# パッケージインストール
yum -y groupinstall "Development Tools"
yum -y install epel-release

cd /opt
wget https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
rpm -ivh rpmfusion-free-release-7.noarch.rpm

# guacamoleに必要なパッケージインストール
yum install ffmpeg ffmpeg-devel openssl openssl-devel vim \
libxkbfile-devel libX11-devel libXrandr-devel libXi-devel libXrender-devel \
libXext-devel libXinerama-devel libXfixes-devel libXcursor-devel libXv-devel \
libXdamage-devel libXtst-devel cups-devel cairo-devel pcsc-lite-devel \
uuid-devel libxml2-devel zlib-devel krb5-devel libtiff-devel libtiff-devel \
libjpeg-turbo-devel.x86_64 giflib-devel.x86_64 wget cmake libusbx-devel.x86_64 \
pulseaudio-libs-devel docbook-style-xsl.noarch pango-devel.x86_64 libvorbis-devel.x86_64 \
libwebsockets-devel.x86_64 libssh2-devel.x86_64 libwebp libwebp-devel freerdp freerdp-devel

# guacamole-server インストール
wget https://github.com/apache/guacamole-server/archive/refs/tags/1.4.0.tar.gz
tar zxvf 1.4.0.tar.gz
mv guacamole-server-1.4.0 guacamole-server
rm -rf 1.4.0.tar.gz

cd guacamole-server
autoreconf -fi
./configure --with-systemd-dir=/usr/lib/systemd/system
make
make install
ldconfig

5. guacamole-clientインストール

guacamole-1.4.0.warファイル生成します。

cd ..
wget https://github.com/apache/guacamole-client/archive/refs/tags/1.4.0.tar.gz
tar zxvf 1.4.0.tar.gz
mv guacamole-client-1.4.0 guacamole-client
rm -rf 1.4.0.tar.gz

cd guacamole-client

mvn package

cd ..

tomcatのconfファイルと起動スクリプトを作成します。

vim /etc/tomcat/tomcat.conf
TOMCAT_CFG_LOADED="1"
TOMCAT_BASE="/var/lib/tomcats"
JAVA_HOME="/usr/lib/jvm/jre"
CATALINA_HOME="/usr/share/tomcat"
CATALINA_TMPDIR="/var/cache/tomcat/temp"
:wq

vim /etc/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat 9
After=network.target

[Service]
User=tomcat
Group=tomcat
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=/etc/tomcat/tomcat.conf
ExecStart=/usr/libexec/tomcat/startup.sh
ExecStop=/usr/libexec/tomcat/shutdown.sh

[Install]
WantedBy=multi-user.target
:wq

chmod 755 /etc/systemd/system/tomcat.service
systemctl enable tomcat

6. Nginxインストール

Nginxをパッケージからインストールします。

yum -y install nginx

7. Mariadbインストール

ワカモレで利用するDBとしてMariaDBをインストールします。

curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash
yum -y install MariaDB-server

8. mysql-connecotr-javaダウンロードおよび各種設定

ワカモレ~DB間で利用するコネクターをダウンロードします。

wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.23.tar.gz
tar zxvf mysql-connector-java-8.0.23.tar.gz
rm -rf mysql-connector-java-8.0.23.tar.gz
cd /opt/mysql-connector-java-8.0.23

Guacamole関連ファイルを格納するディレクトリを作成しファイルをコピーします。

mkdir -p /var/lib/guacamole/{lib,extensions}

cp mysql-connector-java-8.0.23.jar /var/lib/guacamole/lib/
cp /opt/guacamole-client/guacamole/target/guacamole-1.4.0.war /var/lib/guacamole/guacamole-1.4.0.war

cp /opt/guacamole-client/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/target/guacamole-auth-jdbc-mysql-1.4.0.jar /var/lib/guacamole/extensions/

9. SeLinux/権限変更

SeLinuxおよび権限を変更します。

setsebool -P httpd_can_network_connect 1
setsebool -P httpd_can_network_relay 1
setsebool -P httpd_can_network_connect_db 1

semanage fcontext -a -t tomcat_exec_t /var/lib/guacamole/guacamole-1.4.0.war
restorecon -v /var/lib/guacamole/guacamole-1.4.0.war

semanage fcontext -a -t tomcat_exec_t /var/lib/guacamole/lib/mysql-connector-java-8.0.23.jar
restorecon -v /var/lib/guacamole/lib/mysql-connector-java-8.0.23.jar

semanage fcontext -a -t tomcat_exec_t /var/lib/guacamole/extensions/guacamole-auth-jdbc-mysql-1.4.0.jar
restorecon -v /var/lib/guacamole/extensions/guacamole-auth-jdbc-mysql-1.4.0.jar

# 権限変更
chown tomcat:tomcat /var/lib/guacamole/guacamole-1.4.0.war
chown -R tomcat:tomcat /var/lib/guacamole/extensions
chown -R tomcat:tomcat /var/lib/guacamole/lib

10. ワカモレ用設定

# ディレクトリ作成 & リンク作成
mkdir /etc/guacamole
cd /etc/guacamole

ln -s /var/lib/guacamole/lib lib
ln -s /var/lib/guacamole/extensions extensions

# warファイル配置
cd /usr/share/tomcat/webapps/
ln -s /var/lib/guacamole/guacamole-1.4.0.war guacamole.war
rm -rf ROOT docs examples manager host-manager

# MariaDB起動
systemctl enable mariadb
systemctl start mariadb
systemctl status mariadb

# パスワード設定
mysql -u root
set password for root@localhost = password('XXXXXXXX');

# DB作成
create database guacamole;
grant select,insert,update,delete on guacamole.* to 'guacamole'@'localhost' identified by 'abcd1234';
flush privileges;

# sql実行
cd /opt/guacamole-client/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql
cat schema/*.sql | mysql -u root -p guacamole

# guacamole.propertiesファイル作成
vi /etc/guacamole/guacamole.properties
guacd-hostname: localhost
guacd-port:     4822

mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacamole
mysql-username: guacamole
mysql-password: abcd1234
:wq

chown tomcat:tomcat /etc/guacamole/guacamole.properties

11. ワカモレ起動

systemctl start tomcat
systemctl start guacd
systemctl enable guacd

12. Nginx設定変更

vim /etc/nginx/nginx.conf

        location / {
        root   html;
        index  index.html index.htm;
        proxy_pass http://localhost:8080/guacamole/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        }
:wq

nginx -t
systemctl restart nginx

13. Nginx 自己証明書設定

Chromeなどでマイクを利用する場合はhttpだとブロックされてしまうので、こちらは必要に応じて。

mkdir /etc/nginx/ssl
openssl req -new -x509 -sha256 -newkey rsa:2048 -days 365 -nodes -out /etc/nginx/ssl/nginx.pem -keyout /etc/nginx/ssl/nginx.key

chown nginx:nginx -R /etc/nginx/ssl/
chmod 600 /etc/nginx/ssl/*
chmod 700 /etc/nginx/ssl

vim /etc/nginx/nginx.conf
server {
        listen       443 ssl http2;
        listen       [::]:443 ssl http2;
        server_name  _;
        root         /usr/share/nginx/html;
        ssl_certificate /etc/nginx/ssl/nginx.pem;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;
            location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://localhost:8080/guacamole/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            }
        }
:wq

14. ワカモレアクセス

ブラウザからワカモレにアクセスします。
https://ipaddress/

管理ユーザのguacadminでログインします。(パスワードもguacadmin)
image.png

接続設定の項目などは増えていましたが、UIはあまり変更なしですね。下記画面はすでにWindows11に接続設定を保存した状態です。
image.png

なぜかWindows11ではNLAでの認証が成功しなかったため、TLSに変更しています。
image.png

無事ログインできました!
image.png

15. その他

体感でしかありませんが、1.2.0まではZoomなど音声のやり取りは実用に耐えがたいものがありましたが、かなり改善されています。Zoomでの利用でしたが全くストレスを感じませんでした。下記リリースノートに修正点の記載がある通りといった感じですかね。

※ Major fixes to RDP audio input support  

また、1.2.0でもありましたが初回アクセス時に/usr/sbinへの書き込み権がないとRDP接続ができないため、一時的書き込み権限を付与する必要があります。※2回目以降は必要になりませんので、もとに戻しておくことをお忘れなく。

1/4 追記

年末に騒ぎになったLog4jですが、ワカモレはMybatis3を利用しており、そのなかでLog4jを利用していますが2.17.1が利用されるよう修正さているようです。

guacamole-client-1.4.0/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base
<!-- MyBatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.9</version>
</dependency>

mybatis-3/pom.xml
<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-api</artifactId>
  <version>2.17.1</version>
  <optional>true</optional>
</dependency>
21
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?