Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • alpha
  • beta
  • develop
  • docs/fix-readme
  • docs/update-vitepress
  • draft/rss-feed
  • feat/dashboard
  • feat/episodes-page-ux
  • feat/generator-user-agent
  • feat/headliner
  • feat/new-languages
  • feat/plugins
  • fix/federation
  • fix/forms-ux
  • i18n
  • main
  • next
  • refactor/transcripts
  • v1.0.0
  • v1.0.0-alpha.1
  • v1.0.0-alpha.10
  • v1.0.0-alpha.11
  • v1.0.0-alpha.12
  • v1.0.0-alpha.13
  • v1.0.0-alpha.14
  • v1.0.0-alpha.15
  • v1.0.0-alpha.16
  • v1.0.0-alpha.17
  • v1.0.0-alpha.18
  • v1.0.0-alpha.19
  • v1.0.0-alpha.2
  • v1.0.0-alpha.20
  • v1.0.0-alpha.21
  • v1.0.0-alpha.22
  • v1.0.0-alpha.23
  • v1.0.0-alpha.24
  • v1.0.0-alpha.25
  • v1.0.0-alpha.26
  • v1.0.0-alpha.27
  • v1.0.0-alpha.28
  • v1.0.0-alpha.29
  • v1.0.0-alpha.3
  • v1.0.0-alpha.30
  • v1.0.0-alpha.31
  • v1.0.0-alpha.32
  • v1.0.0-alpha.33
  • v1.0.0-alpha.34
  • v1.0.0-alpha.35
  • v1.0.0-alpha.36
  • v1.0.0-alpha.37
  • v1.0.0-alpha.38
  • v1.0.0-alpha.39
  • v1.0.0-alpha.4
  • v1.0.0-alpha.40
  • v1.0.0-alpha.41
  • v1.0.0-alpha.42
  • v1.0.0-alpha.43
  • v1.0.0-alpha.44
  • v1.0.0-alpha.45
  • v1.0.0-alpha.46
  • v1.0.0-alpha.47
  • v1.0.0-alpha.48
  • v1.0.0-alpha.49
  • v1.0.0-alpha.5
  • v1.0.0-alpha.50
  • v1.0.0-alpha.51
  • v1.0.0-alpha.52
  • v1.0.0-alpha.53
  • v1.0.0-alpha.54
  • v1.0.0-alpha.55
  • v1.0.0-alpha.56
  • v1.0.0-alpha.57
  • v1.0.0-alpha.58
  • v1.0.0-alpha.59
  • v1.0.0-alpha.6
  • v1.0.0-alpha.60
  • v1.0.0-alpha.61
  • v1.0.0-alpha.62
  • v1.0.0-alpha.63
  • v1.0.0-alpha.64
  • v1.0.0-alpha.65
  • v1.0.0-alpha.66
  • v1.0.0-alpha.67
  • v1.0.0-alpha.68
  • v1.0.0-alpha.69
  • v1.0.0-alpha.7
  • v1.0.0-alpha.70
  • v1.0.0-alpha.71
  • v1.0.0-alpha.72
  • v1.0.0-alpha.73
  • v1.0.0-alpha.74
  • v1.0.0-alpha.75
  • v1.0.0-alpha.76
  • v1.0.0-alpha.77
  • v1.0.0-alpha.78
  • v1.0.0-alpha.79
  • v1.0.0-alpha.8
  • v1.0.0-alpha.80
  • v1.0.0-alpha.9
  • v1.0.0-beta.1
  • v1.0.0-beta.10
  • v1.0.0-beta.11
  • v1.0.0-beta.12
  • v1.0.0-beta.13
  • v1.0.0-beta.14
  • v1.0.0-beta.15
  • v1.0.0-beta.16
  • v1.0.0-beta.17
  • v1.0.0-beta.18
  • v1.0.0-beta.19
  • v1.0.0-beta.2
  • v1.0.0-beta.20
  • v1.0.0-beta.21
  • v1.0.0-beta.22
  • v1.0.0-beta.23
  • v1.0.0-beta.24
  • v1.0.0-beta.3
  • v1.0.0-beta.4
118 results

Target

Select target project
  • adaures/castopod
  • mkljczk/castopod-host
  • spaetz/castopod-host
  • PatrykMis/castopod
  • jonas/castopod
  • ajeremias/castopod
  • misuzu/castopod
  • KrzysztofDomanczyk/castopod
  • Behel/castopod
  • nebulon/castopod
  • ewen/castopod
  • NeoluxConsulting/castopod
  • nateritter/castopod-og
  • prcutler/castopod
14 results
Select Git revision
  • alpha
  • beta
  • develop
  • docs/update-vitepress
  • feat/dashboard
  • feat/op3
  • i18n
  • main
  • v1.0.0
  • v1.0.0-alpha.1
  • v1.0.0-alpha.10
  • v1.0.0-alpha.11
  • v1.0.0-alpha.12
  • v1.0.0-alpha.13
  • v1.0.0-alpha.14
  • v1.0.0-alpha.15
  • v1.0.0-alpha.16
  • v1.0.0-alpha.17
  • v1.0.0-alpha.18
  • v1.0.0-alpha.19
  • v1.0.0-alpha.2
  • v1.0.0-alpha.20
  • v1.0.0-alpha.21
  • v1.0.0-alpha.22
  • v1.0.0-alpha.23
  • v1.0.0-alpha.24
  • v1.0.0-alpha.25
  • v1.0.0-alpha.26
  • v1.0.0-alpha.27
  • v1.0.0-alpha.28
  • v1.0.0-alpha.29
  • v1.0.0-alpha.3
  • v1.0.0-alpha.30
  • v1.0.0-alpha.31
  • v1.0.0-alpha.32
  • v1.0.0-alpha.33
  • v1.0.0-alpha.34
  • v1.0.0-alpha.35
  • v1.0.0-alpha.36
  • v1.0.0-alpha.37
  • v1.0.0-alpha.38
  • v1.0.0-alpha.39
  • v1.0.0-alpha.4
  • v1.0.0-alpha.40
  • v1.0.0-alpha.41
  • v1.0.0-alpha.42
  • v1.0.0-alpha.43
  • v1.0.0-alpha.44
  • v1.0.0-alpha.45
  • v1.0.0-alpha.46
  • v1.0.0-alpha.47
  • v1.0.0-alpha.48
  • v1.0.0-alpha.49
  • v1.0.0-alpha.5
  • v1.0.0-alpha.50
  • v1.0.0-alpha.51
  • v1.0.0-alpha.52
  • v1.0.0-alpha.53
  • v1.0.0-alpha.54
  • v1.0.0-alpha.55
  • v1.0.0-alpha.56
  • v1.0.0-alpha.57
  • v1.0.0-alpha.58
  • v1.0.0-alpha.59
  • v1.0.0-alpha.6
  • v1.0.0-alpha.60
  • v1.0.0-alpha.61
  • v1.0.0-alpha.62
  • v1.0.0-alpha.63
  • v1.0.0-alpha.64
  • v1.0.0-alpha.65
  • v1.0.0-alpha.66
  • v1.0.0-alpha.67
  • v1.0.0-alpha.68
  • v1.0.0-alpha.69
  • v1.0.0-alpha.7
  • v1.0.0-alpha.70
  • v1.0.0-alpha.71
  • v1.0.0-alpha.72
  • v1.0.0-alpha.73
  • v1.0.0-alpha.74
  • v1.0.0-alpha.75
  • v1.0.0-alpha.76
  • v1.0.0-alpha.77
  • v1.0.0-alpha.78
  • v1.0.0-alpha.79
  • v1.0.0-alpha.8
  • v1.0.0-alpha.80
  • v1.0.0-alpha.9
  • v1.0.0-beta.1
  • v1.0.0-beta.10
  • v1.0.0-beta.11
  • v1.0.0-beta.12
  • v1.0.0-beta.13
  • v1.0.0-beta.14
  • v1.0.0-beta.15
  • v1.0.0-beta.16
  • v1.0.0-beta.17
  • v1.0.0-beta.18
  • v1.0.0-beta.19
  • v1.0.0-beta.2
  • v1.0.0-beta.20
  • v1.0.0-beta.21
  • v1.0.0-beta.22
  • v1.0.0-beta.23
  • v1.0.0-beta.24
  • v1.0.0-beta.3
  • v1.0.0-beta.4
108 results
Show changes
Showing
with 1494 additions and 0 deletions
---
title: Welcome to the Castopod User Guide
---
import { LinkCard, CardGrid } from "@astrojs/starlight/components";
Welcome to the Castopod User Guide. This guide is divided into three parts:
<CardGrid>
<LinkCard title="Managing your instance" href="instance" />
<LinkCard title="Managing your podcasts" href="podcast" />
<LinkCard title="Website overview" href="website" />
</CardGrid>
---
title: Fediverse
---
## What is the Fediverse?
Wikipedia defines the Fediverse as:
> The fediverse is a collection of social networking services that can
> communicate with each other using a common protocol, ActivityPub. Users of
> different websites can send and receive status updates, multimedia files and
> other data across the network.
Your podcast is connected to the Fediverse and, for example, Mastodon users can
subscribe to your handle and will receive a message every time your podcast
publishes a new episode. You can also broadcast messages to your followers on
the Fediverse from your [home page](../website#home). Mastodon users can like
and share your posts.
## Manage Fediverse Blocks
You can block a Fediverse user or an entire domain to help stop harassment or
spam.
### Blocked Accounts
To block a specific Fediverse user, enter the user's handle in the **Account
Handle** text box. It should be in the format of `@user@domain.com`. Press
`Block` to block the user from following your podcast.
A list of all blocked accounts is shown below the **Account Handle** text box.
You can choose to unblock a user by pressing the `Unblock` button.
### Blocked Domains
To block an entire domain, enter the domain name such as `www.example.com` in
the **Domain Name** field and press `Block`.
A list of all blocked domains is shown below the **Domain Name** text box. You
can choose to unblock a domain by pressing the `Unblock` button.
---
title: Managing your instance
---
import { LinkCard, CardGrid } from "@astrojs/starlight/components";
## What is an instance?
Your podcast is hosted on your sever and connected to the [Fediverse](fediverse)
in what is called an _instance_. Your instance can manage multiple podcasts,
people and users, and host additional pages found on all of your podcasts.
Managing your instance, including podcasts, people, and users is separate from
the settings for each individual podcast.
## Ready to get started?
Learn more about adding podcasts, users, and more by clicking one of the links
below.
<CardGrid>
<LinkCard title="Create or import a podcast" href="podcast" />
<LinkCard
title="Manage the people involved with your podcast"
href="persons"
/>
<LinkCard title="Manage Fediverse integration" href="fediverse" />
<LinkCard
title="Manage users who can access the admin interface"
href="users"
/>
<LinkCard title="Add additional web pages" href="pages" />
<LinkCard title="Manage settings" href="settings" />
</CardGrid>
---
title: Pages
---
## Add Pages
You can add static pages linked from your podcast's home page. From the left
hand navigation, choose the `+` sign or click `Pages` -> `New Page`.
### Title
In the **Title** text box, enter the name for the page you are adding.
### Permalink
In the `Permalink` text box, enter the permalink if you want it different than
the title.
### Content
You can add your page content in the **Content** text box. You can use Markdown
to style your text.
When finished, press the `Create page` button. You can view your page from your
podcast's home page. It will be linked in the right hand side bar navigation.
## Delete or Edit a Page
After adding a page, you can delete the page or edit it by choosing `Pages` ->
`All Pages` from the instance navigation sidebar on the left. Press the
corresponding button to view the page, edit it, or delete it.
---
title: Manage Podcast contributors
---
The **Persons** section allows you to add podcast contributors. It is needed in
the Podcast section to assign roles and is also used on the **Credits** page
linked from your podcast's homepage.
From the left hand navigation, press `Persons` to expand the menu. To view a
list of all people that have been added to Castopod, press `All Persons`.
## Add a person
To add a person, press `New Person` from the left hand sidebar or press
`Create a person` from the upper right hand corner of the **All Persons** page
and fill out the following fields:
- **Avatar**: You can optionally add a picture or avatar of the person. Press
`Choose File` and upload a picture from your computer. It must be at least
400px wide and tall.
- **Full Name**: Enter the name as you want it displayed on your website.
- **Unique Name**: Enter a unique username for the person you are adding. This
will be displayed in the Podcasts secton when assigning this person a role.
- **Information URL**: Enter a URL for the person's homepage, profile, or social
media account to be linked from the [Credits page](../website/credits).
---
title: Create or import a podcast
---
import { Aside } from "@astrojs/starlight/components";
You can create a new podcast or import an existing podcast into Castopod in the
Podcasts section. If you are adding a second podcast to Castopod, see the
[Home page documentation](../website#home-page) for how that will change your
home page.
From the left hand navigation sidebar, press the `+` sign to the right of
Podcasts to create your first podcast.
## Podcast Identity
### Podcast Cover
To upload your podcast cover art, press the `Choose File` button and choose your
cover art from your computer. The cover art needs to be in JPG or PNG format and
a minimum of 1400px wide and tall with a maximum of 3000px wide and tall.
### Title
Enter the name of your podcast in the **Title** field.
### Description
Describe what your podcast is about. You can use Markdown to style the text and
you can resize the text box by pressing and holding the bottom right hand corner
of the text box.
### Type
Choose how your listeners should listen to your podcast. **Episodic** lets
listeners know they can consume your podcast in any order, such as an interview
podcast. Choose **Serial** if your episodes are meant to be listened to in
sequential order.
### Medium
Choose the type of audio for your podcast:
- **Podcast**: a standard podcast.
- **Music**: A feed of music organized into an "album" with each item a song
within the album.
- **Audiobook**: A specific type of audio with one item per feed, or where items
represent chapters within a book.
## Classification
### Language
From the dropdown menu, choose which language is spoken in your podcast.
### Category
Choose the category that represents your podcast, such as Arts, Comedy,
Technology, etc.
### Other categories (optional)
You can choose a second category in addition to the main category you set up.
### Parental advisory
Choose if your podcast has explicit content or swearing or choose Clean if your
podcast is suitable for everyone. You can also choose to leave this category as
undefined. When [creating a new episode](../podcast/episodes), you will also
have the opportunity to choose clean, explicit, or undefined on a per episode
basis.
## Author
### Owner name and email
Enter the owner name and email in the provided fields. This is only visible in
the RSS feed and is used by other podcasting platforms to verify your ownership
of your podcast. You can choose to remove the owner email from the public RSS
feed by using the provided toggle.
### Publisher
If your podcast is part of a podcast network or is produced by a company, enter
the publisher here.
### Copyright
You can optionally add the copyright holder in this field.
### Fediverse identity
Enter the handle (or nickname) for your podcast. This will allow people on
Mastodon and other Fediverse services to follow your podcast. Your handle will
be shown as @yourdomain.com@handle on the Fediverse.
To learn more about Fediverse integration, visit the
[Fediverse documentation page](../instance/fediverse).
### Podcast banner
Upload a banner image to be displayed at the top of your podcast's home page.
The banner must have a 3:1 ratio and be at least 1500px wide.
### Premium
Toggle this setting to set all episodes by default as premium. When creating an
episode, it will default to premium, and you can still choose to make some
episodes, trailers, or bonus content as free and public.
## Open Podcast Prefix Project (OP3)
The [Open Podcast Prefix Project](https://op3.dev) is an open source and trusted
third party analytics service. If you toggle this to enabled, you will be able
to view analytics for your podcast over time including the number of listens
over time, episode comparison charts, and more.
## Location
You can optionally add a real or fictitious location name in this field. When
[creating a new episode](../podcast/episodes) you also can add a location to an
individual episode.
## Advanced Parameters
You can optinally toggle the following settings:
- **Prevent podcast from being copied**: this locks your podcast and does not
allow other podcast platforms to import your podcast. If you decide in the
future to migrate away from Castopod to a new platform, this toggle will need
to be unchecked.
- **Podcast should be hidden from public catalogues**: If toggled, a best effort
is made to hide the entire podcast from appearing in Apple Podcasts, YouTube
Music, and any other third party podcast apps. (Not guaranteed)
- **Podcast will not be having new episodes**: If your podcast comes to an end,
you can toggle this to let listeners know there will not be new episodes.
## Import an existing podcast
When importing a podcast, make sure you own the rights for this podcast before
importing it. Copying and broadcasting a podcast without the proper rights is
piracy and is liable to prosecution.
### Import the podcast
To import a podcast, enter the podcast's **Feed URL**. The feed must be in XML
or RSS format. You may want to validate the feed to make sure there are no
errors in the RSS or XML feed prior to importing as errors may cause the import
to fail. One popular feed validator is
[Cast Feed Validator](https://www.castfeedvalidator.com) from Blubrry
Podcasting.
### Podcast information
Enter the handle for your podcast. This will be part of the URL for others to
interact with your podcast on the Fediverse. It will be
yourdomain.com@nameofyourpodcast.
Choose the language your podcast is recorded in from the drop down box.
Lastly, choose the Category of your podcast, such as Sports, Technology, Arts,
etc.
When complete, click Add import to queue. You will then be redirected to a
Podcast imports page to view the status of the import. You can refresh the page
to see the status of the import including the import duration and how many
episodes were imported when complete.
<Aside>
If your import times out, check your `max_execution_time` in your `PHP.ini`
file. You may need to increase it from 30 seconds (the default) to add more
time, such as 300 seconds (5 minutes) for larger podcasts.
</Aside>
---
title: Settings
---
To change or update the settings for your instance, choose `Settings` from the
left hand navigation.
## General settings
### Instance
#### Site Name
Update the name of your instance in the `Site name` text field.
#### Site Description
Update description of your instance in the `Site description` text box.
#### Site icon
You can upload a site icon, also known as a favicon, by pressing `Choose file`.
Site icons are what you see on your browser tabs, bookmarks, and shortcuts on
mobile devices. The image must be at least 500px tall and wide.
### Images
If you come across broken or missing images on your site, press
`Regenerate images`. This process may take time.
### Housekeeping
You can run various tasks for your instance:
- **Reset counts**: This will reset and recalculate counts for followers, posts,
and comments.
- **Rename episode files**: This option renames all episodes files to a random
name. If one of your private episodes leaks, toggle this setting to
effectively hide the episode.
- **Clear all cache**: This option will flush the Redis cache or writable /
cache files.
## Theme
You can choose one of six accent colors for your public pages.
## About
This shows general information about your instance including:
- Host name (typically your domain name)
- Castopod version
- PHP version
- Operating System
- Available languages
---
title: Users
---
Roles and permissions in Castopod are defined in two ways, **Instance** users
and [**Podcast**. contributors](../podcast/contributors). For a detailed list of
permissions, view the [Auth](../../getting-started/auth) page.
## Adding a User to the instance
You can add a user to your instance by choosing `Users` -> `New User` from the
left hand navigation menu. There are three roles you can assign to an instance
user:
- **Super Admin**: This user has complete control over Castopod including adding
or removing podcasts or users.
- **Manager**: This user can manage Castopod's content, such as adding or
importing a new podcast and managing people.
- **Podcaster**: This is for general users of Castopod who can access the admin
interface.
---
title: Analytics
---
Castopod comes with a number of different analytics and statistics about your
podcast(s). From the left hand navigation, choose `Analytics` to view the
various options.
## Audience overview
This page provides an overview of your episode's daily downloads, monthly
downloads, and daily bandwidth used.
## Unique listeners
View graphs of the number of daily and monthly users of your podcast. Use the
zoom function at the top of each graph to zoom in or out.
## Listening time
View graphs of your listener's daily and monthly cumulative listening time. Use
the zoom function at the top of each graph to zoom in or out.
## Players
This page provides four pie charts to view statistics for the last week:
- Episode downloads by player
- Episode downloads by service
- Episode downloads by device
- Episode downloads by operating system
You can hover over each graph and press the three dots to download statistics
for the graph you are hovering over. You can interact with the graphs to
download or print:
- Image (PNG, JPG, SVG, or PDF)
- Data (JSON, CSV, XLSX, HTML, or PDF)
- Print
## Locations
You can view where your listeners are located by choosing _Locations_. Two pie
charts are available showing episode downloads by country for the past week and
past year. At the bottom of the page, you can view a world map showing your
listener's locations.
## Time periods
Two bar graphs displaying the week day and time of day your listeners listen to
your podcsat.
## Web pages visits
You can view four pie charts showing information about web page visits:
- Web page visits by source (for the past week)
- Web page visits by source (for the past year)
- Web page visits by landing page
- Web page visits by browser
---
title: Broadcast your podcast
---
## Add your podcast to podcast directories
Listeners can add your RSS feed to their podcast app of choice to subscribe to
your podcast. Most listeners will find your podcast in a podcast directory, such
as Apple Podcasts, YouTube Music, Spotify, or the Podcast Index. These four are
the most popular podcast directories and a number of other directories pull
their data from Apple Podcasts.
Visit [Podnews](https://podnews.net/article/all-the-podcast-directories) to
learn how to add your podcast to most of the podcast directories.
Once your podcast is listed in the podcast directories, you can link to them on
your home page by choosing `Broadcast` from the left hand navigation.
### Podcasting Apps
Castopod provides the ability to link to a majority of podcast directories where
users can find your podcast. For each directory listed fill out the link to your
podcast in a specific directory and the ID. If you want an icon displayed on
your home page, toggle `Display in podcast homepage?`.
After pressing `Save` in the upper right hand corner, visit your home page to
see the icons with hyperlinks on the right hand side of your home page under
_Listen on_.
### Social Networks
If your podcast has a presence on social networks, Castopod provides the ability
to link to your social network profiles. Add the link to your profile page in
the text field and toggle if you want it displayed on your home page.
After pressing `Save` in the upper right hand corner, visit your home page to
see the icons with hyperlinks on the right hand side of your home page under
_Find your podcast on_.
---
title: Contributors
---
From the podcast dashboard, click **Contributors** to add or edit users to have
access to the podcast and its settings. For a detailed list of permissions, view
the [Auth](../../getting-started/auth) page.
## Roles
There are four roles you can assign a person to help manage your podcast.
### Admin
The admin user has complete control over the individual podcast.
### Editor
The editor has access to management functions including podcast import, managing
persons, creating or deleting episodes, and managing clips.
### Author
The autorh can manage content of the podcast, but cannot publish an episode.
They can manage [contributors](contributors), create clips, and create episodes.
### Guest
The guest can view the podcast dashboard and view episodes. They cannot edit or
add any content.
---
title: Podcast Dashboard
---
When you choose your podcast from the Admin dashboard you will be redirected to
the Podcast dashboard page.
The Podcast dashboard shows you up to five of the latest episodes, both those
published and scheduled. You can click on any of these episodes to view them or
click `See all episodes` to see a list of every episode.
## Edit your podcast
To edit your podcast, press `Edit podcast` in the upper right hand corner or
`Edit podcast` in the left hand side navigation.
You can edit any of the
[fields you filled out when creating your podcast](../instance/podcast).
When finished press the `Save podcast` button in the upper right hand corner.
You can also choose to delete your podcast by pressing `Delete podcast` at the
bottom of the Edit podcast page.
## Manage persons
If you have added people to Persons in the Admin dashboard, you can assign them
a role here. People assigned roles will show up on the
[Credits page](../website/credits) linked from your home page to give them
credit for contributing to the podcast.
Roles include Administration, Audio production, cast, guests, hosts, writing,
and more.
From the **Persons** drop down, choose the person you want to add. Then choose a
role from the \*_Roles_ drop down and press `Add person(s)`.
A list of all people assigned roles will be displayed. You can remove them by
pressing the `Remove` button.
Adding persons to your podcast populates the Credits page linked from your
[home page](../website).
## Podcast imports
Podcast imports show you the status of a feed that you imported into Castopod,
including the feed name, how long the import took, and how many episodes were
imported. Under **Actions** you can try re-import the feed if the original
import failed or delete the status message for the imported feed.
If the feed you imported has been updated after your import, press
`Synchronize Feeds` in the upper right hand corner to import the missing
episodes.
## Sync feeds
You can also synchronize missing episode from an imported feed by choosing
`Sync Feeds` from the Podcast dashboard menu. The **Feed URL** should
auto-populate if you have previously imported a feed. Press `Add to queue` to
import any missing episodes from the feed.
---
title: Episodes
---
import { Aside } from "@astrojs/starlight/components";
From the left hand navigation, click **Episodes** and the menu will expand to
**All Episodes** and **New Episode**.
## All Episodes
To view a list of all episodes, click `All Episodes`. Each episode will be
displayed in a list with its name and notes, Visibility such as published or
scheduled, and how many downloads and comments each episode has.
### Actions and the Episode Dashboard
Click the three dots under **Actions** to view a menu of options for an episode
or click on an individual episode to view the available actions:
- **Go to page**: This will redirect you to the public page of the episode and
display the show notes.
- **Edit**: This allows you to change the fields you filled when creating the
episode (see below).
### Embeddable player
Choose a theme color and press the copy button to the right of the text box to
copy the code to your clipboard. Insert the code into a web page to display the
episode.
### Persons
If you have added people in the Admin interface, you can choose a person and
assign them a role, such as guest, for a given episode.
### Video clips and Soundbites
The process to create a video clip and soundbite is the same. It may take a
minute for the file to load and you will see the waveform.
A video clip will create an MP4 video of the audio with text from the transcript
matched to the audio. A soundbite will create an audio clip.
Enter the name of the clip you want to create. Then drag the slider to where you
want to start and end your video clip or soundbite. You can press the `Play`
button to preview your clip.
For video clips, choose a format, including Landscape, Portrait or Squared and a
background theme color.
Then press the `Create` button, you will be redirected to a status page
displaying the status of creating the clip. Refresh the page to see if it's
`Running` or completed. You may need to be patient depending on the length of
the clip.
<Aside>
To create video clips and soundbites, your server must have `FFMPEG` installed
and a transcript.
</Aside>
## Create episode
To add an episode, press the `Add an episode button` in the upper right hand
corner of the Episode dashboard or click `New episode` in the left hand
navigation under `Episodes`.
### Episode Info
#### Audio file
Press the `Choose File` button to select the audio file to upload to Castopod.
The audio file must be an mp3 or m4a file and cannot be larger than 512
megabytes.
### Episode cover
You can optionally add a different podcast cover / artwork. Press `Choose File`
and select an image from your computer that must be at least 1400px wide and
tall and no larger than 3000px wide and tall. If you do not choose an episode
cover, your default podcast artwork will be used.
#### Title
Enter the name for your new episode. Do not add the season or episode number in
the **Title** field. Choose a clear and concise episode name to help your
listeners.
#### Permalink
The permalink is the link to the public episode page. This will be automatically
filled out based on the title you entered above. If you wish to have a different
permalink, press the edit button to the right of the displayed permalink.
#### Season and Episode
You can optionally add a season and / or episode number to your episode. If you
are adding a new episode and a previous episode had a season and /or episode
number, the field(s) will be auto filled for you. You can leave it or update
with a different season and / or episode number.
### Show Notes
Describe your episode in detail. You can use up to 4000 characters, and you can
use Markdown to style your show notes. You can expand the text box by pressing
and holding the bottom right corner of the text box.
When your show notes are complete, press `Preview` to view how your show notes
will be displayed.
### Additional Files
#### Transcripts
You can add a transcript to your episode by choosing a file in SRT or VTT format
to upload. Transcripts will be shown in a tab on the episode page and some
podcast apps such as Apple Podcasts can display the transcript.
Transcripts help users who may have a hearing disability and can also help with
search engine optimization.
#### Chapters
You can optionally upload a chapters file in JSON format. To learn more about
chapters and for an example of the correct format, visit the
[Podcast Namespace](https://github.com/Podcastindex-org/podcast-namespace/blob/main/chapters/jsonChapters.md).
:::note Not all podcast players natively support chapters in JSON format. More
modern players, such as Fountain and Apple Podcasts, do support chapters in JSON
format. Chapters do not allow you to click to select the chapter in Castopod's
embeddable player at this time. :::
### Publish your episode
When complete, press the `Create episode` button at the bottom of the page. You
will be automatically directed to the next step to publish your episode. Your
episode is in draft mode and is not yet published. You can preview how your
episode will look when published or publish your episode. To publish your
episode, press the `Publish` button in the upper right hand corner.
### Create your announcement post
After pressing `Publish` you will be directed to the next page to draft your
announcement post. Write your message in the text box provided. This will be the
message broadcast to the Fediverse and published on your podcast's home page.
### Publication date
Choose `Now` or `Schedule` to publish your episode. If you choose `Now`, your
episode will be live. Or you can schedule the day and time to publish your
episode by choosing the `Schedule` radio button and choosing the day and time.
Press `Publish` to finish.
Your RSS feed will be automatically updated with your episode information and
listeners who subscribe will be notified of a new episode. Congratulations on
publishing your first episode!
## Editing an episode
You can edit an episode before or after it is published. You can change any of
the fields, including uploading a new episode, updating the show notes, or
updating the transcripts or chapters. Select the episode you want to edit and
choose `Edit Episode`. You can change just one field or multiple fields at the
same time. After you have made the changes, press `Save Episode` in the upper
right corner to finalize the changes.
You can also edit the publication for the episode. Choose the episode again, and
press `Edit Publication` in the upper right hand corner. Update the announcement
post or publication date. When complete, press `Edit publication`. You can also
choose to cancel the publication and it won't be published but will not be
deleted.
---
title: Manage Podcasts
---
import { LinkCard, CardGrid } from "@astrojs/starlight/components";
From the Castopod admin interface, click **Podcasts** and then **All Podcasts**
and you will be redirected to the podcast dashboard. This page displays the
latest episodes, including any scheduled episodes.
From the podcast dashboard, you can add episodes, view analytics, add links to
your homepage, and more. Learn more by clicking the links below.
<CardGrid>
<LinkCard title="Podcast dashboard" href="dashboard" />
<LinkCard title="Episodes" href="episodes" />
<LinkCard title="Analytics" href="analytics" />
<LinkCard title="Broadcast" href="broadcast" />
<LinkCard title="Contributors" href="contributors" />
</CardGrid>
---
title: Podcast Home Page
---
import { Aside } from "@astrojs/starlight/components";
The podcast home page is your landing page for your listeners to view episode
announcements, messages, episodes, and links to where to find your podcast. If
you have only one podcast, your users will be automatically redirected from your
top level domain, such as `www.yourpodcast.com`, to the podcast page at
`www.yourpodcast.com/@yourpodcasthandle`.
If you are hosting multiple podcasts, your top level page will display the
artwork for each podcast. Clicking on the podcast artwork will take you to your
podcast page at `www.yourpodcast.com/@yourpodcasthandle`.
## Home Page
If you are logged in to your podcast, you will see a strip across the top of the
page with a link to the admin interface of your podcast, a bell that will show
if you have any new notifications, and the user who is logged in. You can click
on the user for quick access to your account, changing your password, or to log
out.
<Aside>
If you have multiple podcasts, you can click the user dropdown to switch to
choose which podcast to interact with. If your account has access to two or more
podcasts, pay attention to which podcast is broadcasting messages!
</Aside>
Listeners can click the `Follow` button to follow any messages, including
episode announcements, from a Fediverse app, such as Mastodon. After clicking
`Follow` a pop-up box will be displayed where the user enterse their Fediverse
handle and then clicks `Proceed to follow`.
### Podcast RSS feed
On the right hand side is a link to your RSS Podcast feed. Users can copy that
and subscribe directly in their podcast app.
### Social Networks
Below the RSS feed is are icons that link to all of the social networks you
toggled on in the [Broadcast](../podcast/broadcast#podcasting-apps) section of
the podcast's admin section.
### Podcast Directories
Below the social networking links is **Listen On** which displays icons linked
to the podcast directories you toggled on in the
[Broadcast](../podcast/broadcast#social-networks) section of the podcast's admin
section.
## Activity
The **Activity** tab is located directly under your podcast artwork is the
default home page for your podcast. Website visitors are presented with a list
of messages in chronological order. If you are logged in as a podcast
administrator, you will see a text box where you can write a message to be
broadcasted to your followers. If you include the episode URL, a preview of that
episode will be included in your message.
Below each message there are four icons:
- **Comments**: This will show you the number of comments on a given message.
Clicking this will show you all replies to your message. You can click the
three dots to block a user or a domain in case of spam.
- **Shares**: This shows the number of times your message was shared by other
users.
- **Favorites**: This shows how many people liked your message.
## Episodes
The **Episodes** tab shows a list of all episode announcements you have shared.
If you are using season numbers, it will default to the current season. Users
can click the **Season** link above all of the messages for a dropdown menu to
view past episodes by season.
## About
The About tab shares general information about your podcast, including:
- Podcast description
- Podcast category
- The [people](../podcast/dashboard#manage-persons) who contribute to the
podcast
- Statistics
- Number of seasons
- Number of episodes
- Date first episode was published
---
title: Autenticación & Autenticación
---
Castopod gestiona la autenticación y autorización usando `codeignitor/escudo`
emparejado con reglas personalizadas. Los roles y permisos se definen en dos
niveles:
1. [por instancia](#1-instance-wide-roles-and-permissions)
2. [por podcast](#2-per-podcast-roles-and-permissions)
## 1. Roles por instancia y permisos
### Roles de instancia
{/* AUTH-INSTANCE-ROLES-LIST:START - Do not remove or modify this section */}
| role | description | permissions |
| ------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| Super administrador | Tiene control completo sobre Castopod. | admin.\*, plugins.\*, podcasts.\*, users.manage, persons.manage, pages.manage, fediverse.manage-blocks |
| 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 */}
### Permisos de instancia
{/* AUTH-INSTANCE-PERMISSIONS-LIST:START - Do not remove or modify this section */}
| permission | description |
| ----------------------- | ------------------------------------------------------------------------------ |
| admin.access | Puedes acceder al área de administración de Castopod. |
| admin.settings | Puede acceder a la configuración de Castopod. |
| plugins.manage | Auth.instance_permissions.plugins.manage |
| users.manage | Puede administrar usuarios de Castopod. |
| persons.manage | Puede administrar personas. |
| pages.manage | Puede administrar páginas. |
| podcasts.view | Puede ver todos los podcasts. |
| podcasts.create | Puede crear nuevos podcasts. |
| 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 */}
## 2. Permisos y roles por podcast
### Roles por podcast
{/* AUTH-PODCAST-ROLES-LIST:START - Do not remove or modify this section */}
| role | description | permissions |
| ------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Administrador | Tiene el control completo del podcast #\{id\}. | \* |
| Editor | Gestiona el contenido y las publicaciones del 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 |
| 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 */}
### Permisos por podcast
{/* AUTH-PODCAST-PERMISSIONS-LIST:START - Do not remove or modify this section */}
| permission | description |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------- |
| view | Puede ver el panel de control y analíticas del episodio #\{id\}. |
| edit | Puede editar el podcast #\{id\}. |
| delete | Puede borrar el podcast #\{id\}. |
| manage-import | Puede sincronizar el podcast importado #\{id\}. |
| manage-persons | Puede administrar las suscripciones del podcast #\{id\}. |
| manage-subscriptions | Puede administrar las suscripciones del podcast #\{id\}. |
| manage-contributors | Puede administrar colaboradores del podcast #\{id\}. |
| manage-platforms | Puede establecer/eliminar enlaces a la plataforma del podcast #\{id\}. |
| manage-publications | Puede publicar el podcast #\{id\}. |
| manage-notifications | Puede ver y marcar las notificaciones como leídas para podcast #\{id\}. |
| interact-as | Puede interactuar como el podcast #\{id\} para marcar como favarito, compartir o responder a las publicaciones. |
| episodes.view | Puede ver el panel de control y analíticas del episodio #\{id\}. |
| episodes.create | Puede crear episodios para el podcast #\{id\}. |
| episodes.edit | Puede editar episodios del podcast #\{id\}. |
| episodes.delete | Puede borrar episodios del podcast #\{id\}. |
| episodes.manage-persons | Puede administrar las personas de los episodios del podcast #\{id\}. |
| episodes.manage-clips | Puedes administrar video clips o sonidos del podcast #\{id\}. |
| 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 */}
---
title: Imágenes oficiales de Docker
---
Castopod lanza 3 imágenes Docker al Docker Hub durante su proceso de
construcción automatizada:
- [**`castopod/castopod`**](https://hub.docker.com/r/castopod/castopod): una
imagen completa de castopod que utiliza una unidad nginx
- [**`castopod/app`**](https://hub.docker.com/r/castopod/app): el paquete
completo de la aplicación con todas las dependencias de Castopod
- [**`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é.
## Etiquetas admitidas
- `develop` [unstable], última rama construída de desarrollo
- `beta` [stable], última versión beta
- `latest` [stable], última versión
- `1.x.x` [stable], versión específica de compilación (desde `1.0.0`)
## 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:
```yml
version: "3.7"
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
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
redis:
image: redis:7.0-alpine
container_name: "castopod-redis"
command: --requirepass changeme
volumes:
- castopod-cache:/data
networks:
- castopod-app
volumes:
castopod-media:
castopod-db:
castopod-cache:
networks:
castopod-app:
castopod-db:
```
Debes adaptar algunas variables a tus necesidades (ej. `CP_BASEURL`,
`MYSQL_ROOT_PASSWORD`, `MYSQL_PASSWORD` y `CP_ANALYTICS_SALT`).
3. Configura un servidor proxy inverso para TLS (SSL/HTTPS).
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/):
```
#castopod
castopod.example.com {
reverse_proxy localhost:8000
}
```
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`) | Default |
| ------------------------------------- | ----------------------- | ---------------- |
| **`CP_BASEURL`** | string | `undefined` |
| **`CP_MEDIA_URLBASE`** | ?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"` o `"redis"`] | `"file"` |
| **`CP_REDIS_HOST`** | ?string | `"localhost"` |
| **`CP_REDIS_PASSWORD`** | ?string | `null` |
| **`CP_REDIS_PORT`** | ?number | `6379` |
| **`CP_REDIS_DATABASE`** | ?number | `0` |
| **`HOST_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"` o `"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/servidor web**
| Nombre de la variable | Tipo | Default |
| ---------------------- | --------------------- | ------- |
| **`CP_APP_HOSTNAME`** | ?string | `"app"` |
| **`CP_MAX_BODY_SIZE`** | ?number (with suffix) | `512M` |
| **`CP_TIMEOUT`** | ?number | `900` |
---
title: ¿Cómo instalar Castopod?
---
import { Aside } from "@astrojs/starlight/components";
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.
## Requisitos
- PHP v8.4 or higher
- MySQL versión 8.4 o superior o MariaDB versión 11.4 o superior
- Soporte HTTPS
- An [ntp-synced clock](https://wiki.debian.org/NTP) to validate federation's
incoming requests
### PHP v8.4 or higher
PHP version 8.4 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) con librerias
**JPEG**, **PNG** y **WEBP**.
- [exif](https://www.php.net/manual/en/exif.installation.php)
Además, asegúrate de que las siguientes extensiones están habilitadas en tu PHP:
- json (habilitada por defecto - no la desactives)
- xml (habilitada por defecto - no la desactives)
- [mysqlnd](https://php.net/manual/en/mysqlnd.install.php)
### Base de datos compatible con MySQL
> Se recomienda usar [MariaDB](https://mariadb.org).
Necesitarás la dirección/nombre del servidor (hostname), el nombre de la base de
datos, el usuario y la contraseña para completar el proceso de instalación. Si
no cuentas con esta información, contacta con el administrador de tu servidor.
#### Privilegios
El usuario debe tener al menos estos privilegios en la base de datos para que
Castopod funcione: `CREATE`, `ALTER`, `DELETE`, `EXECUTE`, `INDEX`, `INSERT`,
`SELECT`, `UPDATE`, `REFERENCES`, `CREATE VIEW`.
### (Opcional) FFmpeg v4.1.8 o superior para poder generar clips de vídeo (recortes de vídeo)
Es necesario tener instalado [FFmpeg](https://www.ffmpeg.org/) versión 4.1.8 o
superior si desea generar recorte de vídeos. Se debe instalar las siguientes
extensiones:
- Librería **FreeType 2** para
[gd](https://www.php.net/manual/en/image.installation.php).
### (Opcional) Otras recomendaciones
- Redis para mejores rendimientos de caché.
- CDN para almacenamiento en caché de archivos estáticos y mejores rendimientos.
- Pasarela de correo para recuperación de contraseñas olvidadas.
## Instrucciones de instalación
### Pre-requisitos
0. Consigue un servidor web que cuente con todos los [requisitos](#requirements)
recomendados.
1. Crea una base de datos MySQL para Castopod con un usuario que tenga acceso y
privilegios de modificación (para más información, ver
[base de datos compatible con MySQL](#mysql-compatible-database)).
2. Activa HTTPS en tu dominio web mediante un _certificado SSL_.
3. Descarga y descomprime en tu servidor la última versión de
[Castopod](https://castopod.org/), si aún no lo has hecho.
- ⚠️ Edita la configuración de tu servidor para que el "document root" sea la
subcarpeta `castopod/public/`.
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)
### (recomendado) Asistente web de instalación
1. Ejecuta el script de instalación de Castopod visitando en tu navegador web
esta dirección: `https://tu_nombre_de_dominio.com/cp-install`
2. Sigue las instrucciones en pantalla.
3. ¡Empieza a hacer podcasting!
<Aside>
El script de instalación crea un archivo `.env` en la raíz de castopod. 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
La configuración del correo electrónico es necesaria para que algunas
características funcionen correctamente (por ejemplo, recuperar su contraseña
olvidada, enviando instrucciones a los suscriptores premium, …)
Puedes añadir tu configuración de correo electrónico en el archivo `.env` de tu
instancia así:
```ini
# […]
email.fromEmail="your_email_address"
email.SMTPHost="your_smtp_host"
email.SMTPUser="your_smtp_user"
email.SMTPPass="your_smtp_password"
```
#### Configuración de Correo Electrónico/SMTP
| 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
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
| Nombre de la variable | 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` |
## Paquetes de la comunidad
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="Instalar Castopod con 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>
---
title: Problemas de seguridad
---
Castopod está construido sobre [CodeIgniter4](https://codeigniter.com/), un
framework de PHP que alienta
[buenas prácticas de seguridad](https://codeigniter.com/user_guide/concepts/security.html).
Para maximizar la seguridad de su instancia y prevenir cualquier ataque
malicioso, le recomendamos que actualice todos los permisos de sus archivos
Castopod después de la instalación o actualizaciones (para evitar cualquier
error de permiso previo):
- `writable/` carpeta debe ser **legible** y **escribible**.
- `public/media/` carpeta debe ser **legible** y **escribible**.
- cualquier otro archivo debe establecerse a **solo lectura**.
Por ejemplo, si estás usando Apache o NGINX con Ubuntu puedes hacer lo
siguiente:
```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
```
---
title: ¿Cómo actualizar Castopod?
---
import { Aside } from "@astrojs/starlight/components";
Después de instalar Castopod, es posible que quieras actualizar tu instancia a
la última versión para disfrutar de las últimas características ✨, correcciones
de errores 🐛 y mejoras de rendimiento ⚡.
## Instrucciones de Actualización
0. ⚠️ Antes de cualquier actualización, te recomendamos que respaldes tus
archivos de Castopod y base de datos.
- cf.
[¿Debería hacer una copia de seguridad antes de actualizar?](#should-i-make-a-backup-before-updating)
1. Vaya a la página de
[lanzamientos](https://code.castopod.org/adaures/castopod/-/releases) y vea
si su instancia está actualizada con la última versión de Castopod
- cf.
[¿Dónde puedo encontrar mi versión de Castopod?](#where-can-i-find-my-castopod-version)
2. Descargue el último paquete de lanzamiento llamado `Paquete Castopod`, puede
elegir entre los archivos `zip` o `tar.gz`
- ⚠️ Asegúrate de descargar el paquete de Castopod y **NO** el código fuente
- Ten en cuenta que también puedes descargar el último paquete de
[castopod.org](https://castopod.org/)
3. En tu servidor:
- Eliminar todos los archivos excepto `.env` y la carpeta `public/media`
- Copie los nuevos archivos del paquete descargado en su servidor
<Aside>
Es posible que necesite restablecer los permisos de los archivos después el
proceso de instalación. Compruebe
[preocupaciones de seguridad](./security.md).
</Aside>
4. Actualice su esquema de base de datos desde su `Administrador de Castopod` >
`Acerca de` página o ejecutando:
```bash
php spark castopod:database-update
```
5. Limpia tu caché en `Administrador de Castopod` > `Ajustes` > `general` >
`Housekeeping`
6. ✨ ¡Disfruta de tu instancia recién instalada, todo listo!
<Aside>
Las versiones pueden venir con instrucciones de actualización adicionales (véase
la página de
[lanzamientos](https://code.castopod.org/adaures/castopod/-/releases)).
- cf. No he actualizado mi instancia en mucho tiempo… ¿Qué debo hacer?
</Aside>
## Actualizaciones totalmente automatizadas
> Próximamente... 👀
## Preguntas Frecuentes (FAQ)
### ¿Dónde puedo encontrar mi versión de Castopod?
Ve al panel de administración de Castopod, la versión se muestra en la esquina
inferior izquierda.
Alternativamente, puedes encontrar la versión en el archivo
`app > Config > Constants.php`.
### No he actualizado mi instancia en mucho tiempo… ¿Qué debo hacer?
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.
> Puede que quieras hacer una copia de seguridad de tu instancia dependiendo del
> tiempo que no hayas actualizado Castopod.
Por ejemplo, si estás en `v1.0.0-alpha.42` y te gustaría actualizar a
`v1.0.0-beta.1`:
0. (altamente recomendado) Haga una copia de seguridad de sus archivos y base de
datos.
1. Descarga la última versión, sobrescribe tus archivos manteniendo `.env` y
`public/media`.
2. Repase las instrucciones de actualización de cada versión secuencialmente (de
más antiguo a más reciente) comenzando con `v1.0.0-alpha. 3`,
`v1.0.0-alpha.44`, `v1.0.0-alpha.45`, …, `v1.0.0-beta.1`.
3. ✨ ¡Disfruta de tu instancia recién instalada, todo listo!
### ¿Debo hacer una copia de seguridad antes de actualizar?
Te aconsejamos que lo hagas, así que no lo pierdas todo si algo sale mal!
De manera más general, te aconsejamos hacer copias de seguridad regulares de tus
archivos de Castopod y base de datos para evitar que pierdas todo…