Установка Visual Studio Code (code-server) на Rocky Linux 8 и выпуск HTTPS

Введение
Visual Studio Code — один из самых популярных редакторов/IDE. code-server позволяет запускать VS Code на удалённом сервере и подключаться к нему через веб-браузер. Это удобно для облачной разработки, совместной работы и доступа к окружению разработки из любой точки.
В этом пошаговом руководстве вы установите code-server на сервер с Rocky Linux 8, настроите Nginx в качестве обратного прокси с HTTPS и добавите базовые меры безопасности.
Важно: код и команды выполняйте от пользователя с sudo-привилегиями. Проверяйте адреса и заменяйте code-server.example.com на ваш реальный домен.
Что вам нужно
- Сервер на Rocky Linux 8 с минимум 2 ГБ ОЗУ и 2 CPU.
- Нераутовый пользователь с sudo.
- Домен, указывающий на сервер.
- Установленный Nginx.
- Обновлённая система.
Проверка обновлений:
$ sudo dnf updateШаг 1 — Настройка файрвола
Rocky Linux использует firewalld. Проверьте состояние:
$ sudo firewall-cmd --stateОжидаемый вывод:
runningПосмотреть текущие разрешённые сервисы:
$ sudo firewall-cmd --permanent --list-servicesОткрыть порт 8080 для локального code-server:
$ sudo firewall-cmd --permanent --add-port=8080/tcpРазрешить HTTP и HTTPS:
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=httpsПроверить настройки:
$ sudo firewall-cmd --permanent --list-allПример части вывода:
services: cockpit dhcpv6-client http https ssh
ports: 8080/tcpПерезагрузить правила:
$ sudo systemctl reload firewalldВажно: если вы планируете использовать code-server без обратного прокси (не рекомендуется для публичного доступа), открывайте порт 8080 только для доверенных IP.
Шаг 2 — Установка code-server
code-server поставляется со скриптом установки, который автоматически подберёт пакет для вашей системы.
Сначала выполните «сухой» запуск (dry run), чтобы увидеть, что будет установлено:
$ curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-runПример вывода скрипта (только для проверки):
Rocky Linux 8.4 (Green Obsidian)
Installing v3.12.0 of the amd64 rpm package from GitHub.
+ mkdir -p ~/.cache/code-server
+ curl -#fL -o ~/.cache/code-server/code-server-3.12.0-amd64.rpm.incomplete -C - https://github.com/cdr/code-server/releases/download/v3.12.0/code-server-3.12.0-amd64.rpm
+ mv ~/.cache/code-server/code-server-3.12.0-amd64.rpm.incomplete ~/.cache/code-server/code-server-3.12.0-amd64.rpm
+ sudo rpm -i ~/.cache/code-server/code-server-3.12.0-amd64.rpm
rpm package has been installed.
To have systemd start code-server now and restart on boot:
sudo systemctl enable --now code-server@$USER
Or, if you don't want/need a background service you can run:
code-serverЕсли dry run прошёл без ошибок, выполните установку:
$ curl -fsSL https://code-server.dev/install.sh | shСкрипт может запросить sudo-пароль. После установки включите системный сервис:
$ sudo systemctl enable code-server@$USERПримечание: при повторной установке (обновлении) code-server сохранит ваши настройки и файлы.
Шаг 3 — Конфигурация code-server
Файл конфигурации находится в ~/.config/code-server/config.yaml. Откройте его в редакторе:
$ sudo nano ~/.config/code-server/config.yamlТипичные настройки после установки:
bind-addr: 127.0.0.1:8080
auth: password
password: a4768b3439e5e93b5d62489b
cert: falseПояснения:
- bind-addr: сервис слушает только локальный интерфейс на порту 8080.
- auth/password: аутентификация по паролю (генерируется автоматически).
- cert: отключён TLS — мы настроим TLS через Nginx.
Чтобы задать собственный пароль, просто замените значение password в файле. Для хранения хэшированного пароля сначала установите npm, затем выполните:
$ echo -n "thisismypassword" | npx argon2-cli -e
$argon2i$v=19$m=4096,t=3,p=1$wst5qhbgk2lu1ih4dmuxvg$ls1alrvdiwtvzhwnzcm1dugg+5dto3dt1d5v9xtlws4Скопируйте хэш и вставьте в config.yaml как значение hashed-password (обязательно в кавычках):
auth: password
hashed-password: "$argon2i$v=19$m=4096,t=3,p=1$wST5QhBgk2lu1ih4DMuxvg$LS1alrVdIWtvZHwnzCM1DUGg+5DTO3Dt1d5v9XtLws4"Чтобы отключить телеметрию, добавьте:
disable-telemetry: falseПолный список опций можно посмотреть через:
$ code-server --helpСохраните изменения (Ctrl+X, Y).
Важно: если вы используете hashed-password, убедитесь, что значение корректно скопировано и заключено в кавычки.
Шаг 4 — Установка SSL с помощью Let’s Encrypt
Установите Certbot через репозиторий EPEL:
$ sudo dnf install epel-release
$ sudo dnf install certbotВыдача сертификата (пример):
$ sudo certbot certonly --standalone --agree-tos --preferred-challenges http -d code-server.example.com -m [email protected]Сертификаты появятся в /etc/letsencrypt/live/code-server.example.com.
Сгенерируйте группу Диффи-Хеллмана:
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048Создайте веб-рут для автоматического продления (если используете webroot):
$ sudo mkdir -p /var/lib/letsencryptДобавьте ежедневную задачу продления сертификатов. Создайте файл /etc/cron.daily/certbot-renew и вставьте:
#!/bin/sh
certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"Сделайте файл исполняемым:
$ sudo chmod +x /etc/cron.daily/certbot-renewПримечание: Certbot можно настроить и через systemd timer или cron с учётом вашей политики резервирования и уведомлений.
Шаг 5 — Установка и настройка Nginx
Добавьте официальный репозиторий Nginx в /etc/yum.repos.d/nginx.repo:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=trueУстановите Nginx и включите сервис:
$ sudo dnf install nginx
$ sudo systemctl enable nginxСоздайте конфигурацию для code-server в /etc/nginx/conf.d/code-server.conf:
server {
listen 80; listen [::]:80;
server_name code-server.example.com;
return 301 https://$host$request_uri;
}
server {
server_name code-server.example.com;
listen 443 ssl http2;
listen [::]:443 ssl http2;
access_log /var/log/nginx/code-server.access.log;
error_log /var/log/nginx/code-server.error.log;
ssl_certificate /etc/letsencrypt/live/code-server.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/code-server.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/code-server.example.com/chain.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
location / {
proxy_pass http://localhost:8080/;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
}
}Проверьте конфигурацию Nginx:
$ sudo nginx -tЕсли появится ошибка про server_names_hash_bucket_size, откройте /etc/nginx/nginx.conf и добавьте перед include строку:
server_names_hash_bucket_size 64;После правок снова проверьте и перезапустите Nginx:
$ sudo systemctl start nginxСовет по безопасности: ограничьте доступ к административным путям и логам, настройте rotate для логов и мониторинг доступов.
Шаг 6 — Подключение и тестирование
Откройте в браузере https://code-server.example.com и авторизуйтесь паролем из config.yaml.

При первом запуске code-server предложит настройки интерфейса и темы.

Выберите цветовую схему и завершите начальные шаги.

Контрольные точки безопасности и эксплуатации
- Всегда работайте через HTTPS (Nginx) и слушайте code-server на 127.0.0.1.
- Используйте сложные пароли или hashed-password.
- Отключите ненужную телеметрию и ограничьте доступ по IP, если возможно.
- Настройте резервное копирование ~/.local/share/code-server (расширения, настройки, проекты).
- Обновляйте code-server, Nginx и ОС по расписанию и тестируйте на стенде.
Отказоустойчивость и продление сертификатов
- Certbot хранит сертификаты в /etc/letsencrypt/live. Тестируйте командой certbot renew –dry-run.
- Настройте уведомления на почту при ошибках продления.
- Если используете вебрут, убедитесь, что /var/lib/letsencrypt доступен для ACME challenge.
Устранение неполадок
- 502/504 при обращении к Nginx: проверьте, что code-server слушает на 127.0.0.1:8080 и является активным systemd-сервисом.
$ sudo systemctl status code-server@$USER
$ ss -tulpn | grep 8080- Неправильный сертификат в браузере: проверьте пути ssl_certificate и ssl_certificate_key.
- Проблемы с server_names_hash_bucket_size: увеличьте значение в /etc/nginx/nginx.conf.
- Пароль не работает: проверьте config.yaml и наличие hashed-password/ password.
Альтернативы и когда этот подход не подходит
- Если вам нужна официальная версия Visual Studio с полным набором расширений и возможностью локальной разработки — рассматривайте запуск локального VS Code.
- Для командной разработки с тесной интеграцией CI/CD можно использовать облачные IDE (GitHub Codespaces, Gitpod), которые предоставляют управляемую инфраструктуру.
- code-server хорош для лёгкой облачной IDE, но некоторые расширения могут быть недоступны или потребуют дополнительных настроек.
Роль‑ориентированные чек‑листы
Администратор:
- Настроить firewalld и Nginx.
- Выпустить сертификаты и настроить автоматическое продление.
- Убедиться в наличии бэкапов конфигураций.
Разработчик:
- Проверить доступ по HTTPS.
- Установить необходимые расширения и синхронизировать настройки.
- Оценить требования к ресурсам (память/CPU) под свои проекты.
Безопасник:
- Проверить acces-логи и ошибки.
- Настроить мониторинг и оповещения.
- Провести аудит доступа по IP и RBAC, если применимо.
Критерии приёмки
- Доступ по HTTPS по домену code-server.example.com.
- Авторизация успешно проходит с паролем или hashed-password.
- Nginx корректно проксирует запросы на 127.0.0.1:8080.
- Сертификат Let’s Encrypt автоматически продлевается (dry-run успешен).
Короткая методология развертывания (шаги)
- Подготовка сервера и обновление пакетов.
- Установка code-server и включение systemd-сервиса.
- Настройка config.yaml (пароль/хэш).
- Установка Certbot и выпуск сертификата.
- Настройка Nginx как обратного прокси с TLS.
- Тестирование доступа и настройка продления сертификатов.
Короткий глоссарий
- code-server — серверная версия VS Code, доступная через браузер.
- Certbot — клиент для получения сертификатов Let’s Encrypt.
- webroot — метод верификации ACME, где файлы размещаются в корне веб-сервера.
Частые ошибки и их решения
- Ошибка 525/526: проверьте TLS на бэкенде; code-server не должен предоставлять TLS, если вы используете TLS в Nginx.
- Расширения не устанавливаются: убедитесь, что у вас есть сетевой доступ и что repository расширений доступно; некоторые расширения ограничены по лицензии.
Резюме
Вы развернули кодовую среду VS Code на сервере Rocky Linux 8, настроили HTTPS через Let’s Encrypt и Nginx, а также добавили базовые рекомендации по безопасности и эксплуатации. Регулярно проверяйте обновления и настраивайте резервное копирование пользовательских данных.
Важно: расширения в code-server могут отличаться от официальных Marketplace. Если вам нужны официальные расширения, изучите документацию code-server и инструкции по установке официальных пакетов.
Если остались вопросы — укажите конкретную проблему (логи, команды), и я помогу продолжить диагностику.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента