> Die vollständige Liste der Artikel steht in [llms.txt](https://docs.f3cloud.com/llms.txt). Jede Seite gibt es auch als Markdown, dazu einfach .md an die Adresse anhängen. Diese Seite als Markdown: [https://docs.f3cloud.com/de/software-setup/n8n-installation.md](https://docs.f3cloud.com/de/software-setup/n8n-installation.md).

# n8n auf einem VPS in Docker mit HTTPS über Caddy installieren

So installieren Sie n8n auf einem VPS in Docker mit dem Reverse Proxy Caddy und automatischem SSL. Server vorbereiten, Caddyfile und docker-compose anlegen, starten und 2FA aktivieren.

### Aufbau der Lösung

Der Stack besteht aus zwei **Hauptcontainern**:

* **Caddy** – Edge-Server, der für die TLS-Terminierung und die Weiterleitung des Datenverkehrs zuständig ist.
* **n8n** – der eigentliche Automatisierungsknoten _(Low-Code-Plattform)._

> **Hinweis.**
>
> Der Datenverkehr kommt an den Ports **80/443** des Hosts an -> **Caddy** _(Auto-SSL)_ -> internes **Docker**-Netzwerk -> **n8n** _(Port **5678**)_.

#### Schritt 1. Server vorbereiten und Systemanforderungen

Damit der Dienst **n8n** **stabil** und **unterbrechungsfrei** läuft, muss er auf einem virtuellen privaten Server **(VPS)** betrieben werden. Als **zuverlässige** Infrastruktur **empfehlen wir** **unsere Server** bei [**F3 Cloud**](https://f3cloud.com/de?ref=docs) – sie **erfüllen die Systemanforderungen** des Projekts vollständig und sind perfekt **auf die folgende Anleitung abgestimmt**.

| Parameter               | Mindestanforderungen                      |
| ----------------------- | ----------------------------------------- |
| vCPU (virtueller Kern)  | Mindestens 2 Kerne.                       |
| RAM                     | Ab 4 GB.                                  |
| Speicher                | Ab 40 GB SSD.                             |
| Betriebssystem          | Ubuntu 24.04 (empfohlen).                 |

> Für ein angenehmes und schnelles Arbeiten mit n8n empfehlen wir die Konfiguration **DE-RZ9-2** (2 vCPU, 4 GB RAM, 60 GB NVMe). Der Server läuft auf einem Prozessor AMD Ryzen 9 5950X, der Hintergrundaufgaben mühelos bewältigt und die Systemanforderungen des Projekts vollständig abdeckt.

#### Schritt 2. Serverkonfiguration auswählen

Nachdem Sie sich im Panel von [**F3 Cloud**](https://docs.f3cloud.com/de/client-area/registration) angemeldet oder registriert haben, klicken Sie auf <kbd>Order service</kbd>, um zur Serverauswahl zu gelangen.

<figure><img src="https://docs.f3cloud.com/img/gb-2ae3a9dc-spaces-UZCon1KDFCWX5Lp410mU-uploads-LNFlMLsfjQxHaqKUEHVB-Group-22.png" alt=""><figcaption></figcaption></figure>

* Im Menü <kbd>**Order service**</kbd> werden zuerst die wichtigsten Tarife angezeigt. Um die vollständige Liste zu sehen, klicken Sie auf **View all.**

So wählen Sie einen Server aus:

* Klicken Sie auf der Karte **DE-RZ9-2** auf <kbd>**Order**</kbd>.
* Wählen Sie in der Serverkonfiguration das Betriebssystem <kbd>**Ubuntu 24.04**</kbd> .
* Klicken Sie auf <kbd>**Pay**</kbd>, um die Bestellung abzuschließen.

<figure><img src="https://docs.f3cloud.com/img/gb-5a9675b8-spaces-UZCon1KDFCWX5Lp410mU-uploads-IMcgyDhlyuaQ7js3oE17-Group-23.png" alt=""><figcaption><p>Das Bild zeigt beispielhaft, wie Sie einen Server bestellen. In Ihrem Fall wählen Sie Ubuntu 24.04 statt Debian.</p></figcaption></figure>

#### Schritt 3. Server aktivieren

Nach der Zahlung beginnt die automatische Bearbeitung der Bestellung. Die Aktivierung des Servers dauert in der Regel nicht länger als **2 Minuten**.

<figure><img src="https://docs.f3cloud.com/img/gb-10ec902d-spaces-UZCon1KDFCWX5Lp410mU-uploads-7LwPhaFG5AcF4PX7U8u2-image-17.png" alt=""><figcaption><p><em>Der Server hat den Status "processing", bitte warten Sie einen Moment.</em></p></figcaption></figure>

Den aktuellen Status können Sie im **Control Panel** verfolgen. Sobald der Server einsatzbereit ist, wechselt der Status auf <kbd>**Active**</kbd>.

> **Hinweis.**
>
> Manchmal dauert die Aktivierung etwas länger, wenn die Auslastung hoch ist und sich die Bestellungen am gewählten Standort in einer Warteschlange befinden. Ist der Server nach 10 Minuten noch nicht aktiviert – schreiben Sie uns bitte ein Ticket, und wir prüfen den Status der Bestellung umgehend.

#### Schritt 4. Zugangsdaten des Servers abrufen

1. Warten Sie, bis der Server vollständig aktiviert ist.
2. Setzen Sie im Kundenbereich ein Häkchen beim gewünschten Server und klicken Sie im oberen Menü auf <kbd>**Instructions**</kbd>.
3. <kbd>**Kopieren Sie die Zugangsdaten**</kbd> aus der Anleitung:
   * <kbd>Server IP address</kbd> .
   * <kbd>Username</kbd> .
   * <kbd>Password</kbd> .

Auf dem Screenshot unten sehen Sie, wo genau Sie diese Informationen finden.

<figure><img src="https://docs.f3cloud.com/img/gb-ff9ec2de-spaces-UZCon1KDFCWX5Lp410mU-uploads-WcFSueCBKPdJrovv4Ar8-Group-10.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://docs.f3cloud.com/img/gb-05e09083-spaces-UZCon1KDFCWX5Lp410mU-uploads-8VmoOz7sQnvGZAr0LfhW-Group-24.png" alt=""><figcaption><p>Die Zugangsdaten des Servers werden Ihnen außerdem per E-Mail zugeschickt.</p></figcaption></figure>

#### Schritt 5. Dateistruktur vorbereiten

Damit die Volumes korrekt eingebunden werden, müssen Sie **ein Arbeitsverzeichnis anlegen** und die Konfigurationsdateien erstellen.

```bash
apt update && apt upgrade -y
```

```bash
reboot ## Fahren Sie nach dem Neustart mit der Einrichtung fort.
```

```bash
mkdir -p /opt/n8n && cd /opt/n8n
```

```bash
touch Caddyfile docker-compose.yml
```

#### Schritt 6. Reverse Proxy konfigurieren (Caddyfile)

Eine externe `Caddyfile` ist **Inline-Befehlen** in **Compose** vorzuziehen, weil sich Fehler so leichter finden lassen und die Wartung einfacher ist.

```bash
nano /opt/n8n/Caddyfile
```

Fügen Sie den folgenden Inhalt ein.

```nginx
ihre-domain.tld {
    reverse_proxy n8n:5678
}
```

> **Tipp.**
>
> **Caddy** erkennt beim Start automatisch, ob ein Zertifikat über **Let's Encrypt** oder **ZeroSSL** ausgestellt werden muss.

#### Schritt 7. Dienste beschreiben (Docker Compose)

Die Orchestrierungsdatei legt Limits, Netzwerke und Neustartregeln fest.

```text
/opt/n8n/docker-compose.yml
```

Fügen Sie den folgenden Inhalt ein und passen Sie ihn an Ihre eigenen Werte an.

```yaml
services:
  caddy:
    image: caddy:latest
    container_name: n8n-caddy
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config
    networks:
      - n8n_net

  n8n:
    image: n8nio/n8n:latest
    container_name: n8n-app
    restart: always
    environment:
      - N8N_HOST=ihre-domain.tld
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://ihre-domain.tld/
    volumes:
      - n8n_data:/home/node/.n8n
    networks:
      - n8n_net

networks:
  n8n_net:

volumes:
  caddy_data:
  caddy_config:
  n8n_data:
```

#### Schritt 8. Bereitstellen und prüfen

1. Stack im Detach-Modus starten.

```bash
docker compose up -d
```

2. Ausstellung des SSL-Zertifikats verfolgen.

```bash
docker compose logs -f caddy
```

3. Erreichbarkeit von **n8n** prüfen. _Die Antwort sollte `HTTP/2 200` enthalten._

```bash
curl -I https://ihre-domain.tld
```

#### Schritt 9. Registrierung im Panel von **n8n**

1. Beim ersten Aufruf der Seite sehen Sie ein Registrierungsformular.

* **First and last name** – werden zur Anzeige im Panel verwendet.
* **Email** – das ist Ihr Login. An diese Adresse gehen Benachrichtigungen über kritische Fehler in Ihren Workflows und Anfragen zum Zurücksetzen des Passworts.
* **Password** – mindestens 8 Zeichen. Da **n8n** Zugriff auf Ihre **API-Schlüssel**, Server und **Telegram-Bots** haben wird, wählen Sie eine **möglichst komplexe Kombination**.

2. Nachdem Sie das Konto erstellt haben, bietet n8n Ihnen eine kurze Umfrage an.

* **Rolle** _(What is your role?)_ – wählen Sie `Engineer` oder `DevOps`. **Davon hängt ab**, welche Workflow-Vorlagen das System **Ihnen auf der Startseite vorschlägt.**
* **Usage Data** – das System fragt um Erlaubnis, anonyme Statistiken zu senden. **Als Sicherheitsfachmann** ist es Ihnen vielleicht lieber, **diese Option zu deaktivieren**, um ausgehenden Datenverkehr zu fremden Servern möglichst gering zu halten.

3. Sobald Sie in der Hauptoberfläche sind, sollten Sie als Erstes die Anmeldung absichern:

* Öffnen Sie **Settings** _(Zahnrad unten links)_ -> **Personal.**
* Suchen Sie den Abschnitt **Multi-factor authentication.**
*   Klicken Sie auf **Enable 2FA** und scannen Sie den QR-Code mit einer beliebigen Authenticator-App.

    > Speichern Sie unbedingt die Wiederherstellungscodes. In einem Docker-Container ist es ohne Erfahrung mit SQLite schwierig, 2FA über die Datenbank zurückzusetzen.

#### Technische Empfehlungen

* **Die Daten von n8n** _(Workflows, Zugangsdaten)_ liegen im benannten Volume `n8n_data`. Für eine Sicherung genügt es, den Inhalt von `/var/lib/docker/volumes/n8n_n8n_data/` zu kopieren.
* Da **Caddy** auf den Ports **80/443** läuft, stellen Sie sicher, dass eine externe **Firewall** _(ufw/iptables)_ **eingehenden Datenverkehr auf diesen Ports zulässt.**
