A lightweight, professional-grade podcast hosting and management platform designed for churches and small organizations. Built with PHP 8 and MySQL, this system provides a seamless way to host audio content, track analytics, and engage listeners via push notifications.
Go to file
Michael Howard 6363a6b332 Resolved merge conflict in README.md 2026-04-30 11:07:20 -05:00
admin Resolved merge conflict in README.md 2026-04-30 11:07:20 -05:00
assets Final release: Added theme color customization, security hardening, and UI refinements 2026-04-30 10:54:12 -05:00
includes Final release: Added theme color customization, security hardening, and UI refinements 2026-04-30 10:54:12 -05:00
sql Final release: Added theme color customization, security hardening, and UI refinements 2026-04-30 10:54:12 -05:00
.gitignore Final release: Added theme color customization, security hardening, and UI refinements 2026-04-30 10:54:12 -05:00
.htaccess Final release: Added theme color customization, security hardening, and UI refinements 2026-04-30 10:54:12 -05:00
LICENSE Fixing merge conflicts 2026-04-29 10:10:34 -05:00
README.md Final release: Added theme color customization, security hardening, and UI refinements 2026-04-30 10:54:12 -05:00
feed.php Initial commit: Professional Podcast Server with automated setup 2026-04-29 10:01:44 -05:00
index.php Final release: Added theme color customization, security hardening, and UI refinements 2026-04-30 10:54:12 -05:00
setup.php Initial commit: Professional Podcast Server with automated setup 2026-04-29 10:01:44 -05:00
subscribe.php Initial commit: Professional Podcast Server with automated setup 2026-04-29 10:01:44 -05:00
sw.js Initial commit: Professional Podcast Server with automated setup 2026-04-29 10:01:44 -05:00

README.md

Podcast Server 🚀

A lightweight, professional-grade podcast hosting and management platform designed for churches and small organizations. Built with PHP 8 and MySQL, this system provides a seamless way to host audio content, track analytics, and engage listeners via push notifications.

Developed and tested on Ubuntu 20.04 using the standard LAMP stack.

Features

  • Episode Management: Easy upload of audio files and cover art.
  • Admin Dashboard: Comprehensive control panel for managing episodes, settings, and users.
  • Role-Based Access (RBAC): Supports 'Administrator' and 'Editor' roles for secure collaboration.
  • Real-time Analytics: Track episode plays and listening duration.
  • Push Notifications: Integrated subscription system for listener engagement.
  • RSS Feed Generation: Fully compatible feed for platforms like Spotify, Apple Podcasts, etc.
  • PWA Ready: Offline capabilities and "Add to Home Screen" support via Service Workers.
  • Automated Setup: Built-in installation wizard for easy deployment.
  • Backup & Restore: Simple system utilities for data safety using tar.

🛠️ Requirements

The software has been tested and verified on the following environment:

  • OS: Ubuntu 20.04 (LTS)
  • Web Server: Apache2
  • PHP: 8.0 or higher
  • Database: MySQL 8.0+ or MariaDB
  • PHP Extensions: pdo_mysql, mbstring, gd, curl
  • System Utilities: tar (required for backup/restore features)

🚀 Installation

1. Clone the Repository

Clone this project into your web root directory (e.g., /var/www/html/podcast):

cd /var/www/html
sudo git clone https://git.linology.tech/michael/Podcast-server podcast

2. Set Permissions

The web server needs write access to specific directories for uploads and configuration:

sudo chown -R www-data:www-data /var/www/html/podcast
sudo chmod -R 755 /var/www/html/podcast

Podcast audio files can be large. Ensure your php.ini (usually /etc/php/8.0/apache2/php.ini) allows large uploads:

upload_max_filesize = 100M
post_max_size = 110M
memory_limit = 256M

After editing, restart Apache:

sudo systemctl restart apache2

4. Run the Setup Wizard

Open your browser and navigate to: http://your-server-ip/podcast/setup.php

The setup script will:

  • Verify folder permissions and PHP settings.
  • Create the MySQL database and tables automatically.
  • Initialize the first Administrator account.
  • Generate your includes/config.php file.

📂 Project Structure

  • /admin: Administrative interface and management scripts.
  • /assets: CSS, JS, and default assets. Uploaded media is stored here.
  • /includes: Core logic, database connection, and utility functions.
  • /sql: Database schema files.
  • feed.php: Automatically generated RSS feed for podcast players.
  • setup.php: The automated installation script.

🔒 Security & Git

  • Configuration: The includes/config.php file is excluded from Git via .gitignore to protect your database credentials.
  • Uploads: Audio and image uploads are excluded from Git to keep the repository lightweight.
  • Setup: After a successful installation, it is recommended to delete setup.php or move it outside the web root.

🤝 Contributing

Feel free to fork this project and submit pull requests to the Linology Git instance.

📄 License

This project is licensed under the MIT License.