# Eigener Server (SSH)

Einen vorhandenen Linux-Server verbindest du per SSH mit MainPath, die ihn dann einrichtet und für die Deployments nutzt.

> Source: https://www.mainpath.ai/de/docs/own-server/

Wenn du bereits einen Linux-Server hast, hinterlegst du einen SSH-Zugang in MainPath, und sie übernimmt ab da Einrichtung und Deployments; bei welchem Anbieter der Server läuft, spielt keine Rolle.

## Was der Server mitbringen muss

Der Server muss über SSH erreichbar sein und einen Benutzer haben, mit dem MainPath arbeiten kann, zum Beispiel `deploy` oder `root`. Liegt er hinter einer Firewall oder NAT, verbindest du ihn über einen [Netzwerk-Tunnel]({{< relref "network-tunnels" >}}); der Host darf dann eine interne Adresse sein. Für die Anmeldung empfehlen wir ein SSH-Schlüsselpaar statt eines Passworts; wenn du noch keins hast, erzeugst du es nach der Anleitung unter [SSH-Key anlegen]({{< relref "create-ssh-key" >}}).

## Server in MainPath hinterlegen

1. Öffne in der Seitenleiste **Server**, klicke auf **Server hinzufügen** und wähle **SSH**.
2. Trage unter **Host** die IP-Adresse oder den Hostnamen des Servers ein.
3. Lass **Port** auf `22`, sofern dein Server SSH nicht auf einem anderen Port anbietet.
4. Gib unter **Benutzer** den vorbereiteten Benutzer an.
5. Wähle bei **Authentifizierung** die Option **SSH-Key (empfohlen)** und füge den privaten Schlüssel vollständig ein, einschließlich der `BEGIN`- und `END`-Zeilen. Alternativ kannst du ein Passwort hinterlegen.
6. Optional: **Server überwachen**, **Firewall konfigurieren** und **Zugang über Tunnel**. Die Firewall beschränkt SSH auf ausgewählte Adressen; Details stehen unter [Server]({{< relref "servers" >}}#überwachung-und-firewall). Hinter einer Firewall oder NAT wählst du den [Netzwerk-Tunnel]({{< relref "network-tunnels" >}}).
7. Speichere. Der Server steht beim Erstellen und Bearbeiten von Projekten zur Auswahl.

Dein eigener Schlüssel wird nur für die Ersteinrichtung gebraucht. Dabei erzeugt MainPath einen eigenen Deploy-Schlüssel, trägt ihn in die `authorized_keys` des Benutzers ein und arbeitet danach mit diesem.

## Was beim ersten Deployment passiert

Sobald der Server einem Projekt zugewiesen ist und die erste Pipeline läuft, richtet MainPath ihn per Ansible ein: Sie installiert Docker und Traefik als Reverse Proxy und spielt anschließend die Projekt-Konfiguration mit Backend, Browser-App, Homepage und Datenbank ein, je nachdem, was dein Projekt enthält. Wie die Pipeline danach Dev und Produktion ausrollt, steht unter [Git-Workflow und Deployment]({{< relref "git-workflow" >}}).

Damit Anfragen bei Traefik ankommen, müssen die DNS-Einträge deiner [Domain]({{< relref "domain" >}}) auf den Server zeigen.

