Vikunja mit Traefik-Labels bereitstellen und unter DNS-Eintrag nutzen
Lewin Grunenberg 4 Minuten Lesezeit

Vikunja mit Traefik-Labels bereitstellen und unter DNS-Eintrag nutzen

Dieser Beitrag zeigt, wie du Vikunja mit Docker Compose und Traefik bereitstellst und es über einen DNS-Eintrag erreichst.
vikunja traefik docker on-premise self-hosted

Vikunja und Traefik - Einfache Integration mit Netzwerkkonfiguration

Einleitung

In diesem Beitrag zeigen wir dir, wie du die To-Do-App Vikunja mit Docker Compose und Traefik bereitstellst und sie über einen DNS-Eintrag wie https://do.deine-domain.org erreichst. Diese Konfiguration ermöglicht eine einfache und sichere Verwaltung deiner Aufgabenlisten.

Vorstellung von Traefik

Traefik ist ein dynamischer Reverse-Proxy und Load-Balancer, der speziell für moderne Anwendungen entwickelt wurde. Er ermöglicht die automatische Erkennung von Diensten und das einfache Verwalten von SSL/TLS-Zertifikaten. Mehr Details findest du in unserem Traefik-Tutorial.

Vorstellung von Vikunja

Vikunja ist eine Open-Source-Task-Management-Plattform, die es dir ermöglicht, deine Aufgaben effizient zu organisieren und zu verfolgen. Sie bietet Funktionen wie die Erstellung von To-Do-Listen, das Zuweisen von Aufgaben und das Setzen von Fristen. Vikunja ist ideal für Teams und Einzelpersonen, die eine flexible und leistungsstarke Lösung für ihr Task-Management suchen.

DNS-Eintrag setzen

Bevor du mit der Einrichtung fortfährst, musst du sicherstellen, dass der DNS-Eintrag für do.deine-domain.org korrekt gesetzt ist. Dieser Eintrag sollte auf die IP-Adresse des Servers verweisen, auf dem Traefik läuft. Nutze hierfür deinen DNS-Verwaltungsdienst, wie beispielsweise Cloudflare, um den entsprechenden Eintrag hinzuzufügen.

Vorstellung von Docker und Docker Compose

Docker ist eine Plattform, die es ermöglicht, Anwendungen in isolierten Containern auszuführen, was ihre Bereitstellung und Skalierung erheblich vereinfacht. Docker Compose ist ein Tool, mit dem du Multi-Container-Anwendungen definieren und starten kannst. Es hilft dabei, komplexe Anwendungsumgebungen mit wenigen Befehlen zu verwalten.

Präsentation der Docker Compose für Vikunja

Vikunja

Der Vikunja-Dienst stellt die Aufgabenmanagement-Oberfläche bereit und wird über Traefik zugänglich gemacht:


services:
  vikunja:
    image: vikunja/api
    environment:
      VIKUNJA_SERVICE_PUBLICURL: https://do.deine-domain.org  # Ersetze 'deine-domain.org' mit deiner tatsächlichen Domain
      VIKUNJA_DATABASE_HOST: db
      VIKUNJA_DATABASE_PASSWORD: changeme  # Ersetze 'changeme' mit einem starken Passwort
      VIKUNJA_DATABASE_TYPE: mysql
      VIKUNJA_DATABASE_USER: vikunja
      VIKUNJA_DATABASE_DATABASE: vikunja
      VIKUNJA_SERVICE_JWTSECRET: supersecuresecret  # Ersetze 'supersecuresecret' mit einem sicheren, zufälligen Wert
    volumes:
      - ./files:/app/vikunja/files
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.vikunja.rule=Host(`do.deine-domain.org`)"  # Ersetze 'deine-domain.org' mit deiner tatsächlichen Domain
      - "traefik.http.routers.vikunja.entrypoints=websecure"
      - "traefik.http.routers.vikunja.tls.certresolver=lets-encrypt"
      - "traefik.http.services.vikunja.loadbalancer.server.port=3456"
      - "traefik.docker.network=web"
    networks:
      - web
      - default

Dieser Abschnitt definiert den Vikunja-Dienst, der auf den Port 3456 lauscht. Die Konfiguration umfasst die Datenbankanbindung und die notwendigen Umgebungsvariablen.

Traefik

Die Traefik-Labels sind entscheidend, um den Dienst korrekt zu konfigurieren und den Datenverkehr entsprechend weiterzuleiten:

  • traefik.enable=true: Aktiviert Traefik für diesen Dienst, sodass Traefik den Dienst überwacht und Anfragen weiterleitet.
  • traefik.http.routers.vikunja.rule=Host('do.deine-domain.org'): Definiert die Bedingung für die URL-Zuordnung, die festlegt, dass Anfragen an do.deine-domain.org an den Vikunja-Dienst weitergeleitet werden.
  • traefik.http.routers.vikunja.entrypoints=websecure: Weist Traefik an, diesen Dienst über den websecure EntryPoint bereitzustellen, der für HTTPS-Verkehr verwendet wird.
  • traefik.http.routers.vikunja.tls.certresolver=lets-encrypt: Gibt an, dass Traefik Let’s Encrypt verwendet, um den HTTPS-Verkehr zu sichern.
  • traefik.http.services.vikunja.loadbalancer.server.port=3456: Gibt den internen Port des Vikunja-Dienstes an, auf den Traefik den Verkehr weiterleitet.
  • traefik.docker.network=web: Gibt das Docker-Netzwerk an, das von Traefik verwendet wird, um die Verbindungen zu verwalten.

Datenbank (DB)

Der Datenbank-Dienst (DB) stellt die notwendige Datenbank für Vikunja bereit:

  db:
    image: mariadb:10
    environment:
      MYSQL_ROOT_PASSWORD: supersupersecret  # Ersetze 'supersupersecret' mit einem starken Passwort
      MYSQL_USER: vikunja
      MYSQL_PASSWORD: changeme  # Ersetze 'changeme' mit einem starken Passwort
      MYSQL_DATABASE: vikunja
    volumes:
      - ./db:/var/lib/mysql
    networks:
      - default

Dieser Abschnitt definiert den Datenbank-Dienst, der eine MariaDB-Datenbank bereitstellt. Die Konfiguration umfasst die notwendigen Umgebungsvariablen für die Datenbanknutzung und die Speicherorte für die Daten.

Netzwerke

Die Netzwerkeinstellungen definieren das Netzwerk, das Traefik für die Verbindung der Dienste verwendet:


networks:
  web:
    external: true  # Verwendet ein externes Netzwerk, das von Traefik verwaltet wird
  default:
    driver: bridge

Dieser Abschnitt definiert das Netzwerk, das von Traefik verwendet wird, um die verschiedenen Dienste miteinander zu verbinden und die Verbindungen zu verwalten.

Fazit

Mit dieser Anleitung kannst du Vikunja effizient und sicher mit Traefik und Docker bereitstellen. Die Konfiguration ist flexibel und kann leicht an individuelle Anforderungen angepasst werden. Für weitere Fragen oder eine professionelle Betreuung schau in unseren Discord-Channel. Wir unterstützen dich gerne bei der optimalen Einrichtung und Verwaltung deiner Anwendungen.

Komplette Docker Compose

Hier ist die vollständige docker-compose.yml Datei für die Vikunja-Installation:


version: '3.4'

services:
  vikunja:
    image: vikunja/api
    environment:
      VIKUNJA_SERVICE_PUBLICURL: https://do.deine-domain.org  # Ersetze 'deine-domain.org' mit deiner tatsächlichen Domain
      VIKUNJA_DATABASE_HOST: db
      VIKUNJA_DATABASE_PASSWORD: changeme  # Ersetze 'changeme' mit einem starken Passwort
      VIKUNJA_DATABASE_TYPE: mysql
      VIKUNJA_DATABASE_USER: vikunja
      VIKUNJA_DATABASE_DATABASE: vikunja
      VIKUNJA_SERVICE_JWTSECRET: supersecuresecret  # Ersetze 'supersecuresecret' mit einem sicheren, zufälligen Wert
    volumes:
      - ./files:/app/vikunja/files
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.vikunja.rule=Host(`do.deine-domain.org`)"  # Ersetze 'deine-domain.org' mit deiner tatsächlichen Domain
      - "traefik.http.routers.vikunja.entrypoints=websecure"
      - "traefik.http.routers.vikunja.tls.certresolver=lets-encrypt"
      - "traefik.http.services.vikunja.loadbalancer.server.port=3456"
      - "traefik.docker.network=web"
    networks:
      - web
      - default

  db:
    image: mariadb:10
    environment:
      MYSQL_ROOT_PASSWORD: supersupersecret  # Ersetze 'supersupersecret' mit einem starken Passwort
      MYSQL_USER: vikunja
      MYSQL_PASSWORD: changeme  # Ersetze 'changeme' mit einem starken Passwort
      MYSQL_DATABASE: vikunja
    volumes:
      - ./db:/var/lib/mysql
    networks:
      - default

networks:
  web:
    external: true  # Verwendet ein externes Netzwerk, das von Traefik verwaltet wird
  default:
    driver: bridge

Ähnliche Artikel