# 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 ```bash cd /opt/audiolib cp .env.example .env ``` ### 2. `.env` anpassen Mindestens folgende Werte setzen: ```env JWT_SECRET=mein_langer_geheimer_zufallsstring ADMIN_USERNAME=admin ADMIN_PASSWORD=sicheres_passwort AUDIOFILES_PATH=/pfad/zu/meinen/audiodateien ``` ### 3. Starten ```bash docker-compose up -d --build ``` Der Server ist dann erreichbar unter: `http://:3000` ### 4. Erste Schritte 1. Öffne `http://:3000` im Browser 2. Melde dich mit den in `.env` gesetzten Admin-Daten an 3. In der Audiobookshelf-App: Server-URL `http://: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) ```bash cd backend pip install -r requirements.txt cp ../.env.example .env uvicorn app.main:app --reload --port 8000 ``` ### Frontend lokal starten ```bash 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