01Концепция и стек.
Вместо того чтобы держать тяжелые AI-агенты на локальном ноутбуке и вручную переключать ветки в Git, мы строим выделенную удаленную среду на чистом VPS сервере (Ubuntu 24.04 или 22.04 LTS).
В основе системы лежит Orca — среда оркестрации (ADE), позволяющая запускать несколько параллельных AI-агентов (OpenAI Codex, Claude Code, Antigravity CLI). Каждый агент изолирован в своем собственном Git Worktree, не перезаписывает чужие файлы, а вы управляете процессом через Web-клиент или приложение на Mac/iPhone.
02Подготовка сервера и настройка Swap.
Зачем это нужно: AI-агенты и среда выполнения Chromium при одновременной работе могут кратковременно потреблять больше оперативной памяти, чем выделено на базовом тарифе VPS (например, 1–2 GB RAM). Swap предотвращает аварийное завершение процессов ядром Linux (OOM Killer).
Подключитесь к вашему новому серверу под пользователем root по SSH и выполните блок команд:
# Создаем файл подкачки размером 2 GB
fallocate -l 2G /swapfile || dd if=/dev/zero of=/swapfile bs=1M count=2048
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo "/swapfile none swap sw 0 0" >> /etc/fstab
# Настраиваем swappiness: использовать swap только при реальном дефиците RAM
sysctl vm.swappiness=10
echo "vm.swappiness=10" >> /etc/sysctl.conf
03Установка зависимостей и виртуального дисплея (Xvfb).
Зачем это нужно: Диспетчер Orca базируется на Electron/Chromium. На сервере без физического монитора (Headless VPS) для запуска графического стека необходим виртуальный X-сервер (Xvfb) и библиотеки рендеринга.
export DEBIAN_FRONTEND=noninteractive
apt-get update -y
apt-get install -y \
curl wget file jq git ca-certificates build-essential \
xvfb zlib1g-dev libfuse2t64 \
libnss3 libatk1.0-0t64 libatk-bridge2.0-0t64 libcups2t64 libdrm2 \
libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1 \
libpango-1.0-0 libcairo2 libasound2t64 \
libgtk-3-0t64 libnotify4 libsecret-1-0 libxss1
04Создание сервисного пользователя и папок проектов.
Зачем это нужно: Запуск браузера и непроверенного кода агентов напрямую из-под суперпользователя root небезопасен (Chromium отключает песочницу). Мы создаем пользователя orca, копируем ему SSH-ключи и выделяем права sudo без пароля.
# Создаем пользователя orca и директории проектов
useradd --system --create-home --shell /bin/bash orca
mkdir -p /home/orca/.ssh /home/user/projects /home/orca/projects
cp /root/.ssh/authorized_keys /home/orca/.ssh/authorized_keys 2>/dev/null || true
chown -R orca:orca /home/orca /home/user
chmod 700 /home/orca/.ssh && chmod 600 /home/orca/.ssh/authorized_keys 2>/dev/null || true
chmod -R 775 /home/user
# Добавляем права sudo
usermod -aG sudo orca
echo "orca ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/orca
# Скачиваем бинарник Orca AppImage
mkdir -p /opt/orca
curl -L https://github.com/stablyai/orca/releases/latest/download/orca-linux.AppImage -o /opt/orca/orca-linux.AppImage
chmod 755 /opt/orca/orca-linux.AppImage
05Настройка службы автозапуска Systemd.
Зачем это нужно: Orca Server должен непрерывно работать в фоновом режиме и автоматически подниматься при перезагрузке VPS.
Скрипт ниже автоматически определяет публичный IP вашего сервера и формирует конфигурационный юнит orca-serve.service:
# Автоматически определяем внешний IP сервера
SERVER_IP=$(curl -s https://ifconfig.me || ip route get 1 | awk '{print $(NF-2);exit}')
cat << EOF > /etc/systemd/system/orca-serve.service
[Unit]
Description=Orca runtime server
After=network-online.target
Wants=network-online.target
StartLimitIntervalSec=300
StartLimitBurst=5
[Service]
Type=simple
User=orca
WorkingDirectory=/home/orca
Environment=LIBGL_ALWAYS_SOFTWARE=1
ExecStart=/opt/orca/orca-linux.AppImage serve --port 6768 --pairing-address $SERVER_IP
StandardOutput=journal
StandardError=journal
KillMode=mixed
Restart=on-failure
RestartPreventExitStatus=3
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
# Активируем и запускаем службу
systemctl daemon-reload
systemctl enable --now orca-serve.service
06Установка Node.js, GitHub CLI и AI-агентов.
Зачем это нужно: Разворачиваем среду Node.js 20 LTS, GitHub CLI для бесшовного доступа к приватным репозиториям и глобальные пакеты агентов OpenAI Codex, Claude Code и Antigravity CLI.
# 1. Node.js 20 LTS + pnpm
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt-get install -y nodejs && npm install -g pnpm
# 2. GitHub CLI (gh) и системный хелпер учетных данных
mkdir -p -m 755 /etc/apt/keyrings
wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null
chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null
apt-get update -y && apt-get install -y gh
git config --system credential.helper ""
git config --system --add credential.helper "/usr/bin/gh auth git-credential"
# 3. Установка агентов Codex и Claude
npm install -g @anthropic-ai/claude-code @openai/codex
# 4. Установка Google Antigravity CLI (agy)
curl -fsSL https://antigravity.google/cli/install.sh | bash
ln -sf /home/orca/.local/bin/agy /usr/local/bin/agy
ln -sf /home/orca/.local/bin/agy /usr/local/bin/antigravity
# 5. Глобальный диспетчер orca CLI и установка 8 встроенных навыков
cat << 'EOF' > /usr/local/bin/orca
#!/bin/bash
if [ -x /home/orca/.local/bin/orca ]; then
exec /home/orca/.local/bin/orca "$@"
else
LIBGL_ALWAYS_SOFTWARE=1 exec /opt/orca/orca-linux.AppImage "$@"
fi
EOF
chmod 755 /usr/local/bin/orca
orca skills install --all
Для авторизации GitHub на сервере выполните: gh auth login (выберите GitHub.com → HTTPS → Log in with a web browser и введите код в браузере).
07Изолированный прокси для Antigravity (Опционально).
Зачем это нужно: Если VPS физически расположен в РФ, Google AI блокирует прямые запросы к Antigravity («not available in your location»). Мы настраиваем прокси строго внутри обертки команды agy. Вся остальная система (npm, git, orca, claude, codex) продолжит работать напрямую на полной скорости канала.
# Переименовываем оригинальный исполняемый файл
if [ ! -f /home/orca/.local/bin/agy-real ]; then
mv /home/orca/.local/bin/agy /home/orca/.local/bin/agy-real
fi
# Создаем обертку с вашим HTTP/SOCKS5 прокси
cat << 'EOF' > /usr/local/bin/agy
#!/bin/bash
# УКАЖИТЕ ЗДЕСЬ ВАШ ПРОКСИ:
PROXY_URL="http://login:password@ip:port"
export HTTP_PROXY="$PROXY_URL"
export HTTPS_PROXY="$PROXY_URL"
export ALL_PROXY="$PROXY_URL"
export NO_PROXY="localhost,127.0.0.1,::1"
exec /home/orca/.local/bin/agy-real "$@"
EOF
chmod 755 /usr/local/bin/agy
ln -sf /usr/local/bin/agy /home/orca/.local/bin/agy
08Получение ссылки сопряжения и подключение.
После запуска службы Orca генерирует защищенный токен и Pairing URL со сквозным шифрованием. Посмотреть его можно прямо в логах systemd:
journalctl -u orca-serve.service -n 30 --no-pager | grep "Web client URL"
В терминале отобразится ссылка вида http://IP:6768/web-index.html#pairing=orca://pair?code=...:
- Через браузер: Просто откройте полученную ссылку на компьютере.
- Через macOS / Windows приложение: Установите Desktop-клиент (
brew install --cask stablyai/orca/orca), нажмите Connect to Remote Server и вставьте Pairing URL. - С мобильного телефона: Скачайте приложение Orca IDE (iOS / Android) и вставьте строку сопряжения для контроля агентов в пути.
Автор материала
Обновлено