A nostalgic web-based implementation of the classic Winamp media player, powered by Webamp. Experience the iconic Winamp 2.9 interface right in your browser with full functionality and authentic styling.
Choose one of the following options:
- Python 3.11 or higher
- Modern web browser (Chrome, Firefox, Safari, Edge)
- Docker Engine 20.10+
- Docker Compose 1.29+ (optional, for docker-compose deployment)
- Clone the repository:
git clone <repository-url>
cd winamp- Start the server:
python server.py- Open your browser and navigate to:
http://localhost:8080
- Build and run using Docker:
docker build -t winamp-player .
docker run -p 8080:8080 winamp-player- Access the application at:
http://localhost:8080
- Start the service:
docker-compose up -d- Access the application at:
http://localhost:8080
- Stop the service:
docker-compose downwinamp/
├── index.html # Main HTML entry point
├── server.py # Simple Python HTTP server
├── webamp.bundle.min.js # Webamp library bundle
├── Dockerfile # Docker image configuration
├── docker-compose.yml # Docker Compose orchestration
└── README.md # This file
The default port is 8080. To change it:
For Python server:
Edit server.py and modify the PORT variable:
PORT = 8080 # Change to your desired portFor Docker:
Update the port mapping in docker-compose.yml:
ports:
- "8080:8080" # Change the first port to your desired host portThe Webamp instance can be customized by modifying the initialization in index.html:
const webamp = new window.Webamp({
// Add configuration options here
// See: https://github.com/captbaritone/webamp#usage
});Once the application is running:
- Load Audio: Drag and drop audio files onto the player or use the playlist editor
The Docker Compose configuration includes a health check that:
- Runs every 30 seconds
- Ensures the server is responding
- Automatically restarts if unhealthy
- Base Image:
python:3.11-slim - Working Directory:
/app - Exposed Port:
8080 - Restart Policy:
unless-stopped
This project includes automated Docker image builds and publishing to Docker Hub via GitHub Actions.
The Generate Docker Image workflow (.github/workflows/main.yml) automatically:
-
Triggers on:
- Push to
mainbranch - Manual workflow dispatch
- Push to
-
Multi-platform builds:
linux/amd64(x86-64)linux/arm64(ARM 64-bit)
-
Automatic tagging strategy:
latest- Always points to the most recent build from mainsha-<commit>- Tagged with the first 8 characters of the git commit SHA<branch>- Tagged with the sanitized branch name (e.g.,main)<version>- If pushing a git tag, uses that version (e.g.,v1.0.0)
For a commit abc12345 on the main branch:
username/winamp:latestusername/winamp:sha-abc12345username/winamp:main
For a tagged release v1.2.3:
username/winamp:latestusername/winamp:sha-abc12345username/winamp:v1.2.3
This project uses the Webamp library. Please refer to the Webamp license for details.
- Webamp by Jordan Eldredge - The amazing JavaScript implementation of Winamp
- Nullsoft - Original creators of Winamp
- The open-source community for continued support and contributions
If you encounter any issues or have questions:
- Check the Webamp documentation
- Open an issue in this repository
- Review existing issues for solutions
Completed features:
- Pre-configured music library with 5 streaming radio stations
- Streaming audio source integration (SomaFM, Radio Paradise)
- Playlist persistence using localStorage
- Support for multiple Webamp skins (4 skins included)
- Comprehensive documentation for adding local and remote audio files
Potential future enhancements:
- Mobile-optimized interface
- Backend music library server
- User authentication and cloud playlist sync
- Advanced audio effects and DSP
- Podcast RSS feed integration
Enjoy the nostalgia! 🎵
It really whips the llama's ass! 🦙