Apache Guacamole をさわってみたのでインストール手順を残してみます。
複数回に分けて書いていきます。今回は Guacamole Server (guacd) の部分になります。
環境は Alibaba Cloud で OS は CentOS 7.9 を使いました。
Apache Guacamole のバージョンは 1.3.0 です。
Apache Guacamole は Kubernetes への展開もサポートしていますが、今回は普通にインストールする方法です。
※他のパブリッククラウドでもインストール手順はほぼ変わらんと思います。
Apache Guacamole はブラウザから利用できるクライアントレスのリモートデスクトップゲートウェイです。
Guacamole を使う事でプライベートネットワークにいるサーバーなどへブラウザから接続する事が出来る様になります。
公式のイメージ図は以下の様になります。
出典:https://guacamole.apache.org/doc/gug/guacamole-architecture.html
Guacamole Server
Guacamole はユーザー向けのWebアプリケーションを提供するguacamole-client
とリモートアクセスのプロトコルを中継する guacamole-server (guacd)
の二つの機能に分かれます。
guacamole-client に関してはwarファイルが公開されていますが、guacamole-server は公式にはソースコードのみ公開されているのでコンパイルが必要です。
コンパイルするための諸々をまずは準備していきます。
必須の依存関係をインストールします
# sudo yum install cairo-devel libjpeg-turbo-devel libpng-devel uuid-devel libtool
オプションの依存関係をインストールします
全部入れる必要はなく利用する予定の機能に合わせて取捨選択しても良いです。
今回は全部入れますが、それぞれの用途は以下の通りです。
RDP:
* FreeRDP (http://www.freerdp.com/)
SSH:
* libssh2 (http://www.libssh2.org/)
* OpenSSL (https://www.openssl.org/)
* Pango (http://www.pango.org/)
Telnet:
* libtelnet (https://github.com/seanmiddleditch/libtelnet)
* Pango (http://www.pango.org/)
VNC:
* libVNCserver (http://libvnc.github.io/)
Support for audio within VNC:
* PulseAudio (http://www.freedesktop.org/wiki/Software/PulseAudio/)
Support for SFTP file transfer for VNC or RDP:
* libssh2 (http://www.libssh2.org/)
* OpenSSL (https://www.openssl.org/)
Support for WebP image compression:
* libwebp (https://developers.google.com/speed/webp/)
"guacenc" video encoding utility:
* FFmpeg (https://ffmpeg.org/)
出典:https://github.com/apache/guacamole-server
# sudo yum install freerdp-devel pango-devel libssh2-devel libtelnet-devel libvncserver-devel libwebsockets-devel pulseaudio-libs-devel openssl-devel libvorbis-devel libwebp-devel
ffmpeg に関しては、RPMFusionからパッケージを入れるか、ソースコードからビルドするか、どちらかの方法でのインストールになります。
※ffmpegは操作の録画機能で使われます。
# sudo yum localinstall --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
# sudo yum update
# sudo yum install ffmpeg ffmpeg-devel
Guacamole ソースコードの入手
ソースコードは Apache Guacamole のリリースページ又は、GitHub から取得します。
- https://github.com/apache/guacamole-server/archive/refs/tags/1.3.0.tar.gz
- https://github.com/apache/guacamole-client/archive/refs/tags/1.3.0.tar.gz
あとはASF公式のダウンロードページやミラー(https://downloads.apache.org/ とか https://ftp.riken.jp)からの取得も可能です。
任意のディレクトリでソースコードを取得します。
# wget https://ftp.riken.jp/net/apache/guacamole/1.3.0/source/guacamole-server-1.3.0.tar.gz
# wget https://ftp.riken.jp/net/apache/guacamole/1.3.0/source/guacamole-client-1.3.0.tar.gz
圧縮ファイルを展開します。
# tar -zxvf guacamole-server-1.3.0.tar.gz
# cd guacamole-server-1.3.0
# ls -la
合計 756
drwxr-xr-x 8 1001 users 4096 12月 29 08:03 .
dr-xr-x---. 8 root root 4096 4月 22 13:08 ..
-rw-r--r-- 1 1001 users 637 7月 1 2020 .dockerignore
-rw-r--r-- 1 1001 users 1984 7月 1 2020 CONTRIBUTING
-rw-r--r-- 1 1001 users 6084 12月 29 07:56 Dockerfile
-rw-r--r-- 1 1001 users 11358 1月 26 2020 LICENSE
-rw-r--r-- 1 1001 users 2612 12月 22 07:21 Makefile.am
-rw-r--r-- 1 1001 users 30946 12月 29 08:03 Makefile.in
-rw-r--r-- 1 1001 users 165 12月 11 14:54 NOTICE
-rw-r--r-- 1 1001 users 6108 7月 11 2020 README
-rw-r--r-- 1 1001 users 55738 12月 29 08:03 aclocal.m4
drwxr-xr-x 2 1001 users 4096 12月 29 08:03 bin
drwxr-xr-x 2 1001 users 4096 12月 29 08:03 build-aux
-rw-r--r-- 1 1001 users 6341 12月 29 08:03 config.h.in
-rwxr-xr-x 1 1001 users 555917 12月 29 08:03 configure
-rw-r--r-- 1 1001 users 37030 12月 29 07:56 configure.ac
drwxr-xr-x 2 1001 users 4096 12月 29 08:03 doc
drwxr-xr-x 2 1001 users 4096 12月 29 08:03 m4
drwxr-xr-x 12 1001 users 4096 12月 29 08:03 src
drwxr-xr-x 2 1001 users 4096 12月 29 08:03 util
guacamole-server (guacd)のインストール
コンパイルします。
# sudo ./configure --with-systemd-dir=/usr/lib/systemd/system
<省略>
------------------------------------------------
guacamole-server version 1.3.0
------------------------------------------------
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/lib64/freerdp2
Init scripts: no
Systemd units: /usr/lib/systemd/system
Type "make" to compile guacamole-server.
設定や Library status
に問題なければインストールしていきます。
# sudo make
# sudo make install
guacd というサービスがインストールされているはずなので起動してみます。
あとついでに自動起動も設定しておきます。
# sudo systemctl start guacd
# sudo systemctl status guacd
● guacd.service - Guacamole Server
Loaded: loaded (/usr/lib/systemd/system/guacd.service; disabled; vendor preset: disabled)
Active: active (running) since 木 2021-04-22 14:02:00 CST; 3s ago
Docs: man:guacd(8)
Main PID: 29690 (guacd)
CGroup: /system.slice/guacd.service
└─29690 /usr/local/sbin/guacd -f
4月 22 14:02:00 guacamole2 systemd[1]: Started Guacamole Server.
4月 22 14:02:00 guacamole2 guacd[29690]: Guacamole proxy daemon (guacd) version 1.3.0 started
4月 22 14:02:00 guacamole2 guacd[29690]: guacd[29690]: INFO: Guacamole proxy daemon (guacd) version 1.3.0 started
4月 22 14:02:00 guacamole2 guacd[29690]: guacd[29690]: INFO: Listening on host 127.0.0.1, port 4822
4月 22 14:02:00 guacamole2 guacd[29690]: Listening on host 127.0.0.1, port 4822
# sudo systemctl enable guacd
Created symlink from /etc/systemd/system/multi-user.target.wants/guacd.service to /usr/lib/systemd/system/guacd.service.
ここまでこれば guacamole-server (guacd) のインストールはできました。
暫定対応
コレでOK・・・と思っていた貴方実はこんなエラーが発生していませんか?
guacamole2 guacd[7900]: FreeRDP initialization may fail: The current user's home directory ("/sbin") is not writable, but FreeRDP generally requires a writable home directory for storage of configuration files and certificates.
guacamole2 guacd[7813]: guacd[7900]: WARNING: FreeRDP initialization may fail: The current user's home directory ("/sbin") is not writable, but FreeRDP generally requires a writable home directory for storage of configuration files and certificates.
systemd にインストールした場合、実行ユーザーが daemon
になっています。
そしてdaemon
ユーザーのホームディレクトリが/sbin(/usr/sbin)
で書き込めない様です。
問題を深く追っていないのですが、configure オプションの --with-systemd-dir
を指定すると以下のファイルが使われるのですが、それがどうも今回の環境だと合わない様です。
※CentOSで一般的に起こる問題なのか、Alibaba固有なのかまでは追ってないんですが・・・
# cat /usr/lib/systemd/system/guacd.service
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
[Unit]
Description=Guacamole Server
Documentation=man:guacd(8)
After=network.target
[Service]
User=daemon
ExecStart=/usr/local/sbin/guacd -f
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
https://github.com/apache/guacamole-server/blob/master/src/guacd/systemd/guacd.service.in
仕方ないので実行ユーザーをちょっと変えてみます。
専用の実行ユーザー(guacamole)などを作ってもいいと思いますが、今回はrootユーザーで許してください。
systemctl edit で上書き用の設定ファイルを記述します。
※自動的に override.conf というファイルが生成されます。
# sudo systemctl edit guacd
以下のみ入力して保存します。
※[Service] はもしかしたら要らないかも
[Service]
User=root
設定をリロードして再起動すると、override.conf を読み込む様になっていることが確認できます。
# sudo systemctl daemon-reload
# sudo systemctl restart guacd
# sudo systemctl status guacd
● guacd.service - Guacamole Server
Loaded: loaded (/usr/lib/systemd/system/guacd.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/guacd.service.d
└─override.conf
Active: active (running) since 木 2021-04-22 15:31:23 CST; 8s ago
Docs: man:guacd(8)
Main PID: 8227 (guacd)
CGroup: /system.slice/guacd.service
└─8227 /usr/local/sbin/guacd -f
4月 22 15:31:23 guacamole2 systemd[1]: Started Guacamole Server.
4月 22 15:31:23 guacamole2 guacd[8227]: Guacamole proxy daemon (guacd) version 1.3.0 started
4月 22 15:31:23 guacamole2 guacd[8227]: Listening on host 127.0.0.1, port 4822
4月 22 15:31:23 guacamole2 guacd[8227]: guacd[8227]: INFO: Guacamole proxy daemon (guacd) version 1.3.0 started
4月 22 15:31:23 guacamole2 guacd[8227]: guacd[8227]: INFO: Listening on host 127.0.0.1, port 4822
実行ユーザーが root になっていることが確認できます。
# ps -ef |grep [g]uacd
root 8227 1 0 15:31 ? 00:00:00 /usr/local/sbin/guacd -f
もし、Webアプリ(guacamole-client)が起動していれば、APサーバー(Tomcatなど)も再起動して接続を再確認しましょう。
今回は一旦ここまでとなります、次回は Guacamole Client (Webアプリ) のインストール・・・というかデプロイをしていきます。
0 件のコメント:
コメントを投稿