docs: add localized documentation pages

Adds translated docs for Spanish, Korean, Polish, Portuguese, Ukrainian, and Chinese
Covers install, quickstart, themes, troubleshooting, tunnels, and reverse proxy guides
Updates docs workflow, sidebar, and contributor documentation
This commit is contained in:
Bohdan Triapitsyn
2026-05-23 00:33:39 +03:00
parent 82633d97f5
commit 6f4e0068c1
47 changed files with 3638 additions and 17 deletions
+25
View File
@@ -0,0 +1,25 @@
---
title: Документація OpenChamber
description: Посібник з налаштування та роботи з OpenChamber на вебі, десктопі та у VS Code.
---
# Документація OpenChamber
OpenChamber — це візуальний робочий простір навколо OpenCode.
Використовуйте ці доки, щоб:
- встановити платформу, що пасує вашому робочому процесу
- безпечно відкрити OpenChamber для віддаленого використання
- налаштувати вигляд і усувати типові проблеми
## Прочитайте спершу
- [Встановлення](/uk/install/)
- [Швидкий старт](/uk/quickstart/)
- [Тунелі](/uk/tunnels/)
- [Усунення несправностей](/uk/troubleshooting/)
## Для чого OpenChamber
OpenChamber створений для тих частин AI-кодингу, яким потрібен командний центр: розгалуження сесій, перегляд діфів, керування терміналами, спостереження за прогресом інструментів, запуск дій проєкту та збереження всієї картини перед очима, поки агент працює.
+33
View File
@@ -0,0 +1,33 @@
---
title: Встановлення
description: Встановіть OpenChamber для десктопа, вебу або VS Code.
---
# Встановлення
OpenChamber має три основні платформи:
- десктоп-застосунок для macOS
- вебзастосунок на базі CLI зі встановлюваним PWA
- розширення для VS Code
## Передумова
Спершу встановіть [OpenCode](https://opencode.ai).
## Веб + PWA
```bash
curl -fsSL https://raw.githubusercontent.com/openchamber/openchamber/main/scripts/install.sh | bash
openchamber --ui-password be-creative-here
```
Потім відкрийте URL, який вивів CLI (зазвичай `http://localhost:3000`).
## Десктоп
Завантажте найновішу десктопну збірку зі сторінки релізів на GitHub або зі сторінки завантаження OpenChamber.
## VS Code
Встановіть із VS Code Marketplace і увійдіть у свій звичний робочий процес OpenCode.
@@ -0,0 +1,22 @@
---
title: Швидкий старт
description: Швидко запустіть OpenChamber і оберіть платформу під задачу.
---
# Швидкий старт
## Найшвидший шлях
1. Встановіть OpenCode.
2. Встановіть CLI OpenChamber.
3. Виконайте `openchamber --ui-password be-creative-here`.
4. Відкрийте веб-UI на своїй машині.
5. За потреби запустіть тунель і відскануйте QR-код із телефона.
Використовуйте надійний пароль UI, особливо якщо плануєте відкривати інстанс віддалено.
## Яку платформу обрати?
- обирайте **десктоп** для щоденної роботи переважно на macOS
- обирайте **веб** для віддаленого доступу та перегляду з мобільного
- обирайте **VS Code** для сесій усередині редактора, поруч із кодом
@@ -0,0 +1,347 @@
---
title: Зворотний проксі
description: Налаштуйте OpenChamber коректно за Nginx, Nginx Proxy Manager або іншим зворотним проксі.
---
# Зворотний проксі
Скористайтеся цією сторінкою, якщо запускаєте OpenChamber за Nginx, Nginx Proxy Manager, Caddy, Cloudflare або іншим зворотним проксі.
## Перш ніж проксувати
1. Спершу переконайтеся, що OpenChamber працює напряму.
2. Відкрийте `http://<server-ip>:3000` або свій власний порт із тієї самої мережі.
3. Додавайте зворотний проксі лише після того, як пряме підключення працює.
## Що має підтримувати проксі
- WebSocket для живого транспорту повідомлень:
- `/api/event/ws`
- `/api/global/event/ws`
- `/api/terminal/ws`
- SSE без буферизації:
- `/api/event`
- `/api/global/event`
- `/api/notifications/stream`
- `/api/openchamber/events`
- `/api/terminal/:sessionId/stream`
- Великі тіла запитів для вкладень і файлових операцій
- Довгі таймаути читання для живих потоків і термінальних сесій
## Правила, що мають значення
- Увімкніть проксування WebSocket.
- Вимкніть буферизацію на SSE-маршрутах.
- Вимкніть gzip на проксі, якщо OpenChamber уже стискає відповіді.
- Тримайте стиснення увімкненим лише в одному шарі.
- Передавайте звичайні проксі-заголовки, як-от `Host`, `X-Forwarded-For` та `X-Forwarded-Proto`.
- Збільшіть ліміти розміру тіла, якщо користувачі завантажують файли.
## Швидкий чеклист
- OpenChamber доступний напряму в LAN
- WebSocket увімкнено в проксі
- На SSE-маршрутах вимкнено буферизацію
- `gzip off` на хості проксі, або стиснення проксі вимкнено інакше
- `client_max_body_size` достатньо великий для вкладень
- `proxy_read_timeout` достатньо довгий для потоків
## Приклад: Nginx
<details>
<summary>Показати приклад конфігу</summary>
```nginx
client_max_body_size 50M;
client_body_buffer_size 50M;
proxy_request_buffering off;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
gzip off;
location = /api/terminal/ws {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
location = /api/global/event/ws {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
location = /api/event/ws {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
location ~ ^/api/(event|global/event|notifications/stream|openchamber/events)$ {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Accept "text/event-stream";
proxy_set_header Cache-Control "no-cache";
proxy_buffering off;
proxy_cache off;
gzip off;
add_header X-Accel-Buffering "no" always;
add_header Cache-Control "no-cache, no-transform" always;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
location ~ ^/api/terminal/.+/stream$ {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Accept "text/event-stream";
proxy_set_header Cache-Control "no-cache";
proxy_buffering off;
proxy_cache off;
gzip off;
add_header X-Accel-Buffering "no" always;
add_header Cache-Control "no-cache, no-transform" always;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
location /api {
proxy_pass http://127.0.0.1:3000;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
location / {
proxy_pass http://127.0.0.1:3000;
}
```
</details>
## Приклад: Nginx Proxy Manager
<details>
<summary>Показати приклад вкладки Advanced</summary>
```nginx
client_max_body_size 50M;
client_body_buffer_size 50M;
proxy_request_buffering off;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
gzip off;
location = /api/terminal/ws {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_connect_timeout 30s;
}
location = /api/global/event/ws {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_connect_timeout 30s;
}
location = /api/event/ws {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_connect_timeout 30s;
}
location = /api/event {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Accept "text/event-stream";
proxy_set_header Cache-Control "no-cache";
proxy_buffering off;
proxy_cache off;
gzip off;
add_header X-Accel-Buffering "no" always;
add_header Cache-Control "no-cache, no-transform" always;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_connect_timeout 30s;
}
location = /api/global/event {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Accept "text/event-stream";
proxy_set_header Cache-Control "no-cache";
proxy_buffering off;
proxy_cache off;
gzip off;
add_header X-Accel-Buffering "no" always;
add_header Cache-Control "no-cache, no-transform" always;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_connect_timeout 30s;
}
location = /api/notifications/stream {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Accept "text/event-stream";
proxy_set_header Cache-Control "no-cache";
proxy_buffering off;
proxy_cache off;
gzip off;
add_header X-Accel-Buffering "no" always;
add_header Cache-Control "no-cache, no-transform" always;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_connect_timeout 30s;
}
location = /api/openchamber/events {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Accept "text/event-stream";
proxy_set_header Cache-Control "no-cache";
proxy_buffering off;
proxy_cache off;
gzip off;
add_header X-Accel-Buffering "no" always;
add_header Cache-Control "no-cache, no-transform" always;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_connect_timeout 30s;
}
location ~ ^/api/terminal/.+/stream$ {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Accept "text/event-stream";
proxy_set_header Cache-Control "no-cache";
proxy_buffering off;
proxy_cache off;
gzip off;
add_header X-Accel-Buffering "no" always;
add_header Cache-Control "no-cache, no-transform" always;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_connect_timeout 30s;
}
location /api {
proxy_pass http://127.0.0.1:3000;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_connect_timeout 30s;
}
location / {
proxy_pass http://127.0.0.1:3000;
}
```
</details>
Також увімкніть `Websockets Support` у Nginx Proxy Manager для цього хоста.
## Типові ознаки проблем
### Сторінка завантажується, але надсилання повідомлень не працює
- WebSocket не увімкнено в проксі
- `/api/event/ws` або `/api/global/event/ws` проходить некоректно
### Сповіщення або живий статус не оновлюються
- один із SSE-маршрутів буферизується або кешується
- відсутній `X-Accel-Buffering "no"`
### Завантаження файлів не вдається
- `client_max_body_size` замалий
### Усе працює локально, але ламається лише за проксі
- проксі стискає й буферизує живий трафік
- у проксі відсутня підтримка WebSocket
## Приклад: Caddy
<details>
<summary>Показати приклад конфігу</summary>
```caddy
reverse_proxy 127.0.0.1:3000 {
# WebSocket support is automatic in Caddy
# Flush SSE responses immediately
flush_interval -1
# Pass through Host and proxy headers
header_up Host {host}
header_up X-Real-IP {remote_host}
header_up X-Forwarded-For {remote_host}
header_up X-Forwarded-Proto {scheme}
# Increase timeouts for long-lived streams
transport http {
read_timeout 3600s
write_timeout 3600s
}
}
```
</details>
Caddy обробляє WebSocket-апгрейди автоматично — додаткове налаштування не потрібне. Директива `flush_interval -1` гарантує, що SSE-фрагменти пересилаються негайно, без буферизації.
## CDN і подвійне стиснення — попередження
Якщо ви ставите CDN (наприклад, Cloudflare) перед своїм зворотним проксі, памʼятайте про подвійне стиснення:
- OpenChamber стискає HTTP-відповіді через gzip (поріг 1 КБ).
- Cloudflare та інші CDN теж стискають відповіді типово.
- Це може призвести до подвійно стиснутих відповідей або некоректних заголовків `Content-Encoding`.
Щоб цього уникнути, вимкніть стиснення на **одному** шарі:
- **Cloudflare:** Rules → Compression → disable (або режим "Passthrough").
- **Nginx:** `gzip off` (уже показано в прикладах вище).
- **Caddy:** Caddy не перестискає типово, якщо джерело вже надсилає стиснутий контент.
SSE-маршрути потоків виключені зі стиснення в OpenChamber, але CDN усе одно може їх буферизувати. Перевірте документацію свого CDN щодо вимкнення буферизації на SSE-шляхах.
## Повʼязане
- [Тунелі](/uk/tunnels/)
- [Усунення несправностей](/uk/troubleshooting/)
+30
View File
@@ -0,0 +1,30 @@
---
title: Теми
description: Налаштуйте OpenChamber за допомогою вбудованих і власних тем.
---
# Теми
OpenChamber підтримує вбудовані теми та власні JSON-файли тем.
## Додати власну тему
1. Створіть директорію тем:
```bash
mkdir -p ~/.config/openchamber/themes
```
2. Додайте свій JSON-файл у цю директорію (наприклад, `my-theme.json`).
3. Відкрийте OpenChamber, потім перейдіть до **Settings -> Theme -> Reload themes**.
4. Оберіть свою тему зі спадного списку.
## Розташування тем
- macOS/Linux: `~/.config/openchamber/themes/`
## Повний довідник формату JSON
Скористайтеся повним посібником із формату в доках основного репозиторію:
- [`docs/CUSTOM_THEMES.md`](https://github.com/openchamber/openchamber/blob/main/docs/CUSTOM_THEMES.md)
@@ -0,0 +1,30 @@
---
title: Усунення несправностей
description: Типові проблеми з налаштуванням і запуском та швидкі рішення.
---
# Усунення несправностей
## Команда OpenChamber завершується або не запускається
- переконайтеся, що Node.js `>=20`
- виконайте `openchamber --version`
- за потреби перевстановіть найновіший CLI
## Веб-UI недоступний
- перегляньте логи сервера командою `openchamber logs`
- перевірте активний порт (типово `3000`)
- спершу відкрийте `http://localhost:3000` напряму, перш ніж тестувати посилання-тунелі
## Віддалене посилання / тунель не працює
- виконайте `openchamber tunnel status --all`
- перезапустіть тунель із того самого інстансу/порту
- згенеруйте нове посилання для підключення, якщо попередній токен уже було використано
## Розширення VS Code не підключається
- переконайтеся, що сервер OpenChamber запущено
- перевірте, що розширення оновлено
- перезавантажте вікно VS Code і повторіть підключення
+77
View File
@@ -0,0 +1,77 @@
---
title: Тунелі
description: Безпечно відкрийте OpenChamber для віддаленого та мобільного доступу.
---
# Тунелі
Використовуйте `openchamber tunnel`, щоб відкрити запущений інстанс OpenChamber.
## Швидкий старт (швидкий режим Cloudflare)
1. Запустіть OpenChamber:
```bash
openchamber
```
2. Запустіть тунель:
```bash
openchamber tunnel start --provider cloudflare --mode quick
```
3. Перевірте статус:
```bash
openchamber tunnel status
```
Типово OpenChamber виводить QR-код в інтерактивних TTY-сесіях. Використовуйте `--qr`, щоб примусово вивести QR, або `--no-qr`, щоб вимкнути його.
## Керовані режими
### Кероване віддалене
Використовуйте токен + хостнейм, керовані Cloudflare:
```bash
openchamber tunnel start --provider cloudflare --mode managed-remote --token-file ~/.secrets/cf-token --hostname app.example.com
```
### Кероване локальне
Використовуйте локальний конфіг `cloudflared`:
```bash
openchamber tunnel start --provider cloudflare --mode managed-local --config ~/.cloudflared/config.yml
```
## Профілі (managed-remote)
Збережіть багаторазовий профіль:
```bash
openchamber tunnel profile add --provider cloudflare --mode managed-remote --name prod-main --hostname app.example.com --token-file ~/.secrets/cf-token
```
Запуск зі збереженим профілем:
```bash
openchamber tunnel start --profile prod-main
```
## Корисні команди
```bash
openchamber tunnel providers
openchamber tunnel ready --provider cloudflare
openchamber tunnel doctor --provider cloudflare
openchamber tunnel stop --port 3000
```
## Нотатки щодо поведінки
- один активний тунель на інстанс OpenChamber (порт)
- запуск нового режиму/провайдера на тому самому інстансі замінює попередній тунель
- генерація нового посилання для підключення відкликає попереднє невикористане