chore(i18n): new Crowdin updates

This commit is contained in:
crowdin 2024-06-28 13:40:28 +00:00 committed by Yassine Doghri
parent 3fd5efc795
commit 8833bc53cb
213 changed files with 5891 additions and 43081 deletions

View File

@ -24,7 +24,7 @@ return [
'comments' => 'Kommentare',
'activity' => 'Aktivitäten',
'chapters' => 'Kapitel',
'transcript' => 'Transcript',
'transcript' => 'Protokoll',
'description' => 'Beschreibung der Episode',
'number_of_comments' => '{numberOfComments, plural,
one {# Kommentar}
@ -45,6 +45,6 @@ return [
'publish_edit' => 'Veröffentlichung bearbeiten',
],
'no_chapters' => 'Für diese Episode sind keine Kapitel verfügbar.',
'download_transcript' => 'Download transcript ({extension})',
'no_transcript' => 'No transcript available for this episode.',
'download_transcript' => 'Protokoll herunterladen ({extension})',
'no_transcript' => 'Für diese Episode ist kein Protokoll verfügbar.',
];

View File

@ -23,7 +23,7 @@ return [
'comments' => 'コメント',
'activity' => 'アクティビティ',
'chapters' => '章',
'transcript' => 'Transcript',
'transcript' => '文字起こし',
'description' => 'エピソードの詳細',
'number_of_comments' => '{numberOfComments, plural,
one {# comment}
@ -43,7 +43,7 @@ return [
'publish' => '公開する',
'publish_edit' => '出版物を編集',
],
'no_chapters' => 'No chapters are available for this episode.',
'download_transcript' => 'Download transcript ({extension})',
'no_transcript' => 'No transcript available for this episode.',
'no_chapters' => 'このエピソードにはチャプターがありません。',
'download_transcript' => '文字起こしをダウンロード ({extension})',
'no_transcript' => 'このエピソードには文字起こしがありません。',
];

View File

@ -10,28 +10,28 @@ declare(strict_types=1);
return [
'your_handle' => 'あなたのユーザー ID',
'your_handle_hint' => 'Enter the @username@domain you want to act from.',
'your_handle_hint' => 'フォームに「@username@domain」の形式で入力してください',
'follow' => [
'label' => 'フォロー',
'title' => '{actorDisplayName} をフォロー',
'subtitle' => 'You are going to follow:',
'subtitle' => 'フォロー中:',
'accountNotFound' => 'アカウントが見つかりませんでした',
'remoteFollowNotAllowed' => 'このアカウントサーバーはリモートフォローを許可しておりません',
'submit' => 'フォローする',
],
'favourite' => [
'title' => "お気に入りの {actorDisplayName}の投稿",
'subtitle' => 'You are going to favourite:',
'subtitle' => 'お気に入りに登録中:',
'submit' => 'お気に入り登録する',
],
'reblog' => [
'title' => "Share {actorDisplayName}'s post",
'subtitle' => 'You are going to share:',
'title' => "{actorDisplayName} の投稿を共有する",
'subtitle' => '共有中:',
'submit' => '共有する',
],
'reply' => [
'title' => "Reply to {actorDisplayName}'s post",
'subtitle' => 'You are going to reply to:',
'title' => "{actorDisplayName} の投稿に返信する",
'subtitle' => '返信中:',
'submit' => '返信する',
],
];

View File

@ -38,16 +38,16 @@ return [
one {# episode}
other {# episodes}
}',
'first_published_at' => 'First episode published on {0, date, medium}',
'first_published_at' => '初回は{0, date, medium} に投稿されました。',
],
'sponsor' => 'Sponsor',
'funding_links' => 'Funding links for {podcastTitle}',
'find_on' => 'Find {podcastTitle} on',
'listen_on' => 'Listen on',
'sponsor' => 'スポンサー',
'funding_links' => '{podcastTitle} のリンクを探す',
'find_on' => '{podcastTitle} を検索',
'listen_on' => '視聴中',
'persons' => '{personsCount, plural,
one {# person}
other {# persons}
}',
'persons_list' => 'Persons',
'castopod_website' => 'Castopod (website)',
'persons_list' => '人数',
'castopod_website' => 'Castopod (公式ページ)',
];

View File

@ -9,15 +9,15 @@ declare(strict_types=1);
*/
return [
'title' => "{actorDisplayName}'s post",
'back_to_actor_posts' => 'Back to {actor} posts',
'actor_shared' => '{actor} shared',
'reply_to' => 'Reply to @{actorUsername}',
'title' => "{actorDisplayName} の投稿",
'back_to_actor_posts' => '{actor} の投稿一覧に戻る',
'actor_shared' => '{actor} が共有しました',
'reply_to' => '@{actorUsername} に返信する',
'form' => [
'message_placeholder' => 'Write a message…',
'episode_message_placeholder' => 'Write a message for the episode…',
'episode_url_placeholder' => 'Episode URL',
'reply_to_placeholder' => 'Reply to @{actorUsername}',
'message_placeholder' => 'ここにコメントを入力..',
'episode_message_placeholder' => 'エピソードへのコメントを入力...',
'episode_url_placeholder' => 'エピソードのURL',
'reply_to_placeholder' => '@{actorUsername} に返信する',
'submit' => '送信',
'submit_reply' => '返信する',
],
@ -33,8 +33,8 @@ return [
one {# reply}
other {# replies}
}',
'expand' => 'Expand post',
'block_actor' => 'Block user @{actorUsername}',
'block_domain' => 'Block domain @{actorDomain}',
'expand' => '投稿を開く',
'block_actor' => '@{actorUsername} をブロック',
'block_domain' => '@{actorDomain} の投稿をブロックする',
'delete' => '投稿を削除',
];

View File

@ -24,7 +24,7 @@ return [
'comments' => 'Reacties',
'activity' => 'Activiteiten',
'chapters' => 'Hoofdstukken',
'transcript' => 'Transcript',
'transcript' => 'Transcriptie',
'description' => 'Omschrijving aflevering',
'number_of_comments' => '{numberOfComments, plural,
one {# reactie}
@ -45,6 +45,6 @@ return [
'publish_edit' => 'Publicatie bewerken',
],
'no_chapters' => 'Voor deze aflevering zijn geen hoofdstukken beschikbaar.',
'download_transcript' => 'Download transcript ({extension})',
'no_transcript' => 'No transcript available for this episode.',
'download_transcript' => 'Transcriptie downloaden ({extension})',
'no_transcript' => 'Geen transcript beschikbaar voor deze aflevering.',
];

View File

@ -24,7 +24,7 @@ return [
'comments' => 'Kommentarar',
'activity' => 'Aktivitet',
'chapters' => 'Kapittel',
'transcript' => 'Transcript',
'transcript' => 'Avskrift',
'description' => 'Skildring av episoden',
'number_of_comments' => '{numberOfComments, plural,
one {# kommentar}
@ -45,6 +45,6 @@ return [
'publish_edit' => 'Rediger publiseringa',
],
'no_chapters' => 'Det finst ingen kapittel for denne episoden.',
'download_transcript' => 'Download transcript ({extension})',
'no_transcript' => 'No transcript available for this episode.',
'download_transcript' => 'Last ned underteksten ({extension})',
'no_transcript' => 'Det finst inga teksting for denne episoden.',
];

View File

@ -31,5 +31,5 @@ return [
'view_replies' => 'Zobacz odpowiedzi ({numberOfReplies})',
'block_actor' => 'Zablokuj użytkownika @{actorUsername}',
'block_domain' => 'Zablokuj domenę @{actorDomain}',
'delete' => 'usuń komentarz',
'delete' => 'Usuń komentarz',
];

View File

@ -14,15 +14,15 @@ return [
'cancel' => 'Anuluj',
'optional' => 'Opcjonalnie',
'close' => 'Zamknij',
'home' => 'Początek',
'explicit' => 'Zawiera treści dla dorosłych',
'home' => 'Strona główna',
'explicit' => 'Wulgarne',
'powered_by' => 'Wspierane przez {castopod}',
'go_back' => 'Wróć',
'play_episode_button' => [
'play' => 'Odtwórz',
'playing' => 'Odtwarzanie',
],
'read_more' => 'czytaj więcej',
'read_more' => 'Czytaj więcej',
'read_less' => 'Czytaj mniej',
'see_more' => 'Zobacz więcej',
'see_less' => 'Zobacz mniej',

View File

@ -14,7 +14,7 @@ return [
'number' => 'Odcinek {episodeNumber}',
'number_abbr' => 'Odc. {episodeNumber}',
'season_episode' => 'Sezon {seasonNumber} odcinek {episodeNumber}',
'season_episode_abbr' => 'S{seasonNumber}:O{episodeNumber}',
'season_episode_abbr' => 'S{seasonNumber}:E{episodeNumber}',
'persons' => '{personsCount, plural,
one {# osoba}
few {# osoby}
@ -24,8 +24,8 @@ return [
'back_to_episodes' => 'Wróć do odcinków {podcast}',
'comments' => 'Komentarze',
'activity' => 'Aktywność',
'chapters' => 'Chapters',
'transcript' => 'Transcript',
'chapters' => 'Rozdziały',
'transcript' => 'Transkrypcja',
'description' => 'Opis odcinka',
'number_of_comments' => '{numberOfComments, plural,
one {# komentarz}
@ -33,7 +33,7 @@ return [
other {# komentarzy}
}',
'all_podcast_episodes' => 'Wszystkie odcinki podcastu',
'back_to_podcast' => 'Wróć do podkastu',
'back_to_podcast' => 'Wróć do podcastu',
'preview' => [
'title' => 'Podgląd',
'not_published' => 'Nieopublikowany',
@ -46,7 +46,7 @@ return [
'publish' => 'Opublikuj',
'publish_edit' => 'Edytuj publikację',
],
'no_chapters' => 'No chapters are available for this episode.',
'download_transcript' => 'Download transcript ({extension})',
'no_transcript' => 'No transcript available for this episode.',
'no_chapters' => 'Brak dostępnych rozdziałów dla tego odcinka.',
'download_transcript' => 'Pobierz transkrypcję ({extension})',
'no_transcript' => 'Brak transkrypcji dla tego odcinka.',
];

View File

@ -10,28 +10,28 @@ declare(strict_types=1);
return [
'your_handle' => 'Twój uchwyt',
'your_handle_hint' => 'Wpisz @nazwęużytkownika@domenę, z których chcesz działać.',
'your_handle_hint' => 'Wpisz @nazważytkownika@domena, z której chcesz działać.',
'follow' => [
'label' => 'Obserwuj',
'title' => 'Obserwuj {actorDisplayName}',
'subtitle' => 'Zamierzasz obserwować:',
'accountNotFound' => 'Nie można znaleźć konta.',
'remoteFollowNotAllowed' => 'Wygląda na to, że serwer kont nie pozwala na śledzenie zdalnie…',
'remoteFollowNotAllowed' => 'Wygląda na to, że serwer kont nie pozwala na zdalne śledzenie…',
'submit' => 'Przejdź do obserwowania',
],
'favourite' => [
'title' => "Dodaj do ulubionych wpis {actorDisplayName}",
'subtitle' => 'Zamierzasz dodać do ulubionych:',
'submit' => 'Przejdź do dodania do ulubionych',
'submit' => 'Dodaj do ulubionych',
],
'reblog' => [
'title' => "Udostępnij wpis {actorDisplayName}",
'subtitle' => 'Zamierzasz udostępnić:',
'submit' => 'Przejdź do udostępnienia',
'submit' => 'Udostępnij',
],
'reply' => [
'title' => "Odpowiedź do wpisu {actorDisplayName}",
'title' => "Odpowiedz do wpisu {actorDisplayName}",
'subtitle' => 'Zamierzasz odpisać na:',
'submit' => 'Przejdź do odpowiedzi',
'submit' => 'Odpowiedz',
],
];

View File

@ -9,9 +9,9 @@ declare(strict_types=1);
*/
return [
'back_to_home' => 'Wróć do początku',
'back_to_home' => 'Wróć do strony głównej',
'map' => [
'title' => 'Mapa',
'description' => 'Odkryj odcinki podcastów w witrynie {siteName} umieszczone na mapie! Podróżuj po mapie i słuchaj odcinków, które opowiadają o konkretnych lokalizacjach.',
'description' => 'Odkryj odcinki podcastów w witrynie {siteName}, które są umieszczone na mapie! Podróżuj po mapie i słuchaj odcinków, które opowiadają o konkretnych lokalizacjach.',
],
];

View File

@ -16,7 +16,7 @@ return [
'Sezon {seasonNumber} odcinki ({episodeCount})',
'no_episode' => 'Nie znaleziono odcinków!',
'follow' => 'Obserwuj',
'followTitle' => 'Obserwuj {actorDisplayName} na fediverse!',
'followTitle' => 'Obserwuj {actorDisplayName} na fediwersum!',
'followers' => '{numberOfFollowers, plural,
one {# polubienie}
few {# polubienia}
@ -27,7 +27,7 @@ return [
few {# osoby}
other {# osób}
}',
'links' => 'Links',
'links' => 'Linki',
'activity' => 'Wpisy',
'episodes' => 'Odcinki',
'episodes_title' => 'Odcinki {podcastTitle}',
@ -56,5 +56,5 @@ return [
other {# osób}
}',
'persons_list' => 'Osoby',
'castopod_website' => 'Castopod (website)',
'castopod_website' => 'Castopod (strona)',
];

View File

@ -9,11 +9,11 @@ níveis:
1. [toda instância](#1-instance-wide-roles-and-permissions)
2. [por podcast](#2-per-podcast-roles-and-permissions)
## Papéis e permissões para toda a instância
## 2. Por funções de podcast e permissões
### Cargos de instância
### Instance roles
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
@ -21,11 +21,11 @@ níveis:
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcaster | General users of Castopod. | admin.access |
{/* AUTH-INSTANCE-ROLES-LIST:END */}
{/_ AUTH-INSTANCE-ROLES-LIST:END _/}
### Permissões da instância
### Instance permissions
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ----------------------- | ------------------------------------------------------------------ |
@ -39,13 +39,13 @@ níveis:
| podcasts.import | Can import podcasts. |
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:END _/}
## 2. Por funções de podcast e permissões
## 2. Per podcast roles and permissions
### Por cargos de podcast
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@ -54,11 +54,11 @@ níveis:
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
{/* AUTH-PODCAST-ROLES-LIST:END */}
{/_ AUTH-PODCAST-ROLES-LIST:END _/}
### Por permissões de podcast
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ---------------------------- | -------------------------------------------------------------------------- |
@ -82,4 +82,4 @@ níveis:
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:END _/}

View File

@ -24,87 +24,88 @@ can be added as a cache handler.
## Example usage
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
2. Create a `docker-compose.yml` file with the following:
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
```yml
version: "3.7"
2. Create a `docker-compose.yml` file with the following:
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
```yml
version: "3.7"
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
volumes:
castopod-media:
castopod-db:
castopod-cache:
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
networks:
castopod-app:
castopod-db:
```
volumes:
castopod-media:
castopod-db:
castopod-cache:
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
networks:
castopod-app:
castopod-db:
```
3. Setup a reverse proxy for TLS (SSL/HTTPS)
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
3. Setup a reverse proxy for TLS (SSL/HTTPS)
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
5. You're all set, start podcasting! 🎙️🚀
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
5. You're all set, start podcasting! 🎙️🚀
## Environment Variables

View File

@ -7,15 +7,6 @@ import { Aside } from "@astrojs/starlight/components";
Castopod was thought-out to be easy to install. Whether using dedicated or
shared hosting, you can install it on most PHP-MySQL compatible web servers.
<Aside>
We've released official Docker images for Castopod!
If you prefer using Docker, you may skip this and go straight to the
[docker documentation](./docker.md) for Castopod.
</Aside>
## Requirements
- PHP v8.1 or higher
@ -24,7 +15,7 @@ If you prefer using Docker, you may skip this and go straight to the
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1, alebo vyššia
### PHP v8.1 or higher
PHP version 8.1 or higher is required, with the following extensions installed:
@ -117,6 +108,7 @@ based on the `.env.example` file.
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh

View File

@ -1,5 +1,5 @@
---
title: Zabezpečenie
title: Security concerns
---
Castopod is built on top of [CodeIgniter4](https://codeigniter.com/), a PHP

View File

@ -51,6 +51,7 @@ improvements ⚡.
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
`Housekeeping`
6. ✨ Enjoy your fresh instance, you're all done!
<Aside>

File diff suppressed because it is too large Load Diff

View File

@ -12,73 +12,73 @@ coupled with custom rules. Roles and permissions are defined at two levels:
### Instance roles
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| --------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------ |
| Dreistmerour·ez | Ur c'hontroll klok en deus war Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
| Merour·ez | Merañ a ra endalc'had Castopod. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podkaster | Implijerien·ezed kustum Castopod. | admin.access |
| role | description | permissions |
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
| Super admin | Has complete control over Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podkaster | General users of Castopod. | admin.access |
{/* AUTH-INSTANCE-ROLES-LIST:END */}
{/_ AUTH-INSTANCE-ROLES-LIST:END _/}
### Instance permissions
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ----------------------- | ------------------------------------------------------------------------------------------------- |
| admin.access | Gallout a ra gwelet taolenn-stur Castopod. |
| admin.settings | Gallout a ra gwelet arventennoù Castopod. |
| users.manage | Gallout a ra ober war-dro implijerien·ezed Castopod. |
| persons.manage | Gallout a ra merañ an emellerien·ezed. |
| pages.manage | Gallout a ra merañ ar pajennoù. |
| podcasts.view | Gallout a ra gwelet an holl bodkastoù. |
| podcasts.create | Gallout a ra krouiñ podkastoù nevez. |
| podcasts.import | Gallout a ra enporzhiañ podkastoù. |
| fediverse.manage-blocks | Gallout a ra mirout aktourien·ezed pe domanioù ar Fediverse ouzh kaout darempredoù gant Castopod. |
| permission | description |
| ----------------------- | ------------------------------------------------------------------ |
| admin.access | Can access the Castopod admin area. |
| admin.settings | Can access the Castopod settings. |
| users.manage | Can manage Castopod users. |
| persons.manage | Can manage persons. |
| pages.manage | Can manage pages. |
| podcasts.view | Can view all podcasts. |
| podcasts.create | Can create new podcasts. |
| podcasts.import | Can import podcasts. |
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:END _/}
## 2. Per podcast roles and permissions
### Per podcast roles
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ---------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Merour·ez | Ur c'hontroll klok en deus war ar podkast #\{id\}. | \* |
| Embanner | Merañ a ra endalc'had hag embannadurioù ar podkast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
| Aozer·ez | Merañ a ra endalc'had ar podkast #\{id\} met ne c'hall ket embann anezho. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Kouviad·ez | Perzhiad·ez eus ar podkast #\{id\}. | view, episodes.view |
| role | description | permissions |
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Admin | Has complete control of podcast #\{id\}. | \* |
| Editor | Manages content and publications of podcast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
{/* AUTH-PODCAST-ROLES-LIST:END */}
{/_ AUTH-PODCAST-ROLES-LIST:END _/}
### Per podcast permissions
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| view | Gallout a ra gwelet taolenn-stur ha muzulioù heklev ar podkast #\{id\}. |
| edit | Gallout a ra kemmañ ar podkast #\{id\}. |
| delete | Gallout a ra lemel ar podkast #\{id\}. |
| manage-import | Gallout a ra sinkronekaat ar podkast enporzhiet #\{id\}. |
| manage-persons | Gallout a ra merañ koumanantoù ar podkast #\{id\}. |
| manage-subscriptions | Gallout a ra merañ koumanantoù ar podkast #\{id\}. |
| manage-contributors | Gallout a ra merañ perzhidi ha perzhiadezed ar podkast #\{id\}. |
| manage-platforms | Gallout a ra ouzhpennañ pe lemel liammoù etrezek savennoù diavaez evit ar podkast #\{id\}. |
| manage-publications | Gallout a ra embann ar podkast #\{id\}. |
| manage-notifications | Gallout a ra gwelet kemennoù ar podkast #\{id\} ha lakaat anezho evel lennet. |
| interact-as | Gallout a ra ober traoù gant identelezh ar podkast #\{id\}: ouzhpennañ ur gemennadenn d'ar re garetañ, rannañ anezhi pe respont dezhi. |
| episodes.view | Gallout a ra gwelet taolennoù-stur ha muzulioù heklev rannoù ar podkast #\{id\}. |
| episodes.create | Gallout a ra krouiñ rannoù evit podkast #\{id\}. |
| episodes.edit | Gallout a ra kemmañ rannoù ar podkast #\{id\}. |
| episodes.delete | Gallout a ra lemel rannoù ar podkast #\{id\}. |
| episodes.manage-persons | Gallout a ra merañ emellerien·ezed ar podkast #\{id\}. |
| episodes.manage-clips | Gallout a ra merañ klipoù video pe tennadoù son ar podkast #\{id\}. |
| episodes.manage-publications | Gallout a ra embann pe diembann rannoù ha kemennadennoù ar podkast #\{id\}. |
| episodes.manage-comments | Gallout a ra krouiñ/lemel evezhiadennoù evit rannoù ar podkast #\{id\}. |
| permission | description |
| ---------------------------- | -------------------------------------------------------------------------- |
| view | Can view dashboard and analytics of podcast #\{id\}. |
| edit | Can edit podcast #\{id\}. |
| delete | Can delete podcast #\{id\}. |
| manage-import | Can synchronize imported podcast #\{id\}. |
| manage-persons | Can manage subscriptions of podcast #\{id\}. |
| manage-subscriptions | Can manage subscriptions of podcast #\{id\}. |
| manage-contributors | Can manage contributors of podcast #\{id\}. |
| manage-platforms | Can set/remove platform links of podcast #\{id\}. |
| manage-publications | Can publish podcast #\{id\}. |
| manage-notifications | Can view and mark notifications as read for podcast #\{id\}. |
| interact-as | Can interact as the podcast #\{id\} to favourite, share or reply to posts. |
| episodes.view | Can view dashboards and analytics of podcast #\{id\}'s episodes. |
| episodes.create | Can create episodes for podcast #\{id\}. |
| episodes.edit | Can edit episodes of podcast #\{id\}. |
| episodes.delete | Can delete episodes of podcast #\{id\}. |
| episodes.manage-persons | Can manage episode persons of podcast #\{id\}. |
| episodes.manage-clips | Can manage video clips or soundbites of podcast #\{id\}. |
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:END _/}

View File

@ -24,129 +24,130 @@ can be added as a cache handler.
## Example usage
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
2. Create a `docker-compose.yml` file with the following:
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
```yml
version: "3.7"
2. Create a `docker-compose.yml` file with the following:
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
```yml
version: "3.7"
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
volumes:
castopod-media:
castopod-db:
castopod-cache:
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
networks:
castopod-app:
castopod-db:
```
volumes:
castopod-media:
castopod-db:
castopod-cache:
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
networks:
castopod-app:
castopod-db:
```
3. Setup a reverse proxy for TLS (SSL/HTTPS)
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
3. Setup a reverse proxy for TLS (SSL/HTTPS)
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
5. You're all set, start podcasting! 🎙️🚀
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
5. You're all set, start podcasting! 🎙️🚀
## Omgevingsvariabelen
- **castopod/castopod** and **castopod/app**
| De naam van de variabele | Type (`default`) | Standaard |
| ------------------------------------- | ----------------------- | ------------------ |
| **`CP_BASEURL`** | tekenreeks | `niet gedefineerd` |
| **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` |
| **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` |
| **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` |
| **`CP_ANALYTICS_SALT`** | string | `niet gedefineerd` |
| **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` |
| **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` |
| **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` |
| **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` |
| **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` |
| **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` |
| **`CP_REDIS_HOST`** | ?string | `"localhost"` |
| **`CP_REDIS_PASSWORD`** | ?string | `null` |
| **`CP_REDIS_PORT`** | ?number | `6379` |
| **`CP_REDIS_DATABASE`** | ?number | `0` |
| **`CP_EMAIL_SMTP_HOST`** | ?string | `niet gedefineerd` |
| **`CP_EMAIL_FROM`** | ?string | `niet gedefineerd` |
| **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` |
| **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` |
| **`CP_EMAIL_SMTP_PORT`** | ?number | `25` |
| **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` |
| **`CP_ENABLE_2FA`** | ?boolean | `niet gedefineerd` |
| **`CP_MEDIA_FILE_MANAGER`** | ?string | `niet gedefineerd` |
| **`CP_MEDIA_S3_ENDPOINT`** | ?string | `niet gedefineerd` |
| **`CP_MEDIA_S3_KEY`** | ?string | `niet gedefineerd` |
| **`CP_MEDIA_S3_SECRET`** | ?string | `undefined` |
| **`CP_MEDIA_S3_REGION`** | ?string | `undefined` |
| **`CP_MEDIA_S3_BUCKET`** | ?string | `undefined` |
| **`CP_MEDIA_S3_PROTOCOL`** | ?number | `niet gedefineerd` |
| **`CP_MEDIA_S3_PATH_STYLE_ENDPOINT`** | ?boolean | `niet gedefineerd` |
| **`CP_MEDIA_S3_KEY_PREFIX`** | ?string | `niet gedefineerd` |
| **`CP_DISABLE_HTTPS`** | ?[`0` or `1`] | `niet gedefineerd` |
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
| **`CP_PHP_MEMORY_LIMIT`** | ?number (with suffix) | `512M` |
| **`CP_TIMEOUT`** | ?number | `900` |
| De naam van de variabele | Type (`default`) | Standaard |
| ------------------------------------- | ----------------------- | ---------------- |
| **`CP_BASEURL`** | string | `undefined` |
| **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` |
| **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` |
| **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` |
| **`CP_ANALYTICS_SALT`** | string | `undefined` |
| **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` |
| **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` |
| **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` |
| **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` |
| **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` |
| **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` |
| **`CP_REDIS_HOST`** | ?string | `"localhost"` |
| **`CP_REDIS_PASSWORD`** | ?string | `null` |
| **`CP_REDIS_PORT`** | ?number | `6379` |
| **`CP_REDIS_DATABASE`** | ?number | `0` |
| **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` |
| **`CP_EMAIL_FROM`** | ?string | `undefined` |
| **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` |
| **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` |
| **`CP_EMAIL_SMTP_PORT`** | ?number | `25` |
| **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` |
| **`CP_ENABLE_2FA`** | ?boolean | `undefined` |
| **`CP_MEDIA_FILE_MANAGER`** | ?string | `undefined` |
| **`CP_MEDIA_S3_ENDPOINT`** | ?string | `undefined` |
| **`CP_MEDIA_S3_KEY`** | ?string | `undefined` |
| **`CP_MEDIA_S3_SECRET`** | ?string | `undefined` |
| **`CP_MEDIA_S3_REGION`** | ?string | `undefined` |
| **`CP_MEDIA_S3_BUCKET`** | ?string | `undefined` |
| **`CP_MEDIA_S3_PROTOCOL`** | ?number | `undefined` |
| **`CP_MEDIA_S3_PATH_STYLE_ENDPOINT`** | ?boolean | `undefined` |
| **`CP_MEDIA_S3_KEY_PREFIX`** | ?string | `undefined` |
| **`CP_DISABLE_HTTPS`** | ?[`0` or `1`] | `undefined` |
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
| **`CP_PHP_MEMORY_LIMIT`** | ?number (with suffix) | `512M` |
| **`CP_TIMEOUT`** | ?number | `900` |
- **castopod/web-server**

View File

@ -1,5 +1,5 @@
---
title: Penaos staliañ Castopod?
title: How to install Castopod?
---
import { Aside } from "@astrojs/starlight/components";
@ -7,15 +7,6 @@ import { Aside } from "@astrojs/starlight/components";
Castopod was thought-out to be easy to install. Whether using dedicated or
shared hosting, you can install it on most PHP-MySQL compatible web servers.
<Aside>
We've released official Docker images for Castopod!
If you prefer using Docker, you may skip this and go straight to the
[docker documentation](./docker.md) for Castopod.
</Aside>
## Requirements
- PHP v8.1 or higher
@ -49,7 +40,7 @@ You will need the server hostname, database name, username and password to
complete the installation process. If you do not have these, please contact your
server administrator.
#### Brientoù
#### Privileges
User must have at least these privileges on the database for Castopod to work:
`CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`, `SELECT`, `UPDATE`,
@ -104,7 +95,7 @@ want to generate Video Clips. The following extensions must be installed:
1. Run the Castopod install script by going to the install wizard page
(`https://your_domain_name.com/cp-install`) in your favorite web browser.
2. Follow the instructions on your screen.
3. Kregiñ da bodkastiñ!
3. Start podcasting!
<Aside>
@ -117,6 +108,7 @@ based on the `.env.example` file.
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
@ -131,7 +123,7 @@ based on the `.env.example` file.
4. Head on to your admin gateway to start podcasting!
### Arventenniñ ar posteloù/SMTP
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.
retrieving your forgotten password, sending instructions to premium subscribers,
@ -150,7 +142,7 @@ email.SMTPPass="your_smtp_password"
#### Email config options
| Anv ar varienne | Doare | Dre ziouer |
| Variable name | Type | Default |
| ---------------- | -------------------- | ------------ |
| **`fromEmail`** | string | `undefined` |
| **`fromName`** | string | `"Castopod"` |
@ -191,9 +183,9 @@ media.s3.secret="your_s3_secret"
media.s3.region="your_s3_region"
```
#### Arventennoù S3
#### S3 config options
| Anv ar varienn | Doare | Dre ziouer |
| Variable name | Type | Default |
| ----------------------- | ------- | ----------- |
| **`endpoint`** | string | `undefined` |
| **`key`** | string | `undefined` |
@ -209,7 +201,7 @@ media.s3.region="your_s3_region"
If you don't want to bother with installing Castopod manually, you may use one
of the packages created and maintained by the open-source community.
### Staliañ dre YunoHost
### Install with YunoHost
[YunoHost](https://yunohost.org/) is a distribution based on Debian GNU/Linux
made up of free and open-source software packages. It manages the hardships of

View File

@ -1,19 +1,18 @@
---
title: Bezbednosni interesi
title: Security concerns
---
Castopod je napravljen na [CodeIgniter4](https://codeigniter.com/), PHP okviru
koji podstiče
[dobre bezbednosne prakse](https://codeigniter.com/user_guide/concepts/security.html).
Da biste maksimalno povećali bezbednost vaše instance i sprečili bilo kakav
zlonamerni napad, mi preporučujemo da ažurirate sve dozvole Castopod datoteka
nakon instalacije ili ažuriranja (da biste izbegli bilo kakvu grešku prethodne
dozvole):
To maximize your instance's safety and prevent any malicious attack, we
recommend you update all your Castopod files permissions after installation or
updates (to avoid any prior permission error):
- `writable/` direktorijum mora biti **readable** i **writable**.
- `public/media/` direktorijum mora biti **readable** i **writable**.
- bilo koja druga datoteka mora biti podešena na **readonly**.
- any other file must be set to **readonly**.
Na primer, ukoliko koristite Apache ili NGINX sa Ubuntu-om možete uraditi
sledeće:

View File

@ -30,7 +30,7 @@ improvements ⚡.
- Note that you can also download the latest package from
[castopod.org](https://castopod.org/)
3. War ho servijer:
3. On your server:
- Remove all files except `.env` and `public/media`
- Copy the new files from the downloaded package into your server
@ -51,6 +51,7 @@ improvements ⚡.
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
`Housekeeping`
6. ✨ Enjoy your fresh instance, you're all done!
<Aside>

File diff suppressed because it is too large Load Diff

View File

@ -12,7 +12,7 @@ coupled with custom rules. Roles and permissions are defined at two levels:
### Instance roles
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ------------------- | ------------------------------------ | ------------------------------------------------------------------------------------------ |
@ -20,11 +20,11 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| Administrador | Administra el contingut de Castopod. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcaster | Usos generals de Castopod. | admin.access |
{/* AUTH-INSTANCE-ROLES-LIST:END */}
{/_ AUTH-INSTANCE-ROLES-LIST:END _/}
### Instance permissions
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ----------------------- | -------------------------------------------------------------------- |
@ -38,13 +38,13 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| podcasts.import | Pot importar pòdcasts. |
| fediverse.manage-blocks | Pot evitar que actors/dominis del fedivers interactuen amb Castopod. |
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:END _/}
## 2. Per podcast roles and permissions
### Per podcast roles
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@ -53,11 +53,11 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| Autor | Administra el contingut del podcast #\{id\} però no el pot publicar. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Convidat | Col·laborador general del podcast #\{id\}. | view, episodes.view |
{/* AUTH-PODCAST-ROLES-LIST:END */}
{/_ AUTH-PODCAST-ROLES-LIST:END _/}
### Per podcast permissions
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
@ -81,4 +81,4 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| episodes.manage-publications | Pot publicar/anul·lar la publicació d'episodis i publicacions del pòdcast #\{id\}. |
| episodes.manage-comments | Pot crear/eliminar comentaris d'episodi del pòdcast #\{id\}. |
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:END _/}

View File

@ -12,8 +12,8 @@ process:
- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server): una
configuració de Nginx per a Castopod
A més, Castopod requereix una base de dades compatible amb MySQL. Es pot afegir
una base de dades Redis com a gestor de memòria cau.
Additionally, Castopod requires a MySQL-compatible database. A Redis database
can be added as a cache handler.
## Etiquetes compatibles
@ -24,89 +24,89 @@ una base de dades Redis com a gestor de memòria cau.
## Exemple d'ús
1. Instal·leu [docker](https://docs.docker.com/get-docker/) i
[docker-compose](https://docs.docker.com/compose/install/)
2. Creeu un fitxer `docker-compose.yml` amb el següent:
1. Instal·leu [docker](https://docs.docker.com/get-docker/) i
[docker-compose](https://docs.docker.com/compose/install/)
```yml
version: "3.7"
2. Creeu un fitxer `docker-compose.yml` amb el següent:
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
```yml
version: "3.7"
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
volumes:
castopod-media:
castopod-db:
castopod-cache:
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
networks:
castopod-app:
castopod-db:
```
volumes:
castopod-media:
castopod-db:
castopod-cache:
Heu d'adaptar algunes variables a les vostres necessitats (per exemple,
`CP_BASEURL`, `MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` i
`CP_ANALYTICS_SALT`).
networks:
castopod-app:
castopod-db:
```
3. Configureu un `reverse proxy` per a TLS (SSL/HTTPS)
Heu d'adaptar algunes variables a les vostres necessitats (per exemple,
`CP_BASEURL`, `MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` i
`CP_ANALYTICS_SALT`).
TLS és obligatori perquè ActivityPub funcioni. Aquest feina es pot gestionar
fàcilment amb un `reverse proxy`, per exemple amb
[Caddy](https://caddyserver.com/):
3. Configureu un `reverse proxy` per a TLS (SSL/HTTPS)
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
4. Executeu `docker-compose up -d`, espereu que s'inicialitzi i aneu a
`https://castopod.exemple.com/cp-install` per acabar de configurar Castopod!
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
5. Ja esteu a punt, podeu començar a fer podcasts! 🎙️🚀
4. Executeu `docker-compose up -d`, espereu que s'inicialitzi i aneu a
`https://castopod.exemple.com/cp-install` per acabar de configurar Castopod!
5. You're all set, start podcasting! 🎙️🚀
## Variables d'entorn

View File

@ -4,24 +4,14 @@ title: Com instal·lar Castopod?
import { Aside } from "@astrojs/starlight/components";
Castopod va ser pensat per ser fàcil d'instal·lar. Ja sigui utilitzant un
allotjament dedicat o un compartit, podeu instal·lar-lo a la majoria de
servidors web compatibles amb PHP-MySQL.
Castopod was thought-out to be easy to install. Whether using dedicated or
shared hosting, you can install it on most PHP-MySQL compatible web servers.
<Aside>
Hem publicat imatges oficials de Docker per a Castopod!
Si preferiu utilitzar Docker, podeu ometre això i anar directament a la
[documentació de Docker](./docker.md) per a Castopod.
</Aside>
## Requisits
## Requirements
- PHP v8.1 or higher
- MySQL versió 5.7 o superior o MariaDB versió 10.2 o superior
- Support d'HTTPS
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
@ -32,58 +22,57 @@ PHP version 8.1 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) amb les llibreries
**JPEG**, **PNG** i **WEBP**.
- [gd](https://www.php.net/manual/en/image.installation.php) with **JPEG**,
**PNG** and **WEBP** libraries.
- [exif](https://www.php.net/manual/en/exif.installation.php)
A més, assegureu-vos que les extensions següents estiguin habilitades al vostre
PHP:
Additionally, make sure that the following extensions are enabled in your PHP:
- json (activat per defecte; no el desactiveu)
- xml (activat per defecte; no el desactiveu)
- json (enabled by default - don't turn it off)
- xml (enabled by default - don't turn it off)
- [mysqlnd](https://php.net/manual/en/mysqlnd.install.php)
### Base de dades compatible amb MySQL
### MySQL compatible database
> Us recomanem que utilitzeu [MariaDB](https://mariadb.org).
> We recommend using [MariaDB](https://mariadb.org).
Necessitareu el nom d'amfitrió del servidor (hostname), el nom de la base de
dades, el nom d'usuari i la contrasenya per completar el procés d'instal·lació.
Si no els teniu, poseu-vos en contacte amb l'administrador del vostre servidor.
You will need the server hostname, database name, username and password to
complete the installation process. If you do not have these, please contact your
server administrator.
#### Privilegis
#### Privileges
User must have at least these privileges on the database for Castopod to work:
`CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`, `SELECT`, `UPDATE`,
`REFERENCES`, `CREATE VIEW`.
### (Opcional) FFmpeg v4.1.8 o superior per fer videoclips
### (Optional) FFmpeg v4.1.8 or higher for Video Clips
Si voleu generar videoclips, cal [FFmpeg](https://www.ffmpeg.org/) versió 4.1.8
o superior. Cal instal·lar les següents extensions:
[FFmpeg](https://www.ffmpeg.org/) version 4.1.8 or higher is required if you
want to generate Video Clips. The following extensions must be installed:
- La llibreria **FreeType 2** per
- **FreeType 2** library for
[gd](https://www.php.net/manual/en/image.installation.php).
### (Opcional) Altres recomanacions
### (Optional) Other recommendations
- Redis per a un millor rendiment de la memòria cau.
- CDN per a la memòria cau de fitxers estàtics i millors rendiments.
- Passarel·la de correu electrònic per a contrasenyes perdudes.
- Redis for better cache performances.
- CDN for static files caching and better performances.
- e-mail gateway for lost passwords.
## Instruccions d'instal·lació
## Install instructions
### Pre-requisits
### Pre-requisites
0. Obteniu un servidor web amb els [requisits](#requirements) instal·lats
1. Creeu una base de dades MySQL per a Castopod amb un usuari amb privilegis
d'accés i modificació (per a més informació, vegeu
[base de dades compatible MySQL](#mysql-compatible-database)).
2. Activeu HTTPS al vostre domini amb un _certificat SSL_.
3. Baixeu i descomprimiu el darrer [paquet Castopod](https://castopod.org/) al
servidor web si encara no ho heu fet.
- ⚠️ Establiu l'arrel del document del servidor web a la subcarpeta
`castopod/public/`.
0. Get a Web Server with [requirements](#requirements) installed
1. Create a MySQL database for Castopod with a user having access and
modification privileges (for more info, see
[MySQL compatible database](#mysql-compatible-database)).
2. Activate HTTPS on your domain with an _SSL certificate_.
3. Download and unzip the latest [Castopod Package](https://castopod.org/) onto
the web server if you havent already.
- ⚠️ Set the web server document root to the `public/` sub-folder within the
`castopod` folder.
4. Add **cron tasks** on your web server for various background processes
(replace the paths accordingly):
@ -101,25 +90,25 @@ o superior. Cal instal·lar les següents extensions:
- Generating video clips -
[requires FFmpeg](#optional-ffmpeg-v418-or-higher-for-video-clips)
### (recomanat) Assistent d'instal·lació
### (recommended) Install Wizard
1. Executeu l'script d'instal·lació de Castopod anant a la pàgina web de
l'assistent d'instal·lació (`https://exemple.com/cp-install`) al vostre
navegador web preferit.
2. Seguiu les instruccions a la vostra pantalla.
3. Comenceu a fer podcasts!
1. Run the Castopod install script by going to the install wizard page
(`https://your_domain_name.com/cp-install`) in your favorite web browser.
2. Follow the instructions on your screen.
3. Start podcasting!
<Aside>
L'script d'instal·lació escriu un fitxer `.env` a l'arrel del paquet. If you
cannot go through the install wizard, you can create and edit the `.env` file
manually based on the `.env.example` file.
The install script writes a `.env` file in the package root. If you cannot go
through the install wizard, you can create and edit the `.env` file manually
based on the `.env.example` file.
</Aside>
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
@ -207,7 +196,7 @@ media.s3.region="your_s3_region"
| **`pathStyleEndpoint`** | boolean | `false` |
| **`keyPrefix`** | string | `undefined` |
## Paquets de la comunitat
## Community packages
If you don't want to bother with installing Castopod manually, you may use one
of the packages created and maintained by the open-source community.
@ -227,7 +216,7 @@ self-hosting for you.
>
<img
src="https://install-app.yunohost.org/install-with-yunohost.svg"
alt="Instal·lar Castopod amb YunoHost"
alt="Install Castopod with YunoHost"
class="align-middle"
/>
</a>
@ -248,7 +237,7 @@ self-hosting for you.
<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>
Repositori a Github
Github Repo
</a>
</div>

View File

@ -51,6 +51,7 @@ d'errors 🐛 i millores de rendiment ⚡.
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
`Housekeeping`
6. ✨ Enjoy your fresh instance, you're all done!
<Aside>
@ -65,7 +66,7 @@ Releases may come with additional update instructions (see
## Fully Automated updates
> Aviat... 👀
> Coming soon... 👀
## Preguntes més freqüents (FAQ)
@ -77,7 +78,7 @@ corner.
Alternatively, you can find the version in the `app > Config > Constants.php`
file.
### Fa temps que no actualitzo la meva instància... Què hauria de fer?
### I haven't updated my instance in a long time… What should I do?
No problem! Just get the latest release as described above. Only, when going
through the release instructions (4), perform them sequentially, from the oldest
@ -99,7 +100,7 @@ For example, if you're on `v1.0.0-alpha.42` and would like to upgrade to
més antiga a la més recent) començant per `v1.0.0-alpha.43`,
`v1.0.0-alpha.44`, `v1.0.0-alpha.45`, ..., `v1.0.0-beta.1`.
3. ✨ Gaudiu de la vostra nova instància, tot fet i preparat!
3. ✨ Enjoy your fresh instance, you're all done!
### Hauria de fer una còpia de seguretat abans d'actualitzar?

File diff suppressed because it is too large Load Diff

View File

@ -12,7 +12,7 @@ coupled with custom rules. Roles and permissions are defined at two levels:
### Rolloù an istañs
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
@ -20,11 +20,11 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcaster | General users of Castopod. | admin.access |
{/* AUTH-INSTANCE-ROLES-LIST:END */}
{/_ AUTH-INSTANCE-ROLES-LIST:END _/}
### Aotreoù war an istañs
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ----------------------- | ------------------------------------------------------------------ |
@ -38,13 +38,13 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| podcasts.import | Can import podcasts. |
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:END _/}
## 2. Per podcast roles and permissions
### Per podcast roles
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@ -53,11 +53,11 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
{/* AUTH-PODCAST-ROLES-LIST:END */}
{/_ AUTH-PODCAST-ROLES-LIST:END _/}
### Per podcast permissions
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ---------------------------- | -------------------------------------------------------------------------- |
@ -81,4 +81,4 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:END _/}

View File

@ -12,8 +12,8 @@ izrade:
- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server):
Nginx konfiguracija za Castopod
Pored toga, Castopod zahteva MySQL kompatibilnu bazu podataka. Redis baza
podataka može se dodati kao obrađivač keša.
Additionally, Castopod requires a MySQL-compatible database. A Redis database
can be added as a cache handler.
## Podržani tagovi
@ -24,86 +24,87 @@ podataka može se dodati kao obrađivač keša.
## Primer upotrebe
1. Instalirajte [docker](https://docs.docker.com/get-docker/) i
[docker-compose](https://docs.docker.com/compose/install/)
2. Napravite `docker-compose.yml` datoteku sa sledećim:
1. Instalirajte [docker](https://docs.docker.com/get-docker/) i
[docker-compose](https://docs.docker.com/compose/install/)
```yml
version: "3.7"
2. Napravite `docker-compose.yml` datoteku sa sledećim:
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
```yml
version: "3.7"
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
volumes:
- castopod-cache:/data
networks:
- castopod-app
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
volumes:
castopod-media:
castopod-db:
castopod-cache:
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
volumes:
- castopod-cache:/data
networks:
- castopod-app
networks:
castopod-app:
castopod-db:
```
volumes:
castopod-media:
castopod-db:
castopod-cache:
Morate prilagoditi neke varijable svojim potrebama (npr. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
networks:
castopod-app:
castopod-db:
```
3. Podesite obrnuti proksi za TLS (SSL/HTTPS)
Morate prilagoditi neke varijable svojim potrebama (npr. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
TLS je obavezan da bu ActivityPub radio. Ovaj posao se lako može obaviti
obrnutim proksijem, na primer sa [Caddy-ijem](https://caddyserver.com/):
3. Podesite obrnuti proksi za TLS (SSL/HTTPS)
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
4. Pokrenite `docker-compose up -d`, sačekajte da se pokrene i idite na
`https://castopod.example.com/cp-install` da biste završili instalaciju
Castopod-a!
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
5. Sve je spremno, započnite sa podkastingom! 🎙️🚀
4. Pokrenite `docker-compose up -d`, sačekajte da se pokrene i idite na
`https://castopod.example.com/cp-install` da biste završili instalaciju
Castopod-a!
5. You're all set, start podcasting! 🎙️🚀
## Promenljive okruženja

View File

@ -7,15 +7,6 @@ import { Aside } from "@astrojs/starlight/components";
Castopod was thought-out to be easy to install. Whether using dedicated or
shared hosting, you can install it on most PHP-MySQL compatible web servers.
<Aside>
We've released official Docker images for Castopod!
If you prefer using Docker, you may skip this and go straight to the
[docker documentation](./docker.md) for Castopod.
</Aside>
## Requirements
- PHP v8.1 or higher
@ -117,6 +108,7 @@ based on the `.env.example` file.
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh

View File

@ -51,6 +51,7 @@ improvements ⚡.
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
`Housekeeping`
6. ✨ Enjoy your fresh instance, you're all done!
<Aside>

File diff suppressed because it is too large Load Diff

View File

@ -13,7 +13,7 @@ definiert:
### Instanz Rollen
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------ |
@ -21,11 +21,11 @@ definiert:
| Manager | Verwaltet Castopods Inhalte. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcaster | Allgemeine Benutzer von Castopod. | admin.access |
{/* AUTH-INSTANCE-ROLES-LIST:END */}
{/_ AUTH-INSTANCE-ROLES-LIST:END _/}
### Instanz Berechtigungen
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ----------------------- | ---------------------------------------------------------------------------- |
@ -39,13 +39,13 @@ definiert:
| podcasts.import | Kann Podcasts importieren. |
| fediverse.manage-blocks | Kann föderierte Nutzer/Domains davon abhalten, mit Castopod zu interagieren. |
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:END _/}
## 2. Pro Podcast Rollen und Berechtigungen
### Pro Podcast Rollen
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ------------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@ -54,11 +54,11 @@ definiert:
| Autor | Verwaltet Inhalte von Podcast #\{id\}, kann diese aber nicht veröffentlichen. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Gast | Allgemeiner Mitwirkender des Podcasts #\{id\}. | view, episodes.view |
{/* AUTH-PODCAST-ROLES-LIST:END */}
{/_ AUTH-PODCAST-ROLES-LIST:END _/}
### Pro Podcast Berechtigung
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ---------------------------- | -------------------------------------------------------------------------------------------------------- |
@ -82,4 +82,4 @@ definiert:
| episodes.manage-publications | Kann Episoden und Posts von Podcast #\{id\} veröffentlichen/zurückziehen. |
| episodes.manage-comments | Kann Kommentare von Folgen des Podcasts #\{id\} erstellen und löschen. |
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:END _/}

View File

@ -24,132 +24,132 @@ kann als Cache-Handler hinzugefügt werden.
## Beispiel
1. Installiere [Docker](https://docs.docker.com/get-docker/) und
[Docker-Compose](https://docs.docker.com/compose/install/)
2. Erstelle eine `docker-compose.yml` Datei mit folgendem Inhalt:
1. Installiere [Docker](https://docs.docker.com/get-docker/) und
[Docker-Compose](https://docs.docker.com/compose/install/)
```yml
version: "3.7"
2. Erstelle eine `docker-compose.yml` Datei mit folgendem Inhalt:
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
```yml
version: "3.7"
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
volumes:
castopod-media:
castopod-db:
castopod-cache:
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
networks:
castopod-app:
castopod-db:
```
volumes:
castopod-media:
castopod-db:
castopod-cache:
Es müssen einige Variablen an deine Bedürfnisse angepasst werden (z.B.
`CP_BASEURL`, `MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` und
`CP_ANALYTICS_SALT`).
networks:
castopod-app:
castopod-db:
```
3. Einen Reverse-Proxy für TLS (SSL/HTTPS) einrichten
Es müssen einige Variablen an deine Bedürfnisse angepasst werden (z.B. `CP_BASEURL`, `MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` und
`CP_ANALYTICS_SALT`).
TLS ist notwendig damit ActivityPub korrekt arbeiten kann. Dieser Job kann
leicht von einem Reverse-Proxy bearbeitet werden, zum Beispiel mit
[Caddy](https://caddyserver.com/):
3. Einen Reverse-Proxy für TLS (SSL/HTTPS) einrichten
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
TLS ist notwendig damit ActivityPub korrekt arbeiten kann. Dieser Job kann
leicht von einem Reverse-Proxy bearbeitet werden, zum Beispiel mit
[Caddy](https://caddyserver.com/):
4. Führe `docker-compose up -d` aus, warte darauf, dass es initialisiert wird
und gehe auf `https://castopod.example.com/cp-install` um die Einrichtung
von Castopod abzuschließen!
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
5. Ist alles da? Dann kann das Podcasten beginnen! 🎙️🚀
4. Führe `docker-compose up -d` aus, warte darauf, dass es initialisiert wird
und gehe auf `https://castopod.example.com/cp-install` um die Einrichtung
von Castopod abzuschließen!
5. Ist alles da? Dann kann das Podcasten beginnen! 🎙️🚀
## Umgebungsvariablen
- **castopod/castopod** und **castopod/app**
| Variablennamen | Typ (`Standard`) | Standardwert |
| ------------------------------------- | ----------------------- | ----------------- |
| **`CP_BASEURL`** | string | `nicht definiert` |
| **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` |
| **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` |
| **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` |
| **`CP_ANALYTICS_SALT`** | string | `nicht definiert` |
| **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` |
| **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` |
| **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` |
| **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` |
| **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` |
| **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` |
| **`CP_REDIS_HOST`** | ?string | `"localhost"` |
| **`CP_REDIS_PASSWORD`** | ?string | `null` |
| **`CP_REDIS_PORT`** | ?number | `6379` |
| **`CP_REDIS_DATABASE`** | ?number | `0` |
| **`CP_EMAIL_SMTP_HOST`** | ?string | `nicht definiert` |
| **`CP_EMAIL_FROM`** | ?string | `nicht definiert` |
| **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` |
| **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` |
| **`CP_EMAIL_SMTP_PORT`** | ?number | `25` |
| **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` |
| **`CP_ENABLE_2FA`** | ?boolean | `nicht definiert` |
| **`CP_MEDIA_FILE_MANAGER`** | ?string | `undefined` |
| **`CP_MEDIA_S3_ENDPOINT`** | ?string | `undefined` |
| **`CP_MEDIA_S3_KEY`** | ?string | `nicht definiert` |
| **`CP_MEDIA_S3_SECRET`** | ?string | `nicht definiert` |
| **`CP_MEDIA_S3_REGION`** | ?string | `nicht definiert` |
| **`CP_MEDIA_S3_BUCKET`** | ?string | `undefined` |
| **`CP_MEDIA_S3_PROTOCOL`** | ?number | `undefined` |
| **`CP_MEDIA_S3_PATH_STYLE_ENDPOINT`** | ?boolean | `undefined` |
| **`CP_MEDIA_S3_KEY_PREFIX`** | ?string | `undefined` |
| **`CP_DISABLE_HTTPS`** | ?[`0` or `1`] | `undefined` |
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
| **`CP_PHP_MEMORY_LIMIT`** | ?number (with suffix) | `512M` |
| **`CP_TIMEOUT`** | ?number | `900` |
| Variablennamen | Typ (`Standard`) | Standardwert |
| ------------------------------------- | ----------------------- | ---------------- |
| **`CP_BASEURL`** | string | `undefined` |
| **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` |
| **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` |
| **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` |
| **`CP_ANALYTICS_SALT`** | string | `undefined` |
| **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` |
| **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` |
| **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` |
| **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` |
| **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` |
| **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` |
| **`CP_REDIS_HOST`** | ?string | `"localhost"` |
| **`CP_REDIS_PASSWORD`** | ?string | `null` |
| **`CP_REDIS_PORT`** | ?number | `6379` |
| **`CP_REDIS_DATABASE`** | ?number | `0` |
| **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` |
| **`CP_EMAIL_FROM`** | ?string | `undefined` |
| **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` |
| **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` |
| **`CP_EMAIL_SMTP_PORT`** | ?number | `25` |
| **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` |
| **`CP_ENABLE_2FA`** | ?boolean | `undefined` |
| **`CP_MEDIA_FILE_MANAGER`** | ?string | `undefined` |
| **`CP_MEDIA_S3_ENDPOINT`** | ?string | `undefined` |
| **`CP_MEDIA_S3_KEY`** | ?string | `undefined` |
| **`CP_MEDIA_S3_SECRET`** | ?string | `undefined` |
| **`CP_MEDIA_S3_REGION`** | ?string | `undefined` |
| **`CP_MEDIA_S3_BUCKET`** | ?string | `undefined` |
| **`CP_MEDIA_S3_PROTOCOL`** | ?number | `undefined` |
| **`CP_MEDIA_S3_PATH_STYLE_ENDPOINT`** | ?boolean | `undefined` |
| **`CP_MEDIA_S3_KEY_PREFIX`** | ?string | `undefined` |
| **`CP_DISABLE_HTTPS`** | ?[`0` or `1`] | `undefined` |
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
| **`CP_PHP_MEMORY_LIMIT`** | ?number (with suffix) | `512M` |
| **`CP_TIMEOUT`** | ?number | `900` |
- **castopod/web-server**

View File

@ -8,15 +8,6 @@ Castopod ist für eine einfache Installation konzipiert. Ob dediziertes oder
Shared-Hosting, du kannst es auf den meisten PHP-MySQL-kompatiblen Webservern
installieren.
<Aside>
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.
</Aside>
## Voraussetzungen
- PHP v8.1 oder höher
@ -122,6 +113,7 @@ 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
@ -136,7 +128,7 @@ erstellen und bearbeiten basierend auf der `.env.example` Datei.
4. Head on to your admin gateway to start podcasting!
### Email/SMTP Setup
### E-Mail-Konfigurationsoptionen
E-Mail-Konfiguration ist erforderlich, damit einige Funktionen ordnungsgemäß
funktionieren (zB. das Abrufen Ihres vergessenen Passworts, das Senden von
@ -155,7 +147,7 @@ email.SMTPUser="your_smtp_user"
email.SMTPPass="your_smtp_password"
```
#### E-Mail-Konfigurationsoptionen
#### Email/SMTP Setup
| Variablennamen | Typ | Voreinstellung |
| ---------------- | -------------------- | -------------- |
@ -170,7 +162,8 @@ email.SMTPPass="your_smtp_password"
### 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,
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
@ -180,8 +173,7 @@ 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
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

View File

@ -1,56 +1,58 @@
---
title: Kako da ažurirate Castopod?
title: How to update Castopod?
---
import { Aside } from "@astrojs/starlight/components";
Nakon instalacije Castopod-a, možete poželeti da ažurirate svoju instancu na
najnoviju verziju kako bi ste uživali u najnovijim opcijama ✨, sređenim
bagovima 🐛 i unapređenim performansama ⚡.
After installing Castopod, you may want to update your instance to the latest
version in order to enjoy the latest features ✨, bug fixes 🐛 and performance
improvements ⚡.
## Uputstva za ažuriranje
## Update instructions
0. ⚠️ Pre bilo kog ažuriranja, toplo preporučujemo da napravite rezervnu kopiju
svojih Castopod datoteka i baze podataka.
0. ⚠️ Before any update, we highly recommend you backup your Castopod files and
database.
- cf.
[Da li treba da napravim rezervnu kopiju pre ažuriranja?](#should-i-make-a-backup-before-updating)
1. Idite na
[stranicu izdanja](https://code.castopod.org/adaures/castopod/-/releases) i
proverite da li je vaša instanca ažurirana sa najnovijom verzijom Castopod-a
1. Go to the
[releases page](https://code.castopod.org/adaures/castopod/-/releases) and
see if your instance is up to date with the latest Castopod version
- cf.
[Gde mogu da pronađem moju verziju Castopod-a?](#where-can-i-find-my-castopod-version)
2. Skinite najnoviji paket izdanja koji se zove `Castopod Package`, možete
odabrati `zip` ili `tar.gz` tip arhive
2. Download the latest release package named `Castopod Package`, you may choose
between the `zip` or `tar.gz` archives
- ⚠️ Uverite se da ste preuzeli Castopod paket a **NE** izvorni kod
- Imajte na umu da takođe možete preuzeti najnoviji paket sa
- Note that you can also download the latest package from
[castopod.org](https://castopod.org/)
3. Na vašem serveru:
- Uklonite sve datoteke sem `.env` i `public/media`
- Kopirajte nove datoteke iz preuzetog paketa na vaš server
- Remove all files except `.env` and `public/media`
- Copy the new files from the downloaded package into your server
<Aside>
Možda ćete morati da resetujete dozvole za datoteke kao tokom procesa
instalacije. Proverite [Bezbednosne interese](./security.md).
instalacije.
Proverite [Bezbednosne interese](./security.md).
</Aside>
4. Ažurirajte svoju šemu baze podataka iz vaše `Castopod Admin` > `About`
stranice ili tako što ćete pokrenuti:
4. Update your database schema from your `Castopod Admin` > `About` page or by
running:
```bash
php spark castopod:database-update
```
5. Očistite keš iz `Castopod Admin` > `Settings` > `general` > `Housekeeping`
6. ✨ Uživajte u svežoj instanci, završili ste!
6. ✨ Enjoy your fresh instance, you're all done!
<Aside>
@ -62,11 +64,11 @@ Izdanja mogu doći sa dodatnim uputstvima za ažuriranje (pogledajte
</Aside>
## Potpuno automatsko ažuriranje
## Fully Automated updates
> Stiže uskoro... 👀
## Često postavljana pitanja (česta pitanja)
## Frequently asked questions (FAQ)
### Gde mogu da pronađem svoju verziju Castopod-a?
@ -75,32 +77,32 @@ donjem levom uglu.
Alternativno, verziju možete pronaći u `app > Config > Constants.php` datoteci.
### Nisam ažurirao/la svoju instancu veoma dugo… Šta treba da uradim?
### I haven't updated my instance in a long time… What should I do?
Nema problema! Samo preuzmite poslednju verziju na način opisan iznad. Samo,
kada idete kroz uputstva izdanja (4), izvodite ih jedno za drugim, od
najstarijih do najnovijih.
> Možda ćete želeti da napravite rezervnu kopiju instance u zavisnosti od toga
> koliko dugo niste ažurirali Castopod.
> You may want to backup your instance depending on how long you haven't updated
> Castopod.
Na primer, ako koristite verziju `v1.0.0-alpha.42` i želite da ažurirate na
verziju `v1.0.0-beta.1`:
For example, if you're on `v1.0.0-alpha.42` and would like to upgrade to
`v1.0.0-beta.1`:
0. (toplo preporučujemo) Napravite kopiju važih datoteka i baze podataka.
0. (highly recommended) Make a backup of your files and database.
1. Preuzmite najnovije izdanje, preišite svoje datoteke čuvajući `.env` i
1. Download the latest release, overwrite your files whilst keeping `.env` and
`public/media`.
2. Prođite kroz uputstva za ažuriranje svakog izdanja po redu (od najstarijeg do
najnovijeg) počevši sa `v1.0.0-alpha.43`, `v1.0.0-alpha.44`,
`v1.0.0-alpha.45`, …, `v1.0.0-beta.1`.
3. ✨ Uživajte u svežoj instanci, završili ste!
3. ✨ Enjoy your fresh instance, you're all done!
### Da li treba da napravim kopiju pre ažuriranja?
### Should I make a backup before updating?
Savetujemo vam da to uradite, tako da ne izgubite sve ako nešto krene po zlu!
We advise you do, so you don't lose everything if anything goes wrong!
Uopštenije, savetujemo vam da redovno pravite rezervne kopije vaših Castopod
datoteka i baze podataka kako biste sprečili da sve izgubite
More generally, we advise you make regular backups of your Castopod files and
database to prevent you from losing it all

File diff suppressed because it is too large Load Diff

View File

@ -2,18 +2,17 @@
title: Ταυτοποίηση & εξουσιοδότηση
---
Ο Castopod χειρίζεται τον έλεγχο ταυτότητας και την έγκριση χρησιμοποιώντας
`codeigniter/shield` σε συνδυασμό με προσαρμοσμένους κανόνες. Οι ρόλοι και τα
δικαιώματα καθορίζονται σε δύο επίπεδα:
Castopod handles authentication and authorization using `codeigniter/shield`
coupled with custom rules. Roles and permissions are defined at two levels:
1. [ευρεία παρουσία](#1-instance-wide-roles-and-permissions)
2. [ανά podcast](#2-per-podcast-roles-and-permissions)
## 1. Διαχείριση ρόλων και δικαιωμάτων
## 1. Instance wide roles and permissions
### Ρόλοι εμφάνισης
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ---------------- | ------------------------------------- | ------------------------------------------------------------------------------------------ |
@ -21,11 +20,11 @@ title: Ταυτοποίηση & εξουσιοδότηση
| Διαχειριστής | Διαχείριση περιεχομένου του Castopod. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcaster | Γενικοί χρήστες του Castopod. | admin.access |
{/* AUTH-INSTANCE-ROLES-LIST:END */}
{/_ AUTH-INSTANCE-ROLES-LIST:END _/}
### Instance permissions
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ----------------------- | -------------------------------------------------------------------------------------- |
@ -39,13 +38,13 @@ title: Ταυτοποίηση & εξουσιοδότηση
| podcasts.import | Μπορεί να εισάγει podcasts. |
| fediverse.manage-blocks | Μπορεί να εμποδίσει τους ψευτογενείς ηθοποιούς/τομείς να αλληλεπιδρούν με το Castopod. |
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:END _/}
## 2. Per podcast roles and permissions
### Per podcast roles
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ------------ | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@ -54,11 +53,11 @@ title: Ταυτοποίηση & εξουσιοδότηση
| Συντάκτης | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Επισκέπτης | Γενικός συντελεστής του podcast #\{id\}. | view, episodes.view |
{/* AUTH-PODCAST-ROLES-LIST:END */}
{/_ AUTH-PODCAST-ROLES-LIST:END _/}
### Per podcast permissions
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ---------------------------- | -------------------------------------------------------------------------- |
@ -82,4 +81,4 @@ title: Ταυτοποίηση & εξουσιοδότηση
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:END _/}

View File

@ -24,94 +24,95 @@ can be added as a cache handler.
## Example usage
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
2. Create a `docker-compose.yml` file with the following:
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
```yml
version: "3.7"
2. Create a `docker-compose.yml` file with the following:
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
```yml
version: "3.7"
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
volumes:
castopod-media:
castopod-db:
castopod-cache:
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
networks:
castopod-app:
castopod-db:
```
volumes:
castopod-media:
castopod-db:
castopod-cache:
Rankout a rit azasaat un nebeud variennoù hervez hoc'h ezhommoù (da skouer
`CP_BASEURL`, `MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` ha
`CP_ANALYTICS_SALT`).
networks:
castopod-app:
castopod-db:
```
3. Setup a reverse proxy for TLS (SSL/HTTPS)
Rankout a rit azasaat un nebeud variennoù hervez hoc'h ezhommoù (da skouer
`CP_BASEURL`, `MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` ha
`CP_ANALYTICS_SALT`).
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
3. Setup a reverse proxy for TLS (SSL/HTTPS)
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
5. You're all set, start podcasting! 🎙️🚀
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
5. You're all set, start podcasting! 🎙️🚀
## Variennoù endro
- **castopod/castopod** and **castopod/app**
| Anv ar varienn | Type (`default`) | Dre ziouer |
| Anv ar varienn | Type (`default`) | Default |
| ------------------------------------- | ----------------------- | ---------------- |
| **`CP_BASEURL`** | string | `undefined` |
| **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` |

View File

@ -7,16 +7,7 @@ import { Aside } from "@astrojs/starlight/components";
Castopod was thought-out to be easy to install. Whether using dedicated or
shared hosting, you can install it on most PHP-MySQL compatible web servers.
<Aside>
We've released official Docker images for Castopod!
If you prefer using Docker, you may skip this and go straight to the
[docker documentation](./docker.md) for Castopod.
</Aside>
## Vereisten
## Requirements
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
@ -104,7 +95,7 @@ want to generate Video Clips. The following extensions must be installed:
1. Run the Castopod install script by going to the install wizard page
(`https://your_domain_name.com/cp-install`) in your favorite web browser.
2. Follow the instructions on your screen.
3. Begin met podcasting!
3. Start podcasting!
<Aside>
@ -117,6 +108,7 @@ based on the `.env.example` file.
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
@ -148,19 +140,19 @@ email.SMTPUser="your_smtp_user"
email.SMTPPass="your_smtp_password"
```
#### E-mail configuratieopties
#### Email config options
| De naam van de variabele | Soort | Standaard |
| ------------------------ | -------------------- | ------------------ |
| **`fromEmail`** | string | `niet gedefineerd` |
| **`fromName`** | string | `"Castopod"` |
| **`SMTPHost`** | tekenreeks | `niet gedefineerd` |
| **`SMTPUser`** | tekenreeks | `niet gedefineerd` |
| **`SMTPPass`** | tekenreeks | `niet gedefineerd` |
| **`SMTPPort`** | nummer | `25` |
| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` |
| Variable name | Type | Default |
| ---------------- | -------------------- | ------------ |
| **`fromEmail`** | string | `undefined` |
| **`fromName`** | string | `"Castopod"` |
| **`SMTPHost`** | string | `undefined` |
| **`SMTPUser`** | string | `undefined` |
| **`SMTPPass`** | string | `undefined` |
| **`SMTPPort`** | number | `25` |
| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` |
### Mediaopslag
### Media storage
By default, files are saved to the `public/media` folder using the file system.
If you need to relocate the `media` folder to a different location, you can
@ -193,16 +185,16 @@ media.s3.region="your_s3_region"
#### S3 config options
| Variable name | Type | Default |
| ----------------------- | ---------- | ------------------ |
| **`endpoint`** | string | `undefined` |
| **`key`** | string | `undefined` |
| **`secret`** | tekenreeks | `niet gedefineerd` |
| **`region`** | tekenreeks | `niet gedefineerd` |
| **`bucket`** | tekenreeks | `castopod` |
| **`protocol`** | nummer | `niet gedefineerd` |
| **`pathStyleEndpoint`** | boolean | `onwaar` |
| **`keyPrefix`** | tekenreeks | `niet gedefineerd` |
| Variable name | Type | Default |
| ----------------------- | ------- | ----------- |
| **`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 packages

View File

@ -51,6 +51,7 @@ improvements ⚡.
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
`Housekeeping`
6. ✨ Enjoy your fresh instance, you're all done!
<Aside>
@ -65,7 +66,7 @@ Releases may come with additional update instructions (see
## Volledig geautomatiseerde updates
> Binnenkort beschikbaar... 👀
> Coming soon... 👀
## Veelgestelde vragen (FAQ)
@ -79,9 +80,9 @@ file.
### I haven't updated my instance in a long time… What should I do?
Geen probleem! Krijg gewoon de laatste versie zoals hierboven beschreven. Only,
when going through the release instructions (4), perform them sequentially, from
the oldest to the newest.
No problem! Just get the latest release as described above. Only, when going
through the release instructions (4), perform them sequentially, from the oldest
to the newest.
> You may want to backup your instance depending on how long you haven't updated
> Castopod.
@ -98,7 +99,7 @@ For example, if you're on `v1.0.0-alpha.42` and would like to upgrade to
newest) starting with `v1.0.0-alpha.43`, `v1.0.0-alpha.44`,
`v1.0.0-alpha.45`, …, `v1.0.0-beta.1`.
3. ✨ Geniet van je nieuwe instantie, je bent helemaal klaar!
3. ✨ Enjoy your fresh instance, you're all done!
### Moet ik een back-up maken voordat ik update?

File diff suppressed because it is too large Load Diff

View File

@ -13,7 +13,7 @@ niveles:
### Roles de instancia
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------ |
@ -21,11 +21,11 @@ niveles:
| Administrador | Administrar contenido de Castopod. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcaster | Usuarios generales de Castopod. | admin.access |
{/* AUTH-INSTANCE-ROLES-LIST:END */}
{/_ AUTH-INSTANCE-ROLES-LIST:END _/}
### Permisos de instancia
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ----------------------- | ------------------------------------------------------------------------------ |
@ -39,13 +39,13 @@ niveles:
| podcasts.import | Puede importar podcasts. |
| fediverse.manage-blocks | Puedes bloquear la interacción de actores/dominios del fediverso con Castopod. |
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:END _/}
## 2. Permisos y roles por podcast
### Roles por podcast
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@ -54,11 +54,11 @@ niveles:
| Autor | Gestiona el contenido del podcast #\{id\} pero no puede publicarlo. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Invitado | Colaborador general del podcast #\{id\}. | view, episodes.view |
{/* AUTH-PODCAST-ROLES-LIST:END */}
{/_ AUTH-PODCAST-ROLES-LIST:END _/}
### Permisos por podcast
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------- |
@ -82,4 +82,4 @@ niveles:
| episodes.manage-publications | Puede publicar/despublicar episodios y publicaciones del podcast #\{id\}. |
| episodes.manage-comments | Puede crear/eliminar los comentarios de episodio del podcast #\{id\}. |
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:END _/}

View File

@ -12,8 +12,7 @@ construcción automatizada:
- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server): una
configuración de Nginx para Castopod
Adicionalmente, Castopod requiere una base de datos compatible con MySQL.
También se puede añadir una base de datos Redis como gestor de caché.
Adicionalmente, Castopod requiere una base de datos compatible con MySQL. También se puede añadir una base de datos Redis como gestor de caché.
## Etiquetas admitidas
@ -24,95 +23,96 @@ También se puede añadir una base de datos Redis como gestor de caché.
## Ejemplo de uso
1. Instalar [docker](https://docs.docker.com/get-docker/) y
[docker-compose](https://docs.docker.com/compose/install/)
2. Crear un archivo `docker-compose.yml` con lo siguiente:
1. Instalar [docker](https://docs.docker.com/get-docker/) y
[docker-compose](https://docs.docker.com/compose/install/)
```yml
version: "3.7"
2. Crear un archivo `docker-compose.yml` con lo siguiente:
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
```yml
version: "3.7"
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
volumes:
castopod-media:
castopod-db:
castopod-cache:
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
networks:
castopod-app:
castopod-db:
```
volumes:
castopod-media:
castopod-db:
castopod-cache:
Debes adaptar algunas variables a tus necesidades (ej. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` y `CP_ANALYTICS_SALT`).
networks:
castopod-app:
castopod-db:
```
3. Configura un servidor proxy inverso para TLS (SSL/HTTPS).
Debes adaptar algunas variables a tus necesidades (ej. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` y `CP_ANALYTICS_SALT`).
TLS es imprescindible para que ActivityPub funcione. Este trabajo puede ser
fácilmente manejado por un proxy inverso, por ejemplo con
[Caddy](https://caddyserver.com/):
3. Configura un servidor proxy inverso para TLS (SSL/HTTPS).
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
TLS es imprescindible para que ActivityPub funcione. Este trabajo puede ser
fácilmente manejado por un proxy inverso, por ejemplo con
[Caddy](https://caddyserver.com/):
4. Ejecuta `docker-compose -d`, espera a que se inicie y ve a
`https://castopod.mi_dominio.com/cp-install` para terminar de configurar
Castopod!
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
5. Todo listo, empieza a hacer podcasting! 🎙️🚀 🎙️🚀
4. Ejecuta `docker-compose -d`, espera a que se inicie y ve a
`https://castopod.mi_dominio.com/cp-install` para terminar de configurar
Castopod!
5. Todo listo, empieza a hacer podcasting! 🎙️🚀 🎙️🚀
## Variables de Entorno
- **castopod/castopod** and **castopod/app**
| Nombre de la Variable | Tipo (`predeterminado`) | Por defecto |
| Nombre de la Variable | Tipo (`predeterminado`) | Default |
| ------------------------------------- | ----------------------- | ---------------- |
| **`CP_BASEURL`** | string | `undefined` |
| **`CP_MEDIA_URLBASE`** | ?string | `CP_BASEURL` |
@ -152,8 +152,8 @@ También se puede añadir una base de datos Redis como gestor de caché.
- **castopod/servidor web**
| Nombre de la variable | Tipo | Por defecto |
| ---------------------- | --------------------- | ----------- |
| **`CP_APP_HOSTNAME`** | ?string | `"app"` |
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
| **`CP_TIMEOUT`** | ?number | `900` |
| Nombre de la variable | Tipo | Default |
| ---------------------- | --------------------- | ------- |
| **`CP_APP_HOSTNAME`** | ?string | `"app"` |
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
| **`CP_TIMEOUT`** | ?number | `900` |

View File

@ -8,15 +8,6 @@ Castopod está pensado para ser fácil de instalar. Ya sea usando un alojamiento
dedicado o compartido, puedes instalarlo en la mayoría de servidores web
compatibles con PHP-MySQL.
<Aside>
¡Hemos publicado imágenes oficiales de Docker para Castopod!
Si prefieres usar Docker, puedes saltarte esto e ir directamente a la
[documentación sobre docker](./docker.md) para Castopod.
</Aside>
## Requisitos
- PHP v8.1 or higher
@ -120,6 +111,7 @@ manually based on the `.env.example` file.
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh
@ -134,7 +126,7 @@ manually based on the `.env.example` file.
4. Head on to your admin gateway to start podcasting!
### Configuración de Correo Electrónico/SMTP
### Email/SMTP setup
La configuración del correo electrónico es necesaria para que algunas
características funcionen correctamente (por ejemplo, recuperar su contraseña
@ -152,17 +144,17 @@ email.SMTPUser="your_smtp_user"
email.SMTPPass="your_smtp_password"
```
#### Opciones de configuración de email
#### Configuración de Correo Electrónico/SMTP
| Nombre de la variable | Tipo | Predeterminado |
| --------------------- | -------------------- | -------------- |
| **`fromEmail`** | string | `undefined` |
| **`fromName`** | string | `"Castopod"` |
| **`SMTPHost`** | string | `undefined` |
| **`SMTPUser`** | string | `undefined` |
| **`SMTPPass`** | string | `undefined` |
| **`SMTPPort`** | number | `25` |
| **`SMTPCrypto`** | [`"tls"` or `"ssl"`] | `"tls"` |
| Nombre de variable | Type | Default |
| ------------------ | -------------------- | ------------ |
| **`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
@ -197,7 +189,7 @@ media.s3.region="your_s3_region"
#### S3 config options
| Nombre de variable | Type | Default |
| Nombre de la variable | Type | Default |
| ----------------------- | ------- | ----------- |
| **`endpoint`** | string | `undefined` |
| **`key`** | string | `undefined` |

View File

@ -38,7 +38,8 @@ de errores 🐛 y mejoras de rendimiento ⚡.
<Aside>
Es posible que necesite restablecer los permisos de los archivos después el
proceso de instalación. Compruebe
proceso de instalación.
Compruebe
[preocupaciones de seguridad](./security.md).
</Aside>
@ -52,6 +53,7 @@ de errores 🐛 y mejoras de rendimiento ⚡.
5. Limpia tu caché en `Administrador de Castopod` > `Ajustes` > `general` >
`Housekeeping`
6. ✨ ¡Disfruta de tu instancia recién instalada, todo listo!
<Aside>
@ -66,7 +68,7 @@ la página de
## Actualizaciones totalmente automatizadas
> Próximamente...
> Próximamente... 👀
## Preguntas Frecuentes (FAQ)
@ -80,8 +82,7 @@ Alternativamente, puedes encontrar la versión en el archivo
### No he actualizado mi instancia en mucho tiempo… ¿Qué debo hacer?
¡No hay problema! No problem! Just get the latest release as described above.
Simplemente cuando vaya a través de las instrucciones de lanzamiento (4),
No problem! Just get the latest release as described above. Simplemente cuando vaya a través de las instrucciones de lanzamiento (4),
realice la actualización secuencialmente, desde el más antiguo hasta el más
reciente.

File diff suppressed because it is too large Load Diff

View File

@ -12,7 +12,7 @@ coupled with custom rules. Roles and permissions are defined at two levels:
### Instance roles
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
@ -20,11 +20,11 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcaster | General users of Castopod. | admin.access |
{/* AUTH-INSTANCE-ROLES-LIST:END */}
{/_ AUTH-INSTANCE-ROLES-LIST:END _/}
### Instance permissions
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ----------------------- | ------------------------------------------------------------------ |
@ -38,13 +38,13 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| podcasts.import | Can import podcasts. |
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:END _/}
## 2. Per podcast roles and permissions
### Per podcast roles
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@ -53,11 +53,11 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
{/* AUTH-PODCAST-ROLES-LIST:END */}
{/_ AUTH-PODCAST-ROLES-LIST:END _/}
### Per podcast permissions
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ---------------------------- | -------------------------------------------------------------------------- |
@ -81,4 +81,4 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:END _/}

View File

@ -24,87 +24,88 @@ can be added as a cache handler.
## Example usage
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
2. Create a `docker-compose.yml` file with the following:
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
```yml
version: "3.7"
2. Create a `docker-compose.yml` file with the following:
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
```yml
version: "3.7"
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
volumes:
castopod-media:
castopod-db:
castopod-cache:
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
networks:
castopod-app:
castopod-db:
```
volumes:
castopod-media:
castopod-db:
castopod-cache:
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
networks:
castopod-app:
castopod-db:
```
3. Setup a reverse proxy for TLS (SSL/HTTPS)
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
3. Setup a reverse proxy for TLS (SSL/HTTPS)
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
5. You're all set, start podcasting! 🎙️🚀
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
5. You're all set, start podcasting! 🎙️🚀
## Environment Variables

View File

@ -7,15 +7,6 @@ import { Aside } from "@astrojs/starlight/components";
Castopod was thought-out to be easy to install. Whether using dedicated or
shared hosting, you can install it on most PHP-MySQL compatible web servers.
<Aside>
We've released official Docker images for Castopod!
If you prefer using Docker, you may skip this and go straight to the
[docker documentation](./docker.md) for Castopod.
</Aside>
## Requirements
- PHP v8.1 or higher
@ -117,6 +108,7 @@ based on the `.env.example` file.
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh

View File

@ -51,6 +51,7 @@ improvements ⚡.
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
`Housekeeping`
6. ✨ Enjoy your fresh instance, you're all done!
<Aside>

File diff suppressed because it is too large Load Diff

View File

@ -12,7 +12,7 @@ coupled with custom rules. Roles and permissions are defined at two levels:
### Instance roles
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
@ -20,11 +20,11 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcaster | General users of Castopod. | admin.access |
{/* AUTH-INSTANCE-ROLES-LIST:END */}
{/_ AUTH-INSTANCE-ROLES-LIST:END _/}
### Instance permissions
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ----------------------- | ------------------------------------------------------------------ |
@ -38,13 +38,13 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| podcasts.import | Can import podcasts. |
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:END _/}
## 2. Per podcast roles and permissions
### Per podcast roles
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@ -53,11 +53,11 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
{/* AUTH-PODCAST-ROLES-LIST:END */}
{/_ AUTH-PODCAST-ROLES-LIST:END _/}
### Per podcast permissions
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ---------------------------- | -------------------------------------------------------------------------- |
@ -81,4 +81,4 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:END _/}

View File

@ -24,87 +24,88 @@ can be added as a cache handler.
## Example usage
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
2. Create a `docker-compose.yml` file with the following:
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
```yml
version: "3.7"
2. Create a `docker-compose.yml` file with the following:
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
```yml
version: "3.7"
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
volumes:
castopod-media:
castopod-db:
castopod-cache:
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
networks:
castopod-app:
castopod-db:
```
volumes:
castopod-media:
castopod-db:
castopod-cache:
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
networks:
castopod-app:
castopod-db:
```
3. Setup a reverse proxy for TLS (SSL/HTTPS)
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
3. Setup a reverse proxy for TLS (SSL/HTTPS)
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
5. You're all set, start podcasting! 🎙️🚀
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
5. You're all set, start podcasting! 🎙️🚀
## Environment Variables

View File

@ -7,15 +7,6 @@ import { Aside } from "@astrojs/starlight/components";
Castopod was thought-out to be easy to install. Whether using dedicated or
shared hosting, you can install it on most PHP-MySQL compatible web servers.
<Aside>
We've released official Docker images for Castopod!
If you prefer using Docker, you may skip this and go straight to the
[docker documentation](./docker.md) for Castopod.
</Aside>
## Requirements
- PHP v8.1 or higher
@ -117,6 +108,7 @@ based on the `.env.example` file.
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh

View File

@ -51,6 +51,7 @@ improvements ⚡.
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
`Housekeeping`
6. ✨ Enjoy your fresh instance, you're all done!
<Aside>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,84 @@
---
title: Authentication & Authorization
---
Castopod handles authentication and authorization using `codeigniter/shield`
coupled with custom rules. Roles and permissions are defined at two levels:
1. [instance wide](#1-instance-wide-roles-and-permissions)
2. [per podcast](#2-per-podcast-roles-and-permissions)
## 1. Instance wide roles and permissions
### Instance roles
{/_ AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
| Super admin | Has complete control over Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcaster | General users of Castopod. | admin.access |
{/_ AUTH-INSTANCE-ROLES-LIST:END _/}
### Instance permissions
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ----------------------- | ------------------------------------------------------------------ |
| admin.access | Can access the Castopod admin area. |
| admin.settings | Can access the Castopod settings. |
| users.manage | Can manage Castopod users. |
| persons.manage | Can manage persons. |
| pages.manage | Can manage pages. |
| podcasts.view | Can view all podcasts. |
| podcasts.create | Can create new podcasts. |
| podcasts.import | Can import podcasts. |
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:END _/}
## 2. Per podcast roles and permissions
### Per podcast roles
{/_ AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Admin | Has complete control of podcast #\{id\}. | \* |
| Editor | Manages content and publications of podcast #\{id\}. | view, edit, manage-import, manage-persons, manage-platforms, manage-publications, manage-notifications, interact-as, episodes.view, episodes.create, episodes.edit, episodes.delete, episodes.manage-persons, episodes.manage-clips, episodes.manage-publications, episodes.manage-comments |
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
{/_ AUTH-PODCAST-ROLES-LIST:END _/}
### Per podcast permissions
{/_ AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ---------------------------- | -------------------------------------------------------------------------- |
| view | Can view dashboard and analytics of podcast #\{id\}. |
| edit | Can edit podcast #\{id\}. |
| delete | Can delete podcast #\{id\}. |
| manage-import | Can synchronize imported podcast #\{id\}. |
| manage-persons | Can manage subscriptions of podcast #\{id\}. |
| manage-subscriptions | Can manage subscriptions of podcast #\{id\}. |
| manage-contributors | Can manage contributors of podcast #\{id\}. |
| manage-platforms | Can set/remove platform links of podcast #\{id\}. |
| manage-publications | Can publish podcast #\{id\}. |
| manage-notifications | Can view and mark notifications as read for podcast #\{id\}. |
| interact-as | Can interact as the podcast #\{id\} to favourite, share or reply to posts. |
| episodes.view | Can view dashboards and analytics of podcast #\{id\}'s episodes. |
| episodes.create | Can create episodes for podcast #\{id\}. |
| episodes.edit | Can edit episodes of podcast #\{id\}. |
| episodes.delete | Can delete episodes of podcast #\{id\}. |
| episodes.manage-persons | Can manage episode persons of podcast #\{id\}. |
| episodes.manage-clips | Can manage video clips or soundbites of podcast #\{id\}. |
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
{/_ AUTH-PODCAST-PERMISSIONS-LIST:END _/}

View File

@ -0,0 +1,158 @@
---
title: Official Docker images
---
Castopod pushes 3 Docker images to the Docker Hub during its automated build
process:
- [**`castopod/castopod`**](https://hub.docker.com/r/castopod/castopod): an all
in one castopod image using nginx unit
- [**`castopod/app`**](https://hub.docker.com/r/castopod/app): the app bundle
with all of Castopod dependencies
- [**`castopod/web-server`**](https://hub.docker.com/r/castopod/web-server): an
Nginx configuration for Castopod
Additionally, Castopod requires a MySQL-compatible database. A Redis database
can be added as a cache handler.
## Supported tags
- `develop` [unstable], latest development branch build
- `beta` [stable], latest beta version build
- `latest` [stable], latest version build
- `1.x.x` [stable], specific version build (since `1.0.0`)
## Example usage
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
2. Create a `docker-compose.yml` file with the following:
```yml
version: "3.7"
services:
castopod:
image: castopod/castopod:latest
container_name: "castopod"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
mariadb:
image: mariadb:11.2
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
redis:
image: redis:7.2-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod
volumes:
castopod-media:
castopod-db:
castopod-cache:
networks:
castopod:
castopod-db:
```
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
3. Setup a reverse proxy for TLS (SSL/HTTPS)
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
5. You're all set, start podcasting! 🎙️🚀
## Environment Variables
- **castopod/castopod** and **castopod/app**
| Variable name | Type (`default`) | Default |
| ------------------------------------- | ----------------------- | ---------------- |
| **`CP_BASEURL`** | string | `undefined` |
| **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` |
| **`CP_ADMIN_GATEWAY`** | ?string | `"cp-admin"` |
| **`CP_AUTH_GATEWAY`** | ?string | `"cp-auth"` |
| **`CP_ANALYTICS_SALT`** | string | `undefined` |
| **`CP_DATABASE_HOSTNAME`** | ?string | `"mariadb"` |
| **`CP_DATABASE_NAME`** | ?string | `MYSQL_DATABASE` |
| **`CP_DATABASE_USERNAME`** | ?string | `MYSQL_USER` |
| **`CP_DATABASE_PASSWORD`** | ?string | `MYSQL_PASSWORD` |
| **`CP_DATABASE_PREFIX`** | ?string | `"cp_"` |
| **`CP_CACHE_HANDLER`** | [`"file"` or `"redis"`] | `"file"` |
| **`CP_REDIS_HOST`** | ?string | `"localhost"` |
| **`CP_REDIS_PASSWORD`** | ?string | `null` |
| **`CP_REDIS_PORT`** | ?number | `6379` |
| **`CP_REDIS_DATABASE`** | ?number | `0` |
| **`CP_EMAIL_SMTP_HOST`** | ?string | `undefined` |
| **`CP_EMAIL_FROM`** | ?string | `undefined` |
| **`CP_EMAIL_SMTP_USERNAME`** | ?string | `"localhost"` |
| **`CP_EMAIL_SMTP_PASSWORD`** | ?string | `null` |
| **`CP_EMAIL_SMTP_PORT`** | ?number | `25` |
| **`CP_EMAIL_SMTP_CRYPTO`** | [`"tls"` or `"ssl"`] | `"tls"` |
| **`CP_ENABLE_2FA`** | ?boolean | `undefined` |
| **`CP_MEDIA_FILE_MANAGER`** | ?string | `undefined` |
| **`CP_MEDIA_S3_ENDPOINT`** | ?string | `undefined` |
| **`CP_MEDIA_S3_KEY`** | ?string | `undefined` |
| **`CP_MEDIA_S3_SECRET`** | ?string | `undefined` |
| **`CP_MEDIA_S3_REGION`** | ?string | `undefined` |
| **`CP_MEDIA_S3_BUCKET`** | ?string | `undefined` |
| **`CP_MEDIA_S3_PROTOCOL`** | ?number | `undefined` |
| **`CP_MEDIA_S3_PATH_STYLE_ENDPOINT`** | ?boolean | `undefined` |
| **`CP_MEDIA_S3_KEY_PREFIX`** | ?string | `undefined` |
| **`CP_DISABLE_HTTPS`** | ?[`0` or `1`] | `undefined` |
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
| **`CP_PHP_MEMORY_LIMIT`** | ?number (with suffix) | `512M` |
| **`CP_TIMEOUT`** | ?number | `900` |
- **castopod/web-server**
| Variable name | Type | Default |
| ---------------------- | --------------------- | ------- |
| **`CP_APP_HOSTNAME`** | ?string | `"app"` |
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
| **`CP_TIMEOUT`** | ?number | `900` |

View File

@ -0,0 +1,243 @@
---
title: How to install Castopod?
---
import { Aside } from "@astrojs/starlight/components";
Castopod was thought-out to be easy to install. Whether using dedicated or
shared hosting, you can install it on most PHP-MySQL compatible web servers.
## Requirements
- PHP v8.1 or higher
- MySQL version 5.7 or higher or MariaDB version 10.2 or higher
- HTTPS support
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.1 or higher
PHP version 8.1 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) with **JPEG**,
**PNG** and **WEBP** libraries.
- [exif](https://www.php.net/manual/en/exif.installation.php)
Additionally, make sure that the following extensions are enabled in your PHP:
- json (enabled by default - don't turn it off)
- xml (enabled by default - don't turn it off)
- [mysqlnd](https://php.net/manual/en/mysqlnd.install.php)
### MySQL compatible database
> We recommend using [MariaDB](https://mariadb.org).
You will need the server hostname, database name, username and password to
complete the installation process. If you do not have these, please contact your
server administrator.
#### Privileges
User must have at least these privileges on the database for Castopod to work:
`CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`, `SELECT`, `UPDATE`,
`REFERENCES`, `CREATE VIEW`.
### (Optional) FFmpeg v4.1.8 or higher for Video Clips
[FFmpeg](https://www.ffmpeg.org/) version 4.1.8 or higher is required if you
want to generate Video Clips. The following extensions must be installed:
- **FreeType 2** library for
[gd](https://www.php.net/manual/en/image.installation.php).
### (Optional) Other recommendations
- Redis for better cache performances.
- CDN for static files caching and better performances.
- e-mail gateway for lost passwords.
## Install instructions
### Pre-requisites
0. Get a Web Server with [requirements](#requirements) installed
1. Create a MySQL database for Castopod with a user having access and
modification privileges (for more info, see
[MySQL compatible database](#mysql-compatible-database)).
2. Activate HTTPS on your domain with an _SSL certificate_.
3. Download and unzip the latest [Castopod Package](https://castopod.org/) onto
the web server if you havent already.
- ⚠️ Set the web server document root to the `public/` sub-folder within the
`castopod` folder.
4. Add **cron tasks** on your web server for various background processes
(replace the paths accordingly):
```bash
* * * * * /path/to/php /path/to/castopod/spark tasks:run >> /dev/null 2>&1
```
**Note** - If you do not add this cron task, the following Castopod features
will not work:
- Importing a podcast from an existing RSS feed
- Broadcasting social activities to your followers in the fediverse
- Broadcasting episodes to open hubs using
[WebSub](https://en.wikipedia.org/wiki/WebSub)
- Generating video clips -
[requires FFmpeg](#optional-ffmpeg-v418-or-higher-for-video-clips)
### (recommended) Install Wizard
1. Run the Castopod install script by going to the install wizard page
(`https://your_domain_name.com/cp-install`) in your favorite web browser.
2. Follow the instructions on your screen.
3. Start podcasting!
<Aside>
The install script writes a `.env` file in the package root. If you cannot go
through the install wizard, you can create and edit the `.env` file manually
based on the `.env.example` file.
</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!
### Email/SMTP setup
Email configuration is required for some features to work properly (eg.
retrieving your forgotten password, sending instructions to premium subscribers,
…)
You may add your email configuration in your instance's `.env` like so:
```ini
# […]
email.fromEmail="your_email_address"
email.SMTPHost="your_smtp_host"
email.SMTPUser="your_smtp_user"
email.SMTPPass="your_smtp_password"
```
#### Email config options
| Variable name | Type | Default |
| ---------------- | -------------------- | ------------ |
| **`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
By default, files are saved to the `public/media` folder using the file system.
If you need to relocate the `media` folder to a different location, you can
specify it in your `.env` file as shown below:
```ini
# […]
media.root="media"
media.storage="/mnt/storage"
```
In this example, the files will be saved to the /mnt/storage/media folder. Make
sure to also update your web server configuration to reflect this change.
### S3
If you prefer storing your media files on an S3 compatible storage, you may
specify it in your `.env`:
```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 config options
| Variable name | Type | Default |
| ----------------------- | ------- | ----------- |
| **`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 packages
If you don't want to bother with installing Castopod manually, you may use one
of the packages created and maintained by the open-source community.
### Install with YunoHost
[YunoHost](https://yunohost.org/) is a distribution based on Debian GNU/Linux
made up of free and open-source software packages. It manages the hardships of
self-hosting for you.
<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="Install Castopod with 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>

View File

@ -0,0 +1,24 @@
---
title: Security concerns
---
Castopod is built on top of [CodeIgniter4](https://codeigniter.com/), a PHP
framework that encourages
[good security practices](https://codeigniter.com/user_guide/concepts/security.html).
To maximize your instance's safety and prevent any malicious attack, we
recommend you update all your Castopod files permissions after installation or
updates (to avoid any prior permission error):
- `writable/` folder must be **readable** and **writable**.
- `public/media/` folder must be **readable** and **writable**.
- any other file must be set to **readonly**.
For instance, if you are using Apache or NGINX with Ubuntu you may do the
following:
```bash
sudo chown -R root:root /path/to/castopod
sudo chown -R www-data:www-data /path/to/castopod/writable
sudo chown -R www-data:www-data /path/to/castopod/public/media
```

View File

@ -0,0 +1,109 @@
---
title: How to update Castopod?
---
import { Aside } from "@astrojs/starlight/components";
After installing Castopod, you may want to update your instance to the latest
version in order to enjoy the latest features ✨, bug fixes 🐛 and performance
improvements ⚡.
## Update instructions
0. ⚠️ Before any update, we highly recommend you backup your Castopod files and
database.
- cf.
[Should I make a backup before updating?](#should-i-make-a-backup-before-updating)
1. Go to the
[releases page](https://code.castopod.org/adaures/castopod/-/releases) and
see if your instance is up to date with the latest Castopod version
- cf.
[Where can I find my Castopod version?](#where-can-i-find-my-castopod-version)
2. Download the latest release package named `Castopod Package`, you may choose
between the `zip` or `tar.gz` archives
- ⚠️ Make sure you download the Castopod Package and **NOT** the Source Code
- Note that you can also download the latest package from
[castopod.org](https://castopod.org/)
3. On your server:
- Remove all files except `.env` and `public/media`
- Copy the new files from the downloaded package into your server
<Aside>
You may need to reset files permissions as during the install process.
Check [Security Concerns](./security.md).
</Aside>
4. Update your database schema from your `Castopod Admin` > `About` page or by
running:
```bash
php spark castopod:database-update
```
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
`Housekeeping`
6. ✨ Enjoy your fresh instance, you're all done!
<Aside>
Releases may come with additional update instructions (see
[releases page](https://code.castopod.org/adaures/castopod/-/releases)).
- cf.
[I haven't updated my instance in a long time… What should I do?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
</Aside>
## Fully Automated updates
> Coming soon... 👀
## Frequently asked questions (FAQ)
### Where can I find my Castopod version?
Go to your Castopod admin panel, the version is displayed on the bottom left
corner.
Alternatively, you can find the version in the `app > Config > Constants.php`
file.
### I haven't updated my instance in a long time… What should I do?
No problem! Just get the latest release as described above. Only, when going
through the release instructions (4), perform them sequentially, from the oldest
to the newest.
> You may want to backup your instance depending on how long you haven't updated
> Castopod.
For example, if you're on `v1.0.0-alpha.42` and would like to upgrade to
`v1.0.0-beta.1`:
0. (highly recommended) Make a backup of your files and database.
1. Download the latest release, overwrite your files whilst keeping `.env` and
`public/media`.
2. Go through each release update instructions sequentially (from oldest to
newest) starting with `v1.0.0-alpha.43`, `v1.0.0-alpha.44`,
`v1.0.0-alpha.45`, …, `v1.0.0-beta.1`.
3. ✨ Enjoy your fresh instance, you're all done!
### Should I make a backup before updating?
We advise you do, so you don't lose everything if anything goes wrong!
More generally, we advise you make regular backups of your Castopod files and
database to prevent you from losing it all…

View File

@ -0,0 +1,194 @@
---
title: Welcome 👋
---
import { LinkCard } from "@astrojs/starlight/components";
Castopod is a free & open-source hosting platform made for podcasters who want
engage and interact with their audience.
Castopod is easy to install and was built on top of
[CodeIgniter4](https://codeigniter.com/), a powerful PHP framework with a very
small footprint.
<LinkCard title="Install" href="./getting-started/install" />
## Features
- 🌱  Free & open-source (AGPL v3 License)
- 🔐  Focused on data sovereignty: your content, audience, and analytics
belong to you, and you only
- 🪄  Podcasting 2.0 features: GUID, locked, transcripts, funding,
chapters, location, persons, soundbites, …
- 💬  Built-in social network:
- 🚀  Castopod is part of the Fediverse, a decentralized social network
- ❤️  Create posts, share, favourite, and comment on episodes
- 📈  Built-in analytics:
- ⚖️  GDPR / CCPA / LGPD compliant
- 🪙  Standard IABv2 audience measurement
- 🏡  On-premises analytics, no third party involved
- 📢  Built-in marketing tools:
- ✅  SEO ready (open-graph meta-tags, JSON-LD, …)
- 📱  PWA: install as a standalone app
- 🎨  Customizable theme colors
- 🎬  Generate ready-to-share Video clips from episodes
- 🔉  Generate soundbites
- ▶️  Embeddable player, embed your episodes on any website
- 💸  Monetization:
- 🔗  Funding links
- 📲  listen-to-click ads
- 🤝  value4value / WebMonetization
- 💎  Premium podcasts
- 📡  Publish your episodes everywhere with RSS:
- 📱  On all indexes and apps: Podcast Index, Apple Podcasts, Spotify,
Google Podcasts, Deezer, Podcast Addict, Podfriend, …
- ⚡  Broadcast your episodes instantly with WebSub
- 📥  Podcast import: move your existing podcast into Castopod
- 📤  Move your podcast out of Castopod
- 🔀  Multi-tenant: host as many podcasts as you want
- 👥  Multi-user: add contributors and set roles
- 🌎  i18n support: translated in English, French, Polish, German,
Brazilian Portuguese, Spanish, simplified Chinese… and
[many more](https://translate.castopod.org)!
## Motivation
The podcasting ecosystem is decentralized by nature: you can create your podcast
as an RSS file, publish it on the web and have it shared everywhere online.
It is in fact one of the only media to have stayed this way for a long time.
As usages are evolving, more and more people are getting into podcasts: whether
it is creators finding new ways to share their ideas, or listeners in the search
for better content.
With podcasting becoming more widely used, some companies are trying to shift it
towards a more controlled and centralized medium.
Castopod was created in an effort to provide an open and sustainable alternative
to hosting your podcasts, promoting decentralization to ensure that podcasters
creativity can express itself.
This project is pushed by the open-source community, and specifically by the
[Fediverse](https://fediverse.party/en/fediverse/) and
[Podcasting 2.0](https://podcastindex.org/) movements.
## Comparison with other solutions
We believe that a solution is not necessarily right for everyone, it highly
depends on your needs. So, here are comparisons with other tools to help you to
gauge whether Castopod is the right fit for you.
### Castopod vs Wordpress
Castopod is often referred to as "the Wordpress for podcasts" because of the
similarities between the two. In some ways this is true. And actually, Castopod
was greatly inspired by the Wordpress ecosystem, seeing the ease of adoption
from the community and the number of websites running it.
Just like Wordpress, Castopod is free & open source, built using PHP with a
MySQL database and is packaged in a way that you can easily install on most web
servers.
Wordpress is a great way to create your website and extend it with plugins to
get what you want. It is a full fledged CMS that helps you get any type of
website online.
On the other hand, Castopod is meant to address the podcasters needs
specifically, focusing on podcasting, and nothing else. You don't need any
plugin to get you started on your podcasting journey.
This allows optimizing the processes specific to podcasting: ranging from the
creation of your podcasts and the publication of new episodes all the way to
broadcasting, marketing and analytics.
Finally, depending on your needs, Wordpress and Castopod can even live side by
side as they share the same requirements!
### Castopod vs Funkwhale
Funkwhale is a self-hosted, modern free and open-source music server. Just as
Castopod, Funkwhale is on the fediverse, a decentralized social network allowing
interoperability between the two.
Funkwhale was initially built around music. And later on, as the project
evolved, the ability to host podcasts was introduced.
Unlike Funkwhale, Castopod has been designed and built around podcasting
exclusively. This allows easier implementation for features related to the
podcasting ecosystem, such as the podcasting 2.0 features (transcripts,
chapters, locations, persons, …).
So, you should probably use Funkwhale if you want to host your music, and use
Castopod if you want to host your podcasts.
### Castopod vs other podcast hosts
There are many solutions for you to host your podcasts, some of which are really
great and [a lot of them](https://podcastindex.org/apps) are jumping into the
Podcasting 2.0 wagon just like Castopod!
Each of these solutions differ from one another, you may compare with the
[list of features](#features).
That being said, there are two main differences with other podcasting solutions:
- Castopod can be self-hosted and is the only solution that allows you to keep
full control over what you produce. Also, as it is open-source, you can even
customize it as you wish.
- Castopod is the only solution that currently integrates both a decentralized
social network with ActivityPub as well as many of the podcasting 2.0
features, hoping to bridge the gap between the two.
## Contributing
Love Castopod and would like to help? Take a look at the following documentation
to get you started.
### Code of conduct
Castopod has adopted a Code of Conduct that we expect project participants to
adhere to. Please read the
[CODE_OF_CONDUCT manual](https://code.castopod.org/adaures/castopod/-/blob/beta/CODE_OF_CONDUCT.md)
so that you can understand what actions will and will not be tolerated.
### Contributing guide
Read our
[contributing guide](https://code.castopod.org/adaures/castopod/-/blob/develop/CONTRIBUTING.md)
to learn about our development process, how to propose bugfixes and
improvements, and how to build and test your changes to Castopod.
## Contact
You may reach us for help or ask any question you have on:
- [Discord](https://castopod.org/discord) (for direct interaction with
developers and the community)
- [Issue tracker](https://code.castopod.org/adaures/castopod/-/issues) (for
feature requests & bug reports)
Alternatively, you can follow us on social media platforms to get news about
Castopod:
- [podlibre.social](https://podlibre.social/@Castopod) (Mastodon instance)
- [Twitter](https://twitter.com/castopod)
- [LinkedIn](https://linkedin.com/company/castopod)
- [Facebook](https://www.facebook.com/castopod)
## Sponsors
The ongoing development of Castopod is made possible with the support of its
backers. If you'd like to help, please consider
[sponsoring Castopod's development](https://opencollective.com/castopod/contribute).
[![Ad Aures Logo](../../../assets/images/sponsors/adaures.svg)](https://adaures.com/)
[![NLnet Logo](../../../assets/images/sponsors/nlnet.svg)](https://nlnet.nl/)
## License
[GNU Affero General Public License v3.0](https://choosealicense.com/licenses/agpl-3.0/)
Copyright © 2020-present, [Ad Aures](https://adaures.com/).

View File

@ -11,21 +11,21 @@ autorisations sont définis sur deux niveaux :
## 1. Rôles et autorisations à l'échelle de l'instance
### Rôles dans linstance
### Instance roles
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| -------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
| Super administrat·rice·eur | A un contrôle complet sur Castopod. | admin.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
| Gestionnaire | Gère le contenu de Castopod. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcast·rice·eur | Utilisateurs généraux de Castopod. | admin.access |
| Podcaster | Utilisateurs généraux de Castopod. | admin.access |
{/* AUTH-INSTANCE-ROLES-LIST:END */}
{/_ AUTH-INSTANCE-ROLES-LIST:END _/}
### Autorisations dans l'instance
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ----------------------- | -------------------------------------------------------------------- |
@ -39,13 +39,13 @@ autorisations sont définis sur deux niveaux :
| podcasts.import | Peut importer des podcasts. |
| fediverse.manage-blocks | Peut empêcher des act·rice·eur·s/domaines d'interagir avec Castopod. |
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:END _/}
## 2. Rôles et autorisations par podcast
### Rôles par podcast
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ---------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@ -54,11 +54,11 @@ autorisations sont définis sur deux niveaux :
| Auteur / Autrice | Gère le contenu du podcast #\{id\} , mais ne peut pas le publier. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Invité | Contributeur général du podcast #\{id\}. | view, episodes.view |
{/* AUTH-PODCAST-ROLES-LIST:END */}
{/_ AUTH-PODCAST-ROLES-LIST:END _/}
### Permissions par podcast
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ---------------------------- | ---------------------------------------------------------------------------------------------------- |
@ -82,4 +82,4 @@ autorisations sont définis sur deux niveaux :
| episodes.manage-publications | Peut publier/dépublier des épisodes et des messages de podcast #\{id\}. |
| episodes.manage-comments | Peut créer/supprimer les commentaires de l'épisode du podcast #\{id\}. |
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:END _/}

View File

@ -24,94 +24,95 @@ de données Redis peut être ajoutée en tant que gestionnaire de cache.
## Exemple d'utilisation
1. Installez [docker](https://docs.docker.com/get-docker/) et
[docker-compose](https://docs.docker.com/compose/install/)
2. Créez un fichier `docker-compose.yml` avec les éléments suivants :
1. Installez [docker](https://docs.docker.com/get-docker/) et
[docker-compose](https://docs.docker.com/compose/install/)
```yml
version: "3.7"
2. Créez un fichier `docker-compose.yml` avec les éléments suivants :
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
```yml
version: "3.7"
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
volumes:
castopod-media:
castopod-db:
castopod-cache:
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
networks:
castopod-app:
castopod-db:
```
volumes:
castopod-media:
castopod-db:
castopod-cache:
Vous devez adapter certaines variables à vos besoins (p. ex. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` et `CP_ANALYTICS_SALT`).
networks:
castopod-app:
castopod-db:
```
3. Setup a reverse proxy for TLS (SSL/HTTPS)
Vous devez adapter certaines variables à vos besoins (p. ex. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` et `CP_ANALYTICS_SALT`).
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
3. Setup a reverse proxy for TLS (SSL/HTTPS)
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
4. Exécutez `docker-compose up -d`, attendez qu'il s'initialise sur
`https://castopod.example.com/cp-install` pour terminer la configuration de
Castopod !
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
5. Vous êtes prêt, commencez à podcaster! 🎙️🚀
4. Exécutez `docker-compose up -d`, attendez qu'il s'initialise sur
`https://castopod.example.com/cp-install` pour terminer la configuration de
Castopod !
5. Vous êtes prêt, commencez à podcaster! 🎙️🚀
## Environment Variables
- **castopod/castopod** and **castopod/app**
| Nom de la variable | Type (`default`) | Par défaut |
| Variable name | Type (`default`) | Par défaut |
| ------------------------------------- | ----------------------- | ---------------- |
| **`CP_BASEURL`** | string | `undefined` |
| **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` |

View File

@ -8,15 +8,6 @@ Castopod a été pensé pour être facile à installer. Que vous utilisiez un
hébergement dédié ou mutualisé, vous pouvez l'installer sur la plupart des
serveurs web compatibles avec PHP-MySQL.
<Aside>
Nous avons publié des images officielles Docker pour Castopod!
Si vous préférez utiliser Docker, vous pouvez sauter cette partie et aller
directement à la [documentation Docker](./docker.md) pour Castopod.
</Aside>
## Prérequis
- PHP v8.1 ou supérieure
@ -124,6 +115,7 @@ le fichier `.env` manuellement en vous appuyant sur le fichier `.env.example`.
1. Créez un fichier `.env` à la racine du paquet basé sur le fichier
`.env.example`.
2. Initialisez la base de données en exécutant :
```sh
@ -201,7 +193,7 @@ media.s3.region="your_s3_region"
#### Options de configuration S3
| Nom de la variable | Type | Par défaut |
| Variable name | Type | Default |
| ----------------------- | ------- | ----------- |
| **`endpoint`** | string | `undefined` |
| **`key`** | string | `undefined` |

View File

@ -39,7 +39,8 @@ corrections de bugs 🐛 et des améliorations de performance ⚡.
<Aside>
Vous devrez peut-être re-définir les autorisations de fichiers comme
effectué durant le processus d'installation. Vérifiez les
effectué durant le processus d'installation.
Vérifiez les
[questions de sécurité](./security.md).
</Aside>
@ -53,6 +54,7 @@ corrections de bugs 🐛 et des améliorations de performance ⚡.
5. Videz votre cache de votre `Administrateur Castopod` > `Paramètres` >
`Général` > `Foyer`
6. ✨Profitez de votre nouvelle instance, vous avez terminé !
<Aside>
@ -61,8 +63,7 @@ Les versions peuvent être accompagnées d'instructions de mise à jour
supplémentaires (cf. la
[page des notes de versions](https://code.castopod.org/adaures/castopod/-/releases)).
- cf. Je n'ai pas mis à jour mon instance depuis longtemps… Que devrais-je faire
?
- [Je n'ai pas mis à jour mon instance depuis longtemps… Que devrais-je faire ?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
</Aside>
@ -80,7 +81,9 @@ bas à gauche.
Vous pouvez également trouver la version dans l'application
`> Configuration > Constantes.php` dossier.
### [Je n'ai pas mis à jour mon instance depuis longtemps… Que devrais-je faire ?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
### cf. Je n'ai pas mis à jour mon instance depuis longtemps… Que devrais-je faire
?
Pas de problème ! Il suffit d'obtenir la dernière version comme décrit
ci-dessus. Lorsque vous exécutez les instructions de mise à jour (4), lancez-les
@ -98,8 +101,9 @@ la `v1.0.0-beta.1`:
1. Téléchargez la dernière version, écrasez vos fichiers tout en conservant
`.env` et `public/media`.
2. Effectuez les instructions de mise à jour l'une après l'autre (de la plus
ancienne à la plus récente).
2. Go through each release update instructions sequentially (from oldest to
newest) starting with `v1.0.0-alpha.43`, `v1.0.0-alpha.44`,
`v1.0.0-alpha.45`, …, `v1.0.0-beta.1`.
3. ✨ Votre nouvelle instance est prête !

File diff suppressed because it is too large Load Diff

View File

@ -11,9 +11,9 @@ autorisations sont définis sur deux niveaux :
## 1. Rôles et autorisations à l'échelle de l'instance
### Rôles dans linstance
### Instance roles
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
@ -21,11 +21,11 @@ autorisations sont définis sur deux niveaux :
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcaster | General users of Castopod. | admin.access |
{/* AUTH-INSTANCE-ROLES-LIST:END */}
{/_ AUTH-INSTANCE-ROLES-LIST:END _/}
### Autorisations dans l'instance
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ----------------------- | ------------------------------------------------------------------ |
@ -39,13 +39,13 @@ autorisations sont définis sur deux niveaux :
| podcasts.import | Can import podcasts. |
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:END _/}
## 2. Rôles et autorisations par podcast
### Rôles par podcast
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@ -54,11 +54,11 @@ autorisations sont définis sur deux niveaux :
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
{/* AUTH-PODCAST-ROLES-LIST:END */}
{/_ AUTH-PODCAST-ROLES-LIST:END _/}
### Permissions par podcast
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ---------------------------- | -------------------------------------------------------------------------- |
@ -82,4 +82,4 @@ autorisations sont définis sur deux niveaux :
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:END _/}

View File

@ -24,94 +24,95 @@ de données Redis peut être ajoutée en tant que gestionnaire de cache.
## Exemple d'utilisation
1. Installez [docker](https://docs.docker.com/get-docker/) et
[docker-compose](https://docs.docker.com/compose/install/)
2. Créez un fichier `docker-compose.yml` avec les éléments suivants :
1. Installez [docker](https://docs.docker.com/get-docker/) et
[docker-compose](https://docs.docker.com/compose/install/)
```yml
version: "3.7"
2. Créez un fichier `docker-compose.yml` avec les éléments suivants :
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
```yml
version: "3.7"
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
volumes:
castopod-media:
castopod-db:
castopod-cache:
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
networks:
castopod-app:
castopod-db:
```
volumes:
castopod-media:
castopod-db:
castopod-cache:
Vous devez adapter certaines variables à vos besoins (p. ex. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` et `CP_ANALYTICS_SALT`).
networks:
castopod-app:
castopod-db:
```
3. Setup a reverse proxy for TLS (SSL/HTTPS)
Vous devez adapter certaines variables à vos besoins (p. ex. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` et `CP_ANALYTICS_SALT`).
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
3. Setup a reverse proxy for TLS (SSL/HTTPS)
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
4. Exécutez `docker-compose up -d`, attendez qu'il s'initialise sur
`https://castopod.example.com/cp-install` pour terminer la configuration de
Castopod !
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
5. Vous êtes prêt, commencez à podcaster! 🎙️🚀
4. Exécutez `docker-compose up -d`, attendez qu'il s'initialise sur
`https://castopod.example.com/cp-install` pour terminer la configuration de
Castopod !
5. Vous êtes prêt, commencez à podcaster! 🎙️🚀
## Environment Variables
- **castopod/castopod** and **castopod/app**
| Nom de la variable | Type (`default`) | Par défaut |
| Variable name | Type (`default`) | Par défaut |
| ------------------------------------- | ----------------------- | ---------------- |
| **`CP_BASEURL`** | string | `undefined` |
| **`CP_MEDIA_BASEURL`** | ?string | `CP_BASEURL` |

View File

@ -8,15 +8,6 @@ Castopod a été pensé pour être facile à installer. Que vous utilisiez un
hébergement dédié ou mutualisé, vous pouvez l'installer sur la plupart des
serveurs web compatibles avec PHP-MySQL.
<Aside>
Nous avons publié des images officielles Docker pour Castopod!
Si vous préférez utiliser Docker, vous pouvez sauter cette partie et aller
directement à la [documentation Docker](./docker.md) pour Castopod.
</Aside>
## Prérequis
- PHP v8.1 or higher
@ -109,7 +100,7 @@ installées :
d'assistant d'installation (`https://votre_domain_name.com/cp-install`) dans
votre navigateur Web favori.
2. Suivez les instructions affichée.
3. Commencer à baladodiffuser!
3. Start podcasting!
<Aside>
@ -122,6 +113,7 @@ le fichier `.env` manuellement en vous appuyant sur le fichier `.env.example`.
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh

View File

@ -38,7 +38,8 @@ corrections de bugs 🐛 et des améliorations de performance ⚡.
<Aside>
Vous devrez peut-être re-définir les autorisations de fichiers comme
effectué durant le processus d'installation. Check
effectué durant le processus d'installation.
Check
[Security Concerns](./security.md).
</Aside>
@ -52,6 +53,7 @@ corrections de bugs 🐛 et des améliorations de performance ⚡.
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
`Housekeeping`
6. ✨Profitez de votre nouvelle instance, vous avez terminé !
<Aside>
@ -60,7 +62,7 @@ Les versions peuvent être accompagnées d'instructions de mise à jour
supplémentaires (cf. la
[page des notes de versions](https://code.castopod.org/adaures/castopod/-/releases)).
- Je n'ai pas mis à jour mon instance depuis longtemps… Que devrais-je faire ?
- [Je n'ai pas mis à jour mon instance depuis longtemps… Que devrais-je faire ?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
</Aside>
@ -78,7 +80,7 @@ bas à gauche.
Vous pouvez également trouver la version dans l'application
`> Configuration > Constantes.php` dossier.
### [Je n'ai pas mis à jour mon instance depuis longtemps… Que devrais-je faire ?](#i-havent-updated-my-instance-in-a-long-time-what-should-i-do)
### Je n'ai pas mis à jour mon instance depuis longtemps… Que devrais-je faire ?
Pas de problème ! Il suffit d'obtenir la dernière version comme décrit
ci-dessus. Lorsque vous exécutez les instructions de mise à jour (4), lancez-les
@ -96,8 +98,9 @@ la `v1.0.0-beta.1`:
1. Téléchargez la dernière version, écrasez vos fichiers tout en conservant
`.env` et `public/media`.
2. Effectuez les instructions de mise à jour l'une après l'autre (de la plus
ancienne à la plus récente).
2. Go through each release update instructions sequentially (from oldest to
newest) starting with `v1.0.0-alpha.43`, `v1.0.0-alpha.44`,
`v1.0.0-alpha.45`, …, `v1.0.0-beta.1`.
3. ✨ Votre nouvelle instance est prête !

File diff suppressed because it is too large Load Diff

View File

@ -12,7 +12,7 @@ coupled with custom rules. Roles and permissions are defined at two levels:
### Instance roles
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| --------------- | --------------------------------------- | ------------------------------------------------------------------------------------------ |
@ -20,11 +20,11 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| Manaidsear | Stiùireadh susbaint Chastopod. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Pod-chraoladair | Luchd-cleachdaidh coitcheann Chastopod. | admin.access |
{/* AUTH-INSTANCE-ROLES-LIST:END */}
{/_ AUTH-INSTANCE-ROLES-LIST:END _/}
### Instance permissions
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ----------------------- | --------------------------------------------------------------------------------------------- |
@ -38,13 +38,13 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| podcasts.import | S urrainn dhaibh pod-chraolaidhean ion-phortadh. |
| fediverse.manage-blocks | S urrainn dhaibh actairean/àrainnean a cho-shaoghail a bhacadh o eadar-ghabhail le Castopod. |
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:END _/}
## 2. Per podcast roles and permissions
### Per podcast roles
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| --------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@ -53,11 +53,11 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| Ùghdar | A stiùireadh susbaint a phod-chraolaidh #\{id\} ach gun chomas foillseachaidh. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Aoigh | Neach-cuideachaidh a phod-chraolaidh #\{id\}. | view, episodes.view |
{/* AUTH-PODCAST-ROLES-LIST:END */}
{/_ AUTH-PODCAST-ROLES-LIST:END _/}
### Per podcast permissions
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
@ -81,4 +81,4 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| episodes.manage-publications | S urrainn dhaibh eapasodan is postaichean a phod-chraolaidh #\{id\} fhoillseachadh/neo-fhoillseachadh. |
| episodes.manage-comments | S urrainn dhaibh beachdan air eapasod a phod-chraolaidh #\{id\} a chruthachadh/a thoirt air falbh. |
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:END _/}

View File

@ -24,87 +24,88 @@ can be added as a cache handler.
## Example usage
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
2. Create a `docker-compose.yml` file with the following:
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
```yml
version: "3.7"
2. Create a `docker-compose.yml` file with the following:
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
```yml
version: "3.7"
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
volumes:
castopod-media:
castopod-db:
castopod-cache:
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
networks:
castopod-app:
castopod-db:
```
volumes:
castopod-media:
castopod-db:
castopod-cache:
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
networks:
castopod-app:
castopod-db:
```
3. Setup a reverse proxy for TLS (SSL/HTTPS)
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
3. Setup a reverse proxy for TLS (SSL/HTTPS)
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
5. You're all set, start podcasting! 🎙️🚀
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
5. You're all set, start podcasting! 🎙️🚀
## Environment Variables

View File

@ -7,15 +7,6 @@ import { Aside } from "@astrojs/starlight/components";
Castopod was thought-out to be easy to install. Whether using dedicated or
shared hosting, you can install it on most PHP-MySQL compatible web servers.
<Aside>
We've released official Docker images for Castopod!
If you prefer using Docker, you may skip this and go straight to the
[docker documentation](./docker.md) for Castopod.
</Aside>
## Requirements
- PHP v8.1 or higher
@ -117,6 +108,7 @@ based on the `.env.example` file.
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh

View File

@ -51,6 +51,7 @@ improvements ⚡.
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
`Housekeeping`
6. ✨ Enjoy your fresh instance, you're all done!
<Aside>

File diff suppressed because it is too large Load Diff

View File

@ -12,7 +12,7 @@ coupled with custom rules. Roles and permissions are defined at two levels:
### Instance roles
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ----------- | ------------------------------------ | ------------------------------------------------------------------------------------------ |
@ -20,11 +20,11 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| Xestora | Quen xestiona o contido de Castopod. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcaster | Usuaria común de Castopod. | admin.access |
{/* AUTH-INSTANCE-ROLES-LIST:END */}
{/_ AUTH-INSTANCE-ROLES-LIST:END _/}
### Instance permissions
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ----------------------- | ------------------------------------------------------------------------------ |
@ -38,13 +38,13 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| podcasts.import | Pode importar podcasts. |
| fediverse.manage-blocks | Pode bloquear actores/dominios do fediverso evitando interactuar con Castopod. |
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:END _/}
## 2. Per podcast roles and permissions
### Per podcast roles
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| --------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@ -53,11 +53,11 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| Autora | Persoa que xestiona o contido do podcast #\{id\} pero non pode publicalo. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Convidada | Contribuínte básico ao podcast #\{id\}. | view, episodes.view |
{/* AUTH-PODCAST-ROLES-LIST:END */}
{/_ AUTH-PODCAST-ROLES-LIST:END _/}
### Per podcast permissions
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ---------------------------- | ----------------------------------------------------------------------------------------- |
@ -81,4 +81,4 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| episodes.manage-publications | Pode publicar/retirar episodios e publicacións do podcast #\{id\}. |
| episodes.manage-comments | Pode crear/eliminar comentarios dos episodios do podcast #\{id\}. |
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:END _/}

View File

@ -24,87 +24,88 @@ can be added as a cache handler.
## Example usage
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
2. Create a `docker-compose.yml` file with the following:
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
```yml
version: "3.7"
2. Create a `docker-compose.yml` file with the following:
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
```yml
version: "3.7"
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
volumes:
castopod-media:
castopod-db:
castopod-cache:
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
networks:
castopod-app:
castopod-db:
```
volumes:
castopod-media:
castopod-db:
castopod-cache:
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
networks:
castopod-app:
castopod-db:
```
3. Setup a reverse proxy for TLS (SSL/HTTPS)
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
3. Setup a reverse proxy for TLS (SSL/HTTPS)
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
5. You're all set, start podcasting! 🎙️🚀
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
5. You're all set, start podcasting! 🎙️🚀
## Environment Variables

View File

@ -7,15 +7,6 @@ import { Aside } from "@astrojs/starlight/components";
Castopod was thought-out to be easy to install. Whether using dedicated or
shared hosting, you can install it on most PHP-MySQL compatible web servers.
<Aside>
We've released official Docker images for Castopod!
If you prefer using Docker, you may skip this and go straight to the
[docker documentation](./docker.md) for Castopod.
</Aside>
## Requirements
- PHP v8.1 or higher
@ -117,6 +108,7 @@ based on the `.env.example` file.
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh

View File

@ -51,6 +51,7 @@ improvements ⚡.
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
`Housekeeping`
6. ✨ Enjoy your fresh instance, you're all done!
<Aside>

File diff suppressed because it is too large Load Diff

View File

@ -12,7 +12,7 @@ coupled with custom rules. Roles and permissions are defined at two levels:
### Instance roles
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
@ -20,11 +20,11 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcaster | General users of Castopod. | admin.access |
{/* AUTH-INSTANCE-ROLES-LIST:END */}
{/_ AUTH-INSTANCE-ROLES-LIST:END _/}
### Instance permissions
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ----------------------- | ------------------------------------------------------------------ |
@ -38,13 +38,13 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| podcasts.import | Can import podcasts. |
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:END _/}
## 2. Per podcast roles and permissions
### Per podcast roles
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@ -53,11 +53,11 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
{/* AUTH-PODCAST-ROLES-LIST:END */}
{/_ AUTH-PODCAST-ROLES-LIST:END _/}
### Per podcast permissions
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ---------------------------- | -------------------------------------------------------------------------- |
@ -81,4 +81,4 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:END _/}

View File

@ -24,87 +24,88 @@ can be added as a cache handler.
## Example usage
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
2. Create a `docker-compose.yml` file with the following:
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
```yml
version: "3.7"
2. Create a `docker-compose.yml` file with the following:
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
```yml
version: "3.7"
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
volumes:
castopod-media:
castopod-db:
castopod-cache:
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
networks:
castopod-app:
castopod-db:
```
volumes:
castopod-media:
castopod-db:
castopod-cache:
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
networks:
castopod-app:
castopod-db:
```
3. Setup a reverse proxy for TLS (SSL/HTTPS)
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
3. Setup a reverse proxy for TLS (SSL/HTTPS)
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
5. You're all set, start podcasting! 🎙️🚀
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
5. You're all set, start podcasting! 🎙️🚀
## Environment Variables

View File

@ -7,15 +7,6 @@ import { Aside } from "@astrojs/starlight/components";
Castopod was thought-out to be easy to install. Whether using dedicated or
shared hosting, you can install it on most PHP-MySQL compatible web servers.
<Aside>
We've released official Docker images for Castopod!
If you prefer using Docker, you may skip this and go straight to the
[docker documentation](./docker.md) for Castopod.
</Aside>
## Requirements
- PHP v8.1 or higher
@ -117,6 +108,7 @@ based on the `.env.example` file.
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh

View File

@ -51,6 +51,7 @@ improvements ⚡.
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
`Housekeeping`
6. ✨ Enjoy your fresh instance, you're all done!
<Aside>

File diff suppressed because it is too large Load Diff

View File

@ -11,9 +11,9 @@ definiti a due livelli:
## 1. Ruoli e permessi per l'intera istanza
### Ruoli dell'istanza
### Instance roles
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
@ -21,11 +21,11 @@ definiti a due livelli:
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcaster | General users of Castopod. | admin.access |
{/* AUTH-INSTANCE-ROLES-LIST:END */}
{/_ AUTH-INSTANCE-ROLES-LIST:END _/}
### Permessi istanza
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ----------------------- | ------------------------------------------------------------------ |
@ -39,13 +39,13 @@ definiti a due livelli:
| podcasts.import | Can import podcasts. |
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:END _/}
## 2. Per i ruoli e le autorizzazioni del podcast
### Per i ruoli del podcast
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@ -54,11 +54,11 @@ definiti a due livelli:
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
{/* AUTH-PODCAST-ROLES-LIST:END */}
{/_ AUTH-PODCAST-ROLES-LIST:END _/}
### Autorizzazioni per podcast
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ---------------------------- | -------------------------------------------------------------------------- |
@ -82,4 +82,4 @@ definiti a due livelli:
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:END _/}

View File

@ -24,87 +24,88 @@ can be added as a cache handler.
## Example usage
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
2. Create a `docker-compose.yml` file with the following:
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
```yml
version: "3.7"
2. Create a `docker-compose.yml` file with the following:
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
```yml
version: "3.7"
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
volumes:
castopod-media:
castopod-db:
castopod-cache:
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
networks:
castopod-app:
castopod-db:
```
volumes:
castopod-media:
castopod-db:
castopod-cache:
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
networks:
castopod-app:
castopod-db:
```
3. Setup a reverse proxy for TLS (SSL/HTTPS)
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
3. Setup a reverse proxy for TLS (SSL/HTTPS)
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
5. You're all set, start podcasting! 🎙️🚀
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
5. You're all set, start podcasting! 🎙️🚀
## Environment Variables

View File

@ -7,15 +7,6 @@ import { Aside } from "@astrojs/starlight/components";
Castopod was thought-out to be easy to install. Whether using dedicated or
shared hosting, you can install it on most PHP-MySQL compatible web servers.
<Aside>
We've released official Docker images for Castopod!
If you prefer using Docker, you may skip this and go straight to the
[docker documentation](./docker.md) for Castopod.
</Aside>
## Requirements
- PHP v8.1 or higher
@ -117,6 +108,7 @@ based on the `.env.example` file.
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh

View File

@ -51,6 +51,7 @@ improvements ⚡.
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
`Housekeeping`
6. ✨ Enjoy your fresh instance, you're all done!
<Aside>

File diff suppressed because it is too large Load Diff

View File

@ -12,7 +12,7 @@ coupled with custom rules. Roles and permissions are defined at two levels:
### Instance roles
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ----------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
@ -20,11 +20,11 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| Manager | Manages Castopod's content. | podcasts.create, podcasts.import, persons.manage, pages.manage |
| Podcaster | General users of Castopod. | admin.access |
{/* AUTH-INSTANCE-ROLES-LIST:END */}
{/_ AUTH-INSTANCE-ROLES-LIST:END _/}
### Instance permissions
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ----------------------- | ------------------------------------------------------------------ |
@ -38,13 +38,13 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| podcasts.import | Can import podcasts. |
| fediverse.manage-blocks | Can block fediverse actors/domains from interacting with Castopod. |
{/* AUTH-INSTANCE-PERMISSIONS-LIST:END */}
{/_ AUTH-INSTANCE-PERMISSIONS-LIST:END _/}
## 2. Per podcast roles and permissions
### Per podcast roles
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section _/}
| role | description | permissions |
| ------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@ -53,11 +53,11 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| Author | Manages content of podcast #\{id\} but cannot publish them. | view, manage-persons, episodes.view, episodes.create, episodes.edit, episodes.manage-persons, episodes.manage-clips |
| Guest | General contributor of the podcast #\{id\}. | view, episodes.view |
{/* AUTH-PODCAST-ROLES-LIST:END */}
{/_ AUTH-PODCAST-ROLES-LIST:END _/}
### Per podcast permissions
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section _/}
| permission | description |
| ---------------------------- | -------------------------------------------------------------------------- |
@ -81,4 +81,4 @@ coupled with custom rules. Roles and permissions are defined at two levels:
| episodes.manage-publications | Can publish/unpublish episodes and posts of podcast #\{id\}. |
| episodes.manage-comments | Can create/remove episode comments of podcast #\{id\}. |
{/* AUTH-PODCAST-PERMISSIONS-LIST:END */}
{/_ AUTH-PODCAST-PERMISSIONS-LIST:END _/}

View File

@ -24,87 +24,88 @@ can be added as a cache handler.
## Example usage
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
2. Create a `docker-compose.yml` file with the following:
1. Install [docker](https://docs.docker.com/get-docker/) and
[docker-compose](https://docs.docker.com/compose/install/)
```yml
version: "3.7"
2. Create a `docker-compose.yml` file with the following:
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
```yml
version: "3.7"
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
services:
app:
image: castopod/castopod:latest
container_name: "castopod-app"
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
CP_BASEURL: "https://castopod.example.com"
CP_ANALYTICS_SALT: changeme
CP_CACHE_HANDLER: redis
CP_REDIS_HOST: redis
CP_REDIS_PASSWORD: changeme
networks:
- castopod-app
- castopod-db
ports:
- 8000:8000
restart: unless-stopped
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
mariadb:
image: mariadb:10.5
container_name: "castopod-mariadb"
networks:
- castopod-db
volumes:
- castopod-db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: changeme
MYSQL_DATABASE: castopod
MYSQL_USER: castopod
MYSQL_PASSWORD: changeme
restart: unless-stopped
volumes:
castopod-media:
castopod-db:
castopod-cache:
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
networks:
castopod-app:
castopod-db:
```
volumes:
castopod-media:
castopod-db:
castopod-cache:
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
networks:
castopod-app:
castopod-db:
```
3. Setup a reverse proxy for TLS (SSL/HTTPS)
You have to adapt some variables to your needs (e.g. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` and `CP_ANALYTICS_SALT`).
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
3. Setup a reverse proxy for TLS (SSL/HTTPS)
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
TLS is mandatory for ActivityPub to work. This job can easily be handled by
a reverse proxy, for example with [Caddy](https://caddyserver.com/):
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
5. You're all set, start podcasting! 🎙️🚀
4. Run `docker-compose up -d`, wait for it to initialize and head on to
`https://castopod.example.com/cp-install` to finish setting up Castopod!
5. You're all set, start podcasting! 🎙️🚀
## Environment Variables

View File

@ -7,15 +7,6 @@ import { Aside } from "@astrojs/starlight/components";
Castopod was thought-out to be easy to install. Whether using dedicated or
shared hosting, you can install it on most PHP-MySQL compatible web servers.
<Aside>
We've released official Docker images for Castopod!
If you prefer using Docker, you may skip this and go straight to the
[docker documentation](./docker.md) for Castopod.
</Aside>
## Requirements
- PHP v8.1 or higher
@ -45,14 +36,6 @@ Additionally, make sure that the following extensions are enabled in your PHP:
> We recommend using [MariaDB](https://mariadb.org).
<Aside type="caution">
Castopod only works with supported MySQL 5.7 or higher compatible databases. It
will break with the previous MySQL v5.6 for example as its end of life was on
February 5, 2021.
</Aside>
You will need the server hostname, database name, username and password to
complete the installation process. If you do not have these, please contact your
server administrator.
@ -125,6 +108,7 @@ based on the `.env.example` file.
### Using CLI
1. Create a `.env` file in the package root based on the `.env.example` file.
2. Initialize the database using:
```sh

View File

@ -51,6 +51,7 @@ improvements ⚡.
5. Clear your cache from your `Castopod Admin` > `Settings` > `general` >
`Housekeeping`
6. ✨ Enjoy your fresh instance, you're all done!
<Aside>

Some files were not shown because too many files have changed in this diff Show More