"Apache Guacamole"란 무엇인가??

이도원·2023년 2월 7일
1

JAVA

목록 보기
1/1
post-thumbnail

Guacamole는 원래 브라질에서 아보카도로 만든 소스이다. 위 그림을 보면 무엇인지 대충 짐작이 갈 것이다.

이번 포스팅에서는 Apache Guacamole에 대해 알아보고자 한다.

🥑 Apache Guacamole란??

Apache Guacamole는 클라이언트리스 원격 데스크톱 게이트웨이이다.
VNC,RDP 및 SSH와 같은 표준 프로토콜을 지원합니다. 플러그인이나 클라이언트 소프트웨어가 필요하지 않기 때문에 클라이언트리스라고 한다.
HTML5 덕분에 Guacamole가 서버에 설치되면 웹 브라우저만 있으면 데스크탑에 엑세스할 수 있도록 해주는 오픈 소스이다.

이글을 쓰고 있는 지금 2023년 2월 7일 현재 최신 버전은 1.4.0 버전이며, 2023년 초 1.5.0이 업데이트 될 것으로 보인다.


위 동영상을 보면 쉽게 Apache Guacamole를 이해할수 있을것이다.

🪡 Apache Guacamole의 구조

위 그림은 Apache Guacamole의 구조를 설명하고 있는 그림이다. HTML5(Client)에서 Server로 요청을 할 시 Apache Guacamole 프로토콜을 통해 RDP, VNC등으로 원격제어를 할 수 있게 되는 구조입니다. 즉, 웹으로 구현이 되어있기 때문에, 통신만 잘 된다면 언제 어디서든 사용할 수 있는 셈이다.

👍 Apache Guacamole의 특징

Apache Guacamole는 5가지의 장점을 가지고 있다. 같이 알아보도록 하자.

  • Guacamole 클라이언트는 HTML5 웹 응용프로그램이기 때문에 컴퓨터 사용이 한 장치나 위치에 국한되지 않는다. 웹 브라우저에 엑세스할 수 있는 한 컴퓨터에 엑세스할 수 있다.

  • Guacamole를 통해 엑세스하려는 데스크탑은 물리적으로 존재할 필요가 없다.(Virtual Machine) Guacamole와 클라이언트에서 호스팅되는 데스크톱 운영체제를 사용하먄 Guacamole의 편리함과 클라우드 컴퓨팅의 탄력성 및 유연성을 결합할 수 있습니다.

  • Apache Guacamole는 항상 무료이며 오픈소스 소프트웨어이다. Apahce License 2.0 버전을 따라 라이선스가 부여되었으며, 자체 개발환경에 엑세스하기 위해 Guacamole를 사용하는 개발자 커뮤니티에서 적극 유지관리한다. 이는 뚜렷한 이점이다.

  • Apache Guacamole는 기본자습서 및 온라인 설명서의 개념적 개요를 포함하여 철저하게 문서화된 핵심 API 스택을 기반으로 한다. 이러한 API를 통해 Guacamole는 오픈소스든 독점이든 상관없이 다른 애플리케이션에 긴밀하게 통합할 수 있다.

  • 기업의 경우 타사를 통한 상업적 지원을 받을 수 있다.

🖥️ Apache Server 설치

우선은 서버를 먼저 설치해보도록 하겠다. 서버는 CentOS 7.9에서 설치되었고 Yum으로 필요한 설치 목록을 설치한 후 진행했다.
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

🛠️ FFmpeg가 설치되지 않을 경우

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 Server 설치

아래의 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

profile
자바 풀스택 3년차 개발자 입니다. 부족한 부분은 많이 채워나가도록 하겠습니다.

0개의 댓글