Guacamole는 원래 브라질에서 아보카도로 만든 소스이다. 위 그림을 보면 무엇인지 대충 짐작이 갈 것이다.
이번 포스팅에서는 Apache Guacamole에 대해 알아보고자 한다.
Apache Guacamole는 클라이언트리스 원격 데스크톱 게이트웨이이다.
VNC,RDP 및 SSH와 같은 표준 프로토콜을 지원합니다. 플러그인이나 클라이언트 소프트웨어가 필요하지 않기 때문에 클라이언트리스라고 한다.
HTML5 덕분에 Guacamole가 서버에 설치되면 웹 브라우저만 있으면 데스크탑에 엑세스할 수 있도록 해주는 오픈 소스이다.
이글을 쓰고 있는 지금 2023년 2월 7일 현재 최신 버전은 1.4.0 버전이며, 2023년 초 1.5.0이 업데이트 될 것으로 보인다.
위 동영상을 보면 쉽게 Apache Guacamole를 이해할수 있을것이다.
Apache Guacamole는 5가지의 장점을 가지고 있다. 같이 알아보도록 하자.
우선은 서버를 먼저 설치해보도록 하겠다. 서버는 CentOS 7.9에서 설치되었고 Yum으로 필요한 설치 목록을 설치한 후 진행했다.
Yum 으로 설치한 목록으로는 이렇다.
이곳에는 설명
이곳에는 명령어를 입력하도록 하겠다. 공통으로 앞에 붙는 명령어는 : sudo yum install(해당 목록)이다.
먼저 필수 목록이다.
- Cairo : libguac에서 그래픽 렌더링에 사용합니다. 과카몰리는 Cairo가 설치되어 있지 않으면 작동하지 않습니다.
cairo-devel
- libjpeg-turbo : libguac에서 JPEG 지원을 제공하는 데 사용됩니다. Guacamole는 다음 라이브러리가 없으면 빌드되지 않습니다.
libjpeg-turbo-devel
libjpeg-devel
- libpng : libguac에서 Guacamole 프로토콜에서 사용하는 핵심 이미지 유형인 PNG 이미지를 작성하는 데 사용됩니다. 과카몰리는 libpng 없이 작동할 수 없습니다.
libpng-devel
- libtool : 빌드 프로세스 중에 사용됩니다. libtool은 Guacamole에 필요한 컴파일된 라이브러리를 생성합니다.
libtool
- libguac에서 각 Guacamole 사용자 및 연결에 고유한 내부 ID를 할당하는 데 사용됩니다. 이러한 고유 ID는 연결 공유 지원의 기초입니다.
libuuid-devel
libbuild를 사용할 수 없는 경우 OSSP UUID 라이브러리도 사용할 수 있습니다.
uuid-devel
다음으로 선택 목록이다.
- FFmpeg : libavcodec, libavformat, libavutil 및 libswscale 라이브러리는 Guacamole guacenc세션의
녹음을 번역할 때 비디오 스트림을 인코딩하는 데 사용됩니다. FFmpeg가 없으면 guacenc유틸리티가 구축되지 않습니다.
Guacamole 세션의 그래픽 녹음을 원하지 않거나 이러한 녹음을 비디오로 변환하지 않으려면 FFmpeg가 필요하지 않습니다.
(설치가 안될 시 목록 소개후 설치 방법 소개 예정)ffmpeg-devel
- FreeRDP : RDP 지원을 위해서는 FreeRDP 2.0.0 이상이 필요합니다. RDP 지원을 구축하지 않으려면 이 라이브러리가 필요하지 않습니다.
freerdp-devel
- Pango : Guacamole가 터미널(Kubernetes, SSH 및 telnet)이 필요한 프로토콜의 텍스트를 렌더링하는 데 사용하는 텍스트 레이아웃 라이브러리입니다.
터미널 기반 프로토콜 지원을 구축하지 않으려면 이 라이브러리가 필요하지 않습니다.pango-devel
- libssh2 : SSH 및 SFTP 지원에는 libssh2가 필요합니다. SSH 또는 SFTP 지원을 구축하지 않으려면 이 라이브러리가 필요하지 않습니다.
libssh2-devel
- libtelnet : 텔넷 지원에 필요합니다. 텔넷 지원을 구축하지 않으려면 이 라이브러리가 필요하지 않습니다.
libtelnet-devel
- libVNCServer : VNC 지원에 필요한 libvncclient를 제공합니다. VNC 지원을 구축하지 않으려면 이 라이브러리가 필요하지 않습니다.
libvncserver-devel
- libwebsockets : Kubernetes 지원에는 libwebsockets가 필요합니다. Kubernetes 지원을 구축하지 않으려면 이 라이브러리가 필요하지 않습니다.
libwebsockets-devel
- PulseAudio : Guacamole의 VNC 지원에서 실험적인 오디오 지원을 제공하는 데 사용되는 libpulse를 제공합니다.
VNC에 대한 실험적 오디오 지원을 사용하지 않으려면 이 라이브러리가 필요하지 않습니다.pulseaudio-libs-devel
- OpenSSL : 암호화된 웹 트래픽의 대부분을 구성하는 두 가지 일반적인 암호화 체계인 SSL 및 TLS에 대한 지원을 제공합니다.
libssl이 설치되어 있으면 guacd가 SSL 지원으로 빌드되어 웹 응용 프로그램과 guacd 간의 통신을 암호화할 수 있습니다. 이 라이브러리는
SSH 지원, 공개/개인 키 조작, Kubernetes 지원, Kubernetes 서버에 대한 SSL/TLS 연결에도 필요합니다.
SSL 지원이 없으면 guacd에 대한 통신을 암호화하는 옵션이 없으며 SSH 및 Kubernetes에 대한 지원을 구축할 수 없습니다.openssl-devel
- libvorbis : 사운드 압축을 위한 무료 공개 표준인 Ogg Vorbis를 지원합니다. 설치된 경우 libguac은 Ogg Vorbis를 지원하도록
구축되며 오디오를 지원하는 프로토콜은 가능한 경우 Ogg Vorbis 압축을 사용합니다.
그렇지 않으면 사운드는 WAV(압축되지 않음)로만 인코딩되며 브라우저에서도 WAV를 지원하는 경우에만 사용할 수 있습니다.libvorbis-devel
- libwebp libguac에서 WebP 이미지를 작성하는 데 사용됩니다. WebP에 대한 지원은 Guacamole 프로토콜에 의해 요구되지 않지만
브라우저와 libguac 모두에서 지원하는 경우 WebP 이미지가 사용됩니다.
WebP 지원이 없는 Guacamole은 WebP를 선호하는 경우 JPEG를 사용합니다.libwebp-devel
RPM Fusion 저장소는 EPEL 소프트웨어 저장소에 따라 다릅니다. 시스템에서 EPEL이 활성화되지 않은 경우 다음을 입력하여 EPEL을 활성화합니다.
sudo yum install epel-release
그런 다음 rpm 패키지를 설치하여 RPM Fusion 저장소를 활성화합니다.
sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
리포지토리를 활성화하면 FFmpeg를 설치합니다.
sudo yum install ffmpeg ffmpeg-devel
다음 버전을 확인하여 FFmpeg 설치를 확인합니다.
ffmpeg -version
모두 정상적으로 진행 되었을 시 Guacamole 서버를 설치하도록 하겠다.
아래의 Guacamole 홈페이지로 이동해 Guacamole Server를 먼저 다운로드 받는다.
https://guacamole.apache.org/releases/1.4.0/
▲Apache Guacamole Server 다운로드 주소
서버로 이동한 후 압축을 풀어줍니다.
tar -xzf guacamole-server-1.4.0.tar.gz
그 후 압축을 풀어준 디렉토리로 이동합니다.
cd guacamole-server-1.4.0/
앞서 설치한 목록들을 확인할 때 모두 설치했다면 아래와 같은 화면이 나오게 된다.
$ ./configure --with-init-dir=/etc/init.d
checking for a BSD-compatible install...
/usr/bin/install -c checking whether build environment is sane... yes
...
------------------------------------------------
guacamole-server version 1.4.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
Init scripts: /etc/init.d
Systemd units: no
Type "make" to compile guacamole-server.
$
확인 후 make를 입력해 컴파일을 진행한다.
make
컴파일 후 make install을 입력해 설치를 진행한다.
make install
설치 후 ldconfig를 입력해 캐시를 업데이트해준다.
ldconfig
과카몰리를 systemctl에 등록을 해준다.
sudo systemctl enable --now guacd
과카몰리를 시작한다.
systemctl start guacd
정상적으로 구동되었다면 서버 설치는 정상적으로 끝나게 된 것이다.
내용이 너무 길어지게 되어 다음 포스팅에서는 Guacamole Client에 대해 포스팅 하도록 하겠다.
https://guacamole.apache.org/
▲Apache Guacamole