Self-Hosting n8n with Docker Compose and Traefik: The Ultimate Guide to AI Workflows

Stop paying for SaaS automation limits. Learn how to self-host n8n using Docker Compose and Traefik for unlimited, secure workflow automation. This guide covers PostgreSQL setup, reverse proxy configuration, and how to unlock n8n's powerful LangChain AI agents.

Aug 7, 2025 - 21:44
 0  1
Self-Hosting n8n with Docker Compose and Traefik: The Ultimate Guide to AI Workflows

Tired of juggling apps and hitting the paywalls of SaaS automation tools? Self-hosting n8n could be your game-changer. It is a powerful, open-source workflow automation tool, and setting it up yourself using Docker Compose and Traefik gives you complete control, enhanced security, and limitless flexibility.

In this guide, I will walk you through the setup process and demonstrate the AI capabilities that make n8n a serious competitor in the automation space.

What is n8n?

Think of n8n as your digital duct tape. It is a fair-code tool that allows you to visually connect different apps and services to automate virtually any workflow. By dragging and dropping nodes, you can build sequences to handle repetitive tasks, saving you time and keeping your data private.

The Secret Sauce: AI Capabilities

n8n has evolved beyond simple "if this, then that" logic. It is now a legitimate platform for building Agentic AI applications. This means your workflows can make decisions, understand context, and interact intelligently with data.

  • AI Agent Node: The "brain" of the operation. It connects to LLMs like OpenAI's GPT-4 or Anthropic's Claude to process information and make decisions.
  • LangChain Integration: n8n supports LangChain out of the box, allowing you to build complex chains of AI actions.
  • Vector Database Support: Connect to Pinecone, Supabase, or Qdrant to build RAG (Retrieval-Augmented Generation) systems, letting AI answer questions based on your private data.

Prerequisites

Before we start, ensure you have the following:

  • Docker & Docker Compose: Installed and running.
  • Traefik: Configured and running as your reverse proxy.
  • A Domain Name: Pointed to your server's IP address (e.g., n8n.yourdomain.com).

The Docker Compose Configuration

We will use a compose.yaml file to spin up n8n alongside a PostgreSQL database for better performance and reliability compared to the default SQLite.

The compose.yaml File


version: '3.8'

services:
  n8n:
    image: n8nio/n8n
    container_name: n8n
    restart: unless-stopped
    ports:
      - "127.0.0.1:5678:5678" # Only exposed locally
    environment:
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
      - DB_POSTGRESDB_USER=${POSTGRES_USER}
      - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
      - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
      - N8N_HOST=${DOMAIN_NAME}
      - WEBHOOK_URL=https://${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=Europe/Berlin
    volumes:
      - n8n_data:/home/node/.n8n
    networks:
      - n8n
      - traefik
    depends_on:
      - postgres
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.n8n.rule=Host(`${DOMAIN_NAME}`)"
      - "traefik.http.routers.n8n.entrypoints=websecure"
      - "traefik.http.routers.n8n.tls.certresolver=myresolver"
      - "traefik.http.services.n8n.loadbalancer.server.port=5678"

  postgres:
    image: postgres:16-alpine
    container_name: n8n_postgres
    restart: unless-stopped
    environment:
      - POSTGRES_DB=${POSTGRES_DB}
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - n8n

volumes:
  n8n_data:
  postgres_data:

networks:
  n8n:
  traefik:
    external: true

The .env File

Create a .env file in the same directory to store your secrets securely.


POSTGRES_DB=n8n
POSTGRES_USER=n8nuser
POSTGRES_PASSWORD=ChangeThisToAStrongPassword
N8N_ENCRYPTION_KEY=GenerateARandomStringHere
DOMAIN_NAME=n8n.yourdomain.com

Deployment Steps

  1. Create Directory: Make a folder for your n8n setup and place the compose.yaml and .env files inside.
  2. Launch: Open your terminal, navigate to the directory, and run:
    docker compose up -d
  3. Access: Traefik will automatically route traffic and provision an SSL certificate. Open https://n8n.yourdomain.com in your browser.
  4. Setup: Follow the on-screen instructions to create your admin account.

Your self-hosted automation platform is now ready. You have full control over your data, zero workflow limits, and the ability to integrate powerful AI agents directly into your business processes.

What's Your Reaction?

Like Like 0
Dislike Dislike 0
Love Love 0
Funny Funny 0
Angry Angry 0
Sad Sad 0
Wow Wow 0
trants I'm a Fullstack Software Developer focusing on Go and React.js. Current work concentrates on designing scalable services, reliable infrastructure, and user-facing experiences.