Як запустити OpenCode на VPS у tmux
Дізнайтеся, як встановити OpenCode на VPS для непривілейованого користувача, запустити його в tmux і захистити API key у приватному файлі.
Що таке OpenCode і що ви налаштовуєте
OpenCode — це open source AI-агент для написання коду, призначений для роботи в терміналі. Ви запускаєте його в каталозі проєкту, після чого він читає код, пропонує зміни, редагує файли та виконує команди через термінальний інтерфейс користувача (TUI). OpenCode поширюється за ліцензією MIT і підключається до понад 75 постачальників моделей. Станом на жовтень 2026 року він має близько 219,000 зірок на GitHub і є open source coding agent із найбільшою кількістю зірок. Щоб запустити OpenCode на VPS, встановіть його під окремим непривілейованим користувачем, збережіть API-ключ моделі у приватному файлі та запустіть його всередині 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-команди, потрібні для завдання. Модель добре оцінює ситуацію, але не безпомилково. Обліковий запис, від імені якого працює агент, визначає межу доступу, яку може отримати небезпечна команда. Тому не запускайте його від імені root і не використовуйте того самого користувача, який адмініструє сервер.
На відміну від background agent, OpenCode є інтерактивним. Тому його користувачеві потрібні справжня оболонка та домашній каталог:
sudo useradd --create-home --shell /bin/bash opencode
sudo -iu opencodeЗберігайте проєкти, з якими він має працювати, у /home/opencode. Клонуйте їх від імені цього користувача. Не надавайте обліковому запису права sudo. Якщо агент виконає деструктивну команду, він зможе знищити лише те, що належить цьому користувачеві. Це той самий принцип, що й у випадку запуску сервісів від імені непривілейованого користувача. Також працюйте всередині git-репозиторію та створюйте commit перед тим, як передати агенту завдання. Тоді помилкове редагування вже збереженої версії можна буде виправити за допомогою git revert або git restore, а не втратити її. Незакомічені зміни не захищені.
Встановлення OpenCode
У документації проєкту описано кілька способів встановлення, і два з них підходять для сервера. Скрипт встановлення є найшвидшим варіантом, а його запуск від імені користувача opencode зберігає всі файли в домашньому каталозі цього користувача:
curl -fsSL https://opencode.ai/install | bashТут діє звична практика curl | bash: на важливому для вас сервері спочатку завантажте скрипт, прочитайте його, а потім запустіть. Після встановлення запустіть нову оболонку, щоб зміна PATH, внесена інсталятором, почала діяти, а потім перевірте, чи відповідає бінарний файл:
opencode --versionЯкщо ви надаєте перевагу пакетному менеджеру, а Node.js уже встановлено на сервері, варіант із npm встановить той самий інструмент у глобальний префікс npm:
sudo npm install -g opencode-aiУ разі системного Node.js цим префіксом зазвичай є /usr/local або /usr, а його каталог bin міститься в PATH кожного користувача. Менеджер версій або власний префікс розміщує бінарний файл в іншому місці, тому за потреби спочатку виконайте npm prefix -g, щоб користувач opencode міг знайти opencode.
У будь-якому разі перевірка однакова: opencode --version виводить номер версії. command not found після встановлення скриптом означає, що поточна оболонка ще не прочитала оновлений PATH, тому вийдіть із системи та знову увійдіть як користувач opencode.
Обидві команди встановлюють гілку OpenCode 1.x, для якої й надалі виходять нові релізи (1.19.3 станом на 16 October 2026), і цей посібник описує саме її. OpenCode 2 уже доступний як окреме встановлення через https://opencode.ai/v2/install або пакет npm @opencode/cli, але він працює інакше: спільний фоновий сервер для кожного облікового запису користувача керує сесіями, дозволами та виконанням інструментів, а термінал підключається до нього. У посібнику з міграції зазначено, що перед встановленням версії 2 потрібно видалити встановлену через пакетний менеджер версію 1.x, оскільки обидві використовують команду 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-5-5"
}Виберіть модель, яку ваш постачальник ще надає. Anthropic припинив підтримку claude-sonnet-4-20250514 15 June 2026, тому конфігурації, у яких досі вказано цю модель, завершуються помилкою.
Локальна модель працює через той самий файл, оскільки будь-який OpenAI-compatible server можна оголосити як постачальника. Якщо ви обслуговуєте модель за допомогою 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 не є повністю доступним лише для читання, оскільки він усе ще може виконувати shell-команди, а shell-команда може змінювати файли. Починайте нове завдання в Plan, дозвольте йому прочитати код і запропонувати підхід, а до Build перемикайтеся лише після того, як погодите план. Якщо перший етап має бути справді доступним лише для читання, забороніть для Plan редагування та shell-команди у opencode.json, оскільки OpenCode розглядає deny як блокування дії, тоді як ask лише запитує вашого схвалення:
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"plan": {
"permission": { "edit": "deny", "bash": "deny" }
}
}
}На сервері перший етап без можливості щось змінити є простим запобіжним заходом. Claude Code описує той самий вибір як режими дозволів, а зміну на auto mode за замовчуванням варто прочитати, якщо ви використовуєте обидва інструменти, оскільки режим, у якому запускається сесія, визначає, які зміни агент може виконувати без нагляду.
Реальні межі впливу
Coding agent не є пасивним, тому чітко визначте, що саме ізолює ця конфігурація, а що — ні. Вона обмежує пошкодження файлів: користувач opencode володіє лише власним home-каталогом і нічим іншим, тому редагування та видалення не виходять за ці межі. Вона не запобігає розкриттю облікових даних: ключ зберігається в одному файлі з правами 600 у межах одного облікового запису. Вона не обмежує те, що обліковий запис може легітимно виконувати. Якщо в каталозі проєкту зберігаються облікові дані для розгортання в production, agent може ними скористатися. Такі дані потрібно повністю виключити з облікового запису agent.
На відміну від gateway agent, такого як OpenClaw, OpenCode 1.x — це інтерактивна термінальна програма, а не daemon. За замовчуванням вона не відкриває listening port. Лише прапорці --port, --hostname або --mdns змушують TUI приймати з’єднання. У неї також немає довготривалого сервісу. Тому для самого agent не потрібно створювати unit systemd або відкривати порт у firewall. OpenCode 2 змінює це завдяки спільному фоновому server, тому перед міграцією повторно перевірте цей момент. Ізоляцію забезпечують обліковий запис користувача та каталог проєкту. Саме тому перший розділ цього посібника має найбільше значення.
Сам сервер також потребує стандартного захисту, оскільки coding VPS залишається публічним сервером: SSH лише за ключем із вимкненим входом для root, як описано в розділі Посилення захисту SSH на VPS, firewall за замовчуванням із забороною всього вхідного трафіку та регулярні оновлення. Перевіряйте також результат, який створює agent. Читайте його diff перед передаванням змін, так само як pull request від нового учасника команди, оскільки саме ви розгортаєте цей результат.
Нарешті, своєчасно оновлюйте сам інструмент. OpenCode часто випускає нові версії, а оновлення містять виправлення, важливі для програми, яка виконує команди на вашому сервері. Оновлення виконується тим самим способом, яким ви встановлювали інструмент: повторно запустіть install script від імені користувача opencode або виконайте sudo npm update -g opencode-ai, якщо встановлювали через npm. Потім перевірте нову версію командою opencode --version. Обидва способи залишають вас у гілці 1.x. Перехід на OpenCode 2 — це окрема міграція. Коротке періодичне обслуговування дешевше, ніж діагностика проблеми, яку збірка кількамісячної давності вже виправила.
FAQ
Чи може OpenCode використовувати локальну модель замість платного API?
Так. OpenCode розглядає будь-який OpenAI-сумісний сервер як провайдера, тому модель, яку Ollama обслуговує на тому самому VPS, працює. Оголосіть провайдера у opencode.json, указавши локальний baseURL та назву моделі, яку повідомляє Ollama. Обмеженням є апаратне забезпечення: модель, придатна для повноцінної роботи з кодом, потребує значного обсягу пам’яті. Тому визначте конфігурацію сервера відповідно до моделі, перш ніж завантажувати її.
Як залишити OpenCode запущеним після закриття ноутбука?
Запустіть його в tmux на VPS. Створіть іменований сеанс і запустіть у ньому агент за допомогою tmux new -s opencode, а потім від’єднайтеся клавішами Ctrl-b, потім d. Сеанс продовжить працювати на сервері після завершення SSH-з’єднання. У будь-який момент знову під’єднайтеся за допомогою tmux attach -t opencode — розмова та всі запущені завдання залишаться доступними. Перезавантаження сервера завершує сеанс, тому після перезавантаження створіть новий.
Чи безпечно дозволяти OpenCode виконувати команди на моєму VPS?
Це можна безпечно організувати, якщо обмежити його доступ. Створіть для OpenCode окремого непривілейованого користувача без sudo. Зберігайте його проєкти в git і створюйте коміт перед кожним завданням, щоб помилкові зміни можна було скасувати. Зберігайте API key у файлі з режимом 600. Перед внесенням змін за допомогою агента Build використовуйте агент Plan для першого аналізу. Якщо потрібно, щоб цей аналіз був суворо доступним лише для читання, встановіть для редагувань і shell-команд у Plan значення deny. Тоді агент зможе пошкодити лише те, власником чого є його обліковий запис, а решта сервера залишатиметься недоступною.
У чому різниця між OpenCode і Claude Code?
OpenCode має відкритий вихідний код (MIT) і не залежить від конкретного провайдера. Він підключається до понад 75 провайдерів моделей, зокрема локальних, через один інтерфейс. Claude Code — власний термінальний агент Anthropic, створений для роботи з моделями Anthropic. Якщо вам потрібен один інструмент для роботи з багатьма провайдерами або повністю self-hosted стек із локальною моделлю, OpenCode буде відповідним вибором. Обидва інструменти добре працюють на VPS у tmux за тієї самої схеми з непривілейованим користувачем.