# Docker Cloud Server mit Tailscale

Manche Dinge übersteigen die Funktionalität von Serverless Plattformen. Dafür macht es Sinn sich einen eigenen Server zu beschaffen. Ich nutze hierfür die Cloud Server von Hetzner, die es ab 2,89 € im Monat gibt. Darüber hinaus nutze ich Tailscale um die Administration dieser Server abzusichern.
Vorbereitung
- Erstelle einen kostenlosen Tailscale Account (https://login.tailscale.com/start (opens new window))
- Beschaffe Dir einen virtuellen Ubuntu Server (z.B.: Hetzner, Digitalocean, vultr, ...)
Einrichtung
Als erstes muss du deinen neuen Server sichern, damit nur du ihn erreichen kannst. Dazu installierst du tailscale:
curl https://pkgs.tailscale.com/stable/ubuntu/focal.gpg | sudo apt-key add -
curl https://pkgs.tailscale.com/stable/ubuntu/focal.list | sudo tee /etc/apt/sources.list.d/tailscale.list
sudo apt-get update
sudo apt-get install tailscale
sudo tailscale up
Du musst auf die URL klicken, welche Dir angezeigt wird.
Danach wird dein Server in der tailscale Oberfläche angezeigt: https://login.tailscale.com/admin/machines (opens new window)
Um weiter fortzufahren musst du dir den tailscale client auf dein Endgerät installieren (https://tailscale.com/download (opens new window)) und starten. Danach beendest Du deine SSH Session mit exit und startest eine neue mit der neuen tailscale ip Adresse:
ssh root@new-ip-addr
Wenn das funktioniert hat schließt Du danach alle Ports deines Servers (außer HTTP und HTTPS):
sudo ufw allow in on tailscale0 to any port 22
sudo ufw allow 41641/udp
sudo ufw enable
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw status
sudo ufw reload
sudo service ssh restart
Jetzt ist dein Server sicher und nur du kannst über deinen tailscale Account auf deinen Server zugreifen.
Docker installation
Um deine Anwendungen auf dem Server zu betreiben empfehle ich dir docker. Dieses installierst du durch folgende Befehle:
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
echo "DOCKER_OPTS=\"--dns 8.8.8.8 --dns 8.8.4.4 --iptables=false\"" >> /etc/default/docker
service docker restart
Danach testest du deine Umgebung, in dem du einen nginx Container erstellst:
sudo docker run -itd --restart=always -p 80:80 --name nginx nginx
Du solltest nun die nginx Testseite über deine IP Adresse erreichen.
Danach kannst du den Container wie folgt wieder entfernen:
sudo docker stop nginx
sudo docker rm nginx
Portainer
Um dein docker zu administrieren empfehle ich dir Portainer. Damit kannst du alle deine Anwendungscontainer grafisch administrieren. Du installierst es wie folgt:
sudo docker run -d --restart=always -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer/portainer
sudo ufw allow in on tailscale0 to any port 9000
sudo ufw reload
Danach erreichst du deine Admin-Oberfläche über folgende URL:
http://##tailscale-ip-adresse##:9000
Beim ersten Aufruf musst du dir ein Passwort vergeben und die Umgebung auf local stellen.
Nun kannst du auf deinem Server einen eigenen Mailserver, Datenbank, WordPress, ... betreiben.
