Cal.com mit Docker in der Hetzner Cloud

Cal.com ist eine beliebte, quelloffene Alternative zu Calendly. Mit Hilfe von Docker und Polycrate können Sie in weniger als 5 Minuten Ihre eigene Instanz von Cal.com auf Hetzner betreiben.

Meta: Fabian Peter · 12.01.2024 · ⏳ 4 Minuten · Alle Blogs →
Tagsapps · docker · calcom · hetzner

Cal.com

In diesem Artikel zeigen wir den schnellsten und bequemsten Weg, Cal.com mit Docker in der Hetzner Cloud zu self-hosten. Mit Hilfe von Polycrate haben Sie in weniger als 5 Minuten Zugang zu Ihrer eigenen Cal.com Instanz auf Hetzner.

Ihre Cal.com Instanz ermöglicht Ihnen zahlreiche Integrationen mit Kalender- und Meeting-Tools, wie zum Beispiel:

In diesem Artikel wird Ihre Cal.com Instanz mit Microsoft 365 integriert sodass Sie gleich Zugriff auf Ihre MS365 Kalender und Meetings haben.

Was ist Cal.com?

Cal.com

Cal.com (früher bekannt als Calendso) ist eine beliebte, quelloffene Alternative zu Calendly, unterstützt von Tausenden von Entwicklern, einer bekannten Buchungs- und Terminfindungs-Lösung. Cal.com macht die Terminplanung für Sie und Ihre Kunden transparenter und für alle zugänglicher.

Mit Cal.com ermöglichen Sie es Ihren Kunden und Interessenten, Meetings mit Ihnen oder Ihrem Team bequem von Ihrer Website aus zu buchen. Cal.com sorgt dabei dafür, dass nur freie Slots aus den konnektierten Kalendern Ihres Teams für die Terminplanung miteinbezogen werden.

Warum will ich das selbst hosten?

Dafür gibt es viele Gründe. Viele Unternehmen sind auf den Betrieb von Software auf eigener Infrastruktur angewiesen und können auf SaaS-Angebote wie Cal.com nicht zurückgreifen. Andere wiederum - und dazu zählen auch wir bei ayedo - wollen den Betrieb kritischer Business-Komponenten einfach in der eigenen Hand haben. Auch das kann viele Gründe haben: mehr Flexibilität, mehr Kontrolle über das Pricing, bessere Datensicherheit.

So oder so, Cal.com ist eine AGPLv3 lizenzierte Open Source Software und eignet sich dadurch für den Betrieb auf eigener Infrastruktur. Zum Glück für uns bietet Cal.com auch ein fertiges Docker-Setup für’s Self-Hosting an, das wir für Sie mit Hilfe von Polycrate verpackt und konfigurierbar gemacht haben.

Und warum Hetzner und nicht AWS?

Unter allen Providern weltweit hat Hetzner das beste Preis-Leistungs-Verhältnis und schlägt die meisten Konkurrenten mit Abstand, was Preise von Infrastruktur und die dafür gelieferte Performance angeht. Hinzu kommt, dass Hetzner ein europäischer Cloud-Provider ist und dadurch viele potentielle Probleme mit Blick auf Compliance, DSGVO und Cloud Act einfach umschifft werden können.

Installation

Vorbereitung

Sie benötigen einige Credentials und Tools für die korrekte Einrichtung Ihrer Cal.com Instanz:

  • Die aktuelleste Version von Polycrate
  • Microsoft Credentials für die Anbindung an Outlook und Teams
  • Calc.com Credentials für die Verschlüsselung von Daten (generieren Sie einfach 2 zufällige Secrets in unserer Toolbox)
  • SMTP Credentials für den Versand von Buchungs- und Bestätigungs-Mails
  • Ein API Token von Ihrem Hetzner Cloud Projekt
  • Eine DNS Zone und einen A-Record für den Hostnamen der Cal.com Instanz, der auf Ihren Hetzner Server zeigt

Polycrate installieren

Sollten Sie Polycrate noch nicht installiert haben, folgen Sie bitte dieser Anleitung.

Workspace anlegen

Legen Sie einen neuen Ordner für den Polycrate Workspace an: mkdir calcom.

Wechseln Sie in den Workspace-Ordner: cd calcom

Legen Sie dort die Datei workspace.poly an und fügen Sie den folgenden Inhalt ein:

x-letsencrypt-email: &letsencrypt-email "info@meinefirma.de"
x-hcloud-token: &hcloud-token "HCLOUD_API_TOKEN"
x-calcom-nextauth-secret: &calcom-nextauth-secret "GENERIERTES_SECRET_1"
x-calcom-calendso-encryption-key: &calcom-calendso-encryption-key "GENERIERTES_SECRET_2"
x-calcom-email-host: &calcom-email-host "mail.meinefirma.de"
x-calcom-email-port: &calcom-email-port 587
x-calcom-email-user: &calcom-email-user "noreply@meinefirma.de"
x-calcom-email-password: &calcom-email-password "SMTP_PASSWORT"
x-calcom-email-from: &calcom-email-from "noreply@meinefirma.de"
x-calcom-hostname: &calcom-hostname "cal.meinefirma.de"
x-calcom-microsoft-graph-client-id: &calcom-microsoft-graph-client-id "MICROSOFT_CLIENT_ID"
x-calcom-microsoft-graph-client-secret: &calcom-microsoft-graph-client-secret "MICROOFT_CLIENT_SECRET"

name: *workspace-name

blocks:
  - name: vpc
    from: cargo.ayedo.cloud/ayedo/hcloud/vpc:0.0.9
    config:
      ssh:
        port: 22
        user: "root"
      vpc:
        name: *workspace-name
      token: *hcloud-token
      node_defaults:
        nodename:
          prefix: *workspace-name
        type: cx31
        image: ubuntu-22.04
        location: fsn1
        firewalls: 
          - *workspace-name
        networks:
          - *workspace-name
        placement_group: *workspace-name
      nodes:
        - name: docker-1
      networks:
        - name: *workspace-name
          enabled: true
          zone: eu-central
          ip_range: 10.11.0.0/16
          delete_protection: false
          type: cloud
          subnet:
            enabled: true
            ip_range: 10.11.3.0/24
      placement_groups:
        - name: *workspace-name
          enabled: true
          type: spread
      firewalls:
        - name: *workspace-name
          enabled: true
          rules: 
            - description: allow 22
              direction: in
              port: 22
              protocol: tcp
              source_ips:
                - 0.0.0.0/0
            - description: allow 80
              direction: in
              port: 80
              protocol: tcp
              source_ips:
                - 0.0.0.0/0
            - description: allow 443
              direction: in
              port: 443
              protocol: tcp
              source_ips:
                - 0.0.0.0/0
            - description: allow icmp
              direction: in
              protocol: icmp
              source_ips:
                - 0.0.0.0/0

  - name: docker
    from: cargo.ayedo.cloud/ayedo/linux/docker:0.0.5
    inventory:
      from: vpc

  - name: traefik
    from: cargo.ayedo.cloud/ayedo/docker/traefik:0.1.1
    inventory:
      from: vpc
    config:
      tls:
        resolver:
          email: *letsencrypt-email
        solver:
          http:
            enabled: true

  - name: calcom
    from: cargo.ayedo.cloud/ayedo/docker/calcom:0.0.1
    inventory:
      from: vpc
    config:
      calcom:
        nextauth_secret: *calcom-nextauth-secret
        calendso_encryption_key: *calcom-calendso-encryption-key
        email:
          host: *calcom-email-host
          port: *calcom-email-port
          user: *calcom-email-user
          password: *calcom-email-password
          from: *calcom-email-from
        traefik:
          hostname: *calcom-hostname
        microsoft:
          graph_client_id: *calcom-microsoft-graph-client-id
          graph_client_secret: *calcom-microsoft-graph-client-secret

Passen Sie die Werte der x- Variablen entsprechend der vorbereiteten Secrets und Informationen an. Sobald Sie alle Werte eingetragen haben, können wir mit der Installation beginnen.

Workspace installieren

Führen Sie die folgenden Kommandos aus um den Workspace zu initialisieren, eine VM bei Hetzner zu povisionieren, Docker darauf zu installieren und im Anschluss Traefik und Cal.com in Docker zu starten:

polycrate init 
polycrate --blocks-auto-pull install vpc
polycrate --blocks-auto-pull install docker
polycrate --blocks-auto-pull install traefik
polycrate --blocks-auto-pull install calcom

Nachdem alle Befehle sauber terminiert haben, müssen Sie nur noch die IP Ihres Hetzner Servers als Ziel für den A-Record aus x-calcom-hostname in Ihrer DNS Zone eintragen. Innerhalb weniger Minuten sollte die Namensauflösung funktionieren. Traefik wird dann automatisch ein TLS-Zertifikat von LetsEncrypt abholen, um Ihre Cal.com Instanz abzusichern.

Sie können Ihr Terminplanungstool jetzt unter cal.meinefirma.de (bzw. dem Hostnamen den Sie konfiguriert haben) erreichen und die Erstinstallation beginnen:

Setup

info

Sie benötigen ein komplexeres Setup von Cal.com, z.B. in Kubernetes oder mit Enterprise SSO?

Sprechen Sie uns an!

ayedo Alien Discord

Werde Teil der ayedo Community

In unserer Discord Community findest du Antworten auf deine Fragen rund um das Thema ayedo, Kubernetes und Open Source. Hier erfährst du in Realtime was es Neues bei ayedo und unseren Partnern gibt und hast die Möglichkeit mit unserem Team in direkten Kontakt zu treten.

Join the Community ↗

Ähnliche Inhalte

Alle Blogs →



Fabian Peter · 01.07.2024 · ⏳ 4 Minuten

Wie bewältigt man 160 Millionen User im Monat? Mit K8s und Docker!

Hochverfügbare SaaS-Infrastruktur für mehr als 2 Milliarden Requests pro Monat In der heutigen digitalisierten Welt sind Ausfallsicherheit und Skalierbarkeit unverzichtbare Merkmale jeder …

Lesen →

Fabian Peter · 13.06.2024 · ⏳ 3 Minuten

Schutz vor Cyber-Bedrohungen: Ein umfassender Leitfaden zum Cyber Risiko Check

![Schutz vor Cyber-Bedrohungen: Ein umfassender Leitfaden zum Cyber Risiko Check] (ein-umfassender-leitfaden-zum-cyber-risiko-check.png) Ein effektiver Weg, um diese Risiken zu minimieren, ist der …

Lesen →

Fabian Peter · 10.06.2024 · ⏳ 3 Minuten

Compliance leicht gemacht: Die ISO27001 als Schlüssel zur Einhaltung gesetzlicher Vorschriften

Compliance leicht gemacht: Die ISO27001 als Schlüssel zur Einhaltung gesetzlicher Vorschriften Die Einhaltung gesetzlicher Anforderungen und Datenschutzrichtlinien ist für Unternehmen eine ständige …

Lesen →

Lewin Grunenberg · 09.06.2024 · ⏳ 3 Minuten

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

Einleitung In diesem Beitrag zeigen wir dir, wie du Baserow mithilfe von Docker Compose und Traefik bereitstellen und es über einen DNS-Eintrag wie https://data.deine-domain.org zugänglich machen …

Lesen →

Lewin Grunenberg · 09.06.2024 · ⏳ 4 Minuten

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

Einleitung In diesem Beitrag zeigen wir dir, wie du Mattermost mit Docker Compose und Traefik bereitstellst und es über einen DNS-Eintrag wie https://chat.deine-domain.org erreichst. Diese …

Lesen →


Interessiert an weiteren Inhalten? Hier gehts zu allen Blogs →

Kontaktieren Sie uns

Unsere Cloud-Experten beraten Sie gerne und individuell.

Wir antworten in der Regel innerhalb weniger Stunden auf Ihre Nachricht.

Zu Gen-Z für E-Mail? Einfach mal Discord versuchen. Unter +49 800 000 3706 können Sie unter Angabe Ihrer Kontaktdaten auch einen Rückruf vereinbaren. Bitte beachten Sie, dass es keine Möglichkeit gibt, uns telefonisch direkt zu erreichen. Bitte gar nicht erst versuchen. Sollten Sie dennoch Interesse an synchroner Verfügbarkeit via Telefon haben, empfehlen wir Ihnen unseren Priority Support.