---
title: Installation
sidebarDepth: 3
---

# Wie installiere ich Castopod?

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

::: tip Note

Wir haben offizielle Docker Images für Castopod veröffentlicht!

Wenn du Docker bevorzugst, kannst du die manuelle Anleitung überspringen und
direkt zur [Docker-Dokumentation](./docker.md) für Castopod gehen.

:::

## Voraussetzungen

- PHP v8.1 oder höher
- 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.1 oder höher

PHP Version 8.1 oder höher ist erforderlich, mit folgenden Erweiterungen
installiert:

- [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).

::: warning Warning

Castopod funktioniert nur mit unterstützten MySQL 5.7 oder höher kompatiblen
Datenbanken. Es wird zum Beispiel mit dem vorherigen MySQL v5.6 nicht mehr
funktionieren, dessen Lebensende am 5. Februar 2021 war.

:::

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!

::: info Note

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.

:::

### 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!

### Email/SMTP Setup

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"
```

#### E-Mail-Konfigurationsoptionen

| 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>
