Веб-сервер кода Python: установка и конфигурация code-server
Основное решение: установка code-server на Linux
Code-server (официальное название Coder) - это веб-версия Visual Studio Code, работающая на сервере и доступная через браузер. Это позволяет писать код на Python (и любых других языках) с любого устройства, сохраняя все возможности полноценной IDE. Рассмотрим базовую установку на сервер с Ubuntu 22.04.
Шаг 1. Загрузка и установка скриптом
curl -fsSL https://code-server.dev/install.sh | shHttps сервер python (http сервер на python)
Скрипт скачивает последнюю версию code-server и устанавливает её в /usr/lib/code-server. После завершения в терминале появится сообщение об успешной установке.
Шаг 2. Запуск code-server
code-serverCode server python (сервер кода python (code-server))
По умолчанию сервер запускается на порту 8080 и слушает все интерфейсы. Пароль для входа генерируется автоматически и выводится в консоли (строка вида Password: ********).
Шаг 3. Настройка авторизации и порта
Файл конфигурации находится в ~/.config/code-server/config.yaml. Измените в нём password: на свой пароль, bind-addr: - на 0.0.0.0:8080 или нужный порт. Перезапустите сервер.
sudo systemctl restart code-server@$USERлокальный сервер python (локальный сервер на python)
Теперь code-server доступен по адресу http://ваш-сервер:8080.
Шаг 4. Установка Python-расширений
Откройте code-server в браузере, нажмите Ctrl+Shift+X и найдите Python (Microsoft). Установите его. Для работы линтера и форматтера дополнительно установите pylint и black на сервере:
pip install pylint black
Как развернуть code-server в изолированном контейнере?
Используйте официальный Docker-образ codercom/code-server. Это удобно, если нужна чистая среда без влияния на основную систему.
docker run -d --name code-server -p 8080:8080 -v "$HOME/.config:/home/coder/.config" codercom/code-server:latest
Пароль задаётся через переменную окружения PASSWORD. Добавьте -e PASSWORD=mysecret. Тома монтируются для сохранения настроек.
Как установить code-server вручную, без curl?
Альтернативный способ - скачать deb/rpm пакет с GitHub releases и установить через пакетный менеджер:
wget https://github.com/coder/code-server/releases/download/v4.96.2/code-server_4.96.2_amd64.deb
sudo dpkg -i code-server_4.96.2_amd64.deb
После установки запустите code-server и настройте конфиг как указано выше.
Как использовать code-server с Nginx в качестве обратного прокси?
Это позволяет использовать стандартный порт 443 (HTTPS) и добавить SSL-сертификат. Пример конфигурации Nginx:
server {
listen 443 ssl;
server_name code.example.com;
ssl_certificate /etc/letsencrypt/live/code.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/code.example.com/privkey.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.
Частые проблемы и их решение
Проблема: code-server не стартует, порт уже занят.
Решение: Проверьте, какой процесс использует порт: sudo lsof -i:8080. Остановите его или измените порт в конфиге.
Проблема: При входе выводится 404 или страница не загружается.
Решение: Убедитесь, что bind-addr в config.yaml равен 0.0.0.0:8080, а не 127.0.0.1. Перезапустите сервер.
Проблема: Ошибка fork/exec /usr/lib/code-server/lib/node: no such file or directory при запуске systemd.
Решение: Установите Node.js версии 18+ или выполните переустановку code-server через скрипт.
Проблема: Не хватает оперативной памяти на маленьком сервере (1GB RAM).
Решение: Ограничьте использование памяти через systemd или добавьте swap. В конфиге code-server можно отключить некоторые расширения.
Расширенные примеры использования code-server для Python
Ниже приведены нестандартные сценарии и подробные примеры команд, которые помогут гибко настроить среду разработки через браузер.
1. Запуск нескольких экземпляров code-server для разных проектов
Каждый экземпляр может иметь свой конфиг и свои расширения. Используем разные порты.
# Первый экземпляр для проекта A
mkdir -p ~/projects/a ~/.config/code-server-a
cat > ~/.config/code-server-a/config.yaml < ~/.config/code-server-b/config.yaml <
Результат: два независимых IDE по адресам http://сервер:8081 и http://сервер:8082.
2. Использование Docker Compose для полного окружения с Python и Jupyter
Создадим файл docker-compose.yml, который запускает code-server с предустановленными Python-библиотеками.
version: '3.8'
services:
code-server:
image: codercom/code-server:latest
ports:
- '8443:8080'
volumes:
- './project:/home/coder/project'
- './config:/home/coder/.config/code-server'
environment:
- PASSWORD=my_python_ide
- DEFAULT_WORKSPACE=/home/coder/project
user: root
command: >
sh -c "
apt-get update && apt-get install -y python3-pip &&
pip install numpy pandas matplotlib jupyter &&
code-server --install-extension ms-python.python &&
code-server --bind-addr 0.0.0.0:8080 --auth password
"
Запуск: docker-compose up -d. После первого запуска расширения и пакеты установятся. Пароль my_python_ide.
3. Интеграция с Git при запуске через systemd
Создадим сервис systemd, который автоматически клонирует репозиторий при старте и открывает его в code-server.
sudo cat > /etc/systemd/system/code-server-git.service <
Сервер запускается с проектом, а при перезагрузке Git-репозиторий автоматически обновляется.
4. Настройка собственного SSL с помощью Let's Encrypt и автоматическим обновлением
Предположим, Nginx уже установлен. Используем certbot для получения сертификатов.
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d code.example.com
# После успешного получения сертификат будет добавлен в конфигурацию Nginx (пример конфига выше)
# Добавим задачу cron для автоматического обновления
sudo crontab -e
# Добавить строку:
0 3 * * * /usr/bin/certbot renew --quiet && systemctl reload nginx
Теперь code-server доступен по HTTPS с валидным сертификатом, что важно для production-среды.
5. Автоматическая установка расширений через скрипт при развёртывании
Создайте shell-скрипт setup-code-server.sh, который выполняется сразу после установки.
#!/bin/bash
# Установка расширений, необходимых для Python разработки
extensions=(
"ms-python.python"
"ms-python.vscode-pylance"
"njpwerner.autodocstring"
"wholroyd.jinja"
"ms-toolsai.jupyter"
)
for ext in "${extensions[@]}"; do
code-server --install-extension "$ext"
done
# Создание конфига пользователя с настройками Python
cat > ~/.config/code-server/config.yaml < ~/.local/share/code-server/User/settings.json <
Результат выполнения скрипта: все расширения установлены, конфигурация готова, форматирование включено.
# Пример вывода после установки расширений: Installing extensions... Extension 'ms-python.python' v2024.12.0 successfully installed. Extension 'ms-python.vscode-pylance' v2024.12.1 successfully installed. ... Code-server настроен для Python