{"id":21423164,"url":"https://github.com/better-call-jason/radioflowplus","last_synced_at":"2026-05-22T05:03:12.323Z","repository":{"id":263697861,"uuid":"890672785","full_name":"Better-Call-Jason/RadioFlowPlus","owner":"Better-Call-Jason","description":"Instant Streaming Server. Your radio station online in minutes","archived":false,"fork":false,"pushed_at":"2024-11-20T15:10:22.000Z","size":6932,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-23T07:11:19.737Z","etag":null,"topics":["docker","docker-compose","icecast2","liquidsoap","livestream"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Better-Call-Jason.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-19T01:24:34.000Z","updated_at":"2024-11-20T15:10:25.000Z","dependencies_parsed_at":"2024-11-20T16:36:08.761Z","dependency_job_id":null,"html_url":"https://github.com/Better-Call-Jason/RadioFlowPlus","commit_stats":null,"previous_names":["better-call-jason/simple-broadcast-media-stream-icecast2","better-call-jason/radioflowplus"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Better-Call-Jason%2FRadioFlowPlus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Better-Call-Jason%2FRadioFlowPlus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Better-Call-Jason%2FRadioFlowPlus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Better-Call-Jason%2FRadioFlowPlus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Better-Call-Jason","download_url":"https://codeload.github.com/Better-Call-Jason/RadioFlowPlus/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243926648,"owners_count":20370016,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-compose","icecast2","liquidsoap","livestream"],"created_at":"2024-11-22T21:14:36.727Z","updated_at":"2026-05-22T05:03:12.258Z","avatar_url":"https://github.com/Better-Call-Jason.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RadioFlow+ : Push-Button Broadcasting\n\nTransform your MP3 collection into your own streaming station in minutes. With RadioFlow+, if you can copy files to a folder, you can run your own music station. Drop in your mixtapes, podcasts, or music collection, and instantly start broadcasting to listeners worldwide. It's like having your own Spotify or Pandora, but it's all yours - simple, streamlined, and completely under your control.\n\n\n## Prerequisites\n\nFor Ubuntu 22.04 users:\n```bash\n# Install Docker and Docker Compose from Ubuntu repository\nsudo apt update\nsudo apt install docker.io docker-compose\n```\n\nThe Ubuntu 22.04 repository provides:\n- Docker Engine 20.10.12\n- Docker Compose 1.29.2\n- These versions are fully compatible with this project\n\nOther requirements:\n- Git (`sudo apt install git`)\n- At least one MP3 file to stream\n- The repo has 3 sample mp3's\n\n## Quick Start\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/Better-Call-Jason/RadioFlowPlus.git\ncd simple-continuous-broadcast-project\n```\n\n2. Replace the sample MP3 files in the `recordings` directory with your own:\n```bash\n# Remove sample files\nrm recordings/*.mp3\n\n# Copy your MP3 files\ncp /path/to/your/mp3s/*.mp3 recordings/\n```\n\n3. Start the server:\n```bash\ndocker-compose up -d    # Note: Ubuntu 22.04 uses docker-compose (with hyphen)\n```\n\n4. Access your stream at: `http://localhost:8000/stream`\n\n## Project Structure\n\n```\nRadioFlowPlus/\n├── config/\n│   ├── icecast.xml        # Icecast2 configuration\n│   └── liquidsoap.liq     # Liquidsoap streaming configuration\n├── recordings/            # Directory for MP3 files\n├── scripts/\n│   └── start.sh          # Container startup script\n├── docker-compose.yml    # Docker Compose configuration\n├── Dockerfile           # Docker image definition\n└── README.md           # This file\n```\n\n## Configuration\n\n### Default Settings\n- Stream URL: `http://localhost:8000/stream`\n- Stream Format: MP3 (128kbps)\n- Source Password: `source_password`\n- Admin Password: `your_strong_admin_password_here`\n- Playlist Mode: Normal (sequential playback)\n- Playlist Behavior: Continuous replay indefinitely while container runs\n\n### Playlist Configuration\nThe default configuration in `liquidsoap.liq` plays files sequentially:\n```liquidsoap\nrecordings = playlist(\n  reload=1,\n  reload_mode=\"rounds\",\n  mode=\"normal\",  # Files play in sequential order\n  \"/recordings\"\n)\n```\n\nTo enable random playback, modify the mode parameter:\n```liquidsoap\nrecordings = playlist(\n  reload=1,\n  reload_mode=\"rounds\",\n  mode=\"randomize\",  # Files play in random order\n  \"/recordings\"\n)\n```\n\nAvailable playlist modes:\n- `normal`: Plays files in sequential order\n- `randomize`: Shuffles playback order\n- `random`: Like randomize but can repeat a song before all others have played\n\nThe server will continuously stream and replay your audio files indefinitely as long as:\n- The container is running\n- There is at least one valid MP3 file in the recordings directory\n- No errors occur in the streaming process\n\n### Modifying Configuration\n- To change Icecast settings, modify `config/icecast.xml`\n- To adjust streaming parameters, modify `config/liquidsoap.liq`\n- To update ports or volumes, modify `docker-compose.yml`\n\n## Troubleshooting\n\n### Common Issues\n\n\n1. **Stream not accessible**\n   - Verify Docker container is running: `docker ps`\n   - Check container logs: `docker-compose logs`\n   - Ensure port 8000 isn't being used by another application\n   - Check if UFW is blocking the port: `sudo ufw status`\n\n2. **No audio playing**\n   - Confirm MP3 files are present in the recordings directory\n   - Check file permissions (should be readable)\n   - Verify MP3 file format compatibility\n\n3. **Container won't start**\n   ```bash\n   # Check detailed logs\n   docker-compose logs --tail=100\n   \n   # Restart the container\n   docker-compose restart\n   \n   # If container fails to build\n   docker-compose build --no-cache\n   ```\n\n4. **Permission Issues**\n   ```bash\n   # Fix permissions on recordings directory\n   chmod -R 644 recordings/*.mp3\n   ```\n\n### Logs\n- Icecast logs are located in `/var/log/icecast2/` inside the container\n- View logs using: `docker-compose logs -f`\n\n## Advanced Usage\n\n### Custom Stream Settings\n\nTo modify stream quality, edit `config/liquidsoap.liq`:\n```liquidsoap\noutput.icecast(\n  %mp3(bitrate=192), # Change bitrate here\n  ...\n)\n```\n\n### Nginx Reverse Proxy Setup\n\nFor production deployments, it's recommended to use Nginx as a reverse proxy to handle SSL termination and provide better security.\n\n1. Install Nginx:\n```bash\nsudo apt update\nsudo apt install nginx\n```\n\n2. Create a new site configuration:\n```bash\nsudo nano /etc/nginx/sites-available/radioflow\n```\n\nAdd the following configuration:\n```nginx\nserver {\n    listen 80;\n    server_name your-domain.com;  # Replace with your domain\n\n    location / {\n        proxy_pass http://localhost:8000;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n\n    location /stream {\n        proxy_pass http://localhost:8000/stream;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_buffering off;  # Important for streaming\n    }\n}\n```\n\n3. Enable the site and restart Nginx:\n```bash\nsudo ln -s /etc/nginx/sites-available/radioflow /etc/nginx/sites-enabled/\nsudo nginx -t\nsudo systemctl restart nginx\n```\n\n4. For SSL support, install Certbot:\n```bash\nsudo apt install certbot python3-certbot-nginx\nsudo certbot --nginx -d your-domain.com\n```\n\nYour stream will now be available at `https://your-domain.com/stream`\n\n## Security Notes\n\n- Change default passwords in `config/icecast.xml` before deploying to production\n- Consider using a reverse proxy (like Nginx) for SSL termination\n- If using UFW firewall:\n  ```bash\n  sudo ufw allow 8000/tcp\n  ```\n\n## Contributing\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## License\n\nRadioFlow+ is open source software licensed under the MIT License. You can freely use, modify, and distribute this software. However, it comes with ABSOLUTELY NO WARRANTY. See the LICENSE file for details.\n\n\n## Parting Shot \n\nAs James Evan Pilato says, Don't Hate The Media Become The Media\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbetter-call-jason%2Fradioflowplus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbetter-call-jason%2Fradioflowplus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbetter-call-jason%2Fradioflowplus/lists"}