Docker (isteğe bağlı)
Docker isteğe bağlıdır. Yalnızca kapsayıcılı bir gateway istiyorsanız veya Docker akışını doğrulamak istiyorsanız kullanın.Docker benim için uygun mu?
- Evet: izole, atılabilir bir gateway ortamı istiyorsunuz ya da OpenClaw’ı yerel kurulumlar olmadan bir ana makinede çalıştırmak istiyorsunuz.
- Hayır: kendi makinenizde çalışıyorsunuz ve yalnızca en hızlı geliştirme döngüsünü istiyorsunuz. Bunun yerine normal kurulum akışını kullanın.
- Sandboxing notu: ajan sandboxing de Docker kullanır, ancak tam gateway’in Docker’da çalışmasını gerektirmez. Sandboxing.
- Kapsayıcılı Gateway (Docker’da tam OpenClaw)
- Oturum başına Agent Sandbox (ana makinede gateway + Docker ile izole ajan araçları)
Gereksinimler
- Docker Desktop (veya Docker Engine) + Docker Compose v2
- İmajlar + günlükler için yeterli disk alanı
Kapsayıcılı Gateway (Docker Compose)
Hızlı başlangıç (önerilen)
Depo kökünden:- gateway imajını oluşturur
- işe alım sihirbazını çalıştırır
- isteğe bağlı sağlayıcı kurulum ipuçlarını yazdırır
- Docker Compose üzerinden gateway’i başlatır
- bir gateway belirteci üretir ve bunu
.envdosyasına yazar
OPENCLAW_DOCKER_APT_PACKAGES— derleme sırasında ek apt paketleri yüklerOPENCLAW_EXTRA_MOUNTS— ek ana makine bağlama (bind mount) eklerOPENCLAW_HOME_VOLUME—/home/node’yi adlandırılmış bir birimde kalıcı hale getirir
- Tarayıcınızda
http://127.0.0.1:18789/’ü açın. - Belirteci Control UI’ye yapıştırın (Ayarlar → token).
- URL’ye tekrar mı ihtiyacınız var?
docker compose run --rm openclaw-cli dashboard --no-opençalıştırın.
~/.openclaw/~/.openclaw/workspace
Shell Yardımcıları (isteğe bağlı)
Günlük Docker yönetimini kolaylaştırmak içinClawDock yükleyin:
clawdock-start, clawdock-stop, clawdock-dashboard vb. komutları kullanın. Tüm komutlar için clawdock-help çalıştırın.
Ayrıntılar için ClawDock Helper README sayfasına bakın.
Manuel akış (compose)
docker compose ... komutunu depo kökünden çalıştırın. Eğer
OPENCLAW_EXTRA_MOUNTS veya OPENCLAW_HOME_VOLUME’u etkinleştirdiyseniz, kurulum betiği
docker-compose.extra.yml yazar; başka bir yerde Compose çalıştırırken bunu dahil edin:
Control UI belirteci + eşleştirme (Docker)
“unauthorized” veya “disconnected (1008): pairing required” görürseniz, yeni bir kontrol paneli bağlantısı alın ve tarayıcı cihazını onaylayın:Ek bağlamalar (isteğe bağlı)
Ek ana makine dizinlerini kapsayıcılara bağlamak istiyorsanız,OPENCLAW_EXTRA_MOUNTS’i docker-setup.sh çalıştırmadan önce ayarlayın. Bu,
virgülle ayrılmış bir Docker bind mount listesi kabul eder ve her ikisine de
openclaw-gateway ve openclaw-cli için docker-compose.extra.yml oluşturarak uygular.
Örnek:
- Yollar macOS/Windows’ta Docker Desktop ile paylaşılmış olmalıdır.
OPENCLAW_EXTRA_MOUNTS’yı düzenlerseniz, ek compose dosyasını yeniden üretmek içindocker-setup.sh’yi yeniden çalıştırın.docker-compose.extra.ymloluşturulmuştur. Elle düzenlemeyin.
Salt okunur araçlar + salt okunur çalışma alanı (aile/iş ajanı)
/home/node’un kapsayıcı yeniden oluşturma boyunca kalıcı olmasını istiyorsanız,
OPENCLAW_HOME_VOLUME üzerinden adlandırılmış bir birim ayarlayın. Bu, bir Docker birimi
oluşturur ve /home/node’e bağlar; standart yapılandırma/çalışma alanı bind
mount’larını korur. Burada adlandırılmış bir birim kullanın (bind yolu değil);
bind mount’lar için OPENCLAW_EXTRA_MOUNTS kullanın.
Örnek:
OPENCLAW_HOME_VOLUME’ü değiştirirseniz, ek compose dosyasını yeniden üretmek içindocker-setup.sh’ü yeniden çalıştırın.- Adlandırılmış birim,
docker volume rm <name>ile kaldırılana kadar kalıcıdır.
Ek apt paketleri yükleme (isteğe bağlı)
İmaj içinde sistem paketlerine ihtiyacınız varsa (örneğin, derleme araçları veya medya kütüphaneleri),OPENCLAW_DOCKER_APT_PACKAGES’yı docker-setup.sh çalıştırmadan önce ayarlayın.
Bu, paketleri imaj derlemesi sırasında yükler; böylece kapsayıcı silinse bile
kalıcı olurlar.
Örnek:
- Bu, boşlukla ayrılmış apt paket adları listesini kabul eder.
OPENCLAW_DOCKER_APT_PACKAGES’i değiştirirseniz, imajı yeniden derlemek içindocker-setup.sh’u yeniden çalıştırın.
Güç kullanıcıları / tam özellikli kapsayıcı (isteğe bağlı)
Varsayılan Docker imajı güvenlik önceliklidir ve root olmayannode
kullanıcısı olarak çalışır. Bu, saldırı yüzeyini küçük tutar; ancak şu anlamlara gelir:
- çalışma zamanında sistem paketi kurulumu yok
- varsayılan olarak Homebrew yok
- paketlenmiş Chromium/Playwright tarayıcıları yok
/home/node’u kalıcı hale getirin; böylece tarayıcı indirmeleri ve araç önbellekleri korunur:
- Sistem bağımlılıklarını imaja gömün (tekrarlanabilir + kalıcı):
npxolmadan Playwright tarayıcılarını yükleyin (npm override çakışmalarını önler):
--with-deps kullanmak yerine imajı OPENCLAW_DOCKER_APT_PACKAGES ile yeniden derleyin.
- Playwright tarayıcı indirmelerini kalıcı hale getirin:
docker-compose.ymliçindePLAYWRIGHT_BROWSERS_PATH=/home/node/.cache/ms-playwright’i ayarlayın./home/node’ninOPENCLAW_HOME_VOLUMEile kalıcı olduğundan emin olun veya/home/node/.cache/ms-playwright’yiOPENCLAW_EXTRA_MOUNTSile bağlayın.
İzinler + EACCES
İmajnode (uid 1000) olarak çalışır. /home/node/.openclaw üzerinde izin
hataları görürseniz, ana makine bind mount’larınızın uid 1000’e ait olduğundan emin olun.
Örnek (Linux ana makine):
Daha hızlı yeniden derlemeler (önerilen)
Yeniden derlemeleri hızlandırmak için Dockerfile’ınızı bağımlılık katmanları önbelleğe alınacak şekilde sıralayın. Bu, kilit dosyaları değişmedikçepnpm install’ün yeniden çalıştırılmasını önler:
Kanal kurulumu (isteğe bağlı)
Kanal yapılandırmak için CLI kapsayıcısını kullanın, ardından gerekirse gateway’i yeniden başlatın. WhatsApp (QR):OpenAI Codex OAuth (başsız Docker)
Sihirbazda OpenAI Codex OAuth’u seçerseniz, bir tarayıcı URL’si açar vehttp://127.0.0.1:1455/auth/callback üzerinde bir geri çağrıyı yakalamaya çalışır. Docker’da veya
başsız kurulumlarda bu geri çağrı bir tarayıcı hatası gösterebilir. Ulaştığınız
tam yönlendirme URL’sini kopyalayın ve kimlik doğrulamayı tamamlamak için
sihirbaza geri yapıştırın.
Sağlık denetimi
E2E duman testi (Docker)
QR içe aktarma duman testi (Docker)
Notlar
- Gateway bind, kapsayıcı kullanımı için varsayılan olarak
lan’e bağlanır. - Dockerfile CMD,
--allow-unconfiguredkullanır;localyerinegateway.modeile bağlanmış yapılandırma yine de başlar. Koruyucuyu zorlamak için CMD’yi geçersiz kılın. - Gateway kapsayıcısı, oturumlar için tek doğruluk kaynağıdır (
~/.openclaw/agents/<agentId>/sessions/).
Agent Sandbox (ana makinede gateway + Docker araçları)
Derinlemesine: SandboxingNe yapar
agents.defaults.sandbox etkinleştirildiğinde, ana olmayan oturumlar araçları bir Docker
kapsayıcısı içinde çalıştırır. Gateway ana makinede kalır, ancak araç yürütümü izoledir:
- kapsam: varsayılan olarak
"agent"(ajan başına bir kapsayıcı + çalışma alanı) - kapsam: oturum başına izolasyon için
"session" - kapsam başına çalışma alanı klasörü
/workspace’e bağlanır - isteğe bağlı ajan çalışma alanı erişimi (
agents.defaults.sandbox.workspaceAccess) - izin/verme araç politikası (reddetme kazanır)
- gelen medya, araçların okuyabilmesi için etkin sandbox çalışma alanına kopyalanır
(
workspaceAccess: "rw"ile bu, ajan çalışma alanına düşer) (media/inbound/*)
scope: "shared" oturumlar arası izolasyonu devre dışı bırakır. Tüm oturumlar
tek bir kapsayıcıyı ve tek bir çalışma alanını paylaşır.
Ajan başına sandbox profilleri (çoklu ajan)
Çoklu ajan yönlendirmesi kullanıyorsanız, her ajan sandbox + araç ayarlarınıagents.list[].sandbox ve agents.list[].tools (artı agents.list[].tools.sandbox.tools) ile geçersiz kılabilir. Bu, tek bir gateway’de karışık erişim seviyeleri çalıştırmanıza olanak tanır:
- Tam erişim (kişisel ajan)
- Ajan başına bir kapsayıcı
- Dosya sistemi/kabuk araçları yok (genel ajan)
Varsayılan davranış
- İmaj:
openclaw-sandbox:bookworm-slim - Özel tarayıcı imajı:
- Ajan çalışma alanı erişimi:
workspaceAccess: "none"(varsayılan)~/.openclaw/sandboxeskullanır"ro", sandbox çalışma alanını/workspace’te tutar ve ajan çalışma alanını/agent’ya salt-okunur bağlar (write/edit/apply_patch’u devre dışı bırakır)"rw", ajan çalışma alanını/workspace’e okuma/yazma bağlar
- Otomatik budama: boşta > 24s VEYA yaş > 7g
- Ağ: varsayılan olarak
none(çıkış gerekiyorsa açıkça etkinleştirin) - Varsayılan izin verilenler:
exec,process,read,write,edit,sessions_list,sessions_history,sessions_send,sessions_spawn,session_status - Varsayılan reddedilenler:
browser,canvas,nodes,cron,discord,gateway
Sandboxing’i etkinleştirme
setupCommand içine paketler kurmayı planlıyorsanız, şunları not edin:
- Varsayılan
docker.network,"none"’dir (çıkış yok). readOnlyRoot: true, paket kurulumlarını engeller.user,apt-getiçin root olmalıdır (user’i atlayın veyauser: "0:0"’yı ayarlayın). OpenClaw,setupCommand(veya docker yapılandırması) değiştiğinde kapsayıcıları otomatik olarak yeniden oluşturur; kapsayıcı yakın zamanda kullanılmışsa (yaklaşık 5 dakika içinde) hariçtir. Sıcak kapsayıcılar, tamopenclaw sandbox recreate ...komutuyla bir uyarı günlüğe yazar.
agents.defaults.sandbox.docker altında bulunur:
network, user, pidsLimit, memory, memorySwap, cpus, ulimits,
seccompProfile, apparmorProfile, dns, extraHosts.
Çoklu ajan: agents.defaults.sandbox.{docker,browser,prune}.*’i, ajan başına agents.list[].sandbox.{docker,browser,prune}.* üzerinden geçersiz kılın
(agents.defaults.sandbox.scope / agents.list[].sandbox.scope "shared" olduğunda yok sayılır).
Varsayılan sandbox imajını derleme
Dockerfile.sandbox kullanarak openclaw-sandbox:bookworm-slim’yı derler.
Sandbox ortak imajı (isteğe bağlı)
Ortak derleme araçları (Node, Go, Rust, vb.) içeren bir sandbox imajı istiyorsanız, ortak imajı derleyin:openclaw-sandbox-common:bookworm-slim’yı derler. Kullanmak için:
Sandbox tarayıcı imajı
Tarayıcı aracını sandbox içinde çalıştırmak için tarayıcı imajını derleyin:Dockerfile.sandbox-browser kullanarak openclaw-sandbox-browser:bookworm-slim’yı derler. Kapsayıcı, CDP etkin
Chromium ve isteğe bağlı bir noVNC gözlemcisiyle (Xvfb üzerinden başlı) çalışır.
Notlar:
- Başlı (Xvfb), başsız olana kıyasla bot engellemeyi azaltır.
- Başsız,
agents.defaults.sandbox.browser.headless=trueayarlanarak yine de kullanılabilir. - Tam bir masaüstü ortamı (GNOME) gerekmez; Xvfb ekranı sağlar.
- sandbox tarayıcı kontrol URL’si (
browseraracı için) - noVNC URL’si (etkinse ve headless=false)
browser’ü ekleyin
(ve reddedenlerden kaldırın) yoksa araç engelli kalır.
Budama kuralları (agents.defaults.sandbox.prune) tarayıcı kapsayıcıları için de geçerlidir.
Özel sandbox imajı
Kendi imajınızı oluşturun ve yapılandırmayı ona yönlendirin:Araç politikası (izin/verme)
deny,allow’ya üstün gelir.allowboşsa: tüm araçlar (reddedilenler hariç) kullanılabilir.allowboş değilse: yalnızcaallowiçindeki araçlar (reddedilenler çıkarılarak) kullanılabilir.
Budama stratejisi
İki ayar:prune.idleHours: X saat kullanılmayan kapsayıcıları kaldır (0 = devre dışı)prune.maxAgeDays: X günden eski kapsayıcıları kaldır (0 = devre dışı)
- Yoğun oturumları tut ama ömrü sınırla:
idleHours: 24,maxAgeDays: 7 - Asla budama:
idleHours: 0,maxAgeDays: 0
Güvenlik notları
- Sert duvar yalnızca araçlar için geçerlidir (exec/read/write/edit/apply_patch).
- Tarayıcı/kamera/canvas gibi ana makineye özgü araçlar varsayılan olarak engellidir.
- Sandbox’ta
browser’e izin vermek izolasyonu bozar (tarayıcı ana makinede çalışır).
Sorun Giderme
- İmaj eksik:
scripts/sandbox-setup.shile derleyin veyaagents.defaults.sandbox.docker.image’i ayarlayın. - Kapsayıcı çalışmıyor: talep üzerine oturum başına otomatik oluşturulur.
- Sandbox’ta izin hataları:
docker.user’u, bağladığınız çalışma alanının sahipliğiyle eşleşen bir UID:GID’ye ayarlayın (veya çalışma alanı klasörünü chown edin). - Özel araçlar bulunamıyor: OpenClaw komutları
sh -lc(login shell) ile çalıştırır; bu,/etc/profile’yi kaynak alır ve PATH’i sıfırlayabilir. Özel araç yollarınızı başa eklemek içindocker.env.PATH’yi ayarlayın (örn.,/custom/bin:/usr/local/share/npm-global/bin), ya da Dockerfile’ınızda/etc/profile.d/altında bir betik ekleyin.