EasyPodcast · 17 sections · User guide

EasyPodcast user manual

Learn how to configure EasyPodcast, publish episodes, manage multiple podcasts and maintain your backups.

Original manual on GitHub (Spanish) ↗

EasyPodcast lets you manage one or more podcasts in your browser and automatically publishes a website, RSS feed and sitemap for each podcast. This manual explains everyday use after installation.

For installation instructions and technical requirements, see the README.

1. Basic concepts

EasyPodcast has two areas:

  • Public website: displays the homepage, published episodes, information pages, search and social links.
  • Administration panel: lets you configure the podcast, create episodes, view statistics and perform maintenance.

The panel uses episode (called capítulo in Spanish) for each podcast instalment.

Each episode has one of these states:

  • draft: not visible on the website or in the feed. You can save it with just a title and finish it later.
  • scheduled: will be published at the specified date and time.
  • published: visible on the public website and in the RSS feed.

Scheduled publishing needs no cron job. Once the scheduled time arrives, EasyPodcast publishes pending episodes on the next visit to the website or panel. It uses the local time configured in PHP.

2. First login

  1. Open https://your-domain.com/admin.php.
  2. If no administrator exists yet, enter a username and password, then repeat the password to confirm.
  3. Click Create user and log in.
  4. Open Podcast and complete the channel's basic details before publishing your first episode.

For subsequent logins, use your username or email address. Use Log out to end your session, especially on a shared computer.

3. Configure the podcast

Open Administration > Podcast. These settings are used on both the website and the RSS feed.

Main details

  • Title: public podcast name.
  • Main URL: public installation address, such as https://podcast.example.com.
  • Description: general introduction to the show.
  • Language: language declared in the RSS feed.
  • Panel language: language of the administration interface and public pages.
  • Author, owner and email: editorial information included in the feed.
  • Categories: select up to three Apple Podcasts-compatible categories.
  • Explicit: whether the podcast generally contains explicit content.
  • iTunes type: whether the podcast is episodic or serial.
  • Copyright: legal text displayed in the feed.

Publishing and appearance

  • RSS feed item count: limits the episodes in the feed; 0 means unlimited.
  • Homepage item count: episodes displayed per page.
  • Write ID3 metadata: adds title, artist, album, date, comment and track number to uploaded MP3 files.
  • Podcast image: square channel cover, provided as a URL or uploaded from your device.
  • Hero image: optional panoramic header. Uploaded images are automatically cropped and optimised.
  • Appearance: choose a visual theme from the main panel and whether it follows your system's light or dark preference.

Click Save podcast. Public changes automatically clear the cache and regenerate the feed and sitemap when needed.

4. Publish an episode

Open Administration > Add.

Recommended workflow

  1. Enter the title.
  2. Keep the state as draft while preparing the content.
  3. Add a short description for the homepage and full content for the episode page and feed.
  4. Add audio via URL, file upload or microphone recording.
  5. Check the image, author, explicit content setting, season, episode number and type.
  6. Select published to publish now or scheduled to set a future date.
  7. Click Save episode.
  8. Check Preview and the public homepage.

Important fields

  • GUID: unique identifier used by RSS readers; generated by EasyPodcast if empty.
  • Episode URL: automatically generated from the title. You can also use Generate URL or enter a valid URL.
  • Description (plain text): optional excerpt of up to 4,000 characters; replaces full content on the homepage when provided.
  • Content: full text entered in the visual editor; up to 10,000 characters, including HTML tags.
  • Publication date: publishing with an empty date uses the current date; mandatory for scheduled episodes.
  • Audio: uploading fills in the URL, MIME type and size. For external URLs, check these details manually.
  • Duration: use HH:MM:SS. If omitted, EasyPodcast tries to calculate it from local audio.
  • Explicit: inherit the general setting or override it for this episode.
  • Type: full for a regular episode, trailer for a preview and bonus for extra content.
  • Image and author: empty fields inherit the podcast's defaults.

Publishing or scheduling requires content and valid audio details. A draft only needs a title.

Record in the browser

  1. Expand Record from microphone.
  2. Allow microphone access.
  3. Click Record, then Stop when finished.
  4. Check it with Listen to recording.
  5. Click Use this recording and wait for upload confirmation.
  6. Save the episode.

Do not close the page while the recording is being encoded or uploaded.

MP3 metadata

If automatic ID3 writing is enabled, EasyPodcast updates metadata when uploading audio. When editing an existing episode, use Update current MP3 metadata to rewrite it.

5. Manage episodes

Open Administration > Episodes. Published episodes, drafts and scheduled episodes are listed separately.

You can:

  • search by title or content;
  • edit an episode;
  • preview even draft or scheduled episodes;
  • delete an episode.

Deleting removes the database record. Audio and images are removed from the server only if no other episode or podcast cover uses them. Still, make a backup before a major cleanup.

Editing a published episode updates the feed, sitemap and public cache.

6. Import another podcast

Import RSS feed copies episodes from an external feed and downloads their audio and images locally.

  1. Open Administration > Import RSS feed.
  2. Paste the full feed URL and click Preview.
  3. Compare existing metadata with the feed and select only fields you want to overwrite.
  4. Select episodes to import.
  5. Leave importing duplicate GUIDs unchecked unless you explicitly need duplicates.
  6. Click Start import and keep the page open until it finishes.
  7. Check the imported episodes, homepage and feed.

The podcast's main URL is not replaced by the imported feed's URL. Large imports can take several minutes and depend on the server's upload, memory and execution time limits.

7. Create pages and add social links

Static pages

Create content such as “About”, “Contact” or “Legal notice” in Administration > Pages.

  1. Click Add page.
  2. Enter a title and content.
  3. Check the slug: lowercase letters, numbers and hyphens only.
  4. Choose draft or published.
  5. Optionally select a parent page for a two-level hierarchy.
  6. Use Order to control position; lower numbers come first.
  7. Save and check the preview.

Social networks

In Administration > Social networks, add full URLs for your blog, LinkedIn, Mastodon, X, Pixelfed, Instagram, YouTube, GitHub and Bluesky. Only configured networks appear as icons in the public header.

8. View statistics

Open Administration > Statistics to see:

  • published episodes, drafts and total stored episodes;
  • total audio size according to the database;
  • most recently published episode;
  • cache status, page count and size;
  • downloads and plays.

Activity statistics are grouped into:

  • Daily: recent events for up to seven days, with date, episode, type and IP.
  • Monthly: monthly totals, filterable by year.
  • Yearly: yearly totals.
  • Summary: total downloads and plays per episode.

Click table headers to sort. Readers' HEAD checking requests do not count as downloads.

9. Backups

Open Administration > Backups. Database and media backups are separate.

Create a complete backup

  1. Click Export database and save the SQLite file.
  2. Download every part under Export images.
  3. Download every part under Export audio.
  4. If a file exceeds the ZIP limit, download it manually using the displayed link.
  5. Keep all files together with the date and EasyPodcast version.

ZIP files are split into parts of up to 127 MB. Generated images are excluded because they can be regenerated.

Restore

  • Import database restores content and settings from a valid SQLite file. Back up the current state first: restoration replaces the active database.
  • Import files accepts one or more ZIP files and individual audio files. Upload all required parts to recover the media.

After restoring, check the homepage, several episodes, feed and images. If thumbnails are missing, use Cache > Regenerate images.

10. Cache and maintenance

Cache

The public cache stores homepage and episode HTML, the feed and sitemap for faster responses.

  • Enable public cache: recommended in production.
  • Clear web cache: removes only cached HTML responses; visits will generate them again.
  • Regenerate images: recreates 80, 144 and 220 pixel variants of podcast and episode images.

Normal public changes already invalidate the cache automatically. Clear it manually if old content remains after a restoration or incident.

Regenerate .htaccess

Generated .htaccess restores this file with EasyPodcast's default rules. It removes custom rules and disables IP blocking for admin.php; use it only to return to the original configuration.

Orphaned files

In Multipodcast installations, the global administrator can use Cleanup to find audio and images not used by any episode. Review the selection before clicking Delete selected: deletion cannot be undone.

11. Users, password and 2FA

Change your password

Open Password, enter your current and new passwords, and follow the onscreen instructions. In Multipodcast, create separate users instead of sharing accounts.

Enable two-factor authentication

  1. Open 2FA and click Enable 2FA.
  2. Scan the QR code with a TOTP app such as Google Authenticator or Aegis. You can also enter the key manually.
  3. Enter the six-digit code to confirm.
  4. Immediately store the eight recovery codes somewhere safe.

Each recovery code works once. You can regenerate codes or disable 2FA by confirming with your password. At login, you can remember a device for seven days.

Restrict access to admin.php by IP

The global administrator can open Multipodcast > Security to allow access to admin.php only from specified IPv4 or IPv6 addresses or CIDR ranges. Blocking is disabled by default and requires explicit activation in two steps. Before confirming, always include your administration IP: incorrect settings can lock you out.

Activation is optional and the user's responsibility. After clicking Enable blocking, read the red warning and click I am sure only after checking the list.

Recover access after accidentally locking yourself out

If you cannot open admin.php, access your server files through SSH, SFTP or your hosting file manager. Open .htaccess in EasyPodcast's main directory and remove only the entire block, from # BEGIN to # END, including both lines:

# BEGIN EasyPodcast: bloqueo por IP de admin.php
# Bloqueo al admin.php
<Files "admin.php">
    Order Deny,Allow
    Deny from all
    Allow from x.x.x.x
</Files>
# END EasyPodcast: bloqueo por IP de admin.php

Save .htaccess without changing other rules and reopen admin.php. Removing this block disables the IP restriction. If there are multiple Allow from lines, remove all of them as part of the block.

Podcast users

In Multipodcast mode, the global administrator can open Users to create accounts and assign one or more podcasts. Limited users see and manage only their assigned podcasts and cannot access global tools.

You can temporarily disable accounts, change their assigned podcasts or set a new password. Deleting an account also deletes its API tokens.

12. Manage multiple podcasts

Multipodcast hosts several channels in one installation, keeping their episodes, pages, social links, statistics and tokens separate.

Enable it

  1. Open Multipodcast > Multipodcast settings.
  2. Select Enable Multipodcast.
  3. Choose a directory for the existing podcast, such as my-podcast. Only lowercase letters, numbers and hyphens are allowed.
  4. Choose what the site root displays: an overview of all podcasts or the homepage of one selected podcast.
  5. For the overview, configure its language, theme, title, subtitle and header image.
  6. Save the settings.

Media files keep their URLs when Multipodcast is enabled.

Create and administer podcasts

  1. Open Podcasts.
  2. Enter a title and an unused directory.
  3. Click Create podcast.
  4. Use Manage podcast to complete its settings and publish content.

The top-bar selector switches between the global panel and available podcasts. Each podcast has its own routes under https://your-domain.com/directory/.

You can mark a podcast as the main one. It will be retained if you disable Multipodcast.

Operations that change URLs or delete content

  • Change directory changes public URLs for the podcast, pages, feed and episodes. Do this only if you can update external links.
  • Delete podcast first creates a ZIP backup, then removes the podcast, episodes, statistics and exclusive media. Type its title to confirm. Download and keep the supplied ZIP.
  • Disable Multipodcast keeps the main podcast, backs up secondary podcasts and then deletes them. The screen requires explicit confirmation and the exact title of the main podcast.

13. API and automation

The API section connects EasyPodcast to scripts, n8n and other applications.

  1. Open API Tokens.
  2. Enter a recognisable name and optionally an expiry date.
  3. Choose the scope: content for everyday content automation, or admin only for sensitive administrative operations.
  4. Generate and copy the token immediately: it will not be shown in full again.
  5. Open API documentation for endpoints and examples.

Immediately revoke unused or potentially exposed tokens. Limited users can operate only on assigned podcasts.

14. Update EasyPodcast

  1. Back up at least the database, preferably also the media.
  2. Open Update.
  3. Compare the installed and latest available versions.
  4. If an update exists, click Update to v… and wait until it finishes.
  5. Read the release notes and check the homepage, panel, an episode, feed and sitemap.

The updater downloads from GitHub Releases, verifies integrity and replaces application files. It does not directly modify the database, audio or images; necessary migrations run automatically when the application loads.

15. What EasyPodcast publishes

Typical routes for a single-podcast installation:

Address Content
/ Public homepage and search
/AAAA/MM/slug Public episode page (year/month/slug)
/feed.php RSS feed generated in real time
/feed.xml Static feed regenerated when changes are saved
/sitemap.xml Sitemap for search engines
/robots.txt Crawler rules and sitemap link
/admin.php Administration panel login

In Multipodcast mode, each channel uses its own directory, for example /my-podcast/, /my-podcast/feed.xml and /my-podcast/sitemap.xml. The root can show the global overview or featured podcast.

To submit a podcast to a distribution platform, provide its public feed.xml URL. After publishing an episode, check it appears on both the website and the feed.

16. Recommended routine

Before publishing

  • Check the title, short description, content, audio and image.
  • Listen to the beginning and end of the file.
  • Check the explicit setting and episode numbering.
  • Use draft until everything is ready.

After publishing

  • Open the homepage and episode page.
  • Play or download the audio.
  • Check feed.xml.
  • Review the title, image and description when sharing the URL.

Regular maintenance

  • Export the database frequently and before every update.
  • Keep regular audio and image backups off the server.
  • Review statistics and used storage.
  • Revoke tokens and disable users who no longer need access.
  • Check for updates and back up before applying them.

17. Common problems

An episode is not publicly visible

  • Check that its state is published.
  • If scheduled, check its date, time and the server's time zone.
  • Visit the website to trigger scheduled publishing.
  • Clear the web cache if the problem persists.

Audio does not play

  • Check the audio URL is accessible.
  • Check the MIME type, size and file format.
  • If uploaded from the panel, confirm the upload finished before saving.

The feed does not reflect a change

  • Save the podcast or episode again.
  • Compare feed.php and feed.xml.
  • Clear the web cache.
  • Check server write permissions for feed.xml and cache/.

An image or thumbnail is missing

  • Check the original URL.
  • Open Cache > Regenerate images.
  • Check server write permissions for images/ and images/generated/.

A feed cannot be imported

  • Check the URL is public and returns valid RSS.
  • Check PHP's cURL extension is enabled.
  • Try fewer episodes if server limits are strict.
  • Keep the tab open during downloading.

Content cannot be saved or uploaded

This is usually caused by PHP limits or server permissions. The hosting administrator should check maximum upload size, execution time and write permissions for podcast.sqlite, audios/, images/, cache/, feed.xml and favicon.ico.