> 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/vpn-guide/remnawave-installation.md](https://docs.f3cloud.com/de/vpn-guide/remnawave-installation.md).

# Remnawave auf einem VPS installieren – mit Node und VLESS Reality

Remnawave Schritt für Schritt auf einem VPS installieren, mit Screenshots. Panel und Node auf getrennten Servern, Caddy mit HTTPS, ein VLESS-Reality-Profil, ein Host mit dem Fingerprint firefox, Benutzer, Abonnements, Firewall, Updates und Backups.

**Remnawave** ist ein Panel zur Verwaltung von VPN-Servern auf Basis des Xray-Kerns. Damit legen Sie bequem Benutzer an, verteilen Abonnements, begrenzen Traffic und Laufzeiten und binden mehrere Server (Nodes) an ein einziges Panel an. Das Projekt ist kostenlos, quelloffen und hat eine [offizielle Dokumentation](https://docs.rw).

In diesem Artikel haben wir die gesamte Installation zusammengestellt, von der Auswahl der Server bei F3 Cloud bis zur Verbindung des ersten Clients. Die Befehle stammen aus der offiziellen Dokumentation, und wir haben die komplette Installation selbst mit der Panel-Version 3.4.5 durchlaufen. Deshalb stimmen die Namen der Schaltflächen und die Screenshots mit dem überein, was Sie sehen werden. Die Firewall-Einstellungen, die Backups und die Tipps zur Tarnung haben wir selbst ergänzt.

### Woraus Remnawave besteht

* **Panel** – Weboberfläche und API, eine PostgreSQL-Datenbank und ein Valkey-Cache. Das Panel selbst leitet keinen Traffic der Benutzer weiter.
* **Node** – ein schlanker Container mit dem Xray-Kern. Genau mit den Nodes verbinden sich die Benutzer. Das Panel steuert die Nodes über eine geschützte Verbindung.
* **Abonnementseite** – eine optionale Komponente. Sie zeigt dem Benutzer eine ansprechende Seite mit Anleitung und verbirgt die Adresse des Panels.

> **Die Reihenfolge der Installation ist wichtig.**
>
> Solange kein einziger Node mit dem Panel verbunden ist, können sich die Benutzer nicht verbinden. Deshalb gilt bei der Installation immer dieselbe Reihenfolge, zuerst das Panel, dann Reverse Proxy, Node, Profil, Host und Benutzer.

***

### Was Sie brauchen

#### Zwei Server

Die Entwickler empfehlen, Panel und Node auf verschiedenen Servern zu installieren. Auf einem einzigen Server würden Panel und Node um Port 443 konkurrieren.\
Und wird die IP-Adresse des Nodes gesperrt, verlieren Sie zugleich den Zugang zum Panel.

| Rolle | Anforderungen von Remnawave | Empfohlener Tarif bei F3 Cloud |
| --- | --- | --- |
| Panel | ab 2 Kernen und 2 GB RAM, besser 4 Kerne und 4 GB, 20 GB Speicher | **DE-RZ9-2** (2 vCPU, 4 GB RAM, 60 GB NVMe) |
| Node | ab 1 Kern und 1 GB RAM | **DE-Promo** für den privaten Gebrauch, **DE-RZ9-1** für eine Anbindung mit 1 Gbit/s |

Installieren Sie auf beiden Servern **Ubuntu** oder **Debian**. Wie Sie einen Server bestellen, steht im Artikel [zur Bestellung eines virtuellen Servers](https://docs.f3cloud.com/de/client-area/order-vps.md).

#### Domain

Sie benötigen zwei A-Records:

* `panel.ihre-domain.com` zeigt auf die IP-Adresse des Panel-Servers;
* `cdn.ihre-domain.com` zeigt auf die IP-Adresse des Node-Servers.

Mit einem eigenen Namen für den Node können Sie die IP-Adresse des Servers später ändern, ohne die Abonnements der Benutzer zu aktualisieren.

> **Wählen Sie neutrale Namen.**
>
> Verwenden Sie in Domain und Subdomains keine Wörter wie vpn, proxy, xray, vless, reality, remnawave, node oder ähnliche. Der Servername wird unverschlüsselt übertragen, und solche Wörter lassen sich leicht anhand einer Liste erkennen. Besser sind `cdn.example.com`, `photos.example.com` oder die Domain selbst ohne Subdomain.

> **Zu Cloudflare.**
>
> Die Remnawave-Dokumentation empfiehlt, die Panel-Domain über Cloudflare zu leiten, wenn Cloudflare in Ihrer Region stabil funktioniert. Aus Russland sind die Dienste von Cloudflare derzeit nur mit Unterbrechungen erreichbar, deshalb empfehlen wir, das Proxying ausgeschaltet zu lassen (graue Wolke).\
> Für die Node-Domain muss das Proxying immer ausgeschaltet sein, denn Reality funktioniert nur bei einer direkten Verbindung zum Server.

***

### 1. Beide Server vorbereiten

Verbinden Sie sich mit jedem Server per SSH, zum Beispiel über [Termius](https://docs.f3cloud.com/de/vps/termius-connection.md), und führen Sie dieselben Befehle aus.

```bash
# System aktualisieren
apt update && apt upgrade -y

# Docker mit dem offiziellen Skript installieren
curl -fsSL https://get.docker.com | sh

# Prüfen, ob Docker und das Compose-Plugin funktionieren
docker --version && docker compose version
```

Wenn beide Befehle eine Version anzeigen, ist Docker bereit.

<figure><img src="https://docs.f3cloud.com/img/remnawave-docker.png" alt="Versionen von Docker und Docker Compose"><figcaption><p>Docker und Compose sind installiert</p></figcaption></figure>

***

### 2. Panel installieren

Alle Befehle dieses Schritts führen Sie **auf dem Panel-Server** aus.

```bash
# Ordner anlegen und die offiziellen Dateien docker-compose.yml und .env herunterladen
mkdir /opt/remnawave && cd /opt/remnawave
curl -o docker-compose.yml https://raw.githubusercontent.com/remnawave/backend/refs/heads/main/docker-compose-prod.yml
curl -o .env https://raw.githubusercontent.com/remnawave/backend/refs/heads/main/.env.sample
```

Erzeugen Sie die geheimen Schlüssel, der Befehl schreibt die Zufallswerte selbst in die Datei `.env`.

```bash
sed -i "s/^APP_SECRET=.*/APP_SECRET=$(openssl rand -hex 64)/" .env && sed -i "s/^METRICS_PASS=.*/METRICS_PASS=$(openssl rand -hex 64)/" .env && sed -i "s/^WEBHOOK_SECRET_HEADER=.*/WEBHOOK_SECRET_HEADER=$(openssl rand -hex 64)/" .env
```

Ändern Sie das Passwort der Datenbank. Die Entwickler raten dringend davon ab, das Standardpasswort zu behalten.

```bash
pw=$(openssl rand -hex 24) && sed -i "s/^POSTGRES_PASSWORD=.*/POSTGRES_PASSWORD=$pw/" .env && sed -i "s|^\(DATABASE_URL=\"postgresql://postgres:\)[^\@]*\(@.*\)|\1$pw\2|" .env
```

Öffnen Sie die Datei `.env` mit dem Befehl `nano .env` und tragen Sie in drei Zeilen Ihre Domain ein.

```ini
FRONT_END_DOMAIN=panel.ihre-domain.com
PANEL_DOMAIN=panel.ihre-domain.com
SUB_PUBLIC_DOMAIN=panel.ihre-domain.com/api/sub
```

Schreiben Sie in `SUB_PUBLIC_DOMAIN` weder `https://` noch einen Schrägstrich am Ende. Speichern Sie die Datei mit <kbd>Ctrl</kbd> + <kbd>O</kbd>.\
Schließen Sie den Editor mit <kbd>Ctrl</kbd> + <kbd>X</kbd>.

Starten Sie das Panel und sehen Sie sich das Startprotokoll an.

```bash
docker compose up -d && docker compose logs -f -t
```

Sobald im Protokoll das Banner mit der Remnawave-Version erscheint, ist das Panel gestartet. Verlassen Sie die Protokollansicht mit <kbd>Ctrl</kbd> + <kbd>C</kbd>, die Container laufen weiter.

<figure><img src="https://docs.f3cloud.com/img/remnawave-panel-start.png" alt="Startprotokoll des Remnawave-Panels mit Version 3.4.5"><figcaption><p>Das Panel ist gestartet</p></figcaption></figure>

> **Öffnen Sie die Dienste nicht nach außen.**
>
> Alle Remnawave-Dienste lauschen nur auf der Adresse `127.0.0.1` und sind aus dem Internet nicht direkt erreichbar. Ändern Sie das nicht in der `docker-compose.yml`. Der Zugriff auf das Panel darf nur über den Reverse Proxy aus dem nächsten Schritt erfolgen.

> **Wenn Sie die .env geändert haben.**
>
> Nach jeder Änderung an der `.env` erstellen Sie die Container mit `docker compose down && docker compose up -d` neu, ein einfacher Neustart reicht nicht.

***

### 3. Caddy und HTTPS einrichten

Remnawave unterstützt Caddy, Nginx und Traefik. Am einfachsten lässt sich Caddy einrichten, denn es holt und verlängert das Zertifikat von Let's Encrypt selbstständig.

```bash
# Ordner und Konfigurationsdatei für Caddy anlegen
mkdir -p /opt/remnawave/caddy && cd /opt/remnawave/caddy && nano Caddyfile
```

Fügen Sie die folgenden Einstellungen in die Datei ein und ersetzen Sie die Domain durch Ihre eigene.

```text
https://panel.ihre-domain.com {
        encode
        reverse_proxy * http://remnawave:3000
}
:443 {
    tls internal
    respond 204
}
```

Der zweite Block antwortet mit einer leeren Seite auf alle Anfragen, die nicht an Ihre Domain gehen, etwa beim Scannen über die IP-Adresse.

Legen Sie daneben mit dem Befehl `nano docker-compose.yml` eine Datei `docker-compose.yml` für Caddy an und fügen Sie Folgendes ein.

```yaml
services:
  caddy:
    image: caddy:2.9
    container_name: 'caddy'
    hostname: caddy
    restart: always
    ports:
      - '0.0.0.0:443:443'
      - '0.0.0.0:80:80'
    networks:
      - remnawave-network
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy-ssl-data:/data

networks:
  remnawave-network:
    name: remnawave-network
    driver: bridge
    external: true

volumes:
  caddy-ssl-data:
    driver: local
    external: false
    name: caddy-ssl-data
```

Starten Sie Caddy.

```bash
docker compose up -d && docker compose logs -f -t
```

Öffnen Sie nach einer Minute `https://panel.ihre-domain.com` im Browser. Es sollte die Registrierungsseite des Panels mit einem gültigen Zertifikat erscheinen.

***

### 4. Administrator registrieren

Beim ersten Aufruf bietet das Panel an, ein Super-Admin-Konto anzulegen. **Der erste registrierte Benutzer wird zum Hauptadministrator**, registrieren Sie sich deshalb direkt nach dem Start von Caddy.

Denken Sie sich einen Benutzernamen aus und klicken Sie dann auf <kbd>Generate & copy</kbd>, damit das Panel selbst ein sicheres Passwort erzeugt, und speichern Sie es sofort in einem Passwortmanager. Klicken Sie danach auf <kbd>Sign up</kbd>.

<figure><img src="https://docs.f3cloud.com/img/remnawave-register.jpg" alt="Registrierungsseite für den Remnawave-Administrator"><figcaption><p>Registrierung des Hauptadministrators</p></figcaption></figure>

> **Wenn Sie den Zugang zum Panel verloren haben.**
>
> Den Administrator können Sie mit dem integrierten Wiederherstellungstool zurücksetzen. Führen Sie dazu auf dem Panel-Server den Befehl `docker exec -it remnawave cli` aus.

***

### 5. Node verbinden

Legen Sie auf dem **Node-Server** einen Ordner dafür an.

```bash
mkdir /opt/remnanode && cd /opt/remnanode
```

Öffnen Sie im Panel den Bereich **Nodes** und klicken Sie auf <kbd>+</kbd>. Füllen Sie das Formular aus:

* **Internal name** – ein beliebiger Name, der für Sie verständlich ist, zum Beispiel `DE-Frankfurt-1`;
* **Country** – das Land des Servers, seine Flagge sehen die Benutzer;
* **Domain or IP** – die Adresse des Nodes, zum Beispiel `cdn.ihre-domain.com`;
* **Node Port** – der Port, über den das Panel den Node steuert. Standardmäßig ist das `2222`.

<figure><img src="https://docs.f3cloud.com/img/remnawave-node-create.jpg" alt="Formular zum Anlegen eines Nodes in Remnawave"><figcaption><p>Node anlegen</p></figcaption></figure>

Klicken Sie auf <kbd>Copy docker-compose.yml</kbd>. Das Panel kopiert eine fertige Datei, die ungefähr so aussieht.

```yaml
services:
  remnanode:
    container_name: remnanode
    hostname: remnanode
    image: remnawave/node:latest
    network_mode: host
    restart: always
    cap_add:
      - NET_ADMIN
    ulimits:
      nofile:
        soft: 1048576
        hard: 1048576
    environment:
      - NODE_PORT=2222
      - SECRET_KEY="Schlüssel aus dem Panel"
```

Öffnen Sie auf dem Node-Server den Editor mit dem Befehl `nano docker-compose.yml`, fügen Sie den kopierten Inhalt ein, speichern Sie die Datei und starten Sie den Node.

```bash
docker compose up -d && docker compose logs -f -t
```

Im Protokoll erscheint eine Tabelle mit dem API-Port, der Xray-Version und den Eckdaten des Servers. Das bedeutet, der Node ist gestartet und wartet auf das Panel.

<figure><img src="https://docs.f3cloud.com/img/remnawave-node-start.png" alt="Startprotokoll des Remnawave-Nodes mit der Xray-Version"><figcaption><p>Der Node ist gestartet</p></figcaption></figure>

Kehren Sie zum Panel zurück und klicken Sie auf <kbd>Next</kbd>. Klicken Sie im Schritt **Core configuration** auf <kbd>Select</kbd> und markieren Sie vorerst das Standardprofil `Default-Profile`, das eigentliche Arbeitsprofil legen wir im nächsten Schritt an. Klicken Sie auf <kbd>Create node</kbd>. Nach einigen Sekunden erscheint die Meldung „Connection successful. Xray Core is up and running!“.

<figure><img src="https://docs.f3cloud.com/img/remnawave-node-ok.jpg" alt="Meldung über die erfolgreiche Verbindung des Nodes"><figcaption><p>Das Panel hat sich mit dem Node verbunden</p></figcaption></figure>

> **Schützen Sie den Node-Port vor Fremden.**
>
> Den Port des Nodes braucht nur das Panel. Erlauben Sie Verbindungen zu diesem Port ausschließlich von der IP-Adresse des Panel-Servers, die Befehle finden Sie unten im Abschnitt „Firewall“.

***

### 6. VLESS-Reality-Profil anlegen

Standardmäßig legt das Panel das Profil `Default-Profile` mit einem einzigen Shadowsocks-Inbound an. Um Sperren zu umgehen, fügen Sie ein VLESS-Reality-Profil hinzu.

1. Öffnen Sie den Bereich **Config Profiles**, klicken Sie auf <kbd>+</kbd>, geben Sie einen Profilnamen ein, zum Beispiel `VLESS-Reality`, und klicken Sie auf <kbd>Create</kbd>. Der Profileditor öffnet sich.
2. Klicken Sie unter dem Editor neben der Schaltfläche <kbd>Format</kbd> auf die Menüschaltfläche und wählen Sie **Load from GitHub**.
3. Wählen Sie die Vorlage **Example VLESS-TCP-REALITY config** und klicken Sie auf <kbd>Load template</kbd>. Sie enthält bereits den Inbound `VLESS_TCP_REALITY` auf Port 443.

<figure><img src="https://docs.f3cloud.com/img/remnawave-template.jpg" alt="Auswahl der Vorlage VLESS-TCP-REALITY"><figcaption><p>Auswahl einer Profilvorlage</p></figcaption></figure>

Direkt nach dem Laden markiert das Panel den Fehler `please fill in a valid value for "target"`. Das ist normal, die Vorlage muss noch vervollständigt werden.

<figure><img src="https://docs.f3cloud.com/img/remnawave-profile.jpg" alt="Profileditor mit geladener Reality-Vorlage"><figcaption><p>Die Vorlage ist geladen, jetzt fehlen nur noch die Reality-Felder</p></figcaption></figure>

Die Schlüssel für Reality erzeugen Sie am einfachsten direkt auf dem Node-Server.

```bash
# Reality-Schlüsselpaar erzeugen. Den Wert PrivateKey in das Feld privateKey einfügen
docker exec remnanode xray x25519

# Wert für das Array shortIds erzeugen
openssl rand -hex 8
```

Füllen Sie im Block `realitySettings` folgende Felder aus:

* `privateKey` – der Wert **PrivateKey** aus dem ersten Befehl;
* `shortIds` – der Wert aus dem zweiten Befehl, innerhalb der eckigen Klammern und Anführungszeichen;
* `target` und `serverNames` – die Adresse der Tarnseite und ihr Name, mehr dazu in der Warnung unten.

Unten im Editor sollte die Meldung `Xray config is valid` erscheinen. Klicken Sie auf <kbd>Save</kbd>.

> **Tarnen Sie sich nicht als große fremde Websites.**
>
> Tragen Sie in `target` und `serverNames` keine Websites wie google.com, microsoft.com oder apple.com ein, denn genau das ist heute eines der wichtigsten Merkmale, an denen Server gesperrt werden. Am zuverlässigsten tarnen Sie sich als Ihre eigene Domain nach dem Self-Steal-Schema. Installieren Sie dazu auf dem Node-Server nginx mit einer Website auf Ihrer Domain, tragen Sie in `target` den Wert `127.0.0.1:8443` und in `serverNames` Ihre Domain ein und setzen Sie `xver: 0`. Eine Schritt-für-Schritt-Anleitung finden Sie im Artikel [über Self-Steal für VLESS Reality](https://docs.f3cloud.com/de/vpn-guide/reality-self-steal.md).

Jetzt müssen Sie den neuen Inbound nur noch für den Node und die Benutzer aktivieren.

1. Öffnen Sie im Bereich **Nodes** Ihren Node, klicken Sie im Block **Core configuration** auf die Schaltfläche zum Bearbeiten, markieren Sie das Profil `VLESS-Reality` und speichern Sie den Node.
2. Öffnen Sie **Users → Internal Squads**, klicken Sie auf `Default-Squad`, setzen Sie ein Häkchen beim Profil `VLESS-Reality` und speichern Sie. Ohne diesen Schritt erhalten die Benutzer den neuen Inbound nicht.

<figure><img src="https://docs.f3cloud.com/img/remnawave-squad.jpg" alt="Profil VLESS-Reality im internen Squad aktivieren"><figcaption><p>Das Profil VLESS-Reality ist in Default-Squad aktiviert</p></figcaption></figure>

***

### 7. Host anlegen

Der Host legt fest, welche Adresse und welche Parameter die Benutzer in ihrem Abonnement erhalten.

1. Öffnen Sie **Subscription → Hosts** und klicken Sie auf <kbd>+</kbd>.
2. Aktivieren Sie den Schalter **Host visibility**. Standardmäßig ist er ausgeschaltet, und ein solcher Host landet nicht im Abonnement.
3. Tragen Sie im Feld **Remark** einen für die Benutzer verständlichen Namen ein, zum Beispiel „Deutschland“.
4. Klicken Sie auf den Block **No inbound selected**, markieren Sie `VLESS_TCP_REALITY` und bestätigen Sie die Auswahl. Der Port wird automatisch eingetragen.
5. Tragen Sie im Feld **Address** `cdn.ihre-domain.com` ein.
6. Klicken Sie im Block **Options** auf <kbd>Add</kbd>, wählen Sie **Fingerprint** und geben Sie `firefox` an.
7. Klicken Sie auf <kbd>Save</kbd>.

<figure><img src="https://docs.f3cloud.com/img/remnawave-host.png" alt="Formular für einen neuen Host mit dem Fingerprint firefox"><figcaption><p>Host mit dem Fingerprint firefox</p></figcaption></figure>

> **Warum firefox und nicht chrome.**
>
> Seit Ende 2025 bewerten die Filtersysteme russischer Provider (TSPU) eine TLS-Verbindung nach mehreren Merkmalen zugleich, nämlich nach dem Subnetz des Hosters, dem Namen der Website (SNI) und dem Fingerprint des Clients. Der Fingerprint `chrome` ist in fast allen VPN-Apps und Panels voreingestellt, deshalb ist die Kombination „Chrome-Fingerprint plus IP-Adresse eines Rechenzentrums“ für die Filter zu einem zuverlässigen Merkmal für einen Proxy geworden. Benutzer berichten, dass die Verbindung bei mehreren gleichzeitigen Verbindungen mit diesem Fingerprint für einige Minuten „einfriert“ und dass der Wechsel zu `firefox` hilft.
>
> Der Fingerprint `edge` hat früher ebenfalls geholfen, ist aber seit September 2026 mit neuen Xray-Versionen nicht mehr kompatibel. Ab Xray 26.9.8 (zum Beispiel enthalten in 3X-UI 3.8.0 und neuer) akzeptiert ein Reality-Server nur noch Clients mit dem Post-Quanten-Schlüsselaustausch ML-KEM. Das Profil `edge` entspricht in Xray dem alten Edge 85 ohne ML-KEM, und eine Verbindung damit kommt nicht zustande. Das Profil `firefox` unterstützt ML-KEM, wenn die App den Xray-Kern 26.3.23 oder neuer enthält, halten Sie Ihre Clients deshalb aktuell. Verwenden Sie auch die Werte `random` und `randomized` nicht, denn sie können ein Profil ohne ML-KEM auswählen.

***

### 8. Benutzer und Abonnement anlegen

1. Öffnen Sie den Bereich **Users** und klicken Sie auf <kbd>+</kbd>.
2. Geben Sie einen **Username** ohne Leerzeichen ein. Später lässt er sich nicht mehr ändern.
3. Legen Sie das **Traffic limit** fest, `0` bedeutet unbegrenzt.
4. Prüfen Sie das **Expiry date**, denn standardmäßig setzt das Panel eine Laufzeit von einem Tag.
5. Markieren Sie im Block **Internal squads** den Eintrag `Default-Squad`.
6. Klicken Sie auf <kbd>Create</kbd>.

<figure><img src="https://docs.f3cloud.com/img/remnawave-user-create.jpg" alt="Formular zum Anlegen eines Benutzers mit ausgewähltem Default-Squad"><figcaption><p>Benutzer anlegen</p></figcaption></figure>

Öffnen Sie den angelegten Benutzer. In seiner Karte gibt es das Feld **Subscription URL** in der Form `https://panel.ihre-domain.com/api/sub/kennung`, daneben eine Schaltfläche zum Kopieren. Genau diesen Link senden Sie dem Benutzer.

<figure><img src="https://docs.f3cloud.com/img/remnawave-user.jpg" alt="Benutzerkarte mit dem Abonnement-Link"><figcaption><p>Benutzerkarte und Abonnement-Link</p></figcaption></figure>

***

### Client verbinden

Kopieren Sie den Abonnement-Link aus der Benutzerkarte und importieren Sie ihn in die App, wie in der [Anleitung zum Import](https://docs.f3cloud.com/de/vpn-guide/marzban-installation.md#schritt-4.-mit-dem-vpn-verbinden) gezeigt. Das Abonnement aktualisiert sich selbst, deshalb müssen die Benutzer bei Änderungen auf dem Server nichts neu einrichten.

***

### Firewall

In der offiziellen Dokumentation gibt es keine Befehle für die Firewall, deshalb zeigen wir unsere Variante auf Basis von UFW. Wenn Sie SSH auf einen anderen Port verlegt haben, tragen Sie diesen statt `22` ein.

#### Panel-Server

```bash
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
```

#### Node-Server

```bash
# Statt PANEL_IP die IP-Adresse des Panel-Servers eintragen
ufw allow 22/tcp
ufw allow 443/tcp
ufw allow from PANEL_IP to any port 2222 proto tcp
ufw enable
```

Weitere Schutzmaßnahmen beschreiben wir im Artikel [zum Schutz des Servers vor unbefugtem Zugriff](https://docs.f3cloud.com/de/client-area/protect-vps-from-unauthorised-access.md).

***

### Abonnementseite (optional)

Eine eigene Abonnementseite verbirgt die Adresse des Panels vor den Benutzern und zeigt ihnen eine Anleitung zur Verbindung. Sie können sie auf demselben Server wie das Panel installieren.

1. Legen Sie einen A-Record für die Abonnement-Domain an, zum Beispiel `sub.ihre-domain.com`, und tragen Sie diese in der Datei `/opt/remnawave/.env` in der Variable `SUB_PUBLIC_DOMAIN` ein. Erstellen Sie danach den Panel-Container mit dem Befehl `cd /opt/remnawave && docker compose down remnawave && docker compose up -d` neu.
2. Erstellen Sie ein Token im Bereich **Remnawave Settings → API tokens**.
3. Legen Sie den Ordner `/opt/remnawave/subscription` und darin die Datei `.env` an.

```ini
APP_PORT=3010
REMNAWAVE_PANEL_URL=http://remnawave:3000
REMNAWAVE_API_TOKEN=token_aus_dem_panel
```

4. Legen Sie im selben Ordner eine `docker-compose.yml` an.

```yaml
services:
  remnawave-subscription-page:
    image: remnawave/subscription-page:latest
    container_name: remnawave-subscription-page
    hostname: remnawave-subscription-page
    restart: always
    env_file:
      - .env
    ports:
      - '127.0.0.1:3010:3010'
    networks:
      - remnawave-network

networks:
  remnawave-network:
    driver: bridge
    external: true
```

5. Starten Sie die Seite mit dem Befehl `docker compose up -d` und fügen Sie in `/opt/remnawave/caddy/Caddyfile` einen neuen Block hinzu.

```text
https://sub.ihre-domain.com {
        encode
        reverse_proxy * http://remnawave-subscription-page:3010
}
```

6. Starten Sie Caddy mit dem Befehl `cd /opt/remnawave/caddy && docker compose down && docker compose up -d` neu.

***

### Aktualisierung

Aktualisieren Sie zuerst das Panel und danach die Nodes.

```bash
# Auf dem Panel-Server
cd /opt/remnawave && docker compose pull && docker compose down && docker compose up -d
docker image prune
```

```bash
# Auf dem Node-Server
cd /opt/remnanode && docker compose pull && docker compose down && docker compose up -d
```

Wenn die Abonnementseite installiert ist, aktualisieren Sie auch diese mit demselben Befehl aus dem Ordner `/opt/remnawave/subscription`.

***

### Backups

Eine offizielle Anleitung für Backups gibt es bei Remnawave nicht. Es genügt, die Datenbank und die Konfigurationsdateien zu sichern, denn der Valkey-Cache speichert nichts Wichtiges auf der Festplatte. So machen wir das.

```bash
cd /opt/remnawave
# Datenbank in eine Datei mit dem heutigen Datum sichern
docker exec remnawave-db pg_dump -U postgres postgres > backup-$(date +%F).sql
# Konfigurationsdateien in ein Archiv sichern
tar czf remnawave-config-$(date +%F).tar.gz .env docker-compose.yml caddy/Caddyfile
```

Laden Sie die Kopien auf Ihren Computer oder in einen anderen Speicher herunter, denn eine Kopie auf demselben Server hilft nicht, wenn mit ihm etwas passiert. Mehr über Backups erzählen wir in einem [eigenen Artikel](https://docs.f3cloud.com/de/client-area/protect-vps-from-unauthorised-access/backups.md).

***

### Häufige Probleme

<details>

<summary>Das Panel öffnet sich nicht</summary>

Prüfen Sie, ob der A-Record der Panel-Domain auf die IP-Adresse des Servers zeigt. Sehen Sie sich danach die Protokolle mit dem Befehl `docker compose logs` in den Ordnern `/opt/remnawave` und `/opt/remnawave/caddy` an. Wenn Caddy kein Zertifikat erhalten konnte, steht der Grund in seinem Protokoll.

</details>

<details>

<summary>Der Node verbindet sich nicht mit dem Panel</summary>

Stellen Sie sicher, dass Port `2222` auf dem Node-Server für die IP-Adresse des Panels geöffnet ist und dass `SECRET_KEY` vollständig in die `docker-compose.yml` kopiert wurde. Das Protokoll des Nodes sehen Sie mit dem Befehl `docker compose logs` im Ordner `/opt/remnanode`.

</details>

<details>

<summary>Das Profil wird nicht gespeichert, Fehler wegen target</summary>

Die Meldung `please fill in a valid value for "target"` bedeutet, dass die Felder der Vorlage im Block `realitySettings` nicht ausgefüllt sind. Füllen Sie `target`, `serverNames`, `privateKey` und `shortIds` aus, wie in Schritt 6 beschrieben.

</details>

<details>

<summary>Fehler SPAWN_ERROR: xray</summary>

Xray konnte auf dem Node mit diesem Profil nicht starten, meistens wegen eines Fehlers in den Einstellungen oder eines belegten Ports. Sehen Sie sich das Xray-Protokoll mit dem Befehl `docker exec remnanode xlogs` an und korrigieren Sie das Profil.

</details>

<details>

<summary>Der Benutzer sieht den Server nicht im Abonnement</summary>

Prüfen Sie drei Dinge. Das Profil ist in `Default-Squad` aktiviert, der Benutzer gehört zu diesem Squad, und beim Host ist der Schalter **Host visibility** eingeschaltet. Standardmäßig wird ein neuer Host ausgeschaltet angelegt.

</details>

<details>

<summary>Die Verbindung steht, aber Websites öffnen sich nicht</summary>

Prüfen Sie, ob `serverNames`, die Schlüssel und `shortIds` im Profil mit dem übereinstimmen, was der Client erhält, und ob die IP-Adresse des Nodes beim Provider nicht gesperrt ist.

</details>

***

### Unsere Ressourcen

**Telegram-Kanal:** [https://t.me/f3cloud_news](https://t.me/f3cloud_news)\
**Hosting-Website:** [https://f3cloud.com](https://f3cloud.com/de)
