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.
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ü | Ad | Hedef |
|---|---|---|
| A | n8n (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_URLkullanı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_datavolume’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/.n8nklasö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:
.enviçindeki alan adını veN8N_WEBHOOK_URLsatı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
-
CentOS 14 yazı
-
cPanel 25 yazı
-
CyberPanel 24 yazı
-
İşletim Sistemleri 104 yazı
-
Juniper Networks 18 yazı
-
Kontrol Panelleri 65 yazı
-
Linux 24 yazı
-
MySQL 30 yazı
-
Network 108 yazı
-
Plesk Panel 16 yazı
-
Sanal Sunucu 151 yazı
-
SEO 20 yazı
-
Siber Güvenlik 116 yazı
-
Teknoloji 336 yazı
-
VMware 34 yazı
-
WordPress 30 yazı
-
Yapay Zeka 22 yazı