mirror of
https://github.com/vhaudiquet/homeprod.git
synced 2025-12-19 20:46:09 +00:00
Initial commit
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
services:
|
||||
jackett:
|
||||
container_name: jackett
|
||||
image: ghcr.io/hotio/jackett
|
||||
ports:
|
||||
- "9117"
|
||||
networks:
|
||||
- default
|
||||
- proxy
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- UMASK=002
|
||||
- TZ=Europe/Paris
|
||||
volumes:
|
||||
- config:/config
|
||||
- definitions:/app/Definitions
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.jackett.rule=Host(`jackett.local`)"
|
||||
|
||||
volumes:
|
||||
config:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/app/jackett/config'
|
||||
definitions:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/app/jackett/Definitions/Custom'
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
name: proxy
|
||||
@@ -0,0 +1,58 @@
|
||||
services:
|
||||
jellyfin:
|
||||
image: jellyfin/jellyfin
|
||||
container_name: jellyfin
|
||||
user: "1000:1000"
|
||||
networks:
|
||||
- default
|
||||
- proxy
|
||||
ports:
|
||||
- "8096"
|
||||
volumes:
|
||||
- config:/etc/jellyfin
|
||||
- data:/var/lib/jellyfin
|
||||
- cache:/cache
|
||||
- log:/log
|
||||
- nfs_films:/films
|
||||
- nfs_series:/series
|
||||
restart: 'unless-stopped'
|
||||
# Alternative address used for autodiscovery
|
||||
environment:
|
||||
- JELLYFIN_PublishedServerUrl=https://flix.vhaudiquet.fr
|
||||
- JELLYFIN_CONFIG_DIR=/etc/jellyfin
|
||||
- JELLYFIN_DATA_DIR=/var/lib/jellyfin
|
||||
- JELLYFIN_LOG_DIR=/log
|
||||
- JELLYFIN_CACHE_DIR=/cache
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.jellyfin.rule=Host(`flix.vhaudiquet.fr`)"
|
||||
|
||||
volumes:
|
||||
nfs_films:
|
||||
driver_opts:
|
||||
type: 'nfs'
|
||||
o: 'addr=truenas.local,ro'
|
||||
device: ':/mnt/media/films'
|
||||
nfs_series:
|
||||
driver_opts:
|
||||
type: 'nfs'
|
||||
o: 'addr=truenas.local,ro'
|
||||
device: ':/mnt/media/series'
|
||||
cache:
|
||||
log:
|
||||
config:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/app/jellyfin/config'
|
||||
data:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/app/jellyfin/data'
|
||||
networks:
|
||||
proxy:
|
||||
name: proxy
|
||||
external: true
|
||||
@@ -0,0 +1,32 @@
|
||||
services:
|
||||
jellyseerr:
|
||||
image: fallenbagel/jellyseerr:latest
|
||||
container_name: jellyseerr
|
||||
environment:
|
||||
- LOG_LEVEL=debug
|
||||
- TZ=Europe/Paris
|
||||
- PORT=5055 #optional
|
||||
networks:
|
||||
- default
|
||||
- proxy
|
||||
ports:
|
||||
- 5055
|
||||
volumes:
|
||||
- config:/app/config
|
||||
restart: unless-stopped
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.jellyseerr.rule=Host(`jellyseerr.local`)"
|
||||
|
||||
volumes:
|
||||
config:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/app/jellyseerr/config'
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
name: proxy
|
||||
external: true
|
||||
44
docker/personal/media/films-series/radarr/docker-compose.yml
Normal file
44
docker/personal/media/films-series/radarr/docker-compose.yml
Normal file
@@ -0,0 +1,44 @@
|
||||
services:
|
||||
radarr:
|
||||
container_name: radarr
|
||||
image: ghcr.io/hotio/radarr
|
||||
ports:
|
||||
- "7878"
|
||||
networks:
|
||||
- default
|
||||
- proxy
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- UMASK=002
|
||||
- TZ=Europe/Paris
|
||||
volumes:
|
||||
- config:/config
|
||||
- data_movies:/films
|
||||
- data_downloads:/mediadl
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.radarr.rule=Host(`radarr.local`)"
|
||||
|
||||
volumes:
|
||||
config:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/app/radarr/config'
|
||||
data_movies:
|
||||
driver_opts:
|
||||
type: 'nfs'
|
||||
o: 'addr=truenas.local'
|
||||
device: ':/mnt/media/films'
|
||||
data_downloads:
|
||||
driver_opts:
|
||||
type: 'nfs'
|
||||
o: 'addr=truenas.local'
|
||||
device: ':/mnt/media/download'
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
name: proxy
|
||||
48
docker/personal/media/films-series/sonarr/docker-compose.yml
Normal file
48
docker/personal/media/films-series/sonarr/docker-compose.yml
Normal file
@@ -0,0 +1,48 @@
|
||||
services:
|
||||
sonarr:
|
||||
container_name: sonarr
|
||||
image: ghcr.io/hotio/sonarr:latest
|
||||
ports:
|
||||
- "8989"
|
||||
networks:
|
||||
- default
|
||||
- proxy
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- UMASK=002
|
||||
- TZ=Europe/Paris
|
||||
volumes:
|
||||
- config:/config
|
||||
- data_series:/data/tv
|
||||
- data_downloads:/mediadl
|
||||
- cache:/cache
|
||||
- log:/log
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.sonarr.rule=Host(`sonarr.local`)"
|
||||
|
||||
volumes:
|
||||
cache:
|
||||
log:
|
||||
config:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/app/sonarr/config'
|
||||
data_series:
|
||||
driver_opts:
|
||||
type: 'nfs'
|
||||
o: 'addr=truenas.local'
|
||||
device: ':/mnt/media/series'
|
||||
data_downloads:
|
||||
driver_opts:
|
||||
type: 'nfs'
|
||||
o: 'addr=truenas.local'
|
||||
device: ':/mnt/media/download'
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
name: proxy
|
||||
@@ -0,0 +1,44 @@
|
||||
services:
|
||||
transmission:
|
||||
image: lscr.io/linuxserver/transmission:latest
|
||||
container_name: transmission
|
||||
networks:
|
||||
- default
|
||||
- proxy
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Paris
|
||||
- USER=transmission
|
||||
- PASS=transmission
|
||||
- HOST_WHITELIST=transmission.local
|
||||
volumes:
|
||||
- config:/config
|
||||
- downloads:/mediadl
|
||||
ports:
|
||||
- '9091'
|
||||
- 51413:51413
|
||||
- 51413:51413/udp
|
||||
restart: unless-stopped
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.transmission.rule=Host(`transmission.local`)"
|
||||
|
||||
volumes:
|
||||
config:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/app/transmission/config'
|
||||
downloads:
|
||||
driver_opts:
|
||||
type: 'nfs'
|
||||
o: 'addr=truenas.local'
|
||||
device: ':/mnt/media/download'
|
||||
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
name: proxy
|
||||
27
docker/personal/media/films-series/wizarr/docker-compose.yml
Normal file
27
docker/personal/media/films-series/wizarr/docker-compose.yml
Normal file
@@ -0,0 +1,27 @@
|
||||
services:
|
||||
wizarr:
|
||||
container_name: wizarr
|
||||
image: ghcr.io/wizarrrr/wizarr:latest
|
||||
networks:
|
||||
- default
|
||||
- proxy
|
||||
ports:
|
||||
- 5690:5690
|
||||
volumes:
|
||||
- wizarr_data:/data/database
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.wizarr.rule=Host(`wizarr.local`)"
|
||||
|
||||
volumes:
|
||||
wizarr_data:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/app/wizarr/data'
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
name: proxy
|
||||
41
docker/personal/media/music/navidrome/docker-compose.yml
Normal file
41
docker/personal/media/music/navidrome/docker-compose.yml
Normal file
@@ -0,0 +1,41 @@
|
||||
services:
|
||||
navidrome:
|
||||
image: deluan/navidrome:latest
|
||||
user: 1000:1000 # should be owner of volumes
|
||||
ports:
|
||||
- "4533"
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- default
|
||||
- proxy
|
||||
environment:
|
||||
ND_SCANSCHEDULE: 1h
|
||||
ND_LOGLEVEL: info
|
||||
ND_SESSIONTIMEOUT: 24h
|
||||
ND_BASEURL: "http://navidrome.local"
|
||||
ND_PORT: 4533
|
||||
ND_REVERSEPROXYWHITELIST: "172.20.0.0/16,10.1.2.11/32"
|
||||
volumes:
|
||||
- data:/data
|
||||
- "music:/music:ro"
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.navidrome.rule=Host(`navidrome.local`)"
|
||||
|
||||
volumes:
|
||||
music:
|
||||
driver_opts:
|
||||
type: 'nfs'
|
||||
o: 'addr=truenas.local,ro'
|
||||
device: ':/mnt/media/music'
|
||||
data:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/app/navidrome/data'
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
name: proxy
|
||||
@@ -0,0 +1,94 @@
|
||||
services:
|
||||
tubearchivist:
|
||||
container_name: tubearchivist
|
||||
restart: unless-stopped
|
||||
image: bbilly1/tubearchivist:v0.4.13
|
||||
ports:
|
||||
- "8000"
|
||||
networks:
|
||||
- default
|
||||
- proxy
|
||||
volumes:
|
||||
- media:/youtube
|
||||
- cache:/cache
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
- ES_URL=http://archivist-es:9200
|
||||
- REDIS_HOST=archivist-redis
|
||||
- HOST_UID=1000
|
||||
- HOST_GID=1000
|
||||
- TA_HOST=tubearchivist.local
|
||||
- TZ=Europe/Paris
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
|
||||
interval: 2m
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
depends_on:
|
||||
- archivist-es
|
||||
- archivist-redis
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.tubearchivist.rule=Host(`tubearchivist.local`)"
|
||||
- "traefik.http.routers.tubearchivist.middlewares=tubearchivist-headers"
|
||||
- "traefik.http.middlewares.tubearchivist-headers.headers.accesscontrolalloworiginlist=*"
|
||||
- "traefik.http.middlewares.tubearchivist-headers.headers.accesscontrolallowmethods=GET,OPTIONS,PUT"
|
||||
- "traefik.http.middlewares.tubearchivist-headers.headers.accesscontrolallowheaders=Authorization,*"
|
||||
|
||||
archivist-redis:
|
||||
image: redis/redis-stack-server
|
||||
container_name: archivist-redis
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- "6379"
|
||||
volumes:
|
||||
- redis:/data
|
||||
depends_on:
|
||||
- archivist-es
|
||||
|
||||
archivist-es:
|
||||
image: bbilly1/tubearchivist-es # only for amd64, or use official es 8.16.0
|
||||
container_name: archivist-es
|
||||
restart: unless-stopped
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
- "ES_JAVA_OPTS=-Xms1g -Xmx1g"
|
||||
- "xpack.security.enabled=true"
|
||||
- "discovery.type=single-node"
|
||||
- "path.repo=/usr/share/elasticsearch/data/snapshot"
|
||||
ulimits:
|
||||
memlock:
|
||||
soft: -1
|
||||
hard: -1
|
||||
volumes:
|
||||
- es:/usr/share/elasticsearch/data
|
||||
expose:
|
||||
- "9200"
|
||||
|
||||
volumes:
|
||||
media:
|
||||
driver_opts:
|
||||
type: 'nfs'
|
||||
o: 'addr=truenas.local'
|
||||
device: ':/mnt/media/youtube'
|
||||
cache:
|
||||
redis:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/app/tubearchivist/redis'
|
||||
es:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: 'none'
|
||||
o: 'bind'
|
||||
device: '/app/tubearchivist/es'
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
name: proxy
|
||||
Reference in New Issue
Block a user