> ## Content Index
> Fetch the complete content index at: https://blog.cube-m.de/llms.txt
> Use this file to discover other available public pages before exploring further.

# 11. Der App-Baukasten – so läuft jede Installation
- URL: https://blog.cube-m.de/11-der-app-baukasten-so-lauft-jede-installation/
- Published: 2026-06-29T12:12:51.000Z
- Updated: 2026-06-29T12:12:51.000Z
- Description: Zehn Artikel Fundament – jetzt kommen die Apps. Drei Fragen, vier Schritte, und jede Installation läuft nach demselben Muster. So liest du den Baukasten.
- Author: Martin
- Tags: VPS, Apps, docker, Caddy, #Import 2026-09-06 19:52

Zehn Artikel. Ein VPS, Debian, Docker, Tailscale, Komodo, Caddy, Mail-Relay, Authelia, CrowdSec. Kein einziger davon war eine App, die du täglich benutzt.

Das war Absicht. Was du aufgebaut hast, ist eine Plattform – ein Fundament, auf dem neue Apps in 15–30 Minuten laufen. Ohne jedes Mal den Reverse Proxy neu aufzusetzen, ohne HTTPS-Zertifikate per Hand, ohne Login-Schutz von Null zu konfigurieren. Das alles ist schon da.

Dieser Artikel zeigt einmal, wie die Bausteine zusammenspielen – bevor ab Artikel 12 die ersten echten Apps einziehen.

## Am Ende hast du

- Verstanden, warum die letzten zehn Artikel so aufgebaut waren
- Das Muster hinter jeder App-Installation einmal komplett durchgespielt
- `whoami` als Testapp über HTTPS und hinter Authelia erreichbar
- Den Stack danach wieder aufgeräumt
- Ein klares Bild davon, was dich in Artikel 12, 13, 14 … erwartet

## 1\. Was die letzten zehn Artikel gebracht haben

Jetzt weißt du, wofür der ganze Aufwand war. Vaultwarden, Immich, Paperless – die Apps, die du eigentlich haben willst – brauchen alle dasselbe Drumherum: HTTPS, einen gesicherten Eingang, Login-Schutz, Mail-Versand, eine Verwaltung. Das hast du gebaut. Einmal. Und es steht jetzt für jede App bereit:

- **Artikel 02–03** – Server abgesichert, Docker läuft, Firewall steht
- **Artikel 04** – DNS eingerichtet, Subdomains lösen auf
- **Artikel 05–06** – Tailscale-VPN für den Admin-Zugang, Komodo zum Verwalten
- **Artikel 07** – Caddy vergibt HTTPS automatisch für jede neue Subdomain
- **Artikel 08** – Mail-Relay steht bereit, Apps können E-Mails verschicken
- **Artikel 09** – Authelia schützt mit Login und 2FA
- **Artikel 10** – CrowdSec erkennt und blockiert Angriffe

Ab jetzt installierst du nur noch die App selbst. Alles andere läuft im Hintergrund mit.

Konkretes Beispiel: Wenn du in Artikel 12 Vaultwarden installierst, beantragst du kein Zertifikat – Caddy macht das. Du richtest keinen Login ein – Authelia ist schon da. Du setzt keine Firewall-Regel – UFW ist konfiguriert. Du legst einen Stack an, ergänzt einen Caddyfile-Block, eine Authelia-Regel – fertig.

## 2\. Die Entscheidungen vor jeder App

Bevor du eine App installierst, beantwortest du drei Fragen. Die Antworten bestimmen, was du tun musst.

### Frage 1: Wie soll die App erreichbar sein?

| Profil           | Bedeutung                        | Beispiele                       |
| ---------------- | -------------------------------- | ------------------------------- |
| 🔒 VPN-only      | Nur über Tailscale erreichbar    | Komodo, interne Tools           |
| 🔐 Public + Auth | Öffentlich, aber hinter Authelia | Vaultwarden, Immich, Paperless  |
| 🌐 Public        | Für jeden erreichbar             | Blog, öffentliche Dokumentation |

Admin-Tools wie Komodo laufen VPN-only – die haben im öffentlichen Internet nichts verloren. Persönliche Apps wie Vaultwarden laufen Public + Auth – du willst von überall drankommen, aber nicht jeder soll rein. Ein Blog läuft Public.

### Frage 2: Braucht die App einen Login davor (Authelia)?

Authelia ist der Kontrolleur an der Tür – er prüft, wer zur App durchkommt (→ Artikel 09).

- 🔒 VPN-only → kein Authelia nötig, das VPN ist der Schutz
- 🔐 Public + Auth → Authelia mit 2FA davor
- 🌐 Public → kein Authelia

Eine Besonderheit gibt es bei Apps mit eigenen Handy-Clients (Vaultwarden, Immich): Dort darf Authelia nicht den ganzen Host blockieren, sonst brechen die Apps ab. Authelia sichert dann nur das Admin-Panel. Das erklärt der jeweilige App-Artikel an Ort und Stelle – für jetzt reicht: Authelia ja oder nein.

### Frage 3: Braucht die App E-Mail?

Nicht jede App verschickt Mails. Viele können damit aber mehr:

| App           | Ohne Mail         | Mit Mail                    |
| ------------- | ----------------- | --------------------------- |
| Vaultwarden   | kein Self-Service | Passwort-Reset, Einladungen |
| Immich        | läuft vollständig | –                           |
| Paperless-ngx | läuft vollständig | –                           |

Der Mail-Relay läuft bereits (→ Artikel 08). Braucht eine App Mail, trägst du in ihrer `.env` `mail-relay:2500` als SMTP-Host ein – die Variablennamen zeigt der App-Artikel.

## 3\. Die Voraussetzungs-Box – das Ergebnis auf einen Blick

Die Antworten auf diese drei Fragen lassen sich als Bild zusammenfassen: Welche Fundament-Bausteine braucht diese App – und welche nicht? Genau diese Box steht ab Artikel 12 ganz oben in jedem App-Artikel. So lernst du sie hier einmal zu lesen.

Ein grüner Haken heißt „für diese App nötig", ein graues Kreuz „für diese App nicht nötig". Basis und Zugang sind immer grün – ohne Server, Docker und Komodo läuft keine App. Caddy, Mail und Authelia wechseln je nach den drei Fragen.

So sieht das für die nächste App aus, **Vaultwarden** (Artikel 12) – öffentlich erreichbar, mit Mail und Login:

Voraussetzungen für Vaultwarden Basis, Zugang, Caddy, Mail und Authelia sind nötig. 02–03 · Basis Server & Docker 05 + 06 · Zugang Tailscale VPN + Komodo 07 · Caddy HTTPS & Subdomain 08 · Mail Einladungs- & Reset-Mails 09 · Authelia 2FA vor dem Admin-Panel 

Eine andere App sieht anders aus. **Komodo** läuft VPN-only – nur über Tailscale erreichbar, ohne Reverse Proxy, ohne Login davor. Hier sind drei Bausteine grau:

Voraussetzungen für Komodo (VPN-only) Nur Basis und Zugang nötig, Caddy, Mail und Authelia nicht. 02–03 · Basis Server & Docker 05 + 06 · Zugang Tailscale VPN + Komodo 07 · Caddy für diese App nicht nötig 08 · Mail für diese App nicht nötig 09 · Authelia für diese App nicht nötig 

Du baust diese Box nie selbst – jeder App-Artikel bringt sie fertig mit. Was dir die Box spart: ein Blick, und du weißt, ob dein Fundament für diese App reicht oder ob noch ein Baustein fehlt.

> **Und CrowdSec?** CrowdSec taucht in der Box nicht auf. Es überwacht alle Apps automatisch über die Caddy-Logs – du musst pro App nichts einrichten. Es ist eine Grundsatzentscheidung aus Artikel 10, keine, die pro App fällt. Dasselbe gilt für DNS und Firewall: einmal eingerichtet, danach unsichtbar.

## 4\. Die vier Schritte – am Beispiel Vaultwarden

Egal welche App: Die Installation folgt immer denselben vier Schritten. Hier am Beispiel Vaultwarden, wie es in Artikel 12 konkret wird.

### Schritt 1: Stack in Komodo anlegen

Jede App wird ein eigener Stack in Komodo – **UI Defined**, auf Server `homelab`. Im Compose-Tab kommt die `compose.yaml`, im `.env`\-Tab die Secrets.

Drei Konventionen gelten dabei für jede App der Serie:

- **Verzeichnis:** Jeder Stack lebt unter `/srv/docker/stacks/<appname>/`. Komodo legt Compose- und `.env`\-Datei dort beim ersten Deploy ab.
- **Netzwerk:** Alle Container hängen am externen Netzwerk `homelab_net`. So erreicht Caddy jede App per Service-Namen – ganz ohne `ports:` nach außen. Der einzige Container mit offenen Ports bleibt Caddy.
- **Secrets:** Passwörter und Keys stehen in der `.env` (Tab in Komodo), nie direkt in der `compose.yaml`. Eingebunden werden sie per `env_file: .env`.

Apps mit Datenbank bekommen ihren **eigenen** PostgreSQL-Container im selben Stack – keine geteilte Datenbank über mehrere Apps. So bleibt jede App in sich abgeschlossen.

```yaml
name: vaultwarden

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    env_file: .env
    volumes:
      - ./data:/data
    networks:
      - homelab_net

networks:
  homelab_net:
    external: true

```

Danach **Poll for Updates: on**, **Auto Update: off**, **Deploy**.

### Schritt 2: Caddyfile ergänzen

Das Caddyfile liegt unter `/srv/docker/stacks/caddy/Caddyfile`. Bearbeiten per VS Codium (Remote-SSH, → Artikel 07) oder per SSH. Pro App kommt ein Block dazu:

```caddyfile
vault.deine-domain.de {
    import public
    import auth
    reverse_proxy vaultwarden:80
}

```

`import public` bringt HTTPS, Komprimierung und Logging (definiert in Artikel 07), `import auth` schaltet Authelia davor (Artikel 09). Danach den Caddy-Stack in Komodo per **Redeploy** neu starten. (Wer im Terminal ist, kann auch `docker exec caddy caddy reload --config /etc/caddy/Caddyfile` nutzen.)

Bei VPN-only-Apps entfällt dieser Schritt komplett – ohne Caddyfile-Eintrag ist die App nur über Tailscale erreichbar.

### Schritt 3: Authelia-Regel eintragen

Soll Authelia die App schützen, kommt eine Regel in `access_control.rules` (in der `configuration.yml`, → Artikel 09):

```yaml
    - domain: vault.deine-domain.de
      policy: two_factor
      subject:
        - "group:admins"

```

`two_factor` verlangt Passwort + 2FA-Code, `group:admins` beschränkt den Zugang auf deinen Admin-Account aus Artikel 09\. Authelia liest die Datei automatisch neu – kein Neustart nötig.

### Schritt 4: Mail einbinden (falls nötig)

Verschickt die App Mails, kommt der Relay in die `.env` des App-Stacks:

```env
SMTP_HOST=mail-relay
SMTP_PORT=2500

```

Die genauen Variablennamen unterscheiden sich pro App – der jeweilige Artikel zeigt sie. Braucht die App keine Mail, entfällt der Schritt.

## 5\. Das war's – das ist der ganze Baukasten

Mehr ist es nicht. Drei Fragen, vier Schritte, immer dasselbe Muster. Was sich von App zu App ändert: das Image, die Subdomain, ob eine Datenbank dazukommt, ob Mail nötig ist. Was gleich bleibt: Verzeichnis, Netzwerk, `.env`\-Prinzip, der Ablauf.

Ab Artikel 12 steht über jeder Installation die Voraussetzungs-Box, gefolgt von genau diesen Schritten. Du weißt jetzt, was sie bedeuten.

## Und jetzt?

Genug Konzept – Zeit für die erste echte App. Was du zuerst baust, hängt davon ab, was dir am meisten fehlt:

- Passwörter sicher verwalten → **Artikel 12: Vaultwarden**
- Fotos vom Handy sichern → **Artikel 13: Immich** *(Hinweis: Immich braucht viel Speicher – mehrere hundert Gigabyte sind schnell erreicht. Prüfe vorher deinen Platz; auf einem NAS ist Immich langfristig besser aufgehoben, die NAS-Serie greift das auf.)*
- Dokumente digitalisieren und durchsuchen → **Artikel 14: Paperless-ngx**

👉 **Weiter:** [12\. Vaultwarden – Passwort-Manager](#)