Ubuntu 20.04에 코드 서버를 쉽게 설치

Ubuntu 20.04에 코드 서버를 쉽게 설치

이 기사에서는 Ubuntu 20.04에 Code-Server를 설치하는 방법을 안내합니다.

Code-server는 어디에서나 모든 컴퓨터에서 VS Code를 제공하고 브라우저에서 액세스하는 오픈 소스 서버 응용 프로그램입니다. 강력한 클라우드 서버를 활용하여 컴파일 및 테스트 속도를 높이고 이동 중에 배터리를 절약할 수 있습니다.

전제 조건

  • Ubuntu 20.04는 VPS를 최소로 설치했습니다. 권장: 4GB RAM, 2 vCPU.
  • VPS를 가리키는 유효한 도메인 이름.
  • 루트 사용자 액세스 또는 관리 권한이 있는 일반 사용자입니다.

Ubuntu 20.04에 코드 서버 설치

1. 서버 업데이트

서버를 최신 상태로 유지하십시오.

# apt update -y

# apt upgrade -y

2. 코드 서버 설치

다음 명령을 사용하여 공식 리포지토리에서 코드 서버를 다운로드합니다.

# cd /home
# wget https://github.com/cdr/code-server/releases/download/v3.11.0/code-server-3.11.0-linux-amd64.tar.gz

다음 명령을 사용하여 tar 파일을 추출 하고 코드 서버로 이름을 바꿉니다 .

# tar xzf code-server-3.11.0-linux-amd64.tar.gz && rm code-server-3.11.0-linux-amd64.tar.gz
# mv code-server-3.11.0-linux-amd64 code-server

코드 서버 바이너리를 실행 가능하게 만드십시오.

# cd code-server

코드 서버를 실행합니다.

./code-server --port 8000

컴퓨터 브라우저를 열고 http://YOUR_IP_ADDRESS:8000으로 이동합니다. 암호를 입력하라는 메시지가 표시됩니다. SSH 터미널에 표시된 비밀번호를 사용하십시오. Visual Studio Code 인터페이스가 열립니다. 서버를 중지하려면  SSH 터미널에서 CTRL + C 를 누릅니다  .

3. 시스템 시작 서비스 만들기

Linux의 systemd 서비스 관리자를 사용하여 서비스를 만들 수 있습니다 . 이 차례를 따라라:

다음 명령을 사용하여 이름이 code-server.service인 새 파일을 만듭니다 .

# vi /lib/systemd/system/code-server.service

다음 내용을 복사하여 붙여넣고 설정하려는 비밀번호로 바꿉니다. 이것은 코드 서버에 로그인하는 데 사용할 비밀번호입니다.

[Unit]
Description=Code Server Service
After=network.target

[Service]
Type=simple
Restart=on-failure
RestartSec=10
WorkingDirectory=/home/code-server
Environment='PASSWORD='
ExecStart=/home/code-server/code-server --port 8000
StandardOutput=file:/var/log/code-server-output.log
StandardError=file:/var/log/code-server-error.log

[Install]
WantedBy=multi-user.target

파일을 저장하고 닫습니다.

이제 다음 명령을 사용하여 code-server.service 를 시작하고 활성화 합니다.

# systemctl daemon-reload

# systemctl start code-server

# systemctl enable code-server

컴퓨터 브라우저를 열고 http://YOUR_IP_ADDRESS:8000으로 이동합니다. 암호를 입력하라는 메시지가 표시됩니다. code-server.service 파일 에서 언급한 비밀번호를 사용하십시오 .

4. Nginx 설치 및 구성

도메인 이름을 통해 설치에 액세스하고 SSL 인증서를 추가하려면 역방향 프록시를 설정하는 것이 좋습니다. 이 데모 목적을 위해 Nginx 웹 서버를 역방향 프록시로 사용하고 있습니다.

Nginx를 설치하려면 다음 명령을 사용하십시오.

# apt-get install nginx -y

기본 Nginx 사이트 구성 파일을 비활성화합니다.

# rm /etc/nginx/sites-enabled/default

코드 서버에 대한 새 Nginx 사이트 구성 파일을 만듭니다.

# vi /etc/nginx/sites-available/code-server

다음 스니펫을 파일에 붙여넣고 example.com을 자신의 도메인 이름으로 바꿉니다.

server {
listen 80;
listen [::]:80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8000/;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

구성을 활성화하고 Nginx 웹 서버를 다시 시작합니다.

# ln -s /etc/nginx/sites-available/code-server /etc/nginx/sites-enabled/

Nginx 구성 파일을 테스트합니다.

# nginx -t

오류가 발생하지 않으면 nginx 서비스를 다시 시작 합니다.

# systemctl restart nginx

UFW를 방화벽으로 사용하는 경우 방화벽을 통한 SSH 및 Nginx 연결을 허용하고 방화벽을 활성화합니다. 이렇게 하면 Nginx 리버스 프록시를 통해서만 코드 서버 설치에 액세스할 수 있습니다.

# ufw allow ssh
# ufw allow 'Nginx Full'
# ufw enable

도메인 이름으로 이동하여 설치를 테스트합니다.

5. Let's Encrypt SSL 설치

서버와 최종 사용자 간의 연결을 안전하게 유지하려면 SSL 인증서를 설치하는 것이 좋습니다. Let's Encrypt는 90일 동안 유효하며 90일마다 갱신되는 무료 SSL 인증서입니다. 우리가 사용하고있는 certbot를 SSL 인증서를 설치합니다.

Certbot을 다운로드하여 설치하십시오.

# apt-get install python3-certbot-nginx

다음 명령을 실행하여 Certbot의 명령줄 설치 프로그램을 시작하고 example.com을 자신의 도메인 이름으로 바꿉니다.

# certbot --nginx -d example.com

대화형 설치 프로그램을 진행합니다. HTTP 트래픽을 HTTPS로 리디렉션할지 여부를 묻는 메시지가 표시되면 리디렉션을 선택합니다.

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you’re confident your site works on HTTPS. You can undo this
change by editing your web server’s configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/code-server
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/code-server

6. fail2ban 설치(권장)

Fail2ban은 서버에 대한 자동화된 공격을 감지하고 완화하기 위해 로그를 구문 분석하는 애플리케이션입니다. 사전 정의된 로그인 시도 실패 횟수가 감지되면 fail2ban은 사전 정의된 시간 동안 공격자를 차단하도록 서버의 iptables를 변경합니다.

설정 도구를 설치합니다. 이것은 fail2ban을 설치하는 데 필요합니다.

# apt-get install python3-setuptools -y

fail2ban을 다운로드하여 설치하십시오.

git clone https://github.com/fail2ban/fail2ban.git
cd fail2ban
sudo python3 setup.py install
cp build/fail2ban.service /lib/systemd/system/fail2ban.service
cd .. && rm -rf fail2ban

기본 구성 파일 jails.conf를 jails.local에 복사하고 복사한 파일을 텍스트 편집기에서 엽니다.

# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# vi /etc/fail2ban/jail.local

파일 맨 아래에 다음 스니펫을 붙여넣습니다. maxretry, findtime 및 bantime 매개변수를 변경할 수 있습니다.

[code-server]
enabled = true
logpath = /var/log/code-server-output.log
# maxretry: The amount of unsuccessful login attempts after which a ban is issued.
maxretry = 5
# findtime: The amount of time within which the login attempts must occur.
findtime = 10m
# bantime: The amount of time for which an IP is banned from accessing the server.
bantime = 10m

코드 서버 로그에서 실패한 로그인 시도를 찾기 위한 필터 패턴을 정의하는 새 필터 구성 파일을 작성하십시오.

# vi /etc/fail2ban/filter.d/code-server.conf

다음 스니펫을 파일에 붙여넣습니다.

[Definition]
failregex = Failed login attempt {\'xForwardedFor\':\'\'.*
ignoreregex =
datepattern = "timestamp':{EPOCH}}$

rsyslog 서비스를 다시 시작하고 fail2ban 서비스를 활성화 및 시작합니다.

# systemctl restart rsyslog.service

# systemctl start fail2ban.service
# systemctl enable fail2ban.service

그게 다야 설치가 성공적으로 완료되었습니다.

이 기사에서는 Ubuntu 20.04에 Code-Server를 설치하는 방법을 설명했습니다.