Як запустити OpenCode на VPS у tmux
Дізнайтеся, як встановити OpenCode на VPS для непривілейованого користувача, запустити його в tmux і захистити API key у приватному файлі.
Що таке OpenCode і що ви налаштовуєте
OpenCode — це open source AI coding agent для термінала. Ви запускаєте його в каталозі проєкту, після чого він читає код, пропонує зміни, редагує файли та виконує команди через термінальний інтерфейс користувача (TUI). OpenCode поширюється за ліцензією MIT і підключається до понад 75 постачальників моделей. Станом на середину 2026 року він має приблизно 165,000 зірок на GitHub і є open source coding agent із найбільшою кількістю зірок. Щоб запустити OpenCode на VPS, встановіть його для окремого непривілейованого користувача, збережіть API key моделі у приватному файлі та запустіть OpenCode у tmux, щоб сесія збереглася після розриву з’єднання. Цей посібник виконує ці кроки саме в такому порядку.
Одне уточнення щодо назв допоможе уникнути плутанини. Канонічний репозиторій — anomalyco/opencode, який підтримує команда Anomaly (раніше відома як SST), а раніше проєкт розміщувався в sst/opencode. На GitHub також є інший, не пов’язаний із ним репозиторій opencode-ai/opencode, тому перевірте, що читаєте документацію потрібного проєкту. Офіційний сайт — opencode.ai.
Навіщо запускати OpenCode на VPS
Сеанс coding agent триває довго. OpenCode може протягом багатьох хвилин виконувати рефакторинг або запускати набір тестів. Якщо він працює на ноутбуці, закриття кришки або розрив Wi-Fi перериває сеанс посеред завдання. На VPS усередині tmux агент продовжує працювати після відключення, а пізніше ви можете під’єднатися знову й переглянути виконану роботу. Це така сама схема, як запускати Claude Code на VPS із tmux, і це найбільше покращення зручності під час перенесення агента з ноутбука.
Друга причина — розміщення. VPS розташований близько до коду, який ви розгортаєте: репозиторій, інструменти збірки, тестова база даних і часто staging-середовище вже розміщені на ньому або поруч. Агент, який редагує код і запускає тести, найкраще працює на машині, де ці тести фактично виконуються. Оскільки це сервер під вашим контролем, ви можете навмисно надати агенту ізольоване середовище. Наступний розділ описує цей підхід.
Якщо ви ще обираєте інструмент, у матеріалі запускати coding AI agent на VPS порівнюються інші рішення, зокрема Aider і Goose.
Надайте OpenCode окремого користувача
Почнімо з очевидного: coding agent редагує файли та виконує команди. Це його завдання, але водночас і ризик. OpenCode виконуватиме збірки, тести та будь-які shell-команди, які, на думку завдання, потрібні, а оцінка моделі добра, але не безпомилкова. Обліковий запис, від імені якого працює agent, визначає максимальний рівень доступу, якого може досягти шкідлива команда. Тому не запускайте його від імені root і не використовуйте того самого користувача, який адмініструє сервер.
На відміну від background agent, OpenCode працює в інтерактивному режимі, тому його користувачеві потрібні справжня shell і домашній каталог:
sudo useradd --create-home --shell /bin/bash opencode
sudo -iu opencodeЗберігайте проєкти, з якими він має працювати, у /home/opencode і клонувати їх від імені цього користувача. Не надавайте обліковому запису прав sudo. Якщо agent виконає руйнівну команду, він зможе знищити лише те, чим володіє цей обліковий запис. Це той самий принцип, що й запуск сервісів від імені непривілейованого користувача. Також працюйте всередині git-репозиторію, оскільки репозиторій перетворює будь-яке невдале редагування на git revert, а не на втрату.
Встановлення OpenCode
У документації проєкту описано 2 способи встановлення. Скрипт встановлення є найшвидшим. Запуск від імені користувача opencode зберігає всі файли в домашньому каталозі цього користувача:
curl -fsSL https://opencode.ai/install | bashЗвична для curl | bash практика застосовується і тут. На важливому для вас сервері спочатку завантажте скрипт, перегляньте його, а потім запустіть. Після встановлення запустіть нову оболонку, щоб зміна PATH, внесена інсталятором, набула чинності. Потім перевірте відповідь бінарного файлу:
opencode --versionЯкщо ви надаєте перевагу менеджеру пакетів і Node.js уже встановлено на сервері, варіант із npm встановлює той самий інструмент у системі. У результаті бінарний файл opencode додається до PATH для всіх користувачів:
sudo npm install -g opencode-aiВ обох випадках перевірка однакова: opencode --version виводить номер версії. command not found після встановлення через скрипт означає, що поточна оболонка ще не прочитала оновлений PATH. Вийдіть із системи та знову увійдіть як користувач opencode.
Розмістіть API key у приватному файлі
OpenCode потребує key для вибраного вами model provider. Цей key може витрачати ваші кошти, тому поводьтеся з ним як із паролем. Створіть файл, який може читати лише користувач opencode, із mode 600. Зберігайте key у цьому файлі, а не вводьте його безпосередньо в команди, де він залишиться в історії shell:
install -m 600 /dev/null ~/opencode.env
nano ~/opencode.envЗапишіть у файл змінну вашого provider, наприклад ANTHROPIC_API_KEY=... або еквівалентну змінну для вашого provider. OpenCode використовує стандартні змінні середовища provider. Завантажте файл у shell перед запуском agent:
set -a; source ~/opencode.env; set +aOpenCode також має інтерактивну альтернативу: команда /connect у TUI допоможе додати provider і збереже облікові дані у ~/.local/share/opencode/auth.json у домашньому каталозі користувача. Якщо ви виберете цей спосіб, перевірте приватність файлу за допомогою chmod 600 ~/.local/share/opencode/auth.json. Обидва способи не дають key потрапити до командного рядка. Виберіть один спосіб і використовуйте його послідовно.
Запуск OpenCode у tmux
Саме tmux робить налаштування VPS виправданим, оскільки сеанс tmux продовжує працювати після завершення SSH-з’єднання. Створіть сеанс, перейдіть до свого проєкту та запустіть агента:
tmux new -s opencode
cd ~/my-project
opencodeВи маєте побачити відкритий TUI із запитом унизу та назвою проєкту в інтерфейсі. Сформулюйте завдання звичайною мовою, і агент почне читати файли та пропонувати зміни. Щоб вийти, від’єднайтеся за допомогою Ctrl-b, а потім d. Агент продовжить працювати, навіть якщо ноутбук закритий. Пізніше знову під’єднайтеся:
tmux attach -t opencodeСеанс, діалог і будь-яке завдання, що виконується, залишаться саме в тому стані, у якому ви їх залишили. Це переживає розриви з’єднання, але не перезавантаження сервера. Після перезавантаження створіть новий сеанс tmux у такий самий спосіб. Ви також можете відкрити друге вікно tmux і запустити ще одного агента паралельно з першим. Водночас сеанси OpenCode залишаються незалежними один від одного, тоді як сеанси Claude Code на тому самому сервері можуть надсилати повідомлення один одному. Це інший спосіб розділити завдання на дві частини.
Виберіть модель
OpenCode не прив’язаний до конкретного провайдера. Він використовує AI SDK і каталог Models.dev для підтримки понад 75 провайдерів. Тому один і той самий інструмент працює з Anthropic, OpenAI, Google та десятками інших провайдерів, зокрема з локальними серверами. Найшвидший спосіб — команда /connect у TUI. Вона показує список провайдерів і допомагає налаштувати облікові дані. Для конфігурації, яку можна додати до репозиторію та відтворити, створіть opencode.json у корені проєкту й задайте модель як provider/model-id:
{
"$schema": "https://opencode.ai/config.json",
"model": "anthropic/claude-sonnet-4-20250514"
}Локальна модель працює через той самий файл, оскільки будь-який OpenAI-compatible сервер можна оголосити як провайдер. Якщо ви обслуговуєте модель через Ollama на тому самому VPS, конфігурація має вказувати на його локальний API, а назва моделі — відповідати значенню, яке показує ollama list у вашій системі:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"name": "Ollama (local)",
"options": { "baseURL": "http://127.0.0.1:11434/v1" },
"models": { "your-model-name": { "name": "Local coding model" } }
}
}
}Варто відразу використовувати одну вбудовану можливість. OpenCode постачається з двома агентами, між якими можна перемикатися клавішею Tab: Build — агент за замовчуванням із повним доступом, і Plan — агент, якому заборонено вносити зміни. Починайте нове завдання в Plan, дайте агенту прочитати код і запропонувати підхід, а до Build перемикайтеся лише після схвалення плану. На сервері такий спочатку доступ лише для читання є простим заходом безпеки. Claude Code подає той самий вибір як режими дозволів, а перехід у ньому до auto mode за замовчуванням варто прочитати, якщо ви використовуєте обидва інструменти. Режим, у якому запускається сесія, визначає, які зміни може внести агент без нагляду.
Радіус ураження, якщо говорити прямо
Coding agent не є пасивним, тому чітко визначте, що саме забезпечує ця конфігурація, а чого вона не забезпечує. Вона обмежує пошкодження файлів: користувач opencode володіє лише власним home-каталогом і більше нічим, тому редагування та видалення не виходять за цю межу. Вона обмежує розкриття облікових даних: ключ зберігається в одному файлі з mode 600 в одному обліковому записі. Вона не обмежує те, що цей обліковий запис може легітимно виконувати. Якщо в каталозі проєкту зберігаються облікові дані для розгортання production, agent може їх використати. Повністю зберігайте такі дані поза обліковим записом agent.
На відміну від gateway agent, такого як OpenClaw, OpenCode є інтерактивною terminal-програмою, а не daemon. Він не відкриває listening port і не має довготривалого сервісу. Тому для самого agent не потрібно створювати systemd unit або налаштовувати firewall для порту. Обмеження забезпечують обліковий запис користувача та каталог проєкту. Саме тому перший розділ цього посібника є найважливішим.
Сервер навколо нього все одно потребує стандартного захисту, оскільки coding VPS залишається публічним сервером: SSH лише за ключами з вимкненим root login, як описано в розділі Посилення захисту SSH на VPS, firewall із політикою default-deny і регулярні оновлення. Також перевіряйте результат роботи agent. Читайте його diff перед публікацією змін так само, як читали б pull request від нового учасника команди, оскільки саме ви розгортаєте результат.
Нарешті, підтримуйте сам інструмент в актуальному стані. OpenCode часто випускає нові версії, а оновлення містять важливі виправлення для програми, яка виконує команди на вашому сервері. Оновлення виконується тим самим способом, яким ви встановлювали інструмент: повторно запустіть install script від імені користувача opencode або виконайте sudo npm update -g opencode-ai, якщо встановлювали через npm. Потім перевірте нову версію за допомогою opencode --version. Періодичне обслуговування займає менше часу, ніж налагодження поведінки, яку вже виправили в build кількамісячної давності.
FAQ
Чи може OpenCode використовувати локальну модель замість платного API?
Так. OpenCode розглядає будь-який OpenAI-compatible server як provider, тому модель, яку Ollama надає на тому самому VPS, працюватиме. Оголосіть provider у opencode.json, указавши локальний baseURL і назву моделі, яку повідомляє Ollama. Обмеженням є апаратні ресурси: модель, придатна для повноцінної роботи з кодом, потребує значного обсягу пам’яті. Тому підберіть конфігурацію сервера під модель, перш ніж завантажувати її.
Як залишити OpenCode запущеним після закриття ноутбука?
Запустіть його в tmux на VPS. Запустіть agent в іменованій сесії за допомогою tmux new -s opencode, від’єднайтеся клавішами Ctrl-b, потім d. Сесія продовжить працювати на сервері після завершення SSH-з’єднання. У будь-який момент під’єднайтеся знову за допомогою tmux attach -t opencode. Розмова та всі запущені завдання залишаться доступними. Перезавантаження сервера завершує сесію, тому після перезавантаження запустіть нову.
Чи безпечно дозволяти OpenCode виконувати команди на моєму VPS?
Це можна безпечно організувати, якщо обмежити його доступ. Створіть для OpenCode окремого непривілейованого користувача без sudo. Зберігайте його проєкти в git, щоб кожну зміну можна було скасувати. Збережіть API key у файлі з режимом 600. Спочатку використайте його Plan agent для роботи лише в режимі читання, а вже потім дозвольте Build agent вносити зміни. У такому разі agent зможе пошкодити лише ресурси, власником яких є його обліковий запис. Решта сервера залишатиметься недоступною.
У чому різниця між OpenCode і Claude Code?
OpenCode має відкритий вихідний код (MIT) і не залежить від конкретного provider. Через один інтерфейс він підключається до понад 75 model providers, зокрема локальних. Claude Code — власний terminal agent компанії Anthropic, створений для роботи з моделями Anthropic. Якщо вам потрібен один інструмент для роботи з багатьма providers або повністю self-hosted stack із локальною моделлю, OpenCode буде відповідним варіантом. Обидва інструменти добре працюють на VPS у tmux із тією самою схемою непривілейованого користувача.