Connor Johnstone 49d1d2252e
CI / check (push) Failing after 43s
CI / docker (push) Has been skipped
Added the import/cleanup functionality
2026-03-24 15:58:14 -04:00
2026-03-19 12:22:45 -04:00
2026-03-23 16:52:01 -04:00
2026-03-17 13:55:42 -04:00
2026-03-17 13:55:42 -04:00
2026-03-17 13:55:42 -04:00
2026-03-24 12:57:12 -04:00
2026-03-23 18:37:46 -04:00
2026-03-17 13:55:42 -04:00
2026-03-17 21:58:47 -04:00
2026-03-23 17:02:11 -04:00
2026-03-23 16:52:01 -04:00
2026-03-22 13:00:12 -04:00
2026-03-18 15:37:30 -04:00
2026-03-17 13:44:34 -04:00
2026-03-23 17:02:11 -04:00

Shanty

Docs API Config License: MIT

Shanty is a self-hosted music management application. It searches MusicBrainz for artists and albums, downloads music from YouTube, tags and organizes files, and serves your library over the Subsonic protocol for streaming on any device.

Features

  • Search MusicBrainz for artists, albums, and tracks
  • Watch artists or albums to track their full discography at the individual track level
  • Download music via yt-dlp with YouTube Music search
  • Tag files automatically using MusicBrainz metadata
  • Organize files into clean directory structures with configurable templates
  • Stream your library to any Subsonic-compatible music app
  • Playlists generated from similar-artist data (Last.fm), with drag-and-drop editing and M3U export
  • Monitor artists for new releases, automatically added to your watchlist
  • Web UI built in Rust/WASM for managing everything from your browser

Quick Start with Docker

This is the recommended way to run Shanty.

1. Create a file called docker-compose.yml:

services:
  shanty:
    image: git.rcjohnstone.com/connor/shanty:latest
    ports:
      - "8085:8085"
      # - "6080:6080"  # Optional: expose if YouTube login iframe doesn't load
    volumes:
      - ./config:/config
      - ./data:/data
      - /path/to/your/music:/music
    environment:
      - SHANTY_WEB_BIND=0.0.0.0
    restart: unless-stopped

2. Replace /path/to/your/music with the directory where you want your music library stored. The ./data directory will be created automatically and stores the database, downloads, and any imported MusicBrainz data. If you plan to use the local MusicBrainz database, put this on an SSD.

3. Start the container:

docker compose up -d

4. Open http://localhost:8085 in your browser. Create an account on first launch.

5. Search for an artist, click Watch All, then click Set Sail to start downloading.

Quick Start from Source

For developers who want to build and run locally:

# Prerequisites: Rust (edition 2024), yt-dlp, ffmpeg, Python 3, ytmusicapi, Trunk
git clone https://git.rcjohnstone.com/connor/shanty.git
cd shanty

# Build frontend
cd shanty-web/frontend && trunk build --release && cd ../..

# Build and run
cargo run --release --bin shanty -- -v
# Open http://localhost:8085

Documentation

License

MIT

S
Description
The main cargo workspace for shanty
Readme 1 MiB
Languages
Rust 99%
Dockerfile 0.8%
Just 0.2%