Komplettanleitung: n8n auf AlmaLinux 9 mit Docker + HTTPS (Let’s Encrypt)
Voraussetzungen:
- AlmaLinux 9 Minimal-Installation (Root-Zugang)
- Domain zeigt per A-Record auf die Server-IP
- Ports 80, 443, 5678 erreichbar (keine Provider-Blockade)
1. System vorbereiten
dnf update -y
dnf install -y epel-release curl nano git firewalld
systemctl enable --now firewalld
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --add-port=5678/tcp --permanent
firewall-cmd --reload
2. Docker & Compose installieren
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install -y docker-ce docker-ce-cli containerd.io
systemctl enable --now docker
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
3. n8n-Verzeichnis & Docker Compose
mkdir -p /opt/n8n && cd /opt/n8n
mkdir n8n_data
docker-compose.yml Beispiel:
version: "3"
services:
n8n:
image: n8nio/n8n
container_name: n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=einSicheresPasswort
- N8N_HOST=n8n.deinedomain.tld
- N8N_PORT=5678
- N8N_PROTOCOL=https
- N8N_BASE_URL=https://n8n.deinedomain.tld
- N8N_SECURE_COOKIE=true
- TZ=Europe/Berlin
volumes:
- ./n8n_data:/home/node/.n8n
4. Let’s Encrypt Zertifikat
dnf install -y certbot
certbot certonly --standalone -d n8n.deinedomain.tld
5. Berechtigungen sicher setzen
groupadd -f ssl-cert
usermod -aG ssl-cert nginx
chown root:ssl-cert /etc/letsencrypt/archive/n8n.deinedomain.tld/privkey1.pem
chmod 640 /etc/letsencrypt/archive/n8n.deinedomain.tld/privkey1.pem
6. Nginx Reverse Proxy
dnf install -y nginx
Nginx-Konfiguration (z.B. /etc/nginx/conf.d/n8n.conf):
server {
listen 80;
server_name n8n.deinedomain.tld;
location /.well-known/acme-challenge/ {
root /var/www/letsencrypt;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
server_name n8n.deinedomain.tld;
ssl_certificate /etc/letsencrypt/live/n8n.deinedomain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/n8n.deinedomain.tld/privkey.pem;
location / {
proxy_pass http://localhost:5678;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
nginx -t
systemctl enable --now nginx
7. n8n starten
cd /opt/n8n
docker-compose up -d
8. HTTPS testen
Im Browser aufrufen: https://n8n.deinedomain.tld
9. Automatische Verlängerung konfigurieren
echo "0 3 * * * root certbot renew --post-hook 'systemctl reload nginx'" > /etc/cron.d/certbot-renew