AutomationBeginner

How to Self-Host n8n with Docker for AI Workflows

Run your own n8n instance in Docker with persistent storage and an encryption key so AI workflows and credentials survive restarts.

8 minBeginner

Before you can build a single AI workflow you need a place to run n8n. The cloud version works, but self-hosting with Docker gives you full control, no execution caps, and a local sandbox to test prompts without burning anyone's quota. This guide gets a persistent n8n instance running in about ten minutes.

What you need

  • Docker and Docker Compose installed (Docker Desktop on Mac or Windows works fine)
  • A terminal and any text editor
  • An OpenAI, Anthropic, or other LLM API key for later (not required to boot n8n itself)

Step 1: Create a project folder and compose file

Make a folder for the stack, then create a docker-compose.yml inside it. The named volume keeps your workflows and credentials on disk so they are not wiped when the container restarts.

docker-compose.yml
services:
  n8n:
    image: docker.n8n.io/n8nio/n8n:latest
    restart: unless-stopped
    ports:
      - "5678:5678"
    environment:
      - N8N_ENCRYPTION_KEY=replace-with-a-long-random-string
      - N8N_HOST=localhost
      - N8N_PORT=5678
      - WEBHOOK_URL=http://localhost:5678/
      - GENERIC_TIMEZONE=Europe/Kyiv
    volumes:
      - n8n_data:/home/node/.n8n

volumes:
  n8n_data:
Set the encryption key once
N8N_ENCRYPTION_KEY is used to encrypt every saved credential. If you lose it or change it later, all stored credentials become unreadable and you must re-enter them. Generate a long random value and back it up somewhere safe.

Step 2: Start the container

From the same folder, bring the stack up in the background. The first run pulls the image, which can take a minute on a fresh machine.

zsh - n8n
$docker compose up -d
[+] Running 2/2
Network n8n_default Created
Container n8n-n8n-1 Started
$docker compose logs -f n8n
Editor is now accessible via: http://localhost:5678/
$

Step 3: Create your owner account

Open http://localhost:5678 in a browser. The first time you load it, n8n asks you to create an owner account with an email and password. This account is local to your instance, so use any credentials you like.

n8n - Set up owner account
Set up your owner account
Email [ you@example.com ]
First name [ Ada ]
Password [ ************ ]
[ Next ]
The one-time owner setup screen on first launch.

Step 4: Confirm it survives a restart

Create a throwaway workflow, save it, then run the restart command below. Reload the editor and confirm the workflow is still there. If it is, your volume is mounted correctly and you are ready to build.

zsh - n8n
$docker compose restart n8n
Container n8n-n8n-1 Restarted
$

Result

You now have a private n8n instance at localhost:5678 with persistent storage and a stable encryption key. Every guide in this series builds on this exact instance, so keep the folder and the encryption key around.

Watch related tutorials

Tags
#n8n#docker#self-hosting#setup