Skip to content

DimitriLaPoudre/MusicShack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

268 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MusicShack

Self-Hosted Web Application for Music Library Import and Management

Last Commit License GitHubStars Docker Package
Go SvelteKit PostgreSQL Docker


About

MusicShack is a self-hosted web application to import, format, and manage a music library. It centralizes browsing, downloading, and metadata handling via multiple sources, with automatic downloads of your favorite artists’ new releases. The server stores downloads locally, while the web UI provides search, download, follow, library editing, and admin features for multiple users.


Important

This is my first useful solo project using technologies that are completely new to me. I refactor many things every time I notice past architecture error.
Feel free to correct me or ask for any features you think are relevant.

Song tagging is based on the Navidrome standard (I don't know if it's compatible with other music servers; I hope so^^).


Features

  • Browse and search music catalogs through different sources
  • Download tracks and albums directly from these sources
  • Follow artists — every day at 1AM, MusicShack will download any new songs released by the artists you follow
  • Add new source URL
  • User authentication and simple user management
  • Admin panel for adding new users
  • Deployable with Docker / Docker Compose
  • Plugin architecture to add new data sources in the future, like DAB or even your friends' servers

Screenshots

TO-DO


Deployment (Docker)

MusicShack provides an example.env file for quick deployment
For more info about environment variable

Deployment steps

  1. Copy the .env file:

    cp example.env .env
  2. Launch MusicShack:

    docker compose up -d
  3. Access the admin panel:

    • Go to http://localhost:8080/admin
    • Use your password set at ADMIN_PASSWORD in the .env file
  4. Create a user via the admin panel:

    • Enter an username and a password
    • Click on the + button or press Enter key
  5. Access the main interface:

    • Go to http://localhost:8080/
    • Log in as the new user you created

    Welcome to MusicShack^^


Usage

  • Add sources:
    • Click on the Settings button
    • Enter an instance URL (find some here)
    • Click on the + button or press Enter key
  • Follow an artist:
    • Click on the Search button
    • Select the artist name
    • Go to the Artist section
    • Click on their profile
    • Click on the Follow button
  • Download a song:
    • Click on the Search button
    • Select the song name
    • Go to the Song section
    • Click on the Download button under the song
  • Upload a song:
    • Click on the Library button
    • Click on the Upload button
    • Select a file
    • Choose a cover, title, album name, etc.
    • Click on the Save button
  • Edit a song:
    • Click on the Library button
    • Click on the Edit button of the song you want to edit
    • Choose a new cover, title, album name, etc.
    • Click on the Save button

Environment Variable

  • HTTPS = boolean (false by default) set at true if your domain use https
  • PORT = number (8080 by default) port where the app will be accessible
  • LIBRARY_PATH = string (mandatory) path to the library (downloads/uploads will go into that directory)
  • ADMIN_PASSWORD = string (mandatory) default password for admin panel
  • POSTGRES_HOST = string (mandatory) localhost or name of the service that contains PostgreSQL
  • POSTGRES_USER = string (mandatory)
  • POSTGRES_PASSWORD = string (mandatory)
  • POSTGRES_DB = string (mandatory)

Roadmap

The project roadmap is managed via GitHub Projects


Contributing

  • Open an issue to discuss features or bugs
  • Feel free to add a plugin for a new provider and open a PR

Credits

  • Design inspired by the black theme of monochrome
  • The whole idea comes from the existence of the hifi API

License

MIT — see the LICENSE file.

Important

Disclaimer

This project is intended for educational and personal use only. The developers do not encourage or endorse piracy.

  • Users are solely responsible for complying with copyright laws in their jurisdiction.
  • All music rights remain with their respective copyright holders.
  • This tool serves as an interface for personal, non-commercial use.

MusicShack assumes no responsibility for any misuse or legal violations.