---
title: Wie installiere ich Castopod?
---

import { Aside } from "@astrojs/starlight/components";

Castopod ist für eine einfache Installation konzipiert. Ob dediziertes oder
Shared-Hosting, du kannst es auf den meisten PHP-MySQL-kompatiblen Webservern
installieren.

## Voraussetzungen

- PHP v8.3 or higher
- MySQL Version 5.7 oder höher oder MariaDB Version 10.2 oder höher
- HTTPS-Unterstützung
- Eine [ntp-synchronisierte Uhr](https://wiki.debian.org/NTP) um die eingehenden
  Anfragen zu überprüfen

### PHP v8.3 or higher

PHP version 8.3 or higher is required, with the following extensions installed:

- [intl](https://php.net/manual/en/intl.requirements.php)
- [libcurl](https://php.net/manual/en/curl.requirements.php)
- [mbstring](https://php.net/manual/en/mbstring.installation.php)
- [gd](https://www.php.net/manual/en/image.installation.php) mit **JPEG**,
  **PNG** und **WEBP** Bibliotheken.
- [exif](https://www.php.net/manual/en/exif.installation.php)

Stelle außerdem sicher, dass die folgenden Erweiterungen in deinem PHP aktiviert
sind:

- json (standardmäßig aktiviert - nicht ausschalten)
- xml (standardmäßig aktiviert - nicht ausschalten)
- [mysqlnd](https://php.net/manual/en/mysqlnd.install.php)

### MySQL kompatible Datenbank

> Wir empfehlen [MariaDB](https://mariadb.org).

Du benötigst den Servernamen, den Datenbanknamen, den Benutzernamen und das
Passwort, um den Installationsvorgang abzuschließen. Kontaktiere bitte den
Administrator, falls du keinen Benutzeraccount hast.

#### Berechtigungen

Benutzer müssen mindestens diese Berechtigungen in der Datenbank haben, damit
Castopod funktioniert: `CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`,
`INSERT`, `SELECT`, `UPDATE`, `REFERENCES`, `CREATE VIEW`.

### (Optional) FFmpeg v4.1.8 oder höher für Videoclips

[FFmpeg](https://www.ffmpeg.org/) Version 4.1.8 oder höher ist erforderlich,
wenn Du Videoclips generieren möchtest. Die folgenden Php-Erweiterungen sind
nicht installiert: %s:

- **FreeType 2** Bibliothek für
  [gd](https://www.php.net/manual/en/image.installation.php).

### (Optional) Weitere Empfehlungen

- Redis für bessere Cache-Leistungen.
- CDN für das Caching statischer Dateien und bessere Leistungen.
- E-Mail Server Anbindung für E-Mails zu verlorenen Passwörtern.

## Installationsanleitung

### Voraussetzungen

0. Treib einen Webserver mit den [Voraussetzungen](#requirements) auf
1. Erstellen Sie eine MySQL-Datenbank für Castopod mit einem Benutzer mit
   Zugriffsrechten und Modifikationsberechtigungen (für weitere Infos, Siehe
   [MySQL kompatible Datenbank](#mysql-compatible-database)).
2. Aktivieren Sie HTTPS auf Ihrer Domain mit einem _SSL Zertifikat_.
3. Lade und entpacke das letzte [Castopod Packet](https://castopod.org/) auf den
   Webserver, wenn nicht schon geschehen.
   - ⚠️ Setzte das Webserver Document root auf das `public/` Unterverzeichnis
     innerhalb des `castopod` Ordners.
4. Füge **cron tasks** auf deinem Webserver hinzu für verschiedene
   Hintergrundprozesse (ersetze die Pfade entsprechend):

   ```bash
      * * * * * /path/to/php /path/to/castopod/spark tasks:run >> /dev/null 2>&1
   ```

   **Hinweis** - Wenn Sie diese Cron-Aufgabe nicht hinzufügen, funktionieren die
   folgenden Castopod-Funktionen nicht:

   - Einen Podcast aus einem vorhandenen RSS-Feed importieren
   - Sende soziale Aktivitäten an deine Follower im Fediversum
   - Übertragungen von Episoden zu open hubs mit
     [WebSub-](https://en.wikipedia.org/wiki/WebSub)
   - Generieren von Videoclips -
     [benötigt FFmpeg](#optional-ffmpeg-v418-or-higher-for-video-clips)

### (empfohlen) Installations-Assistent

1. Führen Sie das Castopod Installationsskript aus, indem Sie auf die
   Installations-Seite (`https://your_domain_name.com/cp-install`) in Ihrem
   bevorzugten Webbrowser gehen.
2. Folge der Anleitung auf dem Bildschirm.
3. Podcasting starten!

<Aside>

Das Installationsskript schreibt eine `.env` Datei im Paket-Root. Wenn Sie nicht
durch den Installations-Assistenten kommen, können Sie die `.env` Datei manuell
erstellen und bearbeiten basierend auf der `.env.example` Datei.

</Aside>

### Using CLI

1. Create a `.env` file in the package root based on the `.env.example` file.

2. Initialize the database using:

   ```sh
   php spark install:init-database
   ```

3. Create the superadmin user using:

   ```sh
   php spark install:create-superadmin
   ```

4. Head on to your admin gateway to start podcasting!

### E-Mail-Konfigurationsoptionen

E-Mail-Konfiguration ist erforderlich, damit einige Funktionen ordnungsgemäß
funktionieren (zB. das Abrufen Ihres vergessenen Passworts, das Senden von
Anweisungen an Premium-Abonnenten, …)

Sie können Ihre E-Mail-Konfiguration in `.env` Ihrer Instanz einfügen:

```ini
# […]

# […]

email.fromEmail="your_email_address"
email.SMTPHost="your_smtp_host"
email.SMTPUser="your_smtp_user"
email.SMTPPass="your_smtp_password"
```

#### Email/SMTP Setup

| Variablennamen    | Typ                  | Voreinstellung      |
| ----------------- | -------------------- | ------------------- |
| **`fromEmail`**   | string               | `undefined`         |
| **`fromName`**    | string               | `"Castopod"`        |
| **`SMTPHost`**    | string               | `undefined`         |
| **`SMTPUser`**    | string               | `undefined`         |
| **`SMTPPass`**    | string               | `undefined`         |
| **`SMTPPort`**    | number               | `25`                |
| **`SMTPCrypto`**  | [`"tls"` or `"ssl"`] | `"tls"`             |

### Media storage

Standardmäßig werden Dateien im Ordner `public/media` über das Dateisystem
gespeichert.
Wenn Sie den Ordner `media` an einen anderen Ort verlegen müssen,
können Sie es in Ihrer `.env` Datei angeben wie unten gezeigt:

```ini
# […]

media.root="media"
media.storage="/mnt/storage"
```

In diesem Beispiel werden die Dateien im Ordner /mnt/storage/media gespeichert. Stellen Sie sicher, dass Sie auch Ihre Webserver-Konfiguration aktualisieren, um
diese Änderung wiederzugeben.

### S3

Wenn Sie Ihre Mediendateien lieber auf einem S3-kompatiblen Speicher speichern
möchten, können Sie dies in Ihrer `.env` spezifizieren:

```ini
# […]

media.fileManager="s3"
media.s3.endpoint="your_s3_host"
media.s3.key="your_s3_key"
media.s3.secret="your_s3_secret"
media.s3.region="your_s3_region"
```

#### S3 Konfigurationsoptionen

| Variablennamen           | Typ     | Voreinstellung     |
| ------------------------ | ------- | ------------------ |
| **`endpoint`**           | string  | `undefined`        |
| **`key`**                | string  | `undefined`        |
| **`secret`**             | string  | `undefined`        |
| **`region`**             | string  | `undefined`        |
| **`bucket`**             | string  | `castopod`         |
| **`protocol`**           | number  | `undefined`        |
| **`pathStyleEndpoint`**  | boolean | `false`            |
| **`keyPrefix`**          | string  | `undefined`        |

## Community-Pakete

Wenn Sie Castopod nicht manuell installieren wollen, können Sie eines der von
der Open-Source-Community erstellten und betreuten Pakete verwenden.

### Installieren mit YunoHost

[YunoHost](https://yunohost.org/) ist eine auf Debian GNU/Linux basierende
Distribution, die aus freien und Open-Source-Software-Paketen besteht. Es
kümmert sich um den Aufwand von self-hosting für dich.

<div class="flex flex-wrap items-center gap-4">

<a
  href="https://install-app.yunohost.org/?app=castopod"
  target="_blank"
  rel="noopener noreferrer"
>
  <img
    src="https://install-app.yunohost.org/install-with-yunohost.svg"
    alt="Installiere Castopod mit YunoHost"
    class="align-middle"
  />
</a>

<a
  href="https://github.com/YunoHost-Apps/castopod_ynh"
  target="_blank"
  rel="noopener noreferrer"
  class="inline-flex items-center px-4 py-[.3rem] mx-auto font-semibold text-center text-black rounded-md gap-x-1 border-2 border-solid border-[#333] hover:no-underline hover:bg-gray-100"
>
  <svg
    xmlns="http://www.w3.org/2000/svg"
    viewBox="0 0 24 24"
    width="1em"
    height="1em"
    class="text-xl"
  >
    <path fill="none" d="M0 0h24v24H0z" />
    <path d="M12 2A10 10 0 0 0 2 12a10 10 0 0 0 6.84 9.49c.5.09.69-.21.69-.48l-.02-1.86c-2.51.46-3.16-.61-3.36-1.18-.11-.28-.6-1.17-1.02-1.4-.35-.2-.85-.66-.02-.67.79-.01 1.35.72 1.54 1.02.9 1.52 2.34 1.1 2.91.83a2.1 2.1 0 0 1 .64-1.34c-2.22-.25-4.55-1.11-4.55-4.94A3.9 3.9 0 0 1 6.68 8.8a3.6 3.6 0 0 1 .1-2.65s.83-.27 2.75 1.02a9.28 9.28 0 0 1 2.5-.34c.85 0 1.7.12 2.5.34 1.9-1.3 2.75-1.02 2.75-1.02.54 1.37.2 2.4.1 2.65.63.7 1.02 1.58 1.02 2.68 0 3.84-2.34 4.7-4.56 4.94.36.31.67.91.67 1.85l-.01 2.75c0 .26.19.58.69.48A10.02 10.02 0 0 0 22 12 10 10 0 0 0 12 2z" />
  </svg>
  Github Repo
</a>

</div>
