# 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`): ```bash 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: ```bash sudo chown -R www-data:www-data /var/www/html/podcast sudo chmod -R 755 /var/www/html/podcast ``` ### 3. PHP Configuration (Recommended) Podcast audio files can be large. Ensure your `php.ini` (usually `/etc/php/8.0/apache2/php.ini`) allows large uploads: ```ini upload_max_filesize = 100M post_max_size = 110M memory_limit = 256M ``` After editing, restart Apache: ```bash 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](https://git.linology.tech/michael/Podcast-server) instance. ## 📄 License This project is licensed under the MIT License.