이번에는 Ubuntu 리눅스를 원격에서 쉽게 관리하기 위한 툴 Cockpit을 설치해보려고합니다.
기본적으로 Cloud를 사용하시던 홈서버를 사용하시던 원격에서 ssh를 열기에는 많이부담되실텐데 Cockpit을 사용하시면 보안적으로도 안전하게 외부에서 서버에 접속 할 수 있습니다.
또한 자원모니터링, 로그 모니터링도 다 되기때문에 이런툴이 있구나 생각하시면 될거같습니다.
설치하기
우분투에서는 16.04 부터 기본패키지에 포함되어있기 때문에 apt 패키지 관리자를 사용하시면 쉽게 사용 가능합니다.
sudo apt-get install cockpit
설치를 이렇게 하셨으면 netstat -lntp, service cockpit start 로 실행시켜줍니다.
아래처럼 정상작동되는지 확인하실수있습니다.
추가로 재부팅시 자동으로 cockpit이 실행될 수 있도록 아래 명령어를 입력해줍니다.
Cockpit은 기본적으로 9090 포트를 사용합니다.
만약 AWS,GCP,Oracle Cloud를 사용하신다면 방화벽도 따로 오픈해주셔야합니다.
접근은 ip:9090 포트로 접속하시면됩니다.
계정은 ubuntu 사용하시던거 사용하시면됩니다.
시작하고나면 아래처럼 기본적인 시스템 정보와 함께 좌측에 메뉴들을보실수 있습니다.
이제 이렇게 사용하셔도 되지만 저는 좀더 편하게 사용하기 위해 직접 도메인을 지정해주고 Reverse Proxy로 사용해보도록 하겠습니다.
Cockpit Reverse Proxy 셋팅(Nginx)
Nginx 를 사용하는 기반으로 셋팅하겠습니다.
리버스 프록시는 말그대로 프록시를 태워서 받는건데
예를 들어 hostname 으로 cockpit.dalso.org 를 접속한다면 내부의 127.0.0.1:9090 으로 자연스럽게 이어지게끔 셋팅하는걸 의미합니다.
그러기위해서는 cockpit.conf 의 설정과 nginx에서 가상호스트를 새로 추가해주면 됩니다.
cockpit.conf 설정하기
아래 파일이 없으면 그냥생성하면됩니다.
vi /etc/cockpit/cockpit.conf
[WebService]Origins = https://[하위도메인].[도메인] wss://[하위도메인].[도메인]ProtocolHeader = X-Forwarded-Proto
vi /etc/nginx/sites-available/[하위도메인].[도메인]
upstream backendcockpit {
server 127.0.0.1:9090;
keepalive 1024;
}
server {
listen 80 ;
listen [::]:80 ;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name [하위도메인].[도메인];
location / {
return 301 https://[하위도메인].[도메인]$request_uri; ###### HTTPS www로 리다이렉팅
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
index index.php index.html index.htm index.nginx-debian.html;
server_name [하위도메인].[도메인];
ssl on;
ssl_certificate /etc/letsencrypt/live/[도메인]/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/[도메인]/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/[도메인]/fullchain.pem;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 1440m;
ssl_buffer_size 8k;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'kEECDH+ECDSA+AES128 kEECDH+ECDSA+AES256 kEECDH+AES128 kEECDH+AES256 kEDH+AES128 kEDH+AES256 DES-CB
C3-SHA +SHA !aNULL !eNULL !LOW !kECDH !DSS !MD5 !EXP !PSK !SRP !CAMELLIA !SEED';
ssl_prefer_server_ciphers on;
#ssl_trusted_certificate /etc/letsencrypt/live/[도메인]/chain.pem;
ssl_stapling on;
ssl_stapling_verify on;
access_log /var/log/nginx/web.access.log;
error_log /var/log/nginx/web.error.log;
location / {
# Required to proxy the connection to Cockpit
proxy_pass https://127.0.0.1:9090;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
# Required for web sockets to function
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Pass ETag header from Cockpit to clients.
# See: https://github.com/cockpit-project/cockpit/issues/5239
gzip off;
}
}
이렇게 설정해주고 service cockpit restart 와 service nginx restart 로 재시작시켜주고 도메인으로 접근하시면 됩니다.
도메인은 당연히 cname을 설정하셨으리라 생각합니다..
이제 아래처럼 접근이 가능해집니다!