Langflow Docker Compose ve PostgreSQL ile nasıl kurulur
Langflow'u Ubuntu ya da Debian'da Docker Compose ve PostgreSQL ile kurun: süper kullanıcı girişi, sabit gizli anahtar, Caddy ile HTTPS, yedek ve güncelleme.
- Orta
- 35 dk okuma
- Güncellendi
Denendiği sistemler: Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 12, Debian 13
Bu sayfada
- Ön koşullar
- Adım 1 — Proje klasörünü ve gizli değerleri oluşturun
- Adım 2 — Compose dosyasını yazın
- Adım 3 — Langflow'u başlatın ve kontrol edin
- Adım 4 — Langflow'u Caddy ile HTTPS üzerinden yayınlayın
- Adım 5 — Giriş yapın ve kullanıcıları yönetin
- Adım 6 — Aynı sunucudaki Ollama'ya bağlanın
- Adım 7 — Kod çalıştırmayı kontrol altında tutun
- Yedekleme ve geri yükleme
- Langflow güncelleme
- Sorun giderme
- Langflow başlangıçta süper kullanıcı parolası hatasıyla kapanıyor
- Yeni kullanıcılar giriş yapamıyor
- password authentication failed for user langflow
- Ollama bileşeni bağlanamıyor
- Caddy 403 Forbidden döndürüyor
- Sonraki adımlar
Langflow, yapay zeka ajanları ve LLM iş akışları için görsel bir oluşturucudur. Modeller, istemler, vektör depoları, araçlar ve ajanlar için bileşenleri bir tuvale sürükler, akışı bir test alanında (playground) dener ve onu bir API uç noktası veya MCP sunucusu olarak sunarsınız. Arka planda her bileşen açıp değiştirebileceğiniz Python kodudur; bu Langflow'u esnek yapar ama dikkatli çalıştırılması gerektiği anlamına da gelir.
Bu rehber resmi langflowai/langflow imajını, projenin Docker Compose örneğini izleyerek bir PostgreSQL veritabanıyla kurar. İmaj sürümünü sabitler, otomatik girişi bir süper kullanıcı ve kendi gizli anahtarınızla kapatır, tüm portları localhost'ta tutar, Langflow'u Caddy ile HTTPS üzerinden yayınlar, yerel bir Ollama sunucusuna bağlar ve yığını nasıl yedekleyip güncelleyeceğinizi öğrenirsiniz.
Ön koşullar
- Docker Engine ve Compose eklentisi kurulu, Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 12 veya Debian 13 çalıştıran bir sunucu; bkz. Ubuntu'ya Docker kurulumu veya Debian'a Docker kurulumu.
sudoyetkisi ve SSH anahtarıyla girişi olan, root olmayan bir kullanıcı; bkz. Yeni bir Linux sunucusunu güvenli hale getirin ve SSH anahtarlarını ayarlayın.- Sunucuyu gösteren bir A (isteğe bağlı olarak AAAA) kaydına sahip
langflow.example.comgibi bir alan adı ve Caddy reverse proxy rehberindeki Caddy kurulumu. - Bir model sağlayıcısı için API anahtarı veya Ollama kurulumu ile kurulmuş Ollama.
Langflow'un kurulum sayfası bu gereksinimleri Python paketi için listeler; Docker sayfası kendine ait bir değer yayınlamaz, bu nedenle aynı değerler makul bir alt sınırdır:
| Kaynak | En düşük (resmi) | Önerilen başlangıç |
|---|---|---|
| CPU | Çift çekirdek | Çok çekirdekli (4 vCPU) |
| RAM | 2 GB | En az 4 GB (resmi öneri) |
| Disk | Yayınlanmamış | İmajlar, veritabanı ve dosyalar için 20 GB |
Adım 1 — Proje klasörünü ve gizli değerleri oluşturun
sudo apt update
sudo apt install python3 openssl
sudo mkdir -p /opt/langflow
sudo chown $USER:$USER /opt/langflow
cd /opt/langflowCompose'un ihtiyaç duyduğu ayarları .env dosyasına yazın. Gizli anahtar, API anahtarları gibi saklanan kimlik bilgilerini şifreler; Langflow bunu kendisi üretebilir, ancak belgeler üretimde kendi anahtarınızı ayarlamanızı önerir ve burada kullanılan Python komutunu gösterir.
cat > .env <<EOF
LANGFLOW_VERSION=1.12.5
POSTGRES_PASSWORD=$(openssl rand -hex 24)
LANGFLOW_SUPERUSER=admin
LANGFLOW_SUPERUSER_PASSWORD=$(openssl rand -base64 24)
LANGFLOW_SECRET_KEY=$(python3 -c "from secrets import token_urlsafe; print(token_urlsafe(32))")
EOF
chmod 600 .env
grep SUPERUSER .envSon komutun gösterdiği süper kullanıcı adını ve parolasını not edin. LANGFLOW_VERSION imajı sabitler; en yeni kararlı sürüm numarası için Docker Hub'daki Langflow etiketlerine bakın ve dev içeren etiketlerden kaçının.
Adım 2 — Compose dosyasını yazın
/opt/langflow/compose.yaml dosyasını oluşturun. Dosya resmi docker_example/docker-compose.yml örneğine dayanır ve üç değişiklik içerir: veritabanı portu hiç yayınlanmaz, Langflow yalnızca localhost'ta yayınlanır ve Langflow'un önerdiği güvenli yapılandırmadaki kimlik doğrulama ayarları eklenir.
services:
langflow:
image: langflowai/langflow:${LANGFLOW_VERSION}
restart: unless-stopped
depends_on:
- postgres
ports:
- "127.0.0.1:7860:7860"
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
- LANGFLOW_DATABASE_URL=postgresql://langflow:${POSTGRES_PASSWORD}@postgres:5432/langflow
- LANGFLOW_CONFIG_DIR=/app/langflow
- LANGFLOW_AUTO_LOGIN=False
- LANGFLOW_SUPERUSER=${LANGFLOW_SUPERUSER}
- LANGFLOW_SUPERUSER_PASSWORD=${LANGFLOW_SUPERUSER_PASSWORD}
- LANGFLOW_SECRET_KEY=${LANGFLOW_SECRET_KEY}
- LANGFLOW_NEW_USER_IS_ACTIVE=False
- LANGFLOW_ENABLE_SIGNUP=False
- LANGFLOW_ENABLE_SUPERUSER_CLI=False
- DO_NOT_TRACK=true
volumes:
- langflow-data:/app/langflow
postgres:
image: postgres:16-trixie
restart: unless-stopped
environment:
POSTGRES_USER: langflow
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: langflow
volumes:
- langflow-postgres:/var/lib/postgresql/data
volumes:
langflow-postgres:
langflow-data:Ayarların kısa açıklaması:
LANGFLOW_CONFIG_DIR=/app/langflow, Langflow'un logları, dosya depolamasını ve izleme verilerini tuttuğu yerdir;langflow-datavolume'u bunları güncellemeler boyunca korur.- Süper kullanıcı parolasıyla birlikte
LANGFLOW_AUTO_LOGIN=Falseherkesi giriş yapmaya zorlar. Yeni hesaplar bir süper kullanıcı etkinleştirene kadar pasif başlar, kendi kendine kayıt kapalıdır veLANGFLOW_ENABLE_SUPERUSER_CLI=Falsekomut satırından ek süper kullanıcı oluşturulmasını engeller. postgres:16-trixie, resmi örneğin sabitlediği etikettir; böylece PostgreSQL'in temel sistemi mevcut bir volume'un altında değişip collation uyarılarına yol açmaz.DO_NOT_TRACK=true, Langflow telemetrisinden çıkar.
Adım 3 — Langflow'u başlatın ve kontrol edin
docker compose up -d
docker compose ps
docker compose logs --tail 50 langflow
curl -I http://127.0.0.1:7860İlk başlatma veritabanı şemasını oluşturur ve bir iki dakika sürer. İki servis de çalışır görünmeli, langflow satırında 127.0.0.1:7860->7860/tcp yer almalı ve curl komutu HTTP/1.1 200 OK döndürmelidir. Langflow hemen kapanıyorsa loglar genellikle eksik veya reddedilen bir süper kullanıcı parolasını gösterir.
Adım 4 — Langflow'u Caddy ile HTTPS üzerinden yayınlayın
/etc/caddy/Caddyfile dosyasına bir site bloğu ekleyin. Langflow rastgele kod çalıştırabildiği için örnek erişimi kendi IP adresinizle sınırlar; 198.51.100.24 değerini kendi adresinizle değiştirin veya herkese açık akış uç noktalarına ihtiyacınız varsa iki eşleştirici satırını silin:
langflow.example.com {
@outside not remote_ip 198.51.100.24
respond @outside 403
reverse_proxy 127.0.0.1:7860
}sudo systemctl reload caddy
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
curl -I https://langflow.example.comLangflow'un Nginx örneği akış (streaming) için WebSocket yükseltmelerini, uzun okuma zaman aşımlarını ve arabelleksiz yanıtları açar. Caddy'de bunların hiçbirini ayarlamanız gerekmez: WebSocket'leri kendiliğinden aktarır, varsayılan olarak okuma zaman aşımı uygulamaz ve akış halindeki yanıtları hemen gönderir. Nginx'i tercih ederseniz bu ayarları resmi örnekten veya Nginx ve Certbot rehberinden alın; Traefik de bir seçenektir.
Adım 5 — Giriş yapın ve kullanıcıları yönetin
https://langflow.example.com adresini açın, Adım 1'deki süper kullanıcıyla giriş yapın ve üretilen parolayı bir parola yöneticisinde saklayın. Ardından çalışma arkadaşlarınız için Admin Page üzerinden hesap oluşturun. LANGFLOW_NEW_USER_IS_ACTIVE=False olduğu için her yeni hesap, siz orada etkinleştirene kadar pasif kalır.
Bir akışı başka bir uygulamadan çağırmak için hesap ayarlarınızda bir Langflow API anahtarı oluşturun ve her istekle gönderin. Anahtarlar bir kullanıcıya aittir; o kullanıcı ayrıldığında anahtarlarını silin.
Adım 6 — Aynı sunucudaki Ollama'ya bağlanın
Konteyner ana makineye host.docker.internal üzerinden ulaşır, ancak standart bir kurulumdan sonra Ollama 127.0.0.1 üzerinde dinler. Ollama SSS sayfasında anlatıldığı gibi bir systemd drop-in dosyasıyla tüm adreslerde dinlemesini sağlayın ve ufw üzerinden yalnızca Langflow ağına izin verin:
sudo mkdir -p /etc/systemd/system/ollama.service.d
sudo tee /etc/systemd/system/ollama.service.d/override.conf <<'EOF'
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
EOF
sudo systemctl daemon-reload
sudo systemctl restart ollama
docker network inspect langflow_default | grep Subnet
sudo ufw allow from 172.18.0.0/16 to any port 11434 proto tcp172.18.0.0/16 değerini inspect komutunun yazdığı alt ağla değiştirin. Bu kural Ollama'yı yalnızca ufw varsayılan reddetme politikasıyla etkinken korur; sudo ufw status verbose çıktısında Status: active ve deny (incoming) göründüğünü ve başka bir makineden nc -vz sunucu-ip-adresiniz 11434 komutunun başarısız olduğunu doğrulayın. Ollama'nın kimlik doğrulaması yoktur; 11434 numaralı portu asla herkese açmayın. Bir akışa Ollama model bileşenini ekleyin, temel adresini http://host.docker.internal:11434 yapın ve ollama pull ile indirdiğiniz bir modeli seçin. Büyük modeller bir GPU sunucusunda çok daha hızlı yanıt verir.
Adım 7 — Kod çalıştırmayı kontrol altında tutun
Langflow'un güvenlik belgeleri riskler konusunda açıktır: bileşen kod düzenleyicisi kullanıcıların arka uç sürecine tam erişimle rastgele Python yazıp çalıştırmasına izin verir, Langflow tek bir süreç içinde kullanıcıları yalıtmaz ve kimlik doğrulama ile yetkilendirme konteynerin dışında sağlanmalıdır.
Tek bir sunucu için pratik önlemler:
- Adım 4'teki Caddy IP izin listesini koruyun veya Langflow'a yalnızca WireGuard gibi bir VPN üzerinden erişin.
- Kullanıcılarınız yalnızca yerleşik bileşenlere ihtiyaç duyuyorsa
environmentlistesineLANGFLOW_ALLOW_CUSTOM_COMPONENTS=Falseekleyin. Belgelere göre bu ayar özel bileşenleri ve düzenleyici içinde bileşen kodu düzenlemeyi kapatır. - Langflow için harcama sınırı olan ayrı model API anahtarları kullanın ve kişiler ayrıldığında bunları yenileyin.
- Birbirinin verisini görmemesi gereken gruplar arasında tek bir kurulumu paylaştırmak yerine yalıtım gereken her ekip için ayrı bir Langflow kurulumu çalıştırın.
Yedekleme ve geri yükleme
Durum iki adlandırılmış volume'da tutulur: langflow_langflow-postgres akışları, kullanıcıları ve şifrelenmiş kimlik bilgilerini içeren veritabanını, langflow_langflow-data ise logları ve yüklenen dosyaları tutar. .env olmadan saklanan kimlik bilgilerini çözemezsiniz; onu da yedekleyin.
sudo mkdir -p /opt/backups
sudo chown $USER:$USER /opt/backups
cd /opt/langflow
docker compose exec -T postgres pg_dump -U langflow langflow | gzip > /opt/backups/langflow-db-$(date +%F).sql.gz
docker compose stop langflow
docker run --rm -v langflow_langflow-data:/data -v /opt/backups:/backup ubuntu tar czf /backup/langflow-data-$(date +%F).tar.gz -C /data .
docker compose start langflow
sudo tar czf /opt/backups/langflow-config-$(date +%F).tar.gz -C /opt langflowYeni bir sunucuya geri yüklemek için yapılandırma arşivini /opt altına açın, Langflow'u başlatmadan konteynerleri ve volume'ları oluşturun, veritabanını ve dosyaları yükleyin, ardından her şeyi başlatın:
sudo tar xzf /opt/backups/langflow-config-2026-10-09.tar.gz -C /opt
cd /opt/langflow
docker compose create
docker compose start postgres
gunzip -c /opt/backups/langflow-db-2026-10-09.sql.gz | docker compose exec -T postgres psql -U langflow langflow
docker run --rm -v langflow_langflow-data:/data -v /opt/backups:/backup ubuntu tar xzf /backup/langflow-data-2026-10-09.tar.gz -C /data
docker compose up -dDökümü yüklemeden önce start komutundan sonra PostgreSQL'e birkaç saniye tanıyın. Üç arşivin de kopyasını sunucunun dışına alın.
Langflow güncelleme
Belgelenen yükseltme yolu imaj etiketini değiştirmek, yeni imajı çekmek ve aynı volume'larla yeniden başlatmaktır. Veritabanı geçişleri başlangıçta çalıştığı ve etiketi geri almak bunları geri almadığı için önce sürüm notlarını okuyun ve yedek alın.
cd /opt/langflow
nano .env
docker compose pull
docker compose up -d
docker compose logs --tail 50 langflownano içinde LANGFLOW_VERSION değerini yeni kararlı etikete ayarlayın. Sürüm notları aksini söylemedikçe postgres:16-trixie imajını koruyun; yeni bir PostgreSQL ana sürümü yalnızca yeni bir etiket değil, döküm ve geri yükleme gerektirir.
Sorun giderme
Langflow başlangıçta süper kullanıcı parolası hatasıyla kapanıyor
LANGFLOW_SUPERUSER_PASSWORD boş, konteynere aktarılmamış veya eski varsayılan langflow değerinde. .env dosyasını kontrol edin, Compose'un ne aktardığını görmek için docker compose config | grep SUPERUSER çalıştırın ve yeniden başlatın.
Yeni kullanıcılar giriş yapamıyor
LANGFLOW_NEW_USER_IS_ACTIVE=False olduğu için pasifler. Süper kullanıcı olarak Admin Page üzerinden etkinleştirin.
password authentication failed for user langflow
POSTGRES_PASSWORD, veritabanı volume'u oluşturulduktan sonra değiştirilmiş. PostgreSQL özgün parolayı korur. Eski değeri .env dosyasına geri yazın veya .env dosyasını güncellemeden önce parolayı PostgreSQL içinde ALTER USER ile değiştirin.
Ollama bileşeni bağlanamıyor
Ollama hâlâ 127.0.0.1 üzerinde dinliyor ya da ufw Docker alt ağını engelliyor. ss -tln | grep 11434 ve sudo ufw status çıktılarını kontrol edin ve temel adresin localhost değil host.docker.internal kullandığından emin olun.
Caddy 403 Forbidden döndürüyor
Mevcut genel IP adresiniz remote_ip satırındakinden farklı. Adresi güncelleyin ve sudo systemctl reload caddy çalıştırın.
Sonraki adımlar
- Yerel modelleri Ollama kurulumu ile çalıştırın.
- Langflow'u uygulama odaklı bir platformla Dify kurulumu rehberinde karşılaştırın.
- Kurulumu paylaşmadan önce resmi Langflow güvenlik belgelerini okuyun.
- Sunucu seçeneklerini Langflow hosting sayfasında inceleyin.
Sık sorulan sorular
Langflow neden süper kullanıcı parolası olmadan başlamayı reddediyor?
LANGFLOW_AUTO_LOGIN False olduğunda Langflow LANGFLOW_SUPERUSER_PASSWORD ister; değer yoksa veya eski varsayılan langflow ise güvenli tarafta kalıp başlamaz. Resmi Docker imajları otomatik girişi zaten kapatır, bu yüzden bir parola vermeniz gerekir.
Langflow'u herkese açık internete koymak güvenli mi?
Onu özel bir araç olarak görün. Akışlar ve özel bileşenler Langflow arka ucuna tam erişimle Python kodu çalıştırır ve belgelere göre Langflow tek bir süreç içinde kullanıcıları birbirinden yalıtmaz. Hesapları yalnızca güvendiğiniz kişilere verin ve bir IP izin listesi veya VPN düşünün.
Bu rehber hangi Langflow sürümünü kurar?
İmaj etiketi .env içinde sabitlenir. Bu rehber kontrol edildiğinde Docker Hub'daki en son kararlı etiket 1.12.5 idi; dev içeren etiketler geliştirme derlemeleridir ve üretim için uygun değildir.
Langflow'u aynı sunucudaki Ollama'ya nasıl bağlarım?
OLLAMA_HOST ile Ollama'nın 0.0.0.0 üzerinde dinlemesini sağlayın, ufw'de 11434 numaralı porta yalnızca Compose alt ağının erişmesine izin verin ve Ollama bileşeninin temel adresini http://host.docker.internal:11434 olarak ayarlayın.
Kaynaklar
- docs.langflow.org/deployment-docker
- docs.langflow.org/api-keys-and-authentication
- docs.langflow.org/security
- docs.langflow.org/environment-variables
- docs.langflow.org/deployment-nginx-ssl
- docs.langflow.org/get-started-installation
- github.com/langflow-ai/langflow/blob/main/docker_example/docker-com…
- hub.docker.com/r/langflowai/langflow/tags
- docs.ollama.com/faq
- caddyserver.com/docs/caddyfile/directives/reverse_proxy