Map Blueprint auf einem Cloud-Server hosten

Bring deine Instanz auf einen dauerhaft laufenden Server, einen Computer, der rund um die Uhr in einem Rechenzentrum läuft, damit entfernte Teamkollegen ihn von überall erreichen, mit deiner eigenen Webadresse und kostenlosem HTTPS (dem Vorhängeschloss, das die Verbindung verschlüsselt). Diese Anleitung nutzt die Always-Free-Stufe von Oracle Cloud, die Map Blueprint ohne monatliche Kosten betreiben kann, aber dieselben Schritte funktionieren auf jedem Ubuntu-Cloud-Server.

Womit du am Ende dastehst: ein kleiner Linux-Server, der Map Blueprint rund um die Uhr betreibt, erreichbar unter etwas wie https://maps.yourdomain.com, geschützt durch dein Team-Passwort und nach Neustarts automatisch wieder hochfahrend. Plane etwa 20–30 Minuten ein. Wo immer du unten YOUR_… siehst, ersetze es durch deinen eigenen Wert.

Möchtest du es lieber einfach auf deinem eigenen Laptop betreiben? Siehe die Anleitung zum lokalen Hosting.

Ein paar Begriffe, die dir begegnen: ein Server ist ein Computer, der die ganze Zeit läuft, damit andere sich verbinden können; SSH ist eine sichere Möglichkeit, Befehle auf diesem entfernten Computer von deinem eigenen aus einzugeben; eine Domain ist deine Webadresse (wie yourdomain.com); DNS ist das Adressbuch des Internets, das eine Domain auf einen Server verweist; HTTPS ist die verschlüsselte, mit Vorhängeschloss versehene Version einer Webadresse; ein Reverse Proxy und ein Tunnel sind zwei Wege, HTTPS vor die App zu setzen. Keine Sorge, jeder Schritt unten sagt dir genau, was zu tun ist.

Schritt 1, Einen kostenlosen Server erstellen

  1. Registriere dich bei Oracle Cloud Free Tier und melde dich in der Konsole an (Oracles Website zum Verwalten deiner Server).
  2. Gehe zu Compute → Instances → Create instance. Eine "Instance" ist einfach Oracles Wort für einen Server.
  3. Wähle eine Always-Free-fähige Shape (die Größe des Servers, "Shape" ist Oracles Wort dafür). Beide sind in Ordnung: VM.Standard.E2.1.Micro oder eine Ampere Arm-Shape (die mehr Arbeitsspeicher hat). Behalte das voreingestellte Ubuntu-Image, Ubuntu ist die Linux-Version, die diese Anleitung verwendet.
  4. Wähle unter Add SSH keys die Option Generate a key pair for me und lade den privaten Schlüssel herunter, diese kleine Datei beweist beim Anmelden, dass du es bist, also bewahre sie an einem sicheren Ort auf. (Hast du bereits einen eigenen Schlüssel? Füge stattdessen seine öffentliche Hälfte ein.)
  5. Klicke auf Create. Wenn der Server läuft, kopiere seine Public IP address (die Nummer des Servers im Internet), diese Anleitung nennt sie YOUR_SERVER_IP.

Schritt 2, Die Firewall öffnen

Eine Firewall blockiert unerwartete Netzwerkverbindungen. Oracle blockiert eingehenden Web-Verkehr standardmäßig, daher musst du ihn an den beiden Standard-Web-Ports erlauben, 80 (einfaches Web) und 443 (sicheres Web):

  1. Öffne deine Instance → klicke auf ihr Virtual Cloud Network / SubnetSecurity Lists → die Standardliste. (Das ist Oracles Firewall.)
  2. Füge Ingress Rules hinzu ("Ingress" bedeutet einfach eingehend), die TCP von 0.0.0.0/0 (heißt "von überall") zu den Ports 80 und 443 erlauben.
Ubuntu auf Oracle hat außerdem seine eigene lokale Firewall. Nachdem du dich in Schritt 3 verbunden hast, erlaube dieselben beiden Ports, indem du diese drei Zeilen einfügst (jede Zeile ist ein Befehl; die dritte speichert die Regel, damit sie Neustarts übersteht):
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 443 -j ACCEPT
sudo netfilter-persistent save
Wenn du die Option Cloudflare Tunnel in Schritt 5 nutzt, kannst du das Öffnen der Ports 80/443 ganz überspringen.

Schritt 3, Mit dem Server verbinden

Jetzt meldest du dich am Server an und gibst von deinem eigenen Computer aus Befehle auf ihm ein, mittels SSH. Öffne ein Terminal (unter Windows nutze PowerShell, es enthält bereits ssh) und führe diesen Befehl aus, wobei -i auf die heruntergeladene Datei des privaten Schlüssels zeigt:

ssh -i /path/to/YOUR_PRIVATE_KEY ubuntu@YOUR_SERVER_IP

Wenn du auf Mac oder Linux einen Fehler "permissions are too open" zum Schlüssel bekommst, führe zuerst chmod 600 /path/to/YOUR_PRIVATE_KEY aus, das schränkt die Datei so ein, dass nur du sie lesen kannst, was SSH verlangt.

Sobald du verbunden bist (deine Eingabeaufforderung zeigt jetzt den Server), installiere die neuesten Systemaktualisierungen:

sudo apt update && sudo apt upgrade -y

sudo bedeutet "führe dies als Administrator aus"; apt ist Ubuntus eingebauter App-Installer.

Schritt 4, Map Blueprint hochladen und starten

Auf dem Server gibt es nichts zu installieren, kein Docker, kein Node, keine .env. Es ist ein einziges eigenständiges Programm. Führe von deinem eigenen Computer aus (ein neues Terminal-Fenster, nicht die SSH-Sitzung) diesen Befehl aus dem Ordner aus, in den du den Download entpackt hast, um das Linux-Programm auf den Server zu kopieren. scp bedeutet "secure copy", es sendet eine Datei über dieselbe sichere SSH-Verbindung:

scp -i /path/to/YOUR_PRIVATE_KEY ./map-blueprint-linux ubuntu@YOUR_SERVER_IP:~/

Zurück in der SSH-Sitzung mache das Programm ausführbar und starte es. HOST=0.0.0.0 sagt ihm, Verbindungen von außen anzunehmen, damit der nächste HTTPS-Schritt es erreichen kann:

chmod +x ~/map-blueprint-linux
HOST=0.0.0.0 ~/map-blueprint-linux

Es lauscht nun auf Port 8080. Dein Team-Passwort legst du im Browser fest, sobald HTTPS eingerichtet ist (nächster Schritt). Drücke vorerst Ctrl-C, um es zu stoppen, Schritt 6 macht daraus einen Dienst, der rund um die Uhr läuft.

config.json und deine data/-Karten werden direkt neben dem Programm in deinem Home-Ordner (~/) angelegt. Alle Einstellungen liegen auf der App-internen Einstellungen-Seite, es gibt keine Dateien zu bearbeiten.

Schritt 5, Deine Domain und kostenloses HTTPS hinzufügen

Die App spricht einfaches HTTP und ist darauf ausgelegt, hinter etwas zu sitzen, das HTTPS hinzufügt (das verschlüsselte Vorhängeschloss). Wähle einen dieser beiden Ansätze, Option A ist am einfachsten abzusichern.

Option A, Cloudflare Tunnel (keine offenen Ports, am einfachsten abzusichern)

Ein Tunnel verbindet deinen Server nach außen zu Cloudflare, sodass Besucher die App über Cloudflare erreichen, ohne dass auf deinem Server irgendwelche Ports offen sind.

  1. Füge deine Domain zu einem kostenlosen Cloudflare-Konto hinzu.
  2. Installiere auf dem Server cloudflared (Cloudflares Tunnel-Tool) und melde dich an:
    curl -fsSL https://pkg.cloudflare.com/install.sh | sudo bash
    sudo apt install -y cloudflared
    cloudflared tunnel login
  3. Erstelle einen Tunnel und richte deine gewählte Webadresse auf den lokalen Port der App:
    cloudflared tunnel create mapblueprint
    cloudflared tunnel route dns mapblueprint maps.YOURDOMAIN.com
  4. Sage dem Tunnel in seiner Konfiguration, Verkehr an http://localhost:8080 zu senden, und installiere ihn dann als Hintergrunddienst, damit er immer läuft:
    sudo cloudflared service install

Cloudflare erstellt und erneuert das HTTPS-Zertifikat automatisch für dich, und nichts auf deinem Server ist direkt nach außen freigegeben, du kannst die Ports 80/443 geschlossen lassen.

Option B, Caddy Reverse Proxy (automatisches Zertifikat)

Caddy ist ein winziger Webserver, der vor der App sitzt, HTTPS hinzufügt und Besucher an sie weiterleitet, genau das macht ein Reverse Proxy.

  1. Richte einen DNS-A-Record für maps.YOURDOMAIN.com auf YOUR_SERVER_IP. (Ein "A-Record" ist der DNS-Eintrag, der einen Namen auf die IP eines Servers abbildet, setze ihn bei deinem Domain-Registrar oder DNS-Anbieter.)
  2. Installiere Caddy auf dem Server.
  3. Trage Folgendes in die Datei /etc/caddy/Caddyfile ein (es sagt Caddy: serviere diese Adresse und leite Besucher an die App auf Port 8080 weiter):
    maps.YOURDOMAIN.com {
        reverse_proxy localhost:8080
    }
  4. Lade Caddy neu, damit es die Änderung übernimmt:
    sudo systemctl reload caddy

Caddy holt und erneuert automatisch ein kostenloses Let's-Encrypt-Zertifikat für dich. Diese Option benötigt die Ports 80 und 443 geöffnet (Schritt 2).

Map Blueprint markiert sein Login-Cookie automatisch als Secure, sobald Anfragen über HTTPS eintreffen (es liest den X-Forwarded-Proto-Header, den beide Optionen oben setzen), sodass Anmeldungen ohne zusätzliche Einrichtung geschützt sind.

Besuche https://maps.YOURDOMAIN.com, du solltest die Login-Seite sehen. Melde dich an und teile diesen Link mit deinem Team.


Optional, mit Cloudflare Zero Trust absichern

Möchtest du ein zweites, stärkeres Schloss? Cloudflare Zero Trust "Access" setzt einen Login-Bildschirm vor deine App, sodass Fremde Map Blueprint nie auch nur erreichen, Cloudflare prüft zuerst, wer du bist. Es funktioniert am besten mit Option A (dem Cloudflare Tunnel) oben, und es lässt dich den Zugriff Person für Person per E-Mail gewähren, statt ein einziges Passwort zu teilen. Es ist für kleine Teams kostenlos.

  1. Öffne im Cloudflare-Dashboard Zero Trust (richte den kostenlosen Plan ein, falls es dein erstes Mal ist).
  2. Gehe zu Access → Applications → Add an application → Self-hosted.
  3. Setze die Domain der Anwendung auf dieselbe Webadresse, die der Tunnel bedient (maps.YOURDOMAIN.com).
  4. Füge eine Access policy hinzu, die nur die E-Mail-Adressen deiner Teamkollegen erlaubt (oder eine ganze E-Mail-Domain wie @yourstudio.com), und speichere.
  5. Beim Besuch der Seite erscheint nun ein Cloudflare-Login, das einen einmaligen PIN-Code per E-Mail sendet (oder die Google-/GitHub-Anmeldung nutzt). Nur freigegebene Personen gelangen zur App.

Dies ist dieselbe Art von Identitätssperre, die die Macher von Map Blueprint auf ihrer eigenen internen Karte verwenden. Selbst wenn jemand deine URL erfährt, kann er die App nicht laden, ohne die Identitätsprüfung zu bestehen, ideal für eine private Studio-Karte.


Schritt 6, Nach Neustarts am Laufen halten

Mache die App schließlich zu einem Dienst, damit sie beim Hochfahren startet und sich selbst neu startet, falls sie je stoppt. (Ein "Dienst" ist ein Programm, um das sich Linux im Hintergrund kümmert.) Speichere den folgenden Text als Datei /etc/systemd/system/map-blueprint.service:

[Unit]
Description=Map Blueprint
After=network.target

[Service]
WorkingDirectory=/home/ubuntu
Environment=HOST=0.0.0.0
ExecStart=/home/ubuntu/map-blueprint-linux
Restart=always
User=ubuntu

[Install]
WantedBy=multi-user.target

Schalte ihn dann ein, lade die Dienstliste neu, aktiviere und starte ihn und prüfe, ob er läuft:

sudo systemctl daemon-reload
sudo systemctl enable --now map-blueprint.service
sudo systemctl status map-blueprint.service

WorkingDirectory=/home/ubuntu hält config.json und deine data/-Karten im Home-Ordner, neben dem Programm. Öffne nun https://maps.YOURDOMAIN.com, durchlaufe den Setup-Bildschirm beim ersten Start und lege sofort dein Team-Passwort fest. (Möchtest du es vorab setzen? Füge Environment=APP_PASSWORD=YOUR_PASSWORD zur Dienst-Datei hinzu.)


Sicherheits-Checkliste

Auf eine neue Version aktualisieren

Wenn du ein aktualisiertes Programm bekommst, stoppe den Dienst, ersetze die Programmdatei und starte ihn wieder, deine config.json und deine data/-Karten bleiben unangetastet. Lade die neue map-blueprint-linux von deinem Computer hoch (mit scp, wie in Schritt 4), und führe dann auf dem Server aus:

sudo systemctl stop map-blueprint.service
chmod +x ~/map-blueprint-linux
sudo systemctl start map-blueprint.service