İçeriğe geç

EğitimlerYapay zeka ve LLM

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
  1. Ön koşullar
  2. Adım 1 — Proje klasörünü ve gizli değerleri oluşturun
  3. Adım 2 — Compose dosyasını yazın
  4. Adım 3 — Langflow'u başlatın ve kontrol edin
  5. Adım 4 — Langflow'u Caddy ile HTTPS üzerinden yayınlayın
  6. Adım 5 — Giriş yapın ve kullanıcıları yönetin
  7. Adım 6 — Aynı sunucudaki Ollama'ya bağlanın
  8. Adım 7 — Kod çalıştırmayı kontrol altında tutun
  9. Yedekleme ve geri yükleme
  10. Langflow güncelleme
  11. Sorun giderme
  12. Langflow başlangıçta süper kullanıcı parolası hatasıyla kapanıyor
  13. Yeni kullanıcılar giriş yapamıyor
  14. password authentication failed for user langflow
  15. Ollama bileşeni bağlanamıyor
  16. Caddy 403 Forbidden döndürüyor
  17. 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

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:

KaynakEn düşük (resmi)Önerilen başlangıç
CPUÇift çekirdekÇok çekirdekli (4 vCPU)
RAM2 GBEn az 4 GB (resmi öneri)
DiskYayınlanmamışİmajlar, veritabanı ve dosyalar için 20 GB

Adım 1 — Proje klasörünü ve gizli değerleri oluşturun

Bash
sudo apt update
sudo apt install python3 openssl
sudo mkdir -p /opt/langflow
sudo chown $USER:$USER /opt/langflow
cd /opt/langflow

Compose'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.

Bash
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 .env

Son 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.

YAML
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-data volume'u bunları güncellemeler boyunca korur.
  • Süper kullanıcı parolasıyla birlikte LANGFLOW_AUTO_LOGIN=False herkesi giriş yapmaya zorlar. Yeni hesaplar bir süper kullanıcı etkinleştirene kadar pasif başlar, kendi kendine kayıt kapalıdır ve LANGFLOW_ENABLE_SUPERUSER_CLI=False komut 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

Bash
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:

Caddyfile
langflow.example.com {
    @outside not remote_ip 198.51.100.24
    respond @outside 403
    reverse_proxy 127.0.0.1:7860
}
Bash
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.com

Langflow'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:

Bash
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 tcp

172.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 environment listesine LANGFLOW_ALLOW_CUSTOM_COMPONENTS=False ekleyin. 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.

Bash
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 langflow

Yeni 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:

Bash
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 -d

Dö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.

Bash
cd /opt/langflow
nano .env
docker compose pull
docker compose up -d
docker compose logs --tail 50 langflow

nano 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

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

Şifre Oluştur

Lütfen onaylayın