86 lines
3.5 KiB
Markdown
86 lines
3.5 KiB
Markdown
# 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.
|