SSD Nodes Learn 🎉 VPS $5.50/aydan başlayan
Rehberler Matt ConnorYazan Matt Connor

OpenBot AI is arkadaslarini kendi sunucunuzda barindirma

OpenBot AI is arkadaslarini kendi VPS sunucunuzda nasil barindiracaginizi ogrenin. Her bot icin ayri container ve tarayici kurulumu ile RAM maliyetlerini detaylica inceleyin.

OpenBot AI iş arkadaşlarınızı kendi sunucunuzda barındırdığınızda elde ettikleriniz

OpenBot AI iş arkadaşlarını, kontrolünüz altındaki donanım üzerinde bir ağ geçidi (gateway) sunucusu ve her bot için bir container çalıştırarak kendi sunucunuzda barındırırsınız. Her bot container'ı, kendi Chromium tarayıcısını ve oturumlar arasında kalıcı olan bir tarayıcı profiline sahip kendi çalışma alanı birimini (workspace volume) beraberinde getirir. Bir botun bilgisayar, dosya, MCP (model context protocol) sunucusu veya bir kullanıcı arayüzü bileşeni üzerinde gerçekleştirdiği her eylem, bu eylemi gerçekleşmeden önce bir politika ile denetleyen ve gerçekleştikten sonra kaydeden ağ geçidi üzerinden geçer.

OpenBot, CopilotKit tarafından MIT lisansı altında github.com/CopilotKit/openbot adresinde yayımlanmıştır. İlk etiketli sürüm olan v0.0.1, 17 Ağustos 2026 tarihinde yayımlanmış olup proje kendisini alfa aşamasında ve aktif geliştirilmekte olan bir yazılım olarak tanımlamaktadır. Bu projeyi, henüz geliştirme aşamasındaki kenar durumları bulunan ciddi bir tasarım olarak değerlendirin.

Bu mimarinin ilgi çekici kısmı aynı zamanda maliyetli olan kısmıdır. Her aracı (agent) için bir tarayıcı çalıştırmak, çoğu kişinin planlamayı unuttuğu bir bellek maliyeti doğurur; bu nedenle kurulumdan önce boyutlandırma işlemi yapılmalıdır.

Ağ geçidinin her eyleme nasıl karar verdiği

3001 numaralı port üzerindeki API sunucusu, bir botun bilgisayarına giden tek yoldur. Bir tarayıcı eylemi çalışmadan önce ağ geçidi, hedefi bir sayfa anlık görüntüsünden çözer, bağlama karşı CEL (common expression language) ilke kurallarını değerlendirir, kararı içeren bir denetim satırı yazar ve ancak o zaman container'ı çağırır. Eğer yürütme bundan sonra başarısız olursa, ikinci bir satır yazar. Belgeler sınırı açıkça belirtir: bilgisayar ilkeye karar vermez, eylem sınırı sunucu ağ geçididir.

İlke varsayılan olarak reddetme (deny-by-default) şeklindedir ve reddetme kuralları, izin verme kurallarından önce değerlendirilir. Başarısızlık yönü, kural sözdiziminden daha önemlidir. Eksik bir ilke hiçbir şeye izin vermez ve hatalı bir kural, reddetme veya izin verme kuralı olmasına bakılmaksızın engelleme yönünde başarısız olur; bu nedenle ilkenizdeki bir hata, hesaplarınızda serbest dolaşan bir bot yerine takılıp kalmış bir bota neden olur.

Denetim izi PostgreSQL içinde tutulur, bu nedenle yeniden başlatma sonrasında varlığını korur. Kontrol devirleri computer.help_requested, computer.control_taken ve computer.control_released olarak kaydedilir; bir botun nasıl insan yardımı istediğini ve insanın kontrolü nasıl geri verdiğini bu şekilde görürsünüz. Sırlar değer olarak değil, karakter sayısı olarak kaydedilir. Dosya işlemleri içeriği değil, yolu ve boyutu kaydeder. Arkasında bir tarayıcı olmadan aynı kontrol sınırını istiyorsanız, yapay zeka temsilcisi eylemlerini onaylarla sınırlandırma konusu bu daha dar kapsamlı durumu ele alır.

Bir botun RAM ve disk maliyeti

Proje, arm64 mimarisinde tek bir Bot için ölçülen değerleri yayınlamaktadır. OpenBot tarafından sunulan tek boyutlandırma verileri bunlardır ve bunlar tek bir mimarideki tek bir botu tanımlar; bu nedenle bu verileri bir kapasite planından ziyade bir başlangıç noktası olarak değerlendirin.

ChartOpenBot published resource figures, one Bot on arm64 (August 2026)
The data behind this chart
[
  {
    "label": "Measured, one Bot",
    "memory_gb": 0.55,
    "disk_gb": 5.3,
    "vcpu": 0.06
  },
  {
    "label": "Documented minimum",
    "memory_gb": 2,
    "disk_gb": 8,
    "vcpu": 1
  },
  {
    "label": "Documented recommended",
    "memory_gb": 4,
    "disk_gb": 10,
    "vcpu": 2
  }
]

Bir Bot için tepe bellek kullanımı 0.55 GB olarak ölçülmüştür; belgelenen minimum değer 2 GB, önerilen değer ise 4 GB'dir. Ölçülen değer ile minimum değer arasındaki fark, Chromium'un yük altında büyümesi için ayrılan alandır; çünkü bir tarayıcının bellek kullanımı boşta olduğu ana göre değil, açık olan sayfalara göre değişir. Boştaki CPU kullanımı, ölçülen aralığın en üstünde bile bir çekirdeğin 0.06 kadarıdır, yani asıl maliyet CPU değildir. Asıl maliyet disktir. İmajın kendisi 5.3 GB'dir, önerilen disk alanı ise 10 GB'dir. İmajın bu kadar büyük olmasının nedeni, Chromium'un yanı sıra Playwright'ın Firefox ve WebKit ikili dosyalarını da içermesidir.

Bu verilerin hiçbiri birden fazla botun toplam maliyetini göstermez ve proje bu konuda bir rakam yayınlamamaktadır. Kendi ölçümlerinizi yapın. Bir bot başlatın, ona açık bir sayfa ile gerçek bir görev verin ve çalışırken container'ı izleyin.

docker stats --no-stream
free -m

Botun container'ı için MEM USAGE sütununu bot başına düşen değer olarak alın, üzerine gateway ve PostgreSQL maliyetlerini ekleyin, ardından bu bot başına düşen değeri aynı anda çalışmasını beklediğiniz bot sayısıyla çarpın. Boştaki bir bot bile bir tarayıcı süreci tutar, bu nedenle çarpan sadece meşgul olan botlara değil, var olan tüm botlara uygulanır. Hesaplama yöntemi, bir kodlama ajanı VPS'i için RAM ve CPU boyutlandırma ile aynıdır ve bunun tarayıcı tarafı ajanlar için VPS üzerinde headless tarayıcı çalıştırma bölümünde ele alınmıştır.

Küçük planları etkileyen bir Chromium detayı mevcuttur. OpenBot, Chromium'u --disable-dev-shm-usage ile başlatır, bu nedenle tarayıcı /dev/shm yerine /tmp dizinine yazar. Bu, küçük bir /dev/shm alanına sahip sunucularda oluşabilecek çökmeleri engeller ve yükü kök dosya sisteminize taşır; önerilen disk boyutunun imaj boyutundan daha büyük olmasının bir diğer nedeni de budur.

OpenBot, bir VPS üzerinde nasıl self-host edilir?

Docker, Bun 1.3 veya daha yeni bir sürüm, bir CopilotKit Intelligence projesi ve bir model API anahtarına ihtiyacınız vardır. Geliştirme dokümanları ayrıca sunucuda lsof, python3 ve curl bulunmasını bekler. main yerine etiketli bir sürümü klonlayın, çünkü main alfa aşamasındaki bir projede uyarı yapılmaksızın değişebilir.

git clone --branch v0.0.1 https://github.com/CopilotKit/openbot.git
cd openbot
cp .env.example .env

Intelligence projesini hazırlayın. Aşağıdaki üç komut, çalışma zamanı anahtarını ve lisans belirtecini ortam dosyanıza yazar.

npx --yes copilotkit@latest login
npx --yes copilotkit@latest project select
npx --yes copilotkit@latest license --write

Depolanan kimlik bilgilerini şifreleyen anahtarı oluşturun ve çıktıyı .env dosyasına KEY_ENCRYPTION_KEY olarak ekleyin. OPENAI_API_KEY değerinizi aynı dosyaya ekleyin veya BOT_PROVIDER değişkenini eşleşen anahtarla anthropic ya da google olarak ayarlayın.

openssl rand -base64 32

Ardından kurulumu yapın ve başlatın.

bun install
bash scripts/start.sh

scripts/start.sh komutu Docker servislerini ayağa kaldırır, veritabanı migrasyonlarını çalıştırır, sunucuyu ve uygulamayı başlatır ve sağlık durumlarını kontrol eder. İşlem tamamlandığında uygulama 3010 numaralı portta, API ise 3001 numaralı portta yanıt verir. Betik, port çakışmalarını raporlar ve halihazırda çalışan eşleşen bir servise müdahale etmez; bu nedenle komutu iki kez çalıştırmak güvenlidir.

Dış dünyaya herhangi bir erişim açmadan önce sunucunun kendisinden kontrol edin.

curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:3010
ss -ltnp | grep -E ':(3010|3001|4100|4500|5432)'

İlk komuttan gelen bir 200, uygulamanın servis verdiğini gösterir. İkinci komut, bu portların hangi adreslere bağlı olduğunu gösterir; VPS üzerinde önemli olan yanıt budur. 127.0.0.1:3001 ifadesini içeren bir satır, erişimin yalnızca sunucuya özel olduğunu belirtir. 0.0.0.0:3001 ifadesini içeren bir satır ise sunucuya yönlendirme yapabilen herkesin bu servise ulaşabileceği anlamına gelir.

Tek konteyner imajı

Dağıtım belgeleri, uygulamayı, API'yi ve Chromium'u içeren ve 3001 numaralı port üzerinden hizmet veren tek bir imajı da beraberinde sunar.

docker build -t openbot .
docker run -p 127.0.0.1:3001:3001 --env-file .env \
  -e EMBEDDED_POSTGRES=on -v openbot-data:/var/lib/postgresql/data openbot

EMBEDDED_POSTGRES=on, PostgreSQL'i konteyner içinde çalıştırır ve başlatma sırasında migrasyonları uygular. Adlandırılmış birim (named volume), denetim geçmişini yeniden dağıtım sonrasında korur; bu birim olmadan her yeniden oluşturma işleminde geçmiş silinir. Eğer DATABASE_URL'yı bunun yerine yönetilen bir veritabanına yönlendirirseniz, üzerinde vector eklentisinin etkinleştirilmesi gerekir. RDS, Cloud SQL ve Azure Database gibi yönetilen hizmetler bu eklentiyi destekler ancak hiçbiri sizin için otomatik olarak etkinleştirmez. Bu nedenle, yeni bir yönetilen veritabanına karşı yapılan migrasyon, vector sütun türü henüz mevcut olmadığından başarısız olur.

Veritabanı harici olduğunda migrasyonları bir sürüm adımı olarak çalıştırın.

docker run --rm --env-file .env openbot \
  sh -c "cd /app/server && bun x drizzle-kit migrate --config=drizzle.config.ts"

Bu imaj, tarayıcı portunu kasıtlı olarak dışarıya açmaz. Ayrıca supervisor'ı da içermez, çünkü supervisor Docker soketine ihtiyaç duyar ve sunucusuz (serverless) platformlar bunu sunmaz. Supervisor olmadan her bot tek bir tarayıcıyı paylaşır ve dolayısıyla aynı oturum bilgilerini kullanır; bu da bot başına konteyner çalıştırmayı değerli kılan izolasyonu ortadan kaldırır. Eğer bot başına ayrı oturumlar sizin için önemliyse, COMPUTER_SUPERVISOR_URL ve SUPERVISOR_TOKEN ayarları yapılmış şekilde, bu takası kabul ettiğiniz bir ana makinede compose yığınını çalıştırın. Docker soketiyle iletişim kurabilen bir süreç, ayrıcalıklı bir konteyner başlatabilir; bu da pratikte ana makinede root yetkisine sahip olması anlamına gelir. Bu durum, OpenBot'u kodlama ajanlarına geçici bir VM verme mantığıyla kendi makinesinde tutmak için iyi bir nedendir.

OPENBOT_SINGLE_USER neden bir dizüstü bilgisayar ayarıdır

.env.example, OPENBOT_SINGLE_USER=true ile birlikte gelir. Bu ayar, her isteği tek bir yönetici olarak kabul eder ve oturum açma işlemini tamamen atlar. Dizüstü bilgisayarda bu bir kolaylıktır, çünkü porta erişebilen tek istemci sizsiniz. Bir VPS üzerinde ise bu, 3010 numaralı porta ulaşan ilk kişinin, şifrelenmiş kimlik bilgilerini saklayan ve halihazırda hesaplarınızda oturum açmış bir tarayıcıyı yöneten bir sistemin yöneticisi olacağı anlamına gelir.

Bunu çalıştırmanın iki dürüst yolu vardır. OPENBOT_SINGLE_USER=true ayarını koruyun, tüm portları 127.0.0.1 adresine bağlayın ve uygulamaya yalnızca bir SSH tüneli veya özel bir ağ arayüzü üzerinden erişin.

ssh -N -L 3010:127.0.0.1:3010 -L 3001:127.0.0.1:3001 you@your-vps

Uygulama bu durumda kendi tarayıcınızda http://localhost:3010 adresinde bulunur; bu güvenli bir bağlam olarak kabul edilir, dolayısıyla oturum açma çerezleri ve canlı ekranın ihtiyaç duyduğu tarayıcı özellikleri düzgün çalışır. Diğer yol ise tek kullanıcılı modu kapatmak ve gerçek bir kimlik sağlayıcısı yapılandırmaktır. Google, Microsoft Entra, Okta, SAML ve OIDC desteklenmektedir. Herhangi bir sağlayıcı ayrıca 32 karakter veya daha uzun bir BETTER_AUTH_SECRET, OAuth geri çağrıları için genel API temel URL'sine ayarlanmış bir BETTER_AUTH_URL, INITIAL_ADMIN_EMAILS ve TRUSTED_ORIGINS gerektirir. Sağlayıcı kimlik bilgileri eksiksiz olmalıdır, çünkü yarım yapılandırılmış bir sağlayıcı, açık erişime geri dönmek yerine başlatma işlemini durdurur.

Uygulama genel bir isim üzerinden erişilebilir durumdaysa, önüne TLS (taşıma katmanı güvenliği) yerleştirin. localhost dışındaki herhangi bir yerde düz http:// üzerinden sunulan bir sayfa güvenli bir bağlam değildir; bu nedenle Secure olarak işaretlenmiş çerezler saklanmaz ve oturum açma işlemi OpenBot'ta bir hata gibi görünen bir şekilde başarısız olur.

Düşük seviyeli portların güvenlik duvarı ile sınırlandırılması

OpenBot'un kendi güvenlik notu, düşük seviyeli servis uç noktalarının tokenlar ile korunduğunu, bunların gizli tutulması gerektiğini ve ağ geçidini (gateway) atlatmak için kullanılmamaları gerektiğini belirtir. Tokenlar ikinci koruma katmanıdır. Birinci koruma katmanı ise portun dışarıdan hiçbir şekilde erişilemez olmasıdır.

Ajan bilgisayarı 4100 portunu dinler ve COMPUTER_TOKEN gerektirir. Bot uç noktaları 4200 ve 4201 portlarını dinler. Denetleyici (supervisor), ana makinede 4500, konteyner içerisinde ise 4300 portunu dinler. PostgreSQL 5432 portunu dinler. Bunların hiçbiri genel ağ arayüzünde yer almamalıdır; tek kullanıcılı bir kurulumda uygulama ve API de genel ağa açık olmamalıdır.

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw status verbose

Burada, güvenlik duvarının yeterli olduğunu varsayan kullanıcıların düştüğü bir tuzak bulunmaktadır. Bir konteyner portunu -p 3001:3001 ile dışarı açmak, Docker'ın bir DNAT kuralı oluşturmasına neden olur. Bu durumda trafik FORWARD yolunda işlenir ve ufw'nin varsayılan reddetme kuralının geçerli olduğu INPUT zincirinden asla geçmez. ufw status komutu Status: active çıktısını verse bile port dışarıya açık kalır. Yayınlanan portu eşleme sırasında -p 127.0.0.1:3001:3001 şeklinde loopback adresine bağlayın veya compose dosyanızda ana makine adresini tanımlayın. Doğrulamayı ufw status ile değil, ss -ltnp ile yapın.

OpenBot çevrimdışı bir yığın değildir

Dağıtım planınızı yapmadan önce bunu göz önünde bulundurun. OpenBot, kalıcı iş parçacıklarını ve konuşma geçmişini sunucunuzun dışında tutan bir CopilotKit Intelligence projesine bağımlıdır. Sunucu, başlangıç sırasında INTELLIGENCE_API_URL, INTELLIGENCE_GATEWAY_WS_URL, INTELLIGENCE_API_KEY ve COPILOTKIT_LICENSE_TOKEN değerlerini doğrular; bu dört değerin bir arada bulunması zorunludur, aksi takdirde başlatma başarısız olur. Ağustos 2026 itibarıyla ücretsiz bir plan mevcuttur ve Intelligence'ın kendisi de kendi kendine barındırılabilir (self-hostable) yapıdadır; bu nedenle hızlı başlangıç kılavuzunda gösterilenden daha fazla çaba ile tamamen yerel bir dağıtım mümkündür.

Model, ikinci dış bağımlılıktır. Kutudan çıktığı haliyle herhangi bir modelle gelmez. BOT_PROVIDER, openai, anthropic veya google değerlerini kabul eder ve OPENAI_BASE_URL, OpenAI yolunu herhangi bir uyumlu uç noktaya yönlendirir; token'ların kendi donanımınızda kalmasını istiyorsanız LLM'i kendi kendine barındırmak için VPS üzerinde Ollama çalıştırma yöntemi burada devreye girer. Tarayıcı kontrolü bir modelden yüksek performans bekler, bu nedenle bir modele karar vermeden önce yerel bir modeli gerçek bir görev üzerinde test edin.

Şimdilik tek bir kopya çalıştırın

Gateway, sayfa anlık görüntülerini (snapshot) sunucu süreci belleğinde önbelleğe alır. İki kopya çalıştırıldığında, bir süreç tarafından alınan anlık görüntü diğeri tarafından görülemez; bu durum, rastgele görünen element-not-found hatalarıyla işlemlerin kesintili olarak başarısız olmasına neden olur. Dağıtım belgeleri bu konuda nettir: tek bir kopya çalıştırın ve platformunuzun maksimum örnek sayısını 1 ile sabitleyin. Bu sınırlama, anlık görüntü önbelleğe alma işlemi veritabanına taşındığında sona erecektir. O zamana kadar OpenBot ölçeklendirmesini, yeni sunucular ekleyerek değil, mevcut sunucunun kaynaklarını artırarak yapın. Botlar arasındaki izolasyon, tıpkı self-hosted agent sandboxes yapısının bir ajanın hatalarını diğerlerinden uzak tutması gibi, bot bazlı container'lar aracılığıyla sağlanmaya devam eder.

Hata modları ve karşılaşacağınız durumlar

.env doldurulduktan hemen sonra başlatma işlemi sonlanıyor. Sunucu, herhangi bir servis sağlamadan önce yapılandırmayı doğrular. Eksik bir Intelligence bloğu, eksik bir KEY_ENCRYPTION_KEY veya istemci kimliği olup gizli anahtarı olmayan bir OAuth sağlayıcısı, sessizce hata vermek yerine başlatma işlemini durdurur. İlk hata mesajını okuyun, ilgili alanı düzeltin ve yeniden başlatın.

Yönetilen bir veritabanında geçişler (migrations) başarısız oluyor. vector eklentisi varsayılan olarak etkin değildir; bu nedenle geçiş işlemi, PostgreSQL'in tanımadığı bir sütun türüyle karşılaşır. Superuser olarak bağlanın, CREATE EXTENSION vector; komutunu çalıştırın ve ardından geçiş adımını tekrar başlatın.

Uygulama yükleniyor ancak oturum açma işlemi kalıcı olmuyor. Genel bir adres üzerinden şifrelenmemiş http:// kullanıyorsunuz. Bu güvenli bir bağlam olmadığından Secure çerezi reddedilir. Ön tarafa TLS ekleyin veya tarayıcının localhost görmesini sağlamak için SSH tüneli kullanın.

Botlar, ayrı olmasını beklediğiniz oturumları paylaşıyor. Supervisor çalışmıyor; bu nedenle bot başına bir bilgisayar ortamı yok ve her bot paylaşılan tarayıcıyı kullanıyor. COMPUTER_SUPERVISOR_URL ayarının yapıldığından ve supervisor'ın Docker soketine erişebildiğinden emin olun.

Bir bot duruyor ve yardım istiyor. Bu, tasarımın beklendiği gibi çalıştığı anlamına gelir. Denetim izi computer.help_requested kaydını tutar, canlı ekran üzerinden kontrolü ele alırsınız ve devir işlemi her iki tarafta da kayıt altına alınır.

FAQ

OPENBOT_SINGLE_USER ayarını bir VPS kurulumunda açık bırakmak güvenli midir?

Yalnızca ağ geçidine internet üzerinden erişilemediği durumlarda güvenlidir. OPENBOT_SINGLE_USER=true, oturum açma gerektirmeksizin her isteği tek bir yönetici olarak kabul eder; bu nedenle portu açabilen herkes dağıtımın, saklanan kimlik bilgilerinin ve oturum açmış tarayıcının kontrolünü ele geçirir. Tüm portlar 127.0.0.1 adresine bağlandığında ve uygulamaya bir SSH tüneli veya özel bir ağ arayüzü üzerinden eriştiğinizde bu kullanım kabul edilebilir. Genel bir arayüzde bu ayarı kapatın ve Google, Microsoft Entra, Okta veya OIDC yapılandırmasını BETTER_AUTH_SECRET, BETTER_AUTH_URL, INITIAL_ADMIN_EMAILS ve TRUSTED_ORIGINS ile birlikte kullanın.

Bir OpenBot botu ne kadar RAM tüketir?

Projenin arm64 mimarisindeki tek bir bot için yayınladığı veriler, tepe bellek kullanımını 0.55 GB olarak belirtmektedir; belgelenen minimum değer 2 GB, önerilen değer ise 4 GB'dir. Aynı anda çalışan birden fazla bot için yayınlanmış bir veri yoktur, çünkü her bot kendi Chromium örneğini çalıştırır. Bir botu gerçek bir görev üzerinde çalıştırın, docker stats üzerinden ilgili container'ın bellek kullanımını okuyun, ağ geçidi ve veritabanı tüketimini ekleyin ve ardından aynı anda çalışmasını beklediğiniz bot sayısı ile çarpın.

OpenBot'u self-host etmek için bir CopilotKit hesabına ihtiyacım var mı?

Evet. OpenBot, kalıcı iş parçacıkları ve bellek için bir CopilotKit Intelligence projesine bağımlıdır; Intelligence API URL'si, ağ geçidi WebSocket URL'si, API anahtarı ve lisans token'ı ayarlanmadığı sürece sunucu başlamayı reddeder. Ağustos 2026 itibarıyla ücretsiz bir plan mevcuttur ve Intelligence servisi self-host edilebilir; dolayısıyla ek çalışma ile barındırılan bağımlılık kaldırılabilir. Ayrıca kendi model API anahtarınızı sağlamanız gerekir, çünkü OpenBot ile birlikte hiçbir model gelmez.

Neden her bot tek bir tarayıcıyı paylaşmak yerine kendi tarayıcısını kullanıyor?

Çünkü bir tarayıcı profili bir kimliktir. Paylaşılan bir tarayıcı, paylaşılan çerezler ve paylaşılan oturumlar anlamına gelir; bu durumda bir hesaba giriş yapmış bir bot, o hesaba giriş yapmış tüm botlar demektir. Bot başına container yapısı, her çalışma arkadaşına kendi profilini ve kendi giriş bilgilerini sağlar. Bunun maliyeti bellektir, çünkü bot başına düşen bir Chromium örneği boyutlandırmadaki en büyük kalemdir.

Güvenlik duvarında hangi OpenBot portları açık olmalıdır?

Düşük seviyeli portların hiçbiri açık olmamalıdır. 4100 üzerindeki agent-computer, 4200 ve 4201 üzerindeki bot uç noktaları, 4500 üzerindeki supervisor ve 5432 üzerindeki PostgreSQL özel kalmalıdır. Proje bunları token'lar ile korur ve her durumda erişilemez tutmanızı ister. Yalnızca bir kullanıcının açması gereken portları yayınlayın ve -p 3001:3001 ile yayınlanan bir container portunun, ufw varsayılan reddetme kuralına bakılmaksızın erişilebilir olduğunu unutmayın; çünkü Docker'ın DNAT kuralı bu trafiği INPUT yerine FORWARD yoluna sokar.