# Docker Compose के साथ Self-Hosting — n8n के साथ AI Automation

Source: https://www.geekswithgeeks.com/hi/n8n-ai-automation/ops-self-hosting

> n8n को server पर persistent डेटा, database और सही environment variables के साथ चलाएँ।

## Production को क्या चाहिए

डेमो से आगे हर चीज़ के लिए n8n को **persistent volume**, भारी उपयोग के लिए डिफ़ॉल्ट SQLite की जगह **PostgreSQL** database, सार्वजनिक **WEBHOOK_URL** और timezone सेट, reverse proxy से **HTTPS**, और स्थिर **N8N_ENCRYPTION_KEY** के साथ चलाएँ। ऊँचे volume के लिए n8n में अलग workers वाला queue mode है। मौजूदा settings के लिए हमेशा आधिकारिक hosting docs देखें।

## लैपटॉप से server तक

n8n को persistent storage और HTTPS के साथ चलाएँ, और workflows को कोड की तरह सँभालें।

![तीन चरण: चलाना, सुरक्षा, रखरखाव।](assets/figures/n8n-ai-automation/section-7-map.svg) — चित्र 7.1 — चलाना, सुरक्षा और रखरखाव।

## न्यूनतम Compose फ़ाइल

असली secrets `.env` फ़ाइल में रखें जो commit न हो। Variable नाम लिखते समय के n8n docs से हैं; अपने version के लिए जाँचें।

```yaml
services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    ports: ["5678:5678"]
    environment:
      - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
      - WEBHOOK_URL=https://n8n.example.com/
      - GENERIC_TIMEZONE=Asia/Kolkata
    volumes:
      - n8n_data:/home/node/.n8n
    restart: unless-stopped
volumes:
  n8n_data:
```

## Proxy के पीछे WEBHOOK_URL सेट करें

Reverse proxy के पीछे n8n को अपना सार्वजनिक पता नहीं पता होता। WEBHOOK_URL के बिना उसके दिखाए webhook URLs ग़लत होते हैं, और बाहरी services ऐसे पतों को बुलाएँगी जो मौजूद नहीं।

**Quiz:** Reverse proxy के पीछे n8n हो तो WEBHOOK_URL क्यों सेट करें?

- [ ] यह सिर्फ़ दिखावटी है
- [ ] Database तेज़ करने के लिए
- [ ] Authentication बंद करने के लिए
- [x] ताकि बने webhook URLs सही सार्वजनिक पते का उपयोग करें

*Answer:* ताकि बने webhook URLs सही सार्वजनिक पते का उपयोग करें. Proxy के पीछे n8n अपना बाहरी पता अनुमान नहीं लगा सकता, इसलिए आप उसे बताते हैं।
