An opinionated docker container for a web-interface around the music organizer beets
  • TypeScript 61.8%
  • Python 35.7%
  • SCSS 0.7%
  • Shell 0.6%
  • JavaScript 0.4%
  • Other 0.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2025-12-29 17:56:19 +01:00
.github Added prettier commit to git blame ignore revs. 2025-12-09 18:05:31 +01:00
backend Version bump 2025-12-28 19:36:22 +01:00
docker Added ability to define more groups to take care of ACLs. New EXTRA_GROUPS env var (#239) 2025-12-09 11:18:20 +01:00
docs Added ability to define more groups to take care of ACLs. New EXTRA_GROUPS env var (#239) 2025-12-09 11:18:20 +01:00
frontend Version bump 2025-12-28 19:36:22 +01:00
notebooks RC1-v1.0.0 (#61) 2025-06-04 18:41:42 +02:00
.dockerignore Include boot script dockerfile (#112) 2025-06-16 19:20:27 +02:00
.git-blame-ignore-revs Added prettier commit to git blame ignore revs. 2025-12-09 18:05:31 +01:00
.gitignore RC1-v1.0.0 (#61) 2025-06-04 18:41:42 +02:00
.pre-commit-config.yaml RC1-v1.0.0 (#61) 2025-06-04 18:41:42 +02:00
CHANGELOG.md Version bump 2025-12-28 19:36:22 +01:00
LICENSE merging 35 improve onboarding experience (#42) 2024-11-13 20:44:42 +01:00
README.md Added a support the project section to the readme (#247) 2025-12-29 17:56:19 +01:00

Beets-flask

version number Docker Pulls License: MIT docker-hub build status Documentation Status

Opinionated web-interface around the music organizer beets

Features

  • Autogenerate previews before importing
  • Auto-Import good matches
  • Import via GUI
  • Undo imports
  • Web-Terminal
  • Monitor multiple inboxes
  • Library view and search

https://github.com/user-attachments/assets/b7c7ae32-36ac-4950-b2ed-186b80d7075b

Motivation

Autotagging music with beets is great. Beets identifies metadata correctly most of the time, and if you are not a control-freak, there is hardly any reason to check the found metadata.

However, if you do want a bit more control, things could be more convenient.

This is the main idea with beets-flask: For all folders in your inbox, we generate a preview of what beets would do and show you those previews. Then it's easy to go through them and import the correct ones, or pick other candidates for those that were not to your liking.

Quickstart

We provide a docker image with the full beeets-flask setup. You can run it with docker-compose or docker. We recommend using the stable tag, alternatively you may use latest for the most recent build.

Setup container

Using docker

docker run -d -p 5001:5001 \
    -e TZ=Europe/Berlin \
    -e USER_ID=1000 \
    -e GROUP_ID=1000 \
    -v /wherever/config/:/config \
    -v /music_path/inbox/:/music_path/inbox/ \
    -v /music_path/clean/:/music_path/clean/ \
    --name beets-flask \
    pspitzner/beets-flask:stable

Using docker compose

services:
    beets-flask:
        image: pspitzner/beets-flask:stable
        restart: unless-stopped
        ports:
            - "5001:5001"
        environment:
            # 502 is default on macos, 1000 on linux
            TZ: Europe/Berlin
            USER_ID: 1000
            GROUP_ID: 1000
        volumes:
            - /wherever/config/:/config
            # for music folders, match paths inside and out of container!
            - /music_path/inbox/:/music_path/inbox/
            - /music_path/clean/:/music_path/clean/

This will create a container with the following folder structure:

├── music_path
│   ├── inbox
│   └── clean
└── config
    ├── beets
    │   ├── config.yaml
    │   └── library.db
    └── beets-flask
        ├── config.yaml
        └── beets-flask-sqlite.db

Check our documentation for more information!

Limitations

There are a few known issues, see the corresponding docs section for details.

Support the Project

If you enjoy this project, there are a few ways you can support us: