Take full control of your entertainment experience with a comprehensive media server designed for portability and scale. Whether you are managing a massive collection of movies, tracking your progress on television series, or discovering new favorites, this platform keeps everything perfectly organized. Keep track of your watch history so you never lose your place in a season, and easily resume playback across different devices. Browse by intuitive categories like Family, Fantasy, and News to find exactly what you are in the mood for. Receive personalized recommendations based on your viewing habits, ensuring you always have something great to watch. Built to handle vast libraries, it offers a seamless way to host, categorize, and enjoy your digital media files without relying on third-party streaming services.
services:
kyoo:
image: ghcr.io/zoriya/kyoo:latest
container_name: kyoo
restart: unless-stopped
ports:
- 80:80
environment:
- DB_HOST=postgres
- DB_PORT=5432
- DB_USER=kyoo
- DB_PASSWORD=${DB_PASSWORD}
- DB_NAME=kyoo
- REDIS_HOST=redis
- REDIS_PORT=6379
- MEILISEARCH_HOST=http://meilisearch:7700
- MEILISEARCH_API_KEY=${MEILI_MASTER_KEY}
- JWT_SECRET=${JWT_SECRET}
volumes:
- ./data/config:/app/config
- ./data/logs:/app/logs
- ./media:/app/media
depends_on:
- postgres
- redis
- meilisearch
postgres:
image: postgres:15-alpine
container_name: kyoo_postgres
restart: unless-stopped
environment:
- POSTGRES_USER=kyoo
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=kyoo
volumes:
- ./data/db:/var/lib/postgresql/data
redis:
image: redis:alpine
container_name: kyoo_redis
restart: unless-stopped
volumes:
- ./data/redis:/data
meilisearch:
image: getmeili/meilisearch:v1.3
container_name: kyoo_meilisearch
restart: unless-stopped
environment:
- MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
- MEILI_NO_ANALYTICS=true
volumes:
- ./data/meili:/meili_dataDB_PASSWORD=secure_database_password
MEILI_MASTER_KEY=secure_meili_master_key_min_16_bytes
JWT_SECRET=secure_random_jwt_secret_stringAuto-fetched about 18 hours ago
Auto-fetched about 18 hours ago