Turn your public GitHub repository into a free, automated personal cloud music server that streams directly to VLC on your phone, PC, or tablet.
- Upload: You add
.mp3,.wav,.m4a,.flac, or.oggfiles to themp3files/directory. - Automate: A GitHub Action automatically triggers, scans your files, builds a
playlist.m3ufile, and updates it on GitHub. - Stream: VLC loads the
playlist.m3ufile from GitHub's serverless CDN and streams the audio.
| Music | By | Duration |
|---|---|---|
| Africa | Toto | 04:55 |
| Blue Neon | Projekt F | 03:38 |
| Boundary | Krosia | 03:32 |
| Can I Call You Tonight | Dayglow | 03:31 |
| Down Under | Men At Work | 03:42 |
| Dreams (Islam Makhachev UFC Walkout) | DJ Nariman | 02:18 |
| Jet Lag | Simple Plan ft. Natasha Bedingfield | 03:24 |
| Lost Highway (Instrumental) | NightCrawl | 03:55 |
| Magic In The Air | MAGIC SYSTEM feat. Chawki | 03:53 |
| Magomed Ankalaev UFC Walkout Song | Magomed Ankalaev | 02:24 |
| Ordinary | Ordinary | 03:17 |
| Ordinary (Slowed) | Ordinary | 03:30 |
- Go to GitHub and create a new public repository (e.g.,
my-cloud-music). - Make sure it is Public so VLC can access the stream link without credentials.
Initialize Git in this local folder and push it to your new repository:
git init
git add .
git commit -m "Initial setup"
git branch -M main
git remote add origin https://github.com/YOUR_USERNAME/YOUR_REPO_NAME.git
git push -u origin mainExample:
https://raw.githubusercontent.com/pakcli/github-music-server/main/playlist.m3u
By default, GitHub Actions might not have permission to write changes (like playlist.m3u) back to your repository. Enable it:
- In your GitHub repository, click on Settings (top tabs).
- Go to Actions > General on the left sidebar.
- Scroll down to Workflow permissions.
- Select Read and write permissions.
- Click Save.
Once the GitHub Action runs (which it will when you add files to mp3files/), copy your raw playlist link:
- Go to your repository on GitHub.
- Find
playlist.m3uand click on it. - Click the Raw button in the top right of the file view.
- Copy the URL from your browser's address bar. It will look like this:
https://raw.githubusercontent.com/YOUR_USERNAME/YOUR_REPO_NAME/main/playlist.m3u - Open VLC:
- PC/Mac: Press
Ctrl+N(orCmd+Non Mac) / Go toMedia->Open Network Stream... - Mobile: Go to
Network->Open Network Stream/Stream
- PC/Mac: Press
- Paste the raw URL and press Play!
If you lose internet connection or do not want to use cellular data/internet, you can still play and stream your music locally. The playlist playlist.m3u uses plain relative paths with literal spaces (no %20 URL-encoding), which makes it fully offline-compatible with VLC on all devices.
No server is required to play your music locally on the PC where the files are stored:
- Open your file explorer and navigate to the project directory.
- Double-click the playlist.m3u file (or right-click and open with VLC).
- Since the playlist uses relative file paths with literal spaces, VLC resolves and plays all files directly from your disk offline!
You can play your music fully offline on your mobile device (phone or tablet) without running a local server:
- Copy the
playlist.m3ufile and themp3files/directory from your PC to your phone/tablet storage (keep them in the same parent directory so relative paths remain valid). - Open VLC on your phone/tablet, navigate to directories, and open the
playlist.m3ufile. - VLC will resolve the literal file paths and play the files directly from your device's local storage.
If you want to stream the music from your PC to other devices on the same Wi-Fi network without using the internet:
- Open PowerShell in this folder.
- Run the start script:
.\start.ps1
- The script will:
- Automatically scan and fix file extensions in the
mp3files/directory by inspecting their binary headers (e.g., correcting M4A files incorrectly named.mp3so VLC plays them correctly). - Regenerate the local
playlist.m3ufile. - Start a local HTTP server on port
8000.
- Automatically scan and fix file extensions in the
- Copy the network URL printed by the script (e.g.,
http://192.168.x.x:8000/playlist.m3uor the mDNS hostnamehttp://<computer-name>.local:8000/playlist.m3u). - Open VLC on your phone/tablet, go to Network Stream, paste that local URL, and start listening! (VLC will automatically handle URL-encoding for the network requests over the local Wi-Fi connection).
- Add your new music files to the
mp3files/directory. - Run
.\start.ps1locally to automatically fix any wrong file extensions and regenerate the localplaylist.m3u. - Commit and push your changes to GitHub. The GitHub Action will automatically run to update the online playlist so VLC can sync the next time you stream!