VPS üzerinde n8n kurulumu: Docker ve HTTPS
Docker Compose, Postgres ve HTTPS ile n8n kurulumu rehberi. WEBHOOK_URL yapılandırması ve encryption-key hatalarını çözerek sistemi stabil hale getirin.
Ne inşa ediliyor
n8n bir iş akışı otomasyon aracıdır: bir tetikleyicinin —webhook, zamanlanmış görev veya form gönderimi— API'leri çağıran, verileri yeniden şekillendiren ve diğer sistemlere yazan bir düğüm zincirini çalıştırdığı görsel bir editördür. Her model sağlayıcısı ve veritabanı ile servis yazmaya gerek kalmadan iletişim kurabildiği için yapay zeka ajan iş akışları için varsayılan bağlantı aracı haline gelmiştir. Bir docker run iki dakika içinde çalışan bir editöre sahip olur. Bu kılavuz, geri kalan yüzde doksanlık kısım hakkındadır: varsayılan SQLite dosyası yerine Postgres kullanarak yapıyı dayanıklı hale getirmek, HTTPS üzerinden erişilebilir kılmak ve —neredeyse herkesin hata yaptığı kısım— webhook'ların dış dünyanın gerçekten erişebileceği bir URL sağlamasını sağlamak.
Tamamlanmış yapı, tek bir Docker ağındaki iki konteynerden oluşur: n8n'in kendisi ve iş akışları ile kimlik bilgilerini tutan bir Postgres veritabanı. Host üzerindeki bir reverse proxy, TLS bağlantısını sonlandırır ve trafiği localhost üzerindeki n8n'e iletir; böylece internete sadece bu proxy üzerinden açılan bir bağlantı bulunur. Bu yapı, 2026 self-hosting shortlist listesindeki diğer servislerle birlikte yer alır.
Ön Koşullar ve gerçek sınırlar
En az 1 GB RAM kapasiteli bir VPS gereklidir; iş akışları yoğunlaştığında 2 GB RAM planlanmalıdır. Çalıştırmalar ve Node.js çalışma zamanı yüksek bellek tüketir; bellek yetersizliği nedeniyle container'ın sistem tarafından sonlandırılması (out-of-memory killer) istenmeyen bir durumdur. Başlangıç için tek bir vCPU yeterlidir.
Sertifika talebinden önce çözümlenebilen, VPS genel IP adresine yönlendirilmiş bir A kaydına sahip bir alan adı veya alt alan adı (örneğin n8n.example.com) gereklidir. 80 ve 443 portları proxy için açık olmalıdır; n8n'in 5678 portu internete açık olmamalıdır. Docker Engine ve Compose eklentisi gereklidir; eğer docker compose version işlemi docker: 'compose' is not a docker command ile hata verirse, eski bağımsız binary sürümü kullanılıyor demektir ve eklenti sudo apt install docker-compose-plugin'dir.
SQLite testler için uygundur, Postgres ise kritik iş yükleri için gereklidir
n8n'in varsayılan veritabanı /home/node/.n8n/database.sqlite konumunda bulunan bir SQLite dosyasıdır. Test aşaması için uygundur; herhangi bir volume mount edilmezse, ilk container yeniden oluşturma işleminde veriler kaybolur. Postgres'e geçme nedeni saf hız değildir; SQLite tek bir yazıcı kilidi (writer lock) kullanır. Bu durum, aynı anda birden fazla workflow çalıştıran veya ileride ihtiyaç duyulacak olan queue mode yapısında SQLITE_BUSY: database is locked hatasına yol açar. Postgres bu tür kısıtlamalara sahip değildir, pg_dump ile sorunsuz yedekleme sağlar ve n8n'in kendi dokümantasyonunda kritik sunucular için önerilen yapıdır. Daha sonra geçiş yapmak verilerin manuel olarak taşınmasını gerektirir; bu nedenle sistem kritik öneme sahipse işleme Postgres ile başlanmalıdır.
DNS ve firewall
Sertifika adımının, çözümlenemeyen bir isim nedeniyle hata vermemesi için önce kaydı yönlendirin ve portları açın.
dig +short n8n.example.com
curl -s ifconfig.me
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow OpenSSH
sudo ufw enable5678 portunu açmayın. Compose dosyası n8n'i 127.0.0.1:5678 adresine bağlar; bu nedenle sadece ana makinedeki reverse proxy ona erişebilir. Bir ufw allow 5678 bu izolasyonu bozar.
Compose dosyası
Bir çalışma dizini ve bir docker-compose.yml oluşturun. Tüm yapı şunlardan oluşur: iki servis, bir özel ağ ve iki isimlendirilmiş volume.
services:
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: n8n
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: n8n
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- n8n_net
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n -d n8n"]
interval: 10s
timeout: 5s
retries: 5
n8n:
image: docker.n8n.io/n8nio/n8n:2.29.10
restart: unless-stopped
ports:
- "127.0.0.1:5678:5678"
environment:
- N8N_HOST=n8n.example.com
- N8N_PORT=5678
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.example.com/
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- N8N_PROXY_HOPS=1
- GENERIC_TIMEZONE=Europe/London
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
volumes:
- n8n_data:/home/node/.n8n
networks:
- n8n_net
depends_on:
postgres:
condition: service_healthy
volumes:
postgres_data:
n8n_data:
networks:
n8n_net:Belirtilmesi gereken bazı kararlar bulunmaktadır. DB_POSTGRESDB_HOST=postgres, Docker'ın paylaşımlı ağ üzerinde çözümlediği servis adıdır; n8n konteyneri içindeki localhost ise n8n'in kendisidir. condition: service_healthy içeren depends_on, n8n'in açılışta Postgres ile yarışmasını engeller; bu olmazsa n8n başlatılır, veritabanı bulunamaz ve süreç sonlanır. /home/node/.n8n konumundaki n8n_data isimli volume, şifreleme anahtarını ve SQLite kullanılıyorsa veritabanını tutar; bu, kaybedilmemesi gereken tek dizindir. İmajı tam bir versiyona sabitleyin, asla latest kullanmayın; nedenleri aşağıdaki güncelleme bölümünde açıklanmıştır.
Secrets dosyası
Parolalar asla compose dosyasına yazılmamalıdır. Parolaları, Compose tarafından otomatik olarak okunan ve gerçekten rastgele oluşturulan bir .env dosyasına yerleştirin.
printf 'POSTGRES_PASSWORD=%s\n' "$(openssl rand -hex 24)" > .env
printf 'N8N_ENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" >> .env
chmod 600 .envN8N_ENCRYPTION_KEY, buradaki en önemli dizgidir; tüm saklanan kimlik bilgileri bu anahtar ile şifrelenir. n8n'in bir anahtar oluşturmasına izin vermek yerine, bu anahtarı açıkça belirleyin; çünkü sizin oluşturduğunuz bir değer, kaydedilebilir ve geri yüklenebilir. n8n ilk kimlik bilgisini bu anahtar ile şifreledikten sonra, anahtarı değiştirmek tüm kimlik bilgilerinin çözülememesine neden olur; bu nedenle anahtarı bir kez belirleyin ve o satıra bir daha dokunmayın.
Webhook işlevselliğini belirleyen ortam değişkenleri
Dört değişken, n8n'in dış dünyaya kendini nasıl tanımlayacağını kontrol eder. Bu değişkenlerin yanlış yapılandırılması, n8n için en sık karşılaşılan destek sorunudur.
N8N_HOST,n8n.example.comolan genel hostname değeridir. Bir proxy arkasında varsayılanlocalhostdeğerinde bırakılırsa, editör kendi API'sini tarayıcınızdalocalhostüzerinden yüklemeye çalışır ve bu işlem başarısız olur.N8N_PROTOCOL=https, n8n'in TLS üzerinden hizmet verdiğini belirtir; böyleceSecureoturum çerezini işaretler vehttps://URL'lerini oluşturur.N8N_PORT=5678, n8n'in konteyner içindeki dinleme portudur. Bu değer genel port değildir; 443 portu proxy tarafından kullanılır.WEBHOOK_URL=https://n8n.example.com/en kritik değişkendir. n8n; Stripe, GitHub veya herhangi bir harici çağırıcıya yapıştıracağınız webhook adreslerini bu değerleri kullanarak oluşturur. Eğer bu değişken ayarlanmamışsa veya yanlışsa, n8nN8N_HOST:N8N_PORTdeğerine geri döner ve sizehttps://n8n.example.com:5678/webhook/...veya daha kötüsühttp://localhost:5678/webhook/...değerini verir. Bu değerler hata vermeden yazdırılır, mantıklı görünür ancak internet üzerinden erişilemez durumdadır; bu nedenle çağırıcıdan gelen istekler sessizce ulaşmaz. Bu değişkeni, sonunda eğik çizgi (slash) bulunan tam genel base URL olarak ayarlayın. Ardından, webhook düğümünün port içermeyen bir URL gösterdiğini doğrulayın.
N8N_PROXY_HOPS=1, n8n'in Express sunucusuna önündeki tek bir proxy'ye güvenmesini söyler. Böylece hız sınırlama (rate-limiting) ve istemci IP'sini okuyan tüm özellikler, proxy adresi yerine gerçek adresi görür. Burada bilerek ayarlamadığımız bir değişken N8N_RUNNERS_ENABLED'dir: n8n'in Code-node mantığını ayrı bir sandbox sürecinde çalıştıran task runner yapısı, 1.69 sürümünden beri varsayılandır ve bu kılavuzun odaklandığı 2.x serisinde zorunludur; bu nedenle eski opt-in yöntemi kullanımdan kaldırılmıştır. Bu değişkeni şimdi ayarlarsanız, n8n sadece bunu kaldırmanız gerektiğini belirten bir bildirim günlüğü (log) yazacaktır.
İlk başlatma
docker compose up -d
docker compose ps
docker compose logs -f n8nBaşarılı bir ilk açılış, n8n ready on ..., port 5678 satırının üzerinde bir Editor is now accessible via: satırı ile sona erer. docker compose ps, her iki konteynerın da Up durumunda olduğunu ve postgres kısmının (healthy) olarak işaretlendiğini göstermelidir. Eğer n8n bir Restarting döngüsüne girerse logları inceleyin; bu durum genellikle aşağıda açıklanan veritabanı bağlantısı veya volume izinleri sorunlarından kaynaklanır.
Ters proxy ile TLS
n8n, 5678 portu üzerinden standart HTTP protokolünü kullanır; HTTPS bağlantısını öndeki bir yapı sonlandırır. İki uygun seçenek mevcuttur.
Eğer halihazırda birden fazla container çalıştırılıyorsa, n8n'i birkaç label ile TLS sertifikalarını otomatik olarak oluşturan bir Traefik reverse proxy arkasına yerleştirin; Traefik sertifikayı sizin yerinize talep eder ve yeniler.
Eğer bu sunucudaki tek uygulama buysa, Let's Encrypt sertifikalı bir nginx virtual host kullanımı daha basittir. Sertifikayı almak için Ubuntu 24.04 için Certbot ve nginx TLS kurulumunu kullanın, ardından şu server bloğunu yapılandırın:
server {
listen 443 ssl;
server_name n8n.example.com;
ssl_certificate /etc/letsencrypt/live/n8n.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/n8n.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:5678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 3600;
client_max_body_size 16m;
}
}Upgrade ve Connection "upgrade" header bilgileri zorunludur. n8n, editöre WebSocket üzerinden canlı çalışma güncellemelerini iletir; bu iki satır olmazsa giriş sayfası yüklenir ve ardından bağlantı kesildi uyarısıyla donar. proxy_read_timeout 3600, uzun süren işlemlerin nginx'in varsayılan 60 saniyelik süresinde kesilmesini önler. X-Forwarded-Proto $scheme header bilgisi N8N_PROXY_HOPS=1 ile birlikte çalışır: proxy üzerinden düz HTTP ile erişilse bile n8n'e orijinal isteğin HTTPS olduğunu bildirir; böylece n8n bağlantının güvenli olmadığını düşünerek kendi çerezini reddetmez.
İlk iş akışınızı oluşturmak için
https://n8n.example.com/ uygulamasını açın, sahip hesabını oluşturun (bir sonraki bölüm) ve yolun çalıştığını kanıtlayan en küçük iş akışını kurun: bir webhook girişi, bir HTTP çağrısı ve bir yanıt çıkışı.
- Bir Webhook düğümü ekleyin. Method kısmını
POSTolarak ayarlayın vehellogibi bir path belirleyin. İki URL gösterilir: Test URL ve Production URL. "Webhook'um çalışmıyor" şikayetlerinin yarısı bu iki URL'nin karıştırılmasından kaynaklanır. Test URL'si, yalnızca Listen for test event butonuna tıklandığı sürece tek bir çağrıya yanıt verir ve ardından geçerliliğini yitirir. Production URL'si ise iş akışı Active durumundayken her çağrıya yanıt verir. - Webhook düğümünden sonra, herhangi bir genel JSON API'sine yönlendirilmiş bir HTTP Request düğümü ekleyin —
https://api.github.com/zenadresine yapılan bir GET isteği, tek satırlık bir string döndürür ve bu yeterlidir. - Bir Respond to Webhook düğümü ekleyin ve Webhook düğümündeki Respond seçeneğini "Using Respond to Webhook node" olarak ayarlayın; böylece çağrıyı yapan taraf HTTP düğümünün çıktısını geri alır.
- İş akışını sağ üstten Active konuma getirin ve şu adrese çağrı yapın:
curl -X POST https://n8n.example.com/webhook/hello. Gelen yanıtın tek satırlık string olması gerekir — POST girişi, API çağrısı ve yanıt çıkışı; bu, çoğu gerçek otomasyonun yapısıdır.
Zamanlanmış bir varyasyon, Webhook düğümü yerine bir Schedule Trigger kullanır ve bir model uç noktasına çağrı yapar — Aynı VPS üzerinde çalışan Ollama üzerinden self-hosted bir uç nokta kullanmak, gece raporu özetleyici oluşturmak için pratik bir yoldur.
Kullanıcı yönetimi, basic auth değil
Eski n8n kılavuzları N8N_BASIC_AUTH_ACTIVE=true ayarlanmasını önermektedir. Bu değişkenler n8n 1.0 sürümünde kaldırılmıştır ve artık bir işlevleri yoktur. Güncel kimlik doğrulama yöntemi owner account (sahip hesabı) sistemidir: Editör ilk kez yüklendiğinde n8n, bir e-posta ve şifreden oluşan bir sahip hesabı oluşturulmasını zorunlu kılar; anonim mod bulunmamaktadır. İlk kurulumdan hemen sonra, URL'yi birine vermeden önce bu hesabı oluşturun: docker compose up ile ilk form gönderimi arasındaki sürede, instance'a erişen ilk kişi tarafından sahiplenilebilir. Üzerine eklenen bir reverse-proxy basic-auth katmanı makul bir ek güvenlik sağlar, ancak bu gerçek kimlik doğrulama değil, ikinci bir faktördür.
Yedeklemeler: önce şifreleme anahtarı, sonra veritabanı
Yedeklenmesi gereken iki unsur vardır ve bunlar aynı derecede değiştirilemez değildir.
N8N_ENCRYPTION_KEY. n8n içinde saklanan tüm kimlik bilgileri — API tokenları, veritabanı şifreleri, OAuth sırları — bu anahtar ile durağan halde şifrelenir. Postgres içindeki iş akışları bu anahtar olmadan kullanılamaz: veritabanını farklı bir anahtara sahip yeni bir sunucuya geri yüklerseniz, n8n tek bir kimlik bilgisini bile çözemez; geri dönüş veya sıfırlama imkanı yoktur. .env dosyanız anahtarı tutar; oluşturulduğu gün sunucu dışında bir yere — bir parola yöneticisi girişi idealdir — kopyalayın. Asıl önemli olan yedek budur.
Postgres veritabanı; iş akışları, yürütme geçmişi ve şifrelenmiş kimlik bilgilerinin kendisi için:
docker compose exec -T postgres pg_dump -U n8n -d n8n \
| gzip > n8n-db-$(date +%F).sql.gzBu komutu belirli aralıklarla çalıştırın ve dökümü (dump) sunucudan dışarı kopyalayın. Yeni bir VPS üzerine geri yüklemek için: veritabanının oluşması için stack yapısını bir kez başlatın, n8n'i durdurun, dökümü psql ile geri yükleyin, aynı N8N_ENCRYPTION_KEY değerini .env içine yerleştirin ve n8n'i başlatın. Aynı anahtar ve döküm ile çalışan bir örnek elde edilir; yeni bir anahtar ise tek bir kimlik bilgisini bile kullanamayan iş akışları demektir.
Upgrades: tag sabitleme
Compose dosyası, bilinçli olarak latest yerine n8nio/n8n:2.29.10 kullanır. n8n her hafta yeni bir minor sürüm yayınlar; bu sürümler arasında veritabanı şeması veya node davranışı zaman zaman değişebilir. Bu nedenle latest kullanımı, otomatik bir pull işlemi sonucunda sistemin başladığı anda veritabanı migrasyonu yapmasına neden olabilir. Bir sürüm sabitleyin, güncelleme yapmadan önce release notes kısmını okuyun (breaking changes bilgileri burada yer alır) ve güncellemeyi bilinçli olarak gerçekleştirin:
docker compose exec -T postgres pg_dump -U n8n -d n8n | gzip > pre-upgrade.sql.gz
# edit the image tag in docker-compose.yml, then:
docker compose pull n8n
docker compose up -d n8n
docker compose logs -f n8nBüyük sürüm geçişlerinde bu konu kritik önem taşır. Örneğin, 2.0 serisi varsayılan olarak N8N_BLOCK_ENV_ACCESS_IN_NODE değerini true olarak değiştirdi; bu durum process.env okuyan tüm Code node yapılarının, değer tekrar false olarak ayarlanana kadar erişimini kaybetmesine neden olur. Aynı sürüm, ayar dosyası üzerinde katı izinler uygulamaya başlamıştır. Büyük bir sürüm sınırını geçmeden önce 2.0 breaking-changes sayfasını inceleyin. n8n, gerekli tüm veritabanı migrasyonlarını başlatma sırasında otomatik olarak çalıştırır; bu sebeple güncelleme öncesi pg_dump işlemi zorunludur. Kimlik bilgileri .env içinde bir anahtar ile şifreli olarak tutulur ve veriler Postgres üzerinde saklanır; bu sayede konteynerlar geçicidir: güncellemeyi konteynerları değiştirerek, geri yüklemeyi ise önceki tag'i sabitleyip dump dosyasını geri yükleyerek yapabilirsiniz.
Failure modes, with the strings you will see
The requested webhook "POST hello" is not registered. A 404 from calling a webhook whose workflow is not Active, or from calling the test path when nobody is listening. Test paths (/webhook-test/...) answer only while you have clicked "Listen for test event"; production paths (/webhook/...) answer only when the workflow toggle is on. The sibling This webhook is not registered for GET requests. Did you mean to make a POST request? means the method is wrong — the node expects POST and you sent GET.
The webhook URL shows a :5678 or localhost. The node displays https://n8n.example.com:5678/webhook/... or http://localhost:5678/.... WEBHOOK_URL is unset or wrong, so n8n built the address from N8N_HOST:N8N_PORT instead of your public base. Set WEBHOOK_URL=https://n8n.example.com/, recreate the container with docker compose up -d, and the port disappears.
There was a problem loading init data in the browser. The editor loaded but cannot reach its own backend API. Behind a proxy this is almost always a wrong N8N_HOST or WEBHOOK_URL, a proxy missing the WebSocket Upgrade headers, or N8N_PROTOCOL not matching how you connect. Confirm the four public-facing variables and that the proxy forwards Upgrade and Connection.
password authentication failed for user "n8n" in the logs, with the container restarting. The password n8n sends does not match what the database was initialised with. The trap: Postgres reads POSTGRES_PASSWORD only when it initialises an empty data directory. Start the stack once, then change POSTGRES_PASSWORD in .env, and the existing postgres_data volume still holds the old password. Set it back to the original, or, if you have no data to keep, docker compose down and docker volume rm the postgres volume, then bring it up fresh.
EACCES: permission denied, open '/home/node/.n8n/config' on start. n8n runs as the node user (UID 1000) and cannot write its config directory. This bites people who bind-mount a host folder (./n8n_data:/home/node/.n8n) owned by root. Use the named volume shown above, or if you insist on a bind mount, sudo chown -R 1000:1000 ./n8n_data first.
Permissions 0644 for n8n settings file /home/node/.n8n/config are too wide. Changing permissions to 0600.. From the 2.x line n8n enforces 0600 on that settings file by default and fixes it itself on boot — this log line means it already corrected the mode, commonly after a bind mount or after a restore copied the file back with loose permissions. No action is needed; set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false only if your filesystem genuinely cannot support permissions.
Mismatching encryption keys — the fuller line says the encryption key in the settings file /home/node/.n8n/config does not match the N8N_ENCRYPTION_KEY in your environment. The key in your environment differs from the one n8n wrote into its data volume on a previous run — most often because n8n generated a random key on an earlier boot when the variable was unset, and you then set a different one. Put the original key back in .env, or, only if you truly have no stored credentials worth keeping, delete the config file inside the n8n_data volume and let n8n regenerate it — accepting that existing credentials become unreadable.
A login banner about secure cookies: Your n8n server is configured to use a secure cookie, however you are either visiting this via an insecure URL, or using Safari. You set N8N_PROTOCOL=https but reached n8n over plain HTTP — usually by hitting the IP and port directly instead of the HTTPS proxy. Reach it via https://n8n.example.com/. Only if you genuinely cannot use HTTPS should you set N8N_SECURE_COOKIE=false, and never on an internet-facing box.
To put a language model inside those workflows, see building AI workflows with Claude and n8n.
FAQ
n8n için SQLite mı yoksa Postgres mi kullanmalıyım?
SQLite (varsayılan), n8n'i denemek ve aynı anda tek bir workflow çalıştıran kişisel bir kurulum için uygundur. Kritik iş yükleri için Postgres'e geçilmelidir: SQLite'ın tek yazıcı kilidi (single writer lock), eşzamanlılık durumunda database is locked hatasına yol açar; Postgres ise pg_dump ile sorunsuz yedekleme sağlar. Sonradan geçiş işlemi manuel yapıldığından, sistem kritikse Postgres ile başlayın.
n8n webhook'larım neden hiç tetiklenmiyor?
Neredeyse her zaman WEBHOOK_URL kaynaklıdır. Ayarlanmamış veya yanlış yapılandırılmış olması durumunda n8n, N8N_HOST:N8N_PORT kullanılarak oluşturulan webhook adreslerini yazdırır. Bu adresler genellikle içinde :5678 veya localhost barındırır; geçerli görünseler de internet üzerinden erişilemez oldukları için istekler sunucuya ulaşmaz. WEBHOOK_URL=https://n8n.example.com/ değişkenini ayarlayın ve node üzerinde port içermeyen bir URL göründüğünü doğrulayın. İkinci sebep, workflow'u Active konumuna getirilmemiş bir webhook'u çağırmaktır; bu durum The requested webhook ... is not registered. hatası döndürür.
n8n'de neleri yedeklemeliyim?
İki unsur bulunmaktadır. Her bir kimlik bilgisi (credential) bununla şifrelendiğinden ve bu anahtarın kaybı verilerin kalıcı olarak çözülememesine neden olduğundan, .env dosyasındaki N8N_ENCRYPTION_KEY yedeğini almalısınız; dosyayı oluşturduğunuz gün sunucudan kopyalayın. İkinci olarak, workflow'lar, geçmiş veriler ve kimlik bilgileri için Postgres veritabanının pg_dump yedeğini almalısınız. Geri yükleme işlemi için her ikisine de ihtiyaç vardır: aynı anahtar ve veritabanı dökümü.
n8n'i HTTPS arkasına nasıl koyarım?
n8n, 5678 portu üzerinden düz HTTP hizmeti verir; önüne yerleştirilen bir reverse proxy TLS bağlantısını sonlandırır. n8n'i sadece proxy'nin erişebileceği şekilde 127.0.0.1:5678 adresine bağlayın; ardından otomatik sertifikalı Traefik veya Let's Encrypt sertifikalı nginx kullanın. N8N_PROTOCOL=https ve WEBHOOK_URL=https://your-host/ ayarlarını yapın ve proxy'nin WebSocket Upgrade header'larını ilettiğinden emin olun, aksi takdirde editör donacaktır.
n8n'i güvenli bir şekilde nasıl güncellerim?
latest yerine belirli bir image tag'i sabitleyin, n8n başlangıçta otomatik migration işlemleri gerçekleştirdiğinden önce pg_dump alın, köklü değişiklikler için sürüm notlarını okuyun, ardından tag'i güncelleyin ve docker compose pull n8n && docker compose up -d n8n komutunu çalıştırın. Container yapısı geçicidir; hata durumunda önceki tag'i sabitleyerek ve güncelleme öncesi dökümünü geri yükleyerek işlemi geri alabilirsiniz.