Lyrics and karaoke for the music player
build-container / build (push) Successful in 12m8s

- full-screen lyrics view that follows the song: highlighted current line with a colour sweep (word by word when the source has word timing), tap a line to jump, text size, timing nudge, 'Wrong lyrics?' search
- Karaoke mode: the current line large and centered
- lyrics from Plex first, then the bundled Lyrica service (LRCLIB, Musixmatch via Lrcmux, NetEase, Megalobiz); YouTube captions never used; wrong-length recordings refused; answers kept in /data/lyrics
- lyrica/: Lyrica pinned to one commit, built by the workflow as hub-lyrica; compose service sharing the hub's network
- tools/lyrics-test.js

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
nmemmertandClaude Sonnet 5.5 committed 2026-10-21 11:13:00 -04:00
1 parent bfd37967c3
commit fc0ae05415
10 files changed
+397 -10

No files matched your search

+13
View File
@@ -23,6 +23,7 @@ services:
WEBMAIL_BACKEND_URL: http://127.0.0.1:80 # the bundled webmail (Cypht, below, shares this container's network); the hub shows it at /webmail/
CYPHT_USER: ${CYPHT_USER:-hub} # the webmail's login; the Mail tab signs in with it for you
CYPHT_PASSWORD: ${CYPHT_PASSWORD:-}
LYRICS_API_URL: http://127.0.0.1:9999 # the bundled lyrics service (Lyrica, below, shares this container's network); remove this line and the service to skip it
SIGNAL_API_URL: http://127.0.0.1:8085 # the bundled Signal bridge (below, shares this container's network); remove this line and the service to skip Signal
PODCAST_URL: ${PODCAST_URL:-https://podcast.necloud.us/}
ONLYOFFICE_JWT_SECRET: ${ONLYOFFICE_JWT_SECRET:-} # same value as the OnlyOffice server's JWT secret
@@ -72,6 +73,18 @@ services:
volumes:
- signal-data:/home/.local/share/signal-cli
# Lyrics and karaoke for the music player. Lyrica looks songs up on public lyrics sources (LRCLIB, Musixmatch via Lrcmux, NetEase, Megalobiz);
# the song's artist and title are sent to them. Plex's own lyrics are used first when the song has them. See README -> Music.
lyrica:
image: git.necloud.us/nate/hub-lyrica:latest # built by the Gitea workflow from ./lyrica (Lyrica pinned to one commit)
build: ./lyrica
restart: unless-stopped
network_mode: "service:hub" # reached by the hub at 127.0.0.1:9999 and by nothing else
depends_on:
- hub
environment:
PORT: "9999"
volumes:
hub-data:
name: nehub-data # fixed name so the data survives redeploys and renamed stacks