Введение

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

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

Предварительные требования

ubuntu illustration for: Предварительные требования
  • Полное зарегистрированное доменное имя для размещения код-сервера, указывающее на ваш сервер. В этом обучающем руководстве мы будем использовать имя <^>code-server.your-domain<^>. Вы можете купить доменное имя на Namecheap, получить его бесплатно на Freenom или воспользоваться услугами любого предпочитаемого регистратора доменных имен.
  • На вашем сервере должны быть настроены обе нижеследующие записи DNS. В руководстве Введение в DNS hosting содержится подробная информация по их добавлению.
  • Запись A, где <^>your-domain<^> указывает на публичный IP-адрес вашего сервера.
  • Запись A, где <^>your-domain<^> указывает на публичный IP-адрес вашего сервера.

Шаг 1 — Установка код-серверной IDE

Создайте каталог для хранения всех данных код-серверной IDE:

				
					
mkdir ~/code-server

				
			

Перейдите в каталог:

				
					
cd ~/code-server

				
			

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

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

				
			

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

				
					
tar -xzvf &lt;^&gt;code-server2.1692-vsc1.39.2-linux-x86_64.tar.gz&lt;^&gt;

				
			

Перейдите в каталог, содержащий исполняемый файл код-серверной IDE:

				
					
cd &lt;^&gt;code-server2.1692-vsc1.39.2-linux-x86_64&lt;^&gt;

				
			

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

				
					
sudo cp code-server /usr/local/bin

				
			

Создайте папку для код-серверной IDE для хранения пользовательских данных:

				
					
sudo mkdir /var/lib/code-server

				
			

Создайте службу systemd, code-server.service, в каталоге /lib/systemd/system:

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

				
			

Добавьте следующие строки:

				
					
[label /lib/systemd/system/code-server.service]

[Unit]

Description=code-server

After=nginx.service



[Service]

Type=simple

Environment=PASSWORD=&lt;^&gt;your_password&lt;^&gt;

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

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

Обязательно замените <^>your_password<^> на желаемый пароль.

Сохраните и закройте файл.

Запустите службу код-серверной IDE:

				
					
sudo systemctl start code-server

				
			

Убедитесь, что она запущена корректно:

				
					
sudo systemctl status code-server

				
			

Результат будет выглядеть примерно так:

				
					
[secondary_label Output]

● 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 — Публикация код-серверной IDE

Теперь мы настроим Nginx в качестве обратного прокси для код-серверной IDE.

Создайте code-server.conf для хранения конфигурации для публикации код-серверной IDE на вашем домене:

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

				
			

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

				
					
[label /etc/nginx/sites-available/code-server.conf]

server {

	listen 80;

	listen [::]:80;



	server_name &lt;^&gt;code-server.your_domain&lt;^&gt;;



	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<^> на желаемый домен, а затем сохраните и закройте файл.

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

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

				
			

Проверьте валидность конфигурации:

				
					
sudo nginx -t

				
			

Вывод должен выглядеть так:

				
					
[secondary_label Output]

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 — Защита вашего домена

Теперь вы должны обеспечить защиту вашего домена с помощью TLS-сертификата Let's Encrypt.

Добавьте хранилище пакетов Certbot на ваш сервер:

				
					
sudo add-apt-repository ppa:certbot/certbot

				
			

Установите Certbot и его плагин Nginx:

				
					
sudo apt install python-certbot-nginx

				
			

Настройте ufw для принятия шифрованного трафика:

				
					
sudo ufw allow https

				
			

Результат будет выглядеть следующим образом:

				
					
[secondary_label Output]

Rule added

Rule added (v6)

				
			

Перезапустите, чтобы конфигурация вступила в силу:

				
					
sudo ufw reload

				
			

Результат будет выглядеть так:

				
					
[secondary_label Output]

Firewall reloaded

				
			

Перейдите на домен код-серверной IDE.

Введите пароль код-серверной IDE. Вы увидите интерфейс, опубликованный на вашем домене.

Чтобы обеспечить его защиту, выполните установку TLS-сертификата Let's Encrypt с помощью Certbot.

Запросите сертификат для вашего домена:

				
					
sudo certbot --nginx -d &lt;^&gt;code-server.your_domain&lt;^&gt;

				
			

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

Результат будет выглядеть примерно следующим образом:

				
					
[secondary_label Output]

IMPORTANT NOTES:

 - Congratulations! Your certificate and chain have been saved at:

   /etc/letsencrypt/live/&lt;^&gt;code-server.your_domain&lt;^&gt;/fullchain.pem

   Your key file has been saved at:

   /etc/letsencrypt/live/&lt;^&gt;code-server.your_domain&lt;^&gt;/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 для вашего домена.

Заключение

Теперь у вас есть код-серверная IDE, установленная на сервере Ubuntu 18.04 и опубликованная на вашем домене с защитой в форме сертификатов Let's Encrypt. Дополнительную информацию о других функциях и подробные инструкции по работе с прочими компонентами код-серверной IDE см. в документации для Visual Studio Code.