sleep-meditation/README.md
Ivo Oskamp 0d9f20690f Release v0.1.6
- Switch to shared build-and-push.sh; version read from docs/changelog.md
- Add docs/changelog.md; remove version.txt, .last-branch, .gitignore
- Stack: image tag via SLEEP_MEDITATION_IMAGE_TAG
- Downloader: YouTube support (yt-dlp + ffmpeg), best audio to mp3
- Downloader: Content-Type validation for direct URLs
- Downloader: auto-fetch YouTube title; title field optional
- Downloader: progress bar with phase (downloading/converting)
- Downloader: store source URL per file; show Source link in manage list

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 15:13:10 +02:00

2.0 KiB

Sleep Meditation

Sleep Meditation is a self-hosted web player for MP3 files, optimized for mobile use.

Goal

A simple website that can play MP3 audio while an iPhone screen is locked, as long as playback is started manually (iOS limitation).

Features

  • Playlist through mp3/playlist.json
  • Automatic track discovery from /mp3/ when playlist.json is missing
  • Standard HTML5 audio player
  • Media Session API support (play/pause/next/previous on lock screen)
  • Playlist ends at the last track (no automatic loop)
  • Back to start button resets to track 1 without autoplay
  • Server-side audio download via URL (avoids browser timeout on long files)
  • Downloaded tracks stored in /mp3/downloads/, played individually (no auto-advance)
  • Track titles editable via Settings page (titles stored separately from filenames)
  • Rename and delete downloaded tracks via Settings
  • Two-page UI: player + settings (hash routing)
  • PWA manifest + service worker
  • Containerized with Nginx + Python API (supervisord)

Repository layout

  • containers/sleep-meditation/: Docker image, Nginx config, Python API, web app
  • stack/stack.yml: Portainer/Compose stack
  • stack/sleep-meditation.env: environment variables
  • docs/TECHNICAL.md: technical details and iPhone behavior

Deploy (Portainer)

  1. Deploy stack/stack.yml with variables from stack/sleep-meditation.env.
  2. Ensure ${SLEEP_MEDITATION_MP3_PATH} points to a host folder containing MP3 files.
  3. Optionally add ${SLEEP_MEDITATION_MP3_PATH}/playlist.json for custom ordering/metadata.
  4. Open http://<host>:<port> and press Play manually once.

Playlist format

mp3/playlist.json

[
  {
    "title": "Deep Sleep Wave",
    "artist": "Sleep Meditation",
    "src": "/mp3/deep-sleep-wave.mp3"
  }
]

Download a track

Open Settings in the app, enter a direct audio URL and a title, then press Download. The file is downloaded server-side and saved to mp3/downloads/. It appears in the Downloads section on the main page.