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

124 lines
3.6 KiB
Markdown

# 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://<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)
```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