n8n Kurulumu: Ubuntu Sunucuya Docker Compose ile Adım Adım (Self-Hosted)

Sunucun 6 dk okuma

n8n, uygulamaları ve servisleri birbirine bağlayarak iş akışlarını otomatikleştiren, kendi sunucunuza kurabileceğiniz (self-hosted) bir otomasyon aracıdır. Bu rehberde n8n’i bir Linux sunucuya (örneğin Ubuntu yüklü bir VDS) Docker Compose ile kurmayı, kendi alan adınızdan HTTPS ile açmayı, güncellemeyi ve yedeklemeyi anlatıyoruz. Komutlar ve dosyalar n8n’in resmî dokümantasyonundaki “Docker Compose” kurulumuna dayanır. n8n’in ne olduğunu merak ediyorsanız önce n8n nedir yazımıza bakabilirsiniz.

Ubuntu konusunu anlatan çizim

Not: n8n’in kendi dokümantasyonu, kendi sunucunda barındırmayı (self-hosting) sunucu, konteyner ve güvenlik konusunda deneyimli kullanıcılara önerir; hatalı yapılandırma veri kaybına, güvenlik sorunlarına ve kesintiye yol açabilir.

Gereksinimler

  • Root veya sudo yetkili bir Linux sunucu (bu rehberde Ubuntu) ve sabit bir genel IP adresi
  • Bir alan adı ve DNS kayıtlarını düzenleme yetkisi (ör. n8n.alanadiniz.com)
  • Sunucuda 80 ve 443 numaralı TCP portlarının açılabilmesi (SSL sertifikası ve web erişimi için)

1. Docker ve Docker Compose’u Kurun

Docker Engine’i ve Compose eklentisini Docker’ın resmî Ubuntu kurulum sayfasındaki adımlarla kurun. Ardından ikisinin de çalıştığını kontrol edin:

docker --version
docker compose version

İsteğe bağlı: Docker komutlarını her seferinde sudo yazmadan çalıştırmak için kullanıcınızı docker grubuna ekleyin:

sudo usermod -aG docker ${USER}
exec sg docker newgrp
groups

2. Alan Adını Sunucuya Yönlendirin (DNS)

n8n’i bir alt alan adında yayınlamak için DNS panelinizde bir A kaydı oluşturun:

Kayıt türüAdHedef
An8n (veya istediğiniz alt alan adı)Sunucunuzun IP adresi

DNS kayıtları hakkında daha fazla bilgi için DNS ayarları nedir yazımıza bakabilirsiniz. Kaydın yayılmasını bekleyin; SSL sertifikası ancak alan adı sunucunuzu gösterdiğinde alınabilir.

3. Proje Klasörü ve .env Dosyası

mkdir n8n-compose
cd n8n-compose

Klasörün içinde .env adında bir dosya oluşturun ve kendi bilgilerinizle doldurun:

# n8n bu örnekte https://n8n.alanadiniz.com adresinde yayınlanır
DOMAIN_NAME=alanadiniz.com
SUBDOMAIN=n8n

# Zamanlama (Cron/Schedule) düğümlerinin kullanacağı saat dilimi
GENERIC_TIMEZONE=Europe/Istanbul

# SSL (Let's Encrypt) sertifikası için e-posta adresi
SSL_EMAIL=siz@alanadiniz.com

Saat dilimini belirtmezseniz n8n varsayılan olarak New York saatini kullanır; zamanlanmış iş akışlarınızın Türkiye saatine göre çalışması için Europe/Istanbul yazın.

4. Paylaşılan Dosya Klasörü

n8n ile sunucu arasında dosya paylaşmak için (ör. “Read/Write Files from Disk” düğümü) proje klasöründe bir local-files klasörü oluşturun. Elle oluşturmak, doğru sahiplik ve izinlerle oluşmasını sağlar:

mkdir local-files

5. compose.yaml Dosyası

Aynı klasörde compose.yaml dosyasını oluşturun. Bu dosya iki konteyner tanımlar: n8n’in kendisi ve SSL sertifikasını otomatik alıp trafiği n8n’e yönlendiren Traefik (ters vekil sunucu):

services:
  traefik:
    image: "traefik"
    restart: always
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.web.http.redirections.entryPoint.to=websecure"
      - "--entrypoints.web.http.redirections.entrypoint.scheme=https"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
      - "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}"
      - "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - traefik_data:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro

  n8n:
    image: n8nio/n8n
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    labels:
      - traefik.enable=true
      - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
      - traefik.http.routers.n8n.tls=true
      - traefik.http.routers.n8n.entrypoints=web,websecure
      - traefik.http.routers.n8n.tls.certresolver=mytlschallenge
      - traefik.http.middlewares.n8n.headers.SSLRedirect=true
      - traefik.http.middlewares.n8n.headers.STSSeconds=315360000
      - traefik.http.middlewares.n8n.headers.browserXSSFilter=true
      - traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
      - traefik.http.middlewares.n8n.headers.forceSTSHeader=true
      - traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
      - traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
      - traefik.http.middlewares.n8n.headers.STSPreload=true
      - traefik.http.routers.n8n.middlewares=n8n@docker
    environment:
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - N8N_WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - TZ=${GENERIC_TIMEZONE}
      - N8N_RESTRICT_FILE_ACCESS_TO=/files
    volumes:
      - n8n_data:/home/node/.n8n
      - ./local-files:/files

volumes:
  n8n_data:
  traefik_data:
  • 127.0.0.1:5678: n8n’in portu yalnızca sunucunun içinden erişilebilir; dışarıdan gelen trafik Traefik üzerinden HTTPS ile gelir.
  • N8N_WEBHOOK_URL: Webhook adreslerinin doğru (https ve alan adınızla) oluşması için gereklidir. Bu değişken n8n 2.30.0 ve sonrasında vardır; daha eski sürümlerde WEBHOOK_URL kullanılır.
  • n8n_data: İş akışlarının tutulduğu SQLite veritabanını ve kimlik bilgilerini şifreleyen şifreleme anahtarını saklar. Bu volume silinirse veriler kaybolur.

6. Güvenlik Duvarını Ayarlayın

UFW kullanıyorsanız SSH portunuzu açık bıraktığınızdan emin olarak 80 ve 443’e izin verin:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Sunucu sağlayıcınızın panelinde ayrıca bir ağ güvenlik duvarı varsa bu portları orada da açın. 5678 portunu dışarıya açmanız gerekmez.

7. n8n’i Başlatın

sudo docker compose up -d

Birkaç dakika içinde Traefik sertifikayı alır. Tarayıcıda https://n8n.alanadiniz.com adresini açın ve ilk açılışta sahip (owner) hesabını oluşturun. Kurulum yalnızca HTTPS üzerinden erişilebilir. Durdurmak için:

sudo docker compose stop

n8n Nasıl Güncellenir?

Proje klasöründe yeni imajı indirip konteynerleri yeniden oluşturun:

docker compose pull
docker compose down
docker compose up -d

n8n hemen her hafta yeni bir sürüm yayınlar. Üretimde stable sürümü kullanın; beta en yeni ama kararsız olabilecek sürümdür. Güncellemeden önce yedek almanız önerilir.

Yedekleme ve Veritabanı

  • Volume yedeği: n8n_data volume’u hem veritabanını hem de şifreleme anahtarını içerir; sunucu taşırken veya geri yüklerken ikisi birlikte gerekir.
  • İş akışlarını dışa aktarma: İş akışlarını n8n arayüzünden JSON olarak indirebilirsiniz.
  • PostgreSQL: Varsayılan veritabanı SQLite’tır. PostgreSQL kullanan hazır Compose örnekleri n8n’in resmî n8n-hosting deposunda bulunur. PostgreSQL kullansanız bile /home/node/.n8n klasörünü volume olarak bağlamaya devam edin; şifreleme anahtarı orada durur.

Kurulum Çalışmıyorsa

  • Siteye bağlanılamıyor: A kaydının sunucu IP’sini gösterdiğini ve 80/443 portlarının açık olduğunu kontrol edin.
  • Sertifika hatası: DNS yayılmadan başlattıysanız Traefik sertifikayı alamamış olabilir; docker compose logs traefik çıktısına bakın.
  • Webhook adresleri localhost görünüyor: .env içindeki alan adını ve N8N_WEBHOOK_URL satırını kontrol edin.
  • n8n kayıtları: docker compose logs -f n8n

Kurulumla Uğraşmak İstemiyorsanız

Sunucun’un n8n sunucu paketlerinde n8n, Türkiye’deki veri merkezinde kurulu ve kullanıma hazır teslim edilir; sunucuya tam erişiminiz olduğu için ayarları sonradan kendiniz de değiştirebilirsiniz. Yukarıdaki adımları kendiniz uygulamak isterseniz root erişimli bir VDS sunucu da kullanabilirsiniz.

Sık Sorulan Sorular

n8n’i kendi sunucuma kurmak ücretli mi?

n8n “fair-code” modeliyle Sustainable Use License altında dağıtılır; kendi iç iş süreçleriniz için kendi sunucunuzda kullanmak ücretsizdir. Sunucu ve alan adı maliyeti size aittir.

n8n’i docker run ile tek komutla kurabilir miyim?

Yerel denemeler için tek docker run komutu yeterlidir ve n8n http://localhost:5678 adresinde açılır. Ancak n8n’in dokümantasyonu bu sayfanın güncel olmadığını belirtip sunucu kurulumları için Docker Compose yöntemini önerir; alan adı, HTTPS ve webhook ayarları da Compose ile daha düzenli yönetilir.

n8n tunnel özelliğini sunucuda kullanabilir miyim?

Hayır. n8n’e göre tunnel özelliği yalnızca yerel geliştirme ve test içindir, üretimde kullanmak güvenli değildir. Webhook’lar için alan adı ve HTTPS ile yukarıdaki kurulumu kullanın.

Kategoriler

Son yazılar