Быстрая установка облачной IDE-платформы code-server в Ubuntu 18.04

code-server – это среда Microsoft Visual Studio Code, работающая на удаленном сервере и доступная в простом браузере. С ее помощью вы можете использовать различные устройства под управлением разных операционных систем и при этом всегда иметь под рукой согласованную среду разработки.

В этом мануале вы узнаете, как настроить облачную IDE-платформу на Ubuntu 18.04 и открыть к ней доступ на своем домене, используя бесплатные сертификаты Let’s Encrypt.

Более подробная версия этого мануала: Установка облачной IDE-платформы code-server в Ubuntu 18.04

Требования

  • Сервер Ubuntu 18.04, настроенный по этому мануалу.
  • 2 Гб оперативной памяти минимум.
  • Веб-сервер Nginx (установить его поможет этот мануал).
  • Две DNS-записи А (для your-domain и www.your-domain), направленные на ваш внешний IP-адрес.
  • Полностью зарегистрированное доменное имя для хоста code-server, указывающее на ваш сервер. В этом мануале будет использоваться домен code-server.your-domain.

1: Установка code-server

Все данные, относящиеся к code-server, будут храниться в папке ~/code-server. Создайте ее:

mkdir ~/code-server

Перейдите в нее:

cd ~/code-server

Посетите страницу релизов проекта на Github, выберите последнюю сборку Linux. Загрузите ее с помощью инструмента wget:

wget https://github.com/cdr/code-server/releases/download/2.1692-vsc1.39.2/code-server2.1692-vsc1.39.2-linux-x86_64.tar.gz

Распакуйте архив:

tar -xzvf code-server2.1692-vsc1.39.2-linux-x86_64.tar.gz

Перейдите в полученную папку:

cd code-server2.1692-vsc1.39.2-linux-x86_64

Скопируйте исполняемый файл code-server в /usr/local/bin, чтобы сделать его общедоступным:

sudo cp code-server /usr/local/bin

Затем создайте папку для code-server:

sudo mkdir /var/lib/code-server

Создайте сервис systemd:

sudo nano /lib/systemd/system/code-server.service

Вставьте в файл такие строки:

[Unit]
Description=code-server
After=nginx.service
[Service]
Type=simple
Environment=PASSWORD=your_password
ExecStart=/usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password
Restart=always
[Install]
WantedBy=multi-user.target

  • Флаг —host0.0.1 привязывает сервис к localhost.
  • Флаг —user-data-dir /var/lib/code-server устанавливает каталог пользовательских данных.
  • Флаг —auth password настраивает парольную аутентификацию посетителей.

Не забудьте заменить your_password на сложный пароль. Затем сохраните и закройте файл.

Запустите сервис:

sudo systemctl start code-server

Убедитесь, что он запустился:

sudo systemctl status code-server

Вы получите такой вывод:

code-server.service - code-server
Loaded: loaded (/lib/systemd/system/code-server.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2019-12-09 20:07:28 UTC; 4s ago
Main PID: 5216 (code-server)
Tasks: 23 (limit: 2362)
CGroup: /system.slice/code-server.service
├─5216 /usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password
└─5240 /usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password
...

Чтобы добавить файл в автозагрузку, введите:

sudo systemctl enable code-server

2: Настройка доступа к code-server в интернете

Теперь вы узнаете, как настроить Nginx в качестве обратного прокси-сервера для code-server.

Создайте следующий файл, в котором вы сможете хранить конфигурацию code-server:

sudo nano /etc/nginx/sites-available/code-server.conf

Вставьте в него:

server {
listen 80;
listen [::]:80;
server_name code-server.your_domain;
location / {
proxy_pass http://localhost:8080/;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
}
}

Замените code-server.your-domain вашим доменом, а затем сохраните и закройте файл.

Чтобы активировать конфигурацию, вам нужно создать симлинк в /etc/nginx/sites-enabled:

sudo ln -s /etc/nginx/sites-available/code-server.conf /etc/nginx/sites-enabled/code-server.conf

Чтобы проверить правильность конфигурации, введите:

sudo nginx -t

Вы увидите следующий вывод:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Чтобы настройки вступили в силу, нужно перезапустить Nginx:

sudo systemctl restart nginx

3: Установка сертификата Let’s Encrypt

В этом разделе вы защитите свой домен с помощью сертификата Let’s Encrypt, который вы получите с помощью клиента Certbot.

Чтобы установить последнюю версию Certbot, вам нужно добавить на ваш сервер репозиторий пакетов, выполнив следующую команду:

sudo add-apt-repository ppa:certbot/certbot

Чтобы подтвердить установку, нажмите ввод.

Затем установите Certbot и плагин для Nginx.

sudo apt install python-certbot-nginx

Теперь необходимо настроить брандмауэр на прием зашифрованного трафика, выполнив следующую команду:

sudo ufw allow https
Rule added
Rule added (v6)

Теперь нужно перезагрузить брандмауэр, чтобы конфигурация вступила в силу:

sudo ufw reload
Firewall reloaded

Перейдите на домен code-server.

Введите пароль code-server, чтобы получить доступ к интерфейсу.

Чтобы запросить сертификаты для вашего домена, выполните следующую команду:

sudo certbot --nginx -d code-server.your-domain

Сейчас вам нужно указать адрес электронной почты для срочных уведомлений и принять условия обслуживания EFF. Также здесь вы можете перенаправить весь трафик HTTP на HTTPS.

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/code-server.your_domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/code-server.your_domain/privkey.pem
Your cert will expire on ... To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
...

Certbot получил сертификаты TLS и установил их на веб-сервер Nginx.

Заключение

Теперь у вас есть code-server, универсальная облачная платформа IDE. Вы защитили ее доверенным сертификатом от Let’s Encrypt и можете открыть ее в браузере. За дополнительной информацией и подробными инструкциями по другим компонентам code-server обращайтесь к документации по Visual Studio Code.

Tags: , , , , ,