|
|
||
|---|---|---|
| admin | ||
| assets | ||
| includes | ||
| sql | ||
| .gitignore | ||
| .htaccess | ||
| LICENSE | ||
| README.md | ||
| feed.php | ||
| index.php | ||
| setup.php | ||
| subscribe.php | ||
| sw.js | ||
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
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:
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.phpfile.
📂 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.phpfile is excluded from Git via.gitignoreto 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.phpor 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.