Как настроить облачную IDE-платформу код-сервера в Ubuntu 22.04
Автор выбрал программу Write for DOnations.
Введение
По мере того, как инструменты разработчика перемещаются в облако, растет число случаев создания и внедрения облачных IDE (интегрированных сред разработки). Облачные IDE обеспечивают совместную работу команд разработчиков в реальном времени для работы в единой среде разработки, которая сводит к минимуму несовместимости и повышает производительность. Облачные IDE, доступные через веб-браузеры, доступны с любого типа современного устройства.
Код Microsoft Visual Studio, работающий на удаленном сервере и доступный непосредственно из вашего браузера. Visual Studio Code — это современный редактор кода со встроенной поддержкой Git, отладчиком кода, интеллектуальным автозаполнением, а также настраиваемыми и расширяемыми функциями. С code-server вы можете использовать различные устройства с разными операционными системами и всегда иметь под рукой согласованную среду разработки.
В этом руководстве вы настроите облачную платформу IDE code-server на своем компьютере с Ubuntu 22.04 и разместите ее в своем домене, защищенном бесплатными сертификатами Let’s Encrypt TLS. К концу руководства у вас будет код Microsoft Visual Studio, работающий на вашем сервере Ubuntu 22.04, доступный в вашем домене и защищенный паролем.
Предпосылки
- Сервер под управлением Ubuntu 22.04 с оперативной памятью не менее 2 ГБ, доступом root и учетной записью sudo без полномочий root. Вы можете настроить это, следуя этому руководству по начальной настройке сервера.
- Nginx установлен на вашем сервере. Чтобы получить руководство о том, как это сделать, выполните шаги с 1 по 4 в разделе Как установить Nginx в Ubuntu 22.04.
- Полное зарегистрированное доменное имя для размещения кода-сервера, указывающего на ваш сервер. В этом руководстве будет использоваться
code-server.ваш-домен
. Вы можете приобрести доменное имя в этом введении в DNS DigitalOcean для получения подробной информации о том, как их добавить.
Шаг 1 — Установка код-сервера
На этом шаге вы настроите code-server на своем сервере, загрузив последнюю версию и создав службу systemd
, которая будет поддерживать работу code-server в фоновом режиме. Вы также укажете политику перезапуска службы, чтобы код-сервер оставался доступным после любых возможных сбоев или перезагрузок.
Вы будете хранить все данные, относящиеся к кодовому серверу, в папке с именем ~/code-server
. Создайте его с помощью следующей команды:
- mkdir ~/code-server
Затем перейдите к нему:
- cd ~/code-server
Вам нужно будет получить последнюю сборку Linux из выпусков Github code-server (файл будет содержать linux
в своем имени). На момент написания последней версией была 4.8.2. Загрузите его с помощью wget
, выполнив следующую команду:
- wget https://github.com/coder/code-server/releases/download/v4.8.2/code-server-4.8.2-linux-amd64.tar.gz
Затем распакуйте архив, выполнив:
- tar -xzvf code-server-4.8.2-linux-amd64.tar.gz
Вы получите папку с таким же именем, как и исходный файл, который вы загрузили, который содержит исходный код сервера кодов. Выполните следующую команду, чтобы скопировать его в /usr/lib/code-server
, чтобы вы могли получить к нему доступ по всей системе:
- sudo cp -r code-server-4.8.2-linux-amd64 /usr/lib/code-server
Затем создайте символическую ссылку в /usr/bin/code-server
, указывающую на исполняемый файл code-server:
- sudo ln -s /usr/lib/code-server/bin/code-server /usr/bin/code-server
Далее создайте папку, в которой code-server будет хранить пользовательские данные:
- sudo mkdir /var/lib/code-server
Теперь, когда вы загрузили code-server и сделали его доступным для всей системы, вы создадите службу systemd
, чтобы code-server постоянно работал в фоновом режиме.
Вы сохраните конфигурацию службы в файле с именем code-server.service
в каталоге /lib/systemd/system
, где systemd
хранит его услуги. Создайте его с помощью текстового редактора (в этом руководстве используется nano
):
- sudo nano /lib/systemd/system/code-server.service
Добавьте следующие строки:
[Unit]
Description=code-server
After=nginx.service
[Service]
Type=simple
Environment=PASSWORD=your_password
ExecStart=/usr/bin/code-server --bind-addr 127.0.0.1:8080 --user-data-dir /var/lib/code-server --auth password
Restart=always
[Install]
WantedBy=multi-user.target
Сначала вы указываете описание услуги. Затем вы указываете, что служба nginx
должна быть запущена до этой. После раздела [Unit]
вы определяете тип службы (простой
означает, что процесс должен быть просто запущен) и предоставляете команду, которая будет выполнена.
Вы также указываете, что исполняемый файл глобального кода-сервера должен запускаться с несколькими аргументами, характерными для кода-сервера:
--bind-addr 127.0.0.1:8080
привязывает его кlocalhost
через порт8080
, поэтому он доступен только изнутри ваш сервер.--user-data-dir /var/lib/code-server
задает каталог пользовательских данных.--auth password
указывает, что посетители должны аутентифицироваться с помощью пароля, указанного в переменной окруженияPASSWORD
, объявленной в строке выше.
Не забудьте заменить ваш_пароль
на желаемый пароль. Следующая строка указывает systemd
перезапустить code-server во всех случаях сбоя (например, когда происходит сбой или процесс завершается).
Раздел [Install]
приказывает systemd
запустить эту службу, когда станет возможным войти на ваш сервер.
Сохраните и закройте файл.
Запустите службу сервера кодов, выполнив следующую команду:
- sudo systemctl start code-server
Убедитесь, что он запущен правильно, наблюдая за его статусом:
- sudo systemctl status code-server
Вы получите вывод, подобный этому:
Output
● code-server.service - code-server
Loaded: loaded (/lib/systemd/system/code-server.service; disabled; preset: enabled)
Active: active (running) since Thu 2022-11-03 12:39:26 UTC; 5s ago
Main PID: 2670 (node)
Tasks: 22 (limit: 1116)
Memory: 90.9M
CPU: 799ms
CGroup: /system.slice/code-server.service
├─2670 /usr/lib/code-server/lib/node /usr/lib/code-server --bind-addr 127.0.0.1:8080 --user-data-dir /var/lib/code-server --auth password
└─2692 /usr/lib/code-server/lib/node /usr/lib/code-server/out/node/entry
Чтобы код-сервер запускался автоматически после перезагрузки сервера, включите его службу с помощью следующей команды:
- sudo systemctl enable code-server
Вы получите ответ о том, что символическая ссылка была сгенерирована:
OutputCreated symlink /etc/systemd/system/multi-user.target.wants/code-server.service → /lib/systemd/system/code-server.service.
На этом шаге вы загрузили code-server и сделали его доступным по всему миру. Затем вы создали службу systemd
для code-server и включили ее, чтобы code-server запускался при каждой загрузке сервера. Затем вы разместите его в своем домене, настроив Nginx в качестве обратного прокси-сервера между посетителем и кодовым сервером.
Шаг 2 — Разоблачение кода-сервера в вашем домене
В этом разделе вы настроите Nginx в качестве обратного прокси-сервера для кода-сервера.
Как вы уже поняли на предварительном этапе Nginx, файлы конфигурации сайта хранятся в папке /etc/nginx/sites-available
и позже должны быть связаны символической ссылкой на /etc/nginx/sites-enabled
, чтобы стать активным.
Вы сохраните конфигурацию для предоставления code-server в своем домене в файле с именем code-server.conf
в папке /etc/nginx/sites-available
. Начните с создания этого файла с помощью вашего редактора:
- 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
на желаемый домен.
В этом файле вы определяете, что Nginx должен прослушивать HTTP-порт 80
. Затем вы указываете server_name
, который сообщает Nginx, какой домен принимать запросы и применять эту конкретную конфигурацию.
В блоке корневого местоположения (/
) вы указываете, что запросы должны передаваться туда и обратно на код-сервер, работающий по адресу localhost:8080
. Следующие три строки (начиная с proxy_set_header
) приказывают Nginx переносить некоторые заголовки HTTP-запросов, которые необходимы для правильного функционирования WebSockets, которые код-сервер широко использует.
Сохраните и закройте файл.
Чтобы сделать эту конфигурацию сайта активной, вам нужно будет создать ее символическую ссылку в папке /etc/nginx/sites-enabled
. Запустите эту команду, чтобы сделать это:
- sudo ln -s /etc/nginx/sites-available/code-server.conf /etc/nginx/sites-enabled/code-server.conf
Чтобы проверить правильность конфигурации, выполните следующую команду:
- sudo nginx -t
Вы получите следующий вывод:
Outputnginx: 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
Теперь у вас есть установка code-server, доступная в вашем домене. На следующем шаге вы защитите его с помощью бесплатного TLS-сертификата Let’s Encrypt.
Шаг 3 — Защита вашего домена
В этом разделе вы защитите свой домен с помощью TLS-сертификата Let’s Encrypt, который вы предоставите с помощью Certbot. После настройки ваш код-сервер будет работать по протоколу HTTPS.
В рамках предварительных требований вы включили ufw
(несложный брандмауэр) и настроили его для разрешения незашифрованного HTTP-трафика. Чтобы получить доступ к защищенному сайту, вам необходимо настроить его для приема зашифрованного трафика, что вы можете сделать, выполнив следующую команду:
- sudo ufw allow https
Вывод будет:
OutputRule added
Rule added (v6)
Как и в случае с Nginx, вам нужно перезагрузить его, чтобы конфигурация вступила в силу:
- sudo ufw reload
Этот вывод будет печатать:
OutputFirewall reloaded
Затем в браузере перейдите к домену, который вы использовали для code-server. Будет загружено приглашение для входа в код-сервер:
code-server запрашивает ваш пароль. Введите тот, который вы установили на предыдущем шаге, и нажмите Enter IDE. Теперь вы войдете в код-сервер и сразу же получите доступ к его графическому интерфейсу редактора.
Теперь, когда вы убедились, что код-сервер правильно отображается в вашем домене, вы установите сертификаты Let’s Encrypt TLS для его защиты с помощью Certbot.
Чтобы установить последнюю версию Certbot и его плагин Nginx, выполните следующую команду:
- sudo apt install certbot python3-certbot-nginx -y
Чтобы запросить сертификаты для вашего домена, выполните следующую команду:
- sudo certbot --nginx -d code-server.your-domain
В этой команде вы запускаете certbot
для запроса сертификатов для вашего домена. Вы передаете доменное имя с параметром -d
. Флаг --nginx
указывает ему автоматически изменить конфигурацию сайта Nginx для поддержки HTTPS. Не забудьте заменить code-server.your-domain
на ваше доменное имя.
Если вы запускаете Certbot впервые, вас попросят указать адрес электронной почты для срочных уведомлений и принять Условия обслуживания EFF. Затем Certbot запросит сертификаты для вашего домена у Let’s Encrypt.
Вывод будет примерно таким:
OutputRequesting a certificate for code-server.your-domain
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/code-server.your-domain/fullchain.pem
Key is saved at: /etc/letsencrypt/live/code-server.your-domain/privkey.pem
This certificate expires on 2023-02-01.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
Deploying certificate
Successfully deployed certificate for code-server.your-domain.com to /etc/nginx/sites-enabled/code-server.conf
Congratulations! You have successfully enabled HTTPS on https://code-server.your-domain
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Этот вывод указывает, что Certbot успешно сгенерировал сертификаты TLS и применил их к конфигурации Nginx для вашего домена. Теперь вы можете перезагрузить домен вашего код-сервера в браузере и увидеть замок слева от адреса сайта, что означает, что ваше соединение надежно защищено.
Теперь, когда у вас есть код-сервер, доступный в вашем домене через защищенный обратный прокси-сервер Nginx, вы готовы просмотреть пользовательский интерфейс код-сервера.
Шаг 4 — Использование интерфейса код-сервера
В этом разделе вы будете использовать некоторые функции интерфейса сервера кодов. Поскольку code-server — это Visual Studio Code, работающий в облаке, он имеет тот же интерфейс, что и автономная настольная версия.
В левой части IDE есть вертикальный ряд из шести кнопок, которые будут наиболее часто используемыми функциями на боковой панели, известной как панель действий:
Эта панель настраивается, поэтому вы можете перемещать эти кнопки или удалять их с панели. По умолчанию первая кнопка (значок меню-гамбургер) открывает общее меню в раскрывающемся списке, а вторая кнопка (значок папки) открывает панель проводника, обеспечивающую древовидную навигацию по структуре проекта. Здесь вы можете управлять своими папками и файлами, создавая, удаляя, перемещая и переименовывая их по мере необходимости. Кнопка увеличительного стекла обеспечивает доступ к функциям поиска и замены.
После этого, в порядке по умолчанию, находится значок, который обеспечивает ваше представление о системах управления версиями, таких как поставщики управления версиями.
Опция отладчика (треугольник с маленьким значком ошибки) предоставляет общие действия для отладки на панели. Visual Studio Code поставляется со встроенной поддержкой расширений для необходимого отладчика. Кнопка с четырьмя блоками, которая является последним представлением на панели действий, предоставляет меню для доступа к доступным расширениям на VSCode Marketplace.
Основной областью графического интерфейса является ваш редактор, который вы можете разделить на вкладки для редактирования кода. Вы можете изменить вид редактирования на сетку или на параллельные файлы.
Откройте code-server.your-domain/?folder=/var/lib/code-server/User
в своем браузере, который загрузит существующую папку.
Выберите значок меню гамбургера, чтобы открыть меню параметров, затем выберите меню «Файл», в котором вы создадите новый файл. Назовите файл и сохраните его в папку по умолчанию.
После сохранения файл будет доступен для просмотра на боковой панели проводника. Создать папки можно, щелкнув правой кнопкой мыши на боковой панели проводника и выбрав «Новая папка». Вы можете развернуть папку, щелкнув ее имя, а также перетащив файлы и папки в верхние части иерархии, чтобы переместить их в новое место.
Вы можете получить доступ к терминалу, нажав «Терминал» в раскрывающемся меню верхнего меню и выбрав «Новый терминал». Вы также можете использовать сочетание клавиш, указанное в меню. Терминал откроется на нижней панели, а его рабочий каталог будет установлен в рабочую область проекта, содержащую файлы и папки, показанные на боковой панели проводника.
На этом шаге вы рассмотрели интерфейс сервера кодов и некоторые из наиболее часто используемых функций.
Заключение
Теперь у вас есть code-server, универсальная облачная IDE, установленная на вашем сервере Ubuntu 22.04, доступная в вашем домене и защищенная сертификатами Let’s Encrypt. Теперь вы можете работать над проектами индивидуально или совместно в команде. Запуск облачной IDE освобождает ресурсы на вашем локальном компьютере и позволяет масштабировать ресурсы по мере необходимости. Дополнительные сведения см. в документации по коду Visual Studio, где приведены дополнительные функции и подробные инструкции по другим компонентам code-server.
Если вы хотите запустить код-сервер в своем кластере DigitalOcean Kubernetes, ознакомьтесь с нашим руководством «Как настроить облачную IDE-платформу код-сервера в DigitalOcean Kubernetes».