Files
2023-01-30 08:26:50 +00:00

3.8 KiB

Apache Guacamole Install with Podman

Web UI를 통해 RDP, VNC, SSH 등 원격 접속을 할 수 있고 사용자별 권한 관리 등이 가능한 유틸
Podman을 통해 contaienr로 설치하는 과정
수정된 이미지를 사용하고자 할 경우 hypermole.tar를 다운로드 받아 load 하여 사용
logo와 이름을 커스텀하여 사용하고자 할 경우 Dockerfile과 guacamole.war를 받아서 사용

hypermole

Guacamole 컨테이너들이 사용할 네트워크 생성 (옵션)

podman network create guaca
  • 기존에 생성한 네트워크가 있을 경우 사용해도 무방, 컨테이너간 통신시 컨테이너 명으로 하기 위함

postgres 설치

podman run -v /root/podmandir/postgres:/var/lib/postgresql/data --network guaca --name guaca-db -e POSTGRES_PASSWORD=ios2011a -e PGDATA=/var/lib/postgresql/data/pgdata -e POSTGRES_HOST_AUTH_METHOD=md5 -d postgres:14
  • guacamole가 사용할 DB로 mysql 혹은 postgres 생성
  • postgres:14를 사용할 경우 POSTGRES_HOST_AUTH_METHOD=md5 옵션 설정
podman exec -it guaca-db bash
vi /var/lib/postgresql/data/pgdata/postgresql.conf
  • 패스워드 암호화 방식 변경 필요
password_encryption = scram-sha-256
  • 해당 부분의 주석을 해제하고 scram-sha-256 -> md5 로 변경
  • 저장 후 postgres 컨테이너 재기동
podman run --rm guacamole/guacamole:1.4.0 /opt/guacamole/bin/initdb.sh --postgres > initdb.sql
  • guacamole에서 사용할 db 설정을 위한 sql 파일 생성
podman exec -it guaca-db bash
  • postgres 컨테이너 접속
psql -U postgres
alter role postgres password 'ios2011a';
create database guacamole_db;
create user guacamole_user password 'ios2011a' superuser createdb createrole;
psql -U guacamole_user -d guacamole_db -a -f initdb.sql
  • guacamole에서 사용할 사용자와 db 생성
  • 위에서 생성한 sql 파일을 사전에 미리 컨테이너 내부로 옮겨두고 실행

Auacd 설치

podman run --network guaca --name guacd -d guacamole/guacd:1.4.0
  • 원격 접속 역할을 수행하는 guacd container 생성

guacamole 설치

podman run --network guaca --name hypermole \
    -e WEBAPP_CONTEXT=ROOT \
    -e GUACD_HOSTNAME=guacd \
    -e GUACD_PORT=4822 \
    -e POSTGRES_HOSTNAME=guaca-db \
    -e POSTGRES_PORT=5432 \
    -e POSTGRES_DATABASE=guacamole_db \
    -e POSTGRES_USER=guacamole_user \
    -e POSTGRES_PASSWORD=ios2011a \
    -d -p 7900:8080 localhost/hypermole:0.2
  • 해당 커맨드는 tmaxcloud platform ps팀에서 사용하기 위해 작성자가 수정한 이미지
  • 순수 guacamole 같은 경우 guacamole/guacamole:1.4.0 을 사용

Nginx 설정

server {
    server_name hypermole.jhcloud.kr;
    location / {
        #proxy_pass_request_headers on;
        #proxy_ssl_verify off;
        #proxy_pass http://127.0.0.1:7900;
        #proxy_set_header Host $host;
        #proxy_set_header X-Forwarded-Proto https;
        #proxy_set_header X-Real-IP $remote_addr;
        #proxy_set_header X-Forwarded-for $remote_addr;
        #proxy_hide_header X-Frame-Options;
        proxy_pass http://localhost:7900;
        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;
        proxy_cookie_path /guacamole/ /new-path/;
        access_log off;
    }


    listen 443 ssl; # managed by Certbot
    ssl_certificate_key /home/ps-ftp/ssl/jhcloud.kr.key;
    ssl_certificate /home/ps-ftp/ssl/fullchain.cer;
    # other details, filled by Certbot

}
  • guacamole 같은 경우 위와 같이 설정을 해야함