Гид по технологиям

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

• 6 min read • DevOps • Обновлено 26 Nov 2025
Установка code-server (VS Code) на Rocky Linux 8
Установка code-server (VS Code) на Rocky Linux 8

Серверный интерфейс VS Code

Введение

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

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

Экран настройки code-server

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

Домашняя страница 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 успешен).

Короткая методология развертывания (шаги)

  1. Подготовка сервера и обновление пакетов.
  2. Установка code-server и включение systemd-сервиса.
  3. Настройка config.yaml (пароль/хэш).
  4. Установка Certbot и выпуск сертификата.
  5. Настройка Nginx как обратного прокси с TLS.
  6. Тестирование доступа и настройка продления сертификатов.

Короткий глоссарий

  • 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 и инструкции по установке официальных пакетов.

Если остались вопросы — укажите конкретную проблему (логи, команды), и я помогу продолжить диагностику.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро