Files
Audiolib/README.md
Audiolib 14ffee3051 Initial commit: Phase 1 – Projektstruktur, DB-Schema, Core-API
- FastAPI-Backend mit vollständiger ABS v2.x API-Kompatibilität
- SQLAlchemy-Models: User, Library, LibraryItem, BookFile, Chapter,
  Podcast, PodcastEpisode, MediaProgress, Bookmark, PlaybackSession
- Auth: JWT-Login (/login, /logout, /api/authorize)
- Library + Items Endpoints inkl. camelCase ABS-Response-Format
- HLS-Streaming via FFmpeg (POST /api/items/:id/play, Session-Sync)
- Me/Progress Endpoints + Lesezeichen
- User-Management + Server-Settings (Admin)
- Library-Scanner (MP3/WAV Discovery, Hintergrund-Task)
- File Watcher (watchdog, 30s Debounce)
- Matching-Skelett (MusicBrainz, OpenLibrary, Google Books – Phase 5)
- Docker-Setup: backend (Python 3.12+FFmpeg), frontend (React/Vite),
  nginx Reverse-Proxy auf Port 3000
- setup.sh: Installiert Docker auf Debian/Ubuntu, richtet .env ein

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 11:43:35 +02:00

3.6 KiB

Audiolib

Selbst gehosteter Audiobook- und Podcast-Server, vollständig API-kompatibel mit Audiobookshelf (ABS) v2.x. Bestehende Audiobookshelf-Apps (iOS, Android, etc.) funktionieren ohne Änderungen.

Voraussetzungen

  • Docker und Docker Compose installiert
  • Audiodateien (MP3/WAV) auf dem Server verfügbar

Schnellstart

1. Repository klonen / Dateien vorbereiten

cd /opt/audiolib
cp .env.example .env

2. .env anpassen

Mindestens folgende Werte setzen:

JWT_SECRET=mein_langer_geheimer_zufallsstring
ADMIN_USERNAME=admin
ADMIN_PASSWORD=sicheres_passwort
AUDIOFILES_PATH=/pfad/zu/meinen/audiodateien

3. Starten

docker-compose up -d --build

Der Server ist dann erreichbar unter: http://<server-ip>:3000

4. Erste Schritte

  1. Öffne http://<server-ip>:3000 im Browser
  2. Melde dich mit den in .env gesetzten Admin-Daten an
  3. In der Audiobookshelf-App: Server-URL http://<server-ip>:3000 eintragen
  4. Library scannen: Admin → Libraries → Scan

Konfiguration

Alle Einstellungen werden über die .env-Datei konfiguriert:

Variable Standard Beschreibung
SERVER_PORT 3000 Externer Port
JWT_SECRET Unbedingt ändern! Langer zufälliger String
ADMIN_USERNAME admin Admin-Benutzername
ADMIN_PASSWORD changeme Unbedingt ändern!
AUDIOFILES_PATH ./audiofiles Pfad zu den Audiodateien (NAS-Mount möglich)
AUTO_MATCH_BOOKS true Automatisches Metadaten-Matching für Hörbücher
AUTO_MATCH_PODCASTS true Automatisches Matching für Podcasts
PODCAST_UPDATE_INTERVAL_HOURS 24 Wie oft Podcast-Feeds aktualisiert werden

Projektstruktur

audiolib/
├── backend/         Python/FastAPI Backend
│   └── app/
│       ├── models/      SQLAlchemy-Datenmodelle
│       ├── routers/     API-Endpoints
│       ├── schemas/     Pydantic-Schemas (ABS-kompatibel)
│       └── services/    Scanner, HLS, File Watcher, Matching
├── frontend/        React/Vite Web-Interface (Phase 8)
├── nginx/           Reverse-Proxy-Konfiguration
├── data/            Persistente Daten (DB, Cover, HLS-Cache)
└── docker-compose.yml

API-Kompatibilität

Implementierte ABS-Endpoints:

  • POST /login — Authentifizierung
  • GET /api/authorize — Token-Validierung + User/Libraries
  • GET /api/libraries — Library-Liste
  • GET /api/libraries/:id/items — Hörbücher/Podcasts einer Library
  • GET /api/items/:id — Einzelnes Item mit Metadaten
  • GET /api/items/:id/cover — Cover-Bild
  • POST /api/items/:id/play — HLS-Streaming starten
  • POST /api/playback-session/:id/sync — Fortschritt synchronisieren
  • GET /api/me — User-Profil mit Fortschritt
  • PATCH /api/me/progress/:id — Hörfortschritt setzen
  • POST /api/me/bookmark/:id — Lesezeichen setzen
  • GET /api/users — User-Verwaltung (Admin)
  • GET /api/settings — Server-Einstellungen

Entwicklung

Backend lokal starten (ohne Docker)

cd backend
pip install -r requirements.txt
cp ../.env.example .env
uvicorn app.main:app --reload --port 8000

Frontend lokal starten

cd frontend
npm install
npm run dev

Geplante Features (nächste Phasen)

  • Phase 5: Matching-Engine Hörbücher (MusicBrainz, OpenLibrary, Google Books)
  • Phase 6: Matching-Engine Podcasts (iTunes, Podcastindex)
  • Phase 7: Vollständiger Podcast-Support (RSS-Feeds, Episoden)
  • Phase 8: Vollständiges Web-Interface mit Player
  • Phase 9: Web-Player mit Kapitelnavigation, Lesezeichen, Sleep-Timer

Lizenz

MIT