Skip to content
Документация
Code Server

Code Server — VS Code в браузере

Введение

code-server (opens in a new tab) — это open-source проект, позволяющий запустить Visual Studio Code на сервере и работать с ним через браузер. Простыми словами, вы получаете доступ к VS Code на мощном сервере с любого устройства — ноутбука, планшета или даже телефона.

Последняя стабильная версия: v4.108.2 (26 января 2026 г., на основе VS Code 1.108.2)

Зачем нужен code-server?

  • Доступ откуда угодно — подключайтесь к своей среде разработки с любого устройства, подключённого к интернету. Начните работу дома и продолжите в дороге.
  • Мощность сервера — тяжёлые сборки, тесты и компиляция выполняются на сервере. Ваш локальный компьютер лишь открывает браузер.
  • Единая среда — все участники команды работают в одинаковом окружении. Проблема «у меня на компьютере работает» исчезает.
  • Экономия заряда — все вычисления происходят на сервере, батарея вашего устройства расходуется медленнее.
  • Безопасность — код остаётся на сервере и не загружается на локальные устройства. Даже при потере ноутбука код в безопасности.

Минимальные системные требования

РесурсМинимумРекомендуется
RAM1 ГБ2+ ГБ
CPU2 vCPU4+ vCPU
ОСLinux (поддержка WebSocket)Ubuntu 22.04+, Debian 12+
Диск5 ГБ20+ ГБ

Способы установки

Способ 1: Install-скрипт (самый простой)

Официальный install-скрипт code-server автоматически определяет оптимальный способ установки для вашей системы.

Сначала запустите в режиме dry-run, чтобы увидеть, какие команды будут выполнены:

curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run

Если всё в порядке, запустите установку:

curl -fsSL https://code-server.dev/install.sh | sh

После установки включите systemd-сервис:

sudo systemctl enable --now code-server@$USER

Откройте в браузере http://127.0.0.1:8080. Пароль находится в файле ~/.config/code-server/config.yaml.

Install-скрипт поддерживает дополнительные параметры:

  • --method=standalone — установка без системного пакетного менеджера
  • --prefix=/usr/local — указание директории установки
  • --version=4.108.2 — установка конкретной версии

Способ 2: Debian/Ubuntu (deb-пакет)

# Скачивание пакета (измените версию при необходимости)
export VERSION=4.108.2
curl -fOL https://github.com/coder/code-server/releases/download/v$VERSION/code-server_${VERSION}_amd64.deb
 
# Установка
sudo dpkg -i code-server_${VERSION}_amd64.deb
 
# Включение сервиса
sudo systemctl enable --now code-server@$USER

Способ 3: Fedora/CentOS/RHEL (rpm-пакет)

export VERSION=4.108.2
curl -fOL https://github.com/coder/code-server/releases/download/v$VERSION/code-server-$VERSION-amd64.rpm
 
sudo rpm -i code-server-$VERSION-amd64.rpm
sudo systemctl enable --now code-server@$USER

Способ 4: macOS (Homebrew)

brew install code-server
brew services start code-server

Способ 5: Docker

mkdir -p ~/.config
 
docker run -it --name code-server \
  -p 127.0.0.1:8080:8080 \
  -v "$HOME/.local:/home/coder/.local" \
  -v "$HOME/.config:/home/coder/.config" \
  -v "$PWD:/home/coder/project" \
  -u "$(id -u):$(id -g)" \
  -e "DOCKER_USER=$USER" \
  codercom/code-server:latest

Зачем нужны тома (volumes)?

  • $HOME/.local — внутренние данные code-server (расширения и т.д.)
  • $HOME/.config — файлы конфигурации (config.yaml, пароль)
  • $PWD — директория вашего проекта

Способ 6: Docker Compose (рекомендуется)

Docker Compose — самый удобный способ для постоянного использования на сервере.

mkdir -p ~/code-server && cd ~/code-server

Создайте файл docker-compose.yml:

docker-compose.yml
services:
  code-server:
    image: codercom/code-server:4.108.2
    container_name: code-server
    restart: unless-stopped
    user: "${UID:-1000}:${GID:-1000}"
    environment:
      - DOCKER_USER=${USER:-coder}
    volumes:
      - ./config:/home/coder/.config
      - ./local:/home/coder/.local
      - ./project:/home/coder/project
    ports:
      - "127.0.0.1:8080:8080"

О LinuxServer.io образе:

В старых руководствах используется образ lscr.io/linuxserver/code-server. Он по-прежнему работает, но рекомендуется использовать официальный образ codercom/code-server — он поддерживается непосредственно авторами проекта и обновляется быстрее.

Запуск:

docker compose up -d

Проверка состояния контейнера:

docker compose ps
docker compose logs code-server

Просмотр начального пароля:

docker compose exec code-server cat /home/coder/.config/code-server/config.yaml

Docker Compose с образом LinuxServer.io

Если вы предпочитаете образ LinuxServer.io:

docker-compose.yml
services:
  code-server:
    image: lscr.io/linuxserver/code-server:latest
    container_name: code-server
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Moscow
      - PASSWORD=безопасный_пароль
      - SUDO_PASSWORD=sudo_пароль
      - DEFAULT_WORKSPACE=/config/workspace
    volumes:
      - ./config:/config
    ports:
      - "8443:8443"

Переменные окружения этого образа:

ПеременнаяОписание
PUID / PGIDID пользователя и группы — для прав доступа к файлам
TZЧасовой пояс (например, Europe/Moscow)
PASSWORDПароль веб-интерфейса (открытый текст)
HASHED_PASSWORDХешированный пароль (вместо PASSWORD)
SUDO_PASSWORDПароль sudo в терминале
PROXY_DOMAINДомен для reverse proxy
DEFAULT_WORKSPACEРабочая директория по умолчанию

Конфигурация

code-server хранит все настройки в файле ~/.config/code-server/config.yaml. Этот файл создаётся автоматически при первом запуске.

config.yaml

~/.config/code-server/config.yaml
bind-addr: 127.0.0.1:8080
auth: password
password: ваш_пароль
cert: false

Основные параметры:

ПараметрОписаниеПример
bind-addrАдрес и порт прослушивания127.0.0.1:8080, 0.0.0.0:443
authМетод аутентификацииpassword или none
passwordПароль доступаПароль открытым текстом
hashed-passwordХешированный парольхеш argon2
certHTTPS-сертификатtrue, false или путь к файлу сертификата
cert-keyКлюч сертификата/path/to/key.pem

Хеширование пароля

Хранить пароль в хешированном виде безопаснее, чем открытым текстом:

# Установка argon2
sudo apt install argon2
 
# Хеширование пароля
echo -n "ваш_пароль" | argon2 saltSOMESALT -e
 
# Добавьте результат в config.yaml
# hashed-password: "$argon2i$v=19$m=4096,t=3,p=1$..."

Параметры командной строки

Настройки можно задавать и через командную строку — вместо или в дополнение к config.yaml:

# Запуск на другом порту
code-server --bind-addr 0.0.0.0:9090
 
# Без пароля (только с reverse proxy!)
code-server --auth none
 
# С HTTPS
code-server --cert /path/to/cert.pem --cert-key /path/to/key.pem

Настройка HTTPS

Никогда не открывайте code-server в интернет без HTTPS и аутентификации! Через code-server доступны терминал и файловая система — это означает полный доступ к вашему серверу.

Самоподписанный сертификат

Самый простой способ — code-server сам генерирует сертификат:

config.yaml
bind-addr: 0.0.0.0:443
auth: password
password: надёжный_пароль
cert: true

Сертификат сохраняется в ~/.local/share/code-server/self-signed.crt.

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

sudo setcap cap_net_bind_service=+ep /usr/lib/code-server/lib/node
sudo systemctl restart code-server@$USER

Самоподписанный сертификат вызовет предупреждение в браузере. Для тестирования этого достаточно, но для продакшена используйте Let's Encrypt.

Бесплатный HTTPS с Let's Encrypt

В продакшене для получения сертификатов Let's Encrypt используйте Caddy или Nginx + Certbot. Подробности — в следующем разделе.

Настройка Reverse Proxy

В продакшене code-server не открывается напрямую в интернет. Вместо этого используется reverse proxy — он обеспечивает HTTPS, поддержку доменного имени и дополнительную безопасность.

С Caddy (самый простой)

Caddy автоматически получает и обновляет сертификаты Let's Encrypt — никакая дополнительная настройка не требуется.

# Установка Caddy (Ubuntu/Debian)
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update && sudo apt install caddy

Создайте Caddyfile:

/etc/caddy/Caddyfile
code.ваш-домен.com {
    reverse_proxy 127.0.0.1:8080
}
sudo systemctl reload caddy

Готово! Caddy автоматически получит HTTPS-сертификат, и code-server будет доступен по адресу code.ваш-домен.com.

С Caddy также можно использовать подпуть:

ваш-домен.com {
    redir /code /code/ 308
    handle_path /code/* {
        reverse_proxy 127.0.0.1:8080
    }
}

С Nginx + Let's Encrypt

# Установка Nginx и Certbot
sudo apt install nginx certbot python3-certbot-nginx

Файл конфигурации Nginx:

/etc/nginx/sites-available/code-server
server {
    listen 80;
    listen [::]:80;
    server_name code.ваш-домен.com;
 
    location / {
        proxy_pass http://127.0.0.1:8080/;
        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection upgrade;
        proxy_set_header Accept-Encoding gzip;
    }
}

Заголовки WebSocket критически важны! Без заголовков Upgrade и Connection code-server не будет работать корректно. VS Code использует WebSocket для связи в реальном времени в браузере.

Включение конфигурации и получение сертификата:

# Включение сайта
sudo ln -s /etc/nginx/sites-available/code-server /etc/nginx/sites-enabled/
 
# Проверка конфигурации
sudo nginx -t
 
# Перезагрузка Nginx
sudo systemctl reload nginx
 
# Получение сертификата Let's Encrypt
sudo certbot --nginx -d code.ваш-домен.com

Certbot автоматически обновит конфигурацию Nginx для HTTPS и будет обновлять сертификат каждые 90 дней.

SSH Port Forwarding

Если нет возможности настроить домен или сертификат, самый безопасный и простой способ — SSH-туннель.

# Открытие туннеля с локальной машины на сервер
ssh -N -L 8080:127.0.0.1:8080 user@server-ip

Теперь откройте в браузере http://127.0.0.1:8080. Весь трафик шифруется через SSH.

Для постоянного SSH-туннеля добавьте в ~/.ssh/config:

~/.ssh/config
Host code-server
    HostName server-ip
    User ваш-пользователь
    LocalForward 8080 127.0.0.1:8080
    ServerAliveInterval 5
    ExitOnForwardFailure yes

Теперь просто выполните:

ssh -N code-server

Обновление code-server

При установке через systemd

curl -fsSL https://code-server.dev/install.sh | sh
sudo systemctl restart code-server@$USER

С Docker Compose

cd ~/code-server
 
# Получение нового образа
docker compose pull
 
# Перезапуск контейнеров
docker compose up -d
 
# Очистка старых образов
docker image prune -f

Рекомендации по безопасности

Важные правила безопасности:

  1. Никогда не открывайте code-server в интернет без аутентификации и шифрования. Через терминал можно получить полный доступ к серверу.

  2. Используйте надёжный пароль. code-server защищает от брутфорса (2 попытки в минуту плюс 12 дополнительных в час), но надёжный пароль важен в любом случае.

  3. Всегда используйте HTTPS — выберите один из способов:

    • Caddy (автоматический Let's Encrypt)
    • Nginx + Certbot
    • SSH-туннель
    • cert: true (самоподписанный — только для тестирования)
  4. Настройте файрвол. Открывайте порт code-server (8080) только для localhost или reverse proxy.

# Разрешить только SSH и HTTPS через UFW
sudo ufw allow ssh
sudo ufw allow 'Nginx Full'
sudo ufw enable
  1. Внешняя аутентификация может использоваться как дополнительный уровень защиты:

Полезные советы

Установка расширений

code-server поддерживает расширения VS Code. Их можно установить через панель расширений внутри VS Code или из командной строки:

# Установка расширения
code-server --install-extension ms-python.python
code-server --install-extension dbaeumer.vscode-eslint
 
# Список установленных расширений
code-server --list-extensions

code-server использует маркетплейс Open VSX (opens in a new tab) (не Microsoft marketplace). Большинство популярных расширений доступны, но некоторые могут быть только в Microsoft marketplace.

Проксирование веб-сервисов

Для доступа извне к веб-приложениям, работающим внутри code-server (например, React dev server, API server):

Метод поддоменов (рекомендуется):

code-server --proxy-domain ваш-домен.com

Приложение на порту 3000 будет доступно по адресу 3000.ваш-домен.com.

Метод подпути:

code-server автоматически предоставляет путь /proxy/<port>/. Например, приложение на порту 3000 доступно по адресу https://code.ваш-домен.com/proxy/3000/.

Дополнительные ресурсы