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: Dokumentacja OpenChamber
description: Przewodnik konfiguracji i obsługi OpenChamber w przeglądarce, na komputerze i w VS Code.
---
# Dokumentacja OpenChamber
OpenChamber to wizualna przestrzeń pracy wokół OpenCode.
Skorzystaj z tej dokumentacji, aby:
- zainstalować platformę odpowiednią dla swojego procesu pracy
- bezpiecznie udostępnić OpenChamber do użytku zdalnego
- dostosować wygląd i rozwiązywać typowe problemy
## Przeczytaj najpierw
- [Instalacja](/pl/install/)
- [Szybki start](/pl/quickstart/)
- [Tunele](/pl/tunnels/)
- [Rozwiązywanie problemów](/pl/troubleshooting/)
## Do czego służy OpenChamber
OpenChamber jest przeznaczony do tych części programowania z AI, które zyskują na centrum dowodzenia: rozgałęzianie sesji, przeglądanie diffów, zarządzanie terminalami, śledzenie postępu narzędzi, uruchamianie akcji projektu i utrzymywanie całej planszy na widoku, gdy agent pracuje.
+33
View File
@@ -0,0 +1,33 @@
---
title: Instalacja
description: Zainstaluj OpenChamber na komputer, do przeglądarki lub do VS Code.
---
# Instalacja
OpenChamber ma trzy główne platformy:
- aplikacja na komputer dla macOS
- aplikacja webowa hostowana przez CLI z instalowalnym PWA
- rozszerzenie do VS Code
## Wymaganie wstępne
Najpierw zainstaluj [OpenCode](https://opencode.ai).
## Przeglądarka + PWA
```bash
curl -fsSL https://raw.githubusercontent.com/openchamber/openchamber/main/scripts/install.sh | bash
openchamber --ui-password be-creative-here
```
Następnie otwórz adres URL wypisany przez CLI (zwykle `http://localhost:3000`).
## Komputer
Pobierz najnowszą kompilację na komputer ze strony wydań na GitHubie lub ze strony pobierania OpenChamber.
## VS Code
Zainstaluj z VS Code Marketplace i zaloguj się do swojego zwykłego procesu pracy OpenCode.
@@ -0,0 +1,22 @@
---
title: Szybki start
description: Szybko uruchom OpenChamber i wybierz platformę odpowiednią do zadania.
---
# Szybki start
## Najszybsza droga
1. Zainstaluj OpenCode.
2. Zainstaluj CLI OpenChamber.
3. Uruchom `openchamber --ui-password be-creative-here`.
4. Otwórz webowy interfejs na swoim komputerze.
5. W razie potrzeby uruchom tunel i zeskanuj kod QR telefonem.
Używaj silnego hasła UI, zwłaszcza jeśli planujesz udostępniać instancję zdalnie.
## Której platformy użyć?
- użyj **komputera** do codziennej pracy w procesach skupionych na macOS
- użyj **przeglądarki** do zdalnego dostępu i przeglądania na telefonie
- użyj **VS Code** do sesji natywnych dla edytora, obok kodu
@@ -0,0 +1,347 @@
---
title: Reverse proxy
description: Skonfiguruj OpenChamber poprawnie za Nginx, Nginx Proxy Manager lub innym reverse proxy.
---
# Reverse proxy
Skorzystaj z tej strony, jeśli uruchamiasz OpenChamber za Nginx, Nginx Proxy Manager, Caddy, Cloudflare lub innym reverse proxy.
## Zanim ustawisz proxy
1. Najpierw potwierdź, że OpenChamber działa bezpośrednio.
2. Otwórz `http://<server-ip>:3000` lub swój własny port z tej samej sieci.
3. Dodaj reverse proxy dopiero, gdy połączenie bezpośrednie działa.
## Co proxy musi obsługiwać
- WebSockets do transportu wiadomości na żywo:
- `/api/event/ws`
- `/api/global/event/ws`
- `/api/terminal/ws`
- SSE bez buforowania:
- `/api/event`
- `/api/global/event`
- `/api/notifications/stream`
- `/api/openchamber/events`
- `/api/terminal/:sessionId/stream`
- Duże treści żądań dla załączników i operacji na plikach
- Długie limity czasu odczytu dla strumieni na żywo i sesji terminala
## Reguły, które mają znaczenie
- Włącz proxy WebSocket.
- Wyłącz buforowanie na trasach SSE.
- Wyłącz gzip na proxy, jeśli OpenChamber już kompresuje odpowiedzi.
- Utrzymuj kompresję włączoną tylko w jednej warstwie.
- Przekazuj zwykłe nagłówki proxy, takie jak `Host`, `X-Forwarded-For` i `X-Forwarded-Proto`.
- Zwiększ limity rozmiaru treści, jeśli użytkownicy przesyłają pliki.
## Szybka lista kontrolna
- OpenChamber dostępny bezpośrednio w LAN
- WebSockets włączone w proxy
- trasy SSE mają wyłączone buforowanie
- `gzip off` na hoście proxy lub kompresja proxy wyłączona w inny sposób
- `client_max_body_size` wystarczająco duży dla załączników
- `proxy_read_timeout` wystarczająco długi dla strumieni
## Przykład: Nginx
<details>
<summary>Pokaż przykładową konfigurację</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>
## Przykład: Nginx Proxy Manager
<details>
<summary>Pokaż przykład z karty 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>
Włącz także `Websockets Support` w Nginx Proxy Manager dla tego hosta.
## Typowe oznaki awarii
### Strona się ładuje, ale wysyłanie wiadomości zawodzi
- WebSockets nie są włączone w proxy
- `/api/event/ws` lub `/api/global/event/ws` nie przechodzi poprawnie
### Powiadomienia lub status na żywo nie aktualizują się
- jedna z tras SSE jest buforowana lub w pamięci podręcznej
- brakuje `X-Accel-Buffering "no"`
### Przesyłanie plików zawodzi
- `client_max_body_size` jest zbyt mały
### Wszystko działa lokalnie, ale psuje się tylko za proxy
- proxy kompresuje i buforuje ruch na żywo
- proxy nie obsługuje WebSockets
## Przykład: Caddy
<details>
<summary>Pokaż przykładową konfigurację</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 obsługuje uaktualnienia WebSocket automatycznie — żadna dodatkowa konfiguracja nie jest potrzebna. Dyrektywa `flush_interval -1` zapewnia, że fragmenty SSE są przekazywane natychmiast, bez buforowania.
## Ostrzeżenie o CDN i podwójnej kompresji
Jeśli umieścisz CDN (np. Cloudflare) przed swoim reverse proxy, pamiętaj o podwójnej kompresji:
- OpenChamber kompresuje odpowiedzi HTTP za pomocą gzip (próg 1 KB).
- Cloudflare i inne CDN-y również domyślnie kompresują odpowiedzi.
- Może to powodować podwójnie skompresowane odpowiedzi lub nieprawidłowe nagłówki `Content-Encoding`.
Aby tego uniknąć, wyłącz kompresję w **jednej** warstwie:
- **Cloudflare:** Rules → Compression → disable (lub użyj trybu "Passthrough").
- **Nginx:** `gzip off` (już pokazane w przykładach powyżej).
- **Caddy:** Caddy domyślnie nie kompresuje ponownie, jeśli upstream już wysyła skompresowaną treść.
Trasy strumieniowania SSE są wyłączone z kompresji przez OpenChamber, ale CDN może je nadal buforować. Sprawdź dokumentację swojego CDN, jak wyłączyć buforowanie na ścieżkach SSE.
## Powiązane
- [Tunele](/pl/tunnels/)
- [Rozwiązywanie problemów](/pl/troubleshooting/)
+30
View File
@@ -0,0 +1,30 @@
---
title: Motywy
description: Dostosuj OpenChamber za pomocą wbudowanych i własnych motywów.
---
# Motywy
OpenChamber obsługuje wbudowane motywy oraz własne pliki JSON z motywami.
## Dodaj własny motyw
1. Utwórz katalog motywów:
```bash
mkdir -p ~/.config/openchamber/themes
```
2. Dodaj swój plik JSON do tego katalogu (na przykład `my-theme.json`).
3. Otwórz OpenChamber, a następnie przejdź do **Settings -> Theme -> Reload themes**.
4. Wybierz swój motyw z listy rozwijanej.
## Lokalizacja motywów
- macOS/Linux: `~/.config/openchamber/themes/`
## Pełna dokumentacja formatu JSON
Skorzystaj z pełnego przewodnika po formacie w dokumentacji głównego repozytorium:
- [`docs/CUSTOM_THEMES.md`](https://github.com/openchamber/openchamber/blob/main/docs/CUSTOM_THEMES.md)
@@ -0,0 +1,30 @@
---
title: Rozwiązywanie problemów
description: Typowe problemy z konfiguracją i działaniem oraz szybkie rozwiązania.
---
# Rozwiązywanie problemów
## Polecenie OpenChamber kończy się lub nie uruchamia
- upewnij się, że Node.js `>=20`
- uruchom `openchamber --version`
- w razie potrzeby zainstaluj ponownie najnowsze CLI
## Webowy interfejs jest nieosiągalny
- sprawdź logi serwera poleceniem `openchamber logs`
- zweryfikuj aktywny port (domyślnie `3000`)
- najpierw otwórz `http://localhost:3000` bezpośrednio, zanim zaczniesz testować linki tunelu
## Link zdalny/tunelu nie działa
- uruchom `openchamber tunnel status --all`
- zrestartuj tunel z tej samej instancji/portu
- wygeneruj nowy link połączenia, jeśli poprzedni token został już użyty
## Rozszerzenie VS Code nie łączy się
- upewnij się, że serwer OpenChamber działa
- zweryfikuj, że rozszerzenie jest zaktualizowane
- przeładuj okno VS Code i ponów połączenie
+77
View File
@@ -0,0 +1,77 @@
---
title: Tunele
description: Bezpiecznie udostępnij OpenChamber do dostępu zdalnego i mobilnego.
---
# Tunele
Użyj `openchamber tunnel`, aby udostępnić działającą instancję OpenChamber.
## Szybki start (tryb szybki Cloudflare)
1. Uruchom OpenChamber:
```bash
openchamber
```
2. Uruchom tunel:
```bash
openchamber tunnel start --provider cloudflare --mode quick
```
3. Sprawdź status:
```bash
openchamber tunnel status
```
Domyślnie OpenChamber wypisuje kod QR w interaktywnych sesjach TTY. Użyj `--qr`, aby wymusić wyświetlenie kodu QR, lub `--no-qr`, aby je wyłączyć.
## Tryby zarządzane
### Zarządzany zdalny
Użyj tokenu + nazwy hosta zarządzanych przez Cloudflare:
```bash
openchamber tunnel start --provider cloudflare --mode managed-remote --token-file ~/.secrets/cf-token --hostname app.example.com
```
### Zarządzany lokalny
Użyj lokalnej konfiguracji `cloudflared`:
```bash
openchamber tunnel start --provider cloudflare --mode managed-local --config ~/.cloudflared/config.yml
```
## Profile (managed-remote)
Zapisz profil wielokrotnego użytku:
```bash
openchamber tunnel profile add --provider cloudflare --mode managed-remote --name prod-main --hostname app.example.com --token-file ~/.secrets/cf-token
```
Uruchom z zapisanym profilem:
```bash
openchamber tunnel start --profile prod-main
```
## Przydatne polecenia
```bash
openchamber tunnel providers
openchamber tunnel ready --provider cloudflare
openchamber tunnel doctor --provider cloudflare
openchamber tunnel stop --port 3000
```
## Uwagi dotyczące zachowania
- jeden aktywny tunel na instancję OpenChamber (port)
- uruchomienie nowego trybu/dostawcy na tej samej instancji zastępuje poprzedni tunel
- wygenerowanie nowego linku połączenia unieważnia poprzedni nieużyty