Guest User

Multimedia Docker Stack

a guest
Oct 21st, 2025
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.58 KB | None | 0 0
  1. version: "3.8"
  2.  
  3. networks:
  4. media-net:
  5. driver: bridge
  6.  
  7. # Extension fields for reusable configurations
  8. x-common-env: &common-env
  9. PUID: ${PUID}
  10. PGID: ${PGID}
  11. TZ: ${TZ}
  12.  
  13. x-common-healthcheck: &common-healthcheck
  14. interval: 30s
  15. timeout: 20s
  16. retries: 5
  17. start_period: 60s
  18.  
  19. x-restart-policy: &restart-policy
  20. restart: unless-stopped
  21.  
  22. services:
  23. gluetun:
  24. image: qmcgaw/gluetun
  25. container_name: gluetun
  26. cap_add:
  27. - NET_ADMIN
  28. devices:
  29. - /dev/net/tun:/dev/net/tun
  30. ports:
  31. - 7080:8080
  32. - 6881:6881
  33. - 6881:6881/udp
  34. volumes:
  35. - ${DOCKER_DATA_PATH}/gluetun:/gluetun
  36. environment:
  37. - VPN_SERVICE_PROVIDER=${VPN_SERVICE_PROVIDER}
  38. - OPENVPN_USER=${VPN_USERNAME}
  39. - OPENVPN_PASSWORD=${VPN_PASSWORD}
  40. - SERVER_REGIONS=${VPN_SERVER_REGION}
  41. - VPN_PORT_FORWARDING=${VPN_PORT_FORWARDING}
  42. - VPN_PORT_FORWARDING_STATUS_FILE=/gluetun/forwarded_port
  43. - TZ=${TZ}
  44. - UPDATER_PERIOD=${UPDATER_PERIOD}
  45. <<: *restart-policy
  46. networks:
  47. - media-net
  48. healthcheck:
  49. test: ["CMD", "wget", "--spider", "-q", "https://1.1.1.1"]
  50. interval: 60s
  51. timeout: 10s
  52. retries: 3
  53.  
  54. qbittorrent:
  55. image: lscr.io/linuxserver/qbittorrent
  56. container_name: qbittorrent
  57. network_mode: "service:gluetun"
  58. environment:
  59. <<: *common-env
  60. WEBUI_PORT: 8080
  61. volumes:
  62. - ${DOCKER_DATA_PATH}/qbittorrent/config:/config
  63. - ${STORAGE_PATH}/movies:/movies
  64. - ${STORAGE_PATH}/shows:/shows
  65. - ${STORAGE_PATH}/downloads:/downloads
  66. depends_on:
  67. gluetun:
  68. condition: service_started
  69. <<: *restart-policy
  70. healthcheck:
  71. <<: *common-healthcheck
  72. test: ["CMD", "curl", "-f", "http://localhost:8080"]
  73.  
  74. gluetun-qbt-port-sync:
  75. image: snoringdragon/gluetun-qbittorrent-port-manager
  76. container_name: gluetun-qbt-port-sync
  77. network_mode: "service:gluetun"
  78. environment:
  79. - QBITTORRENT_SERVER=localhost
  80. - QBITTORRENT_PORT=8080
  81. - QBITTORRENT_USER=${QBT_USERNAME}
  82. - QBITTORRENT_PASS=${QBT_PASSWORD}
  83. - GTM_PORT_FILE=/tmp/gluetun/forwarded_port
  84. volumes:
  85. - ${DOCKER_DATA_PATH}/gluetun:/tmp/gluetun:ro
  86. depends_on:
  87. qbittorrent:
  88. condition: service_healthy
  89. <<: *restart-policy
  90.  
  91. radarr:
  92. image: lscr.io/linuxserver/radarr
  93. container_name: radarr
  94. ports:
  95. - 7878:7878
  96. environment:
  97. <<: *common-env
  98. volumes:
  99. - ${DOCKER_DATA_PATH}/radarr/config:/config
  100. - ${STORAGE_PATH}/movies:/movies
  101. <<: *restart-policy
  102. healthcheck:
  103. <<: *common-healthcheck
  104. test: ["CMD", "curl", "-f", "http://localhost:7878/ping"]
  105. networks:
  106. - media-net
  107.  
  108. sonarr:
  109. image: lscr.io/linuxserver/sonarr
  110. container_name: sonarr
  111. ports:
  112. - 8989:8989
  113. environment:
  114. <<: *common-env
  115. volumes:
  116. - ${DOCKER_DATA_PATH}/sonarr/config:/config
  117. - ${STORAGE_PATH}/shows:/shows
  118. <<: *restart-policy
  119. healthcheck:
  120. <<: *common-healthcheck
  121. test: ["CMD", "curl", "-f", "http://localhost:8989/ping"]
  122. networks:
  123. - media-net
  124.  
  125. prowlarr:
  126. image: lscr.io/linuxserver/prowlarr
  127. container_name: prowlarr
  128. ports:
  129. - 9696:9696
  130. environment:
  131. <<: *common-env
  132. volumes:
  133. - ${DOCKER_DATA_PATH}/prowlarr/config:/config
  134. <<: *restart-policy
  135. healthcheck:
  136. <<: *common-healthcheck
  137. test: ["CMD", "curl", "-f", "http://localhost:9696/ping"]
  138. networks:
  139. - media-net
  140.  
  141. jellyseerr:
  142. image: fallenbagel/jellyseerr
  143. container_name: jellyseerr
  144. ports:
  145. - 5055:5055
  146. environment:
  147. - LOG_LEVEL=${LOG_LEVEL}
  148. - TZ=${TZ}
  149. volumes:
  150. - ${DOCKER_DATA_PATH}/jellyseerr/config:/app/config
  151. <<: *restart-policy
  152. healthcheck:
  153. <<: *common-healthcheck
  154. test:
  155. [
  156. "CMD",
  157. "wget",
  158. "--no-verbose",
  159. "--tries=1",
  160. "--spider",
  161. "http://localhost:5055/api/v1/status",
  162. ]
  163. networks:
  164. - media-net
  165.  
  166. jellyfin:
  167. image: lscr.io/linuxserver/jellyfin
  168. container_name: jellyfin
  169. ports:
  170. - 8096:8096
  171. - 8920:8920
  172. - 7359:7359/udp
  173. - 1900:1900/udp
  174. group_add:
  175. - "104"
  176. devices:
  177. - /dev/dri:/dev/dri
  178. environment:
  179. <<: *common-env
  180. LIBVA_DRIVER_NAME: iHD
  181. volumes:
  182. - ${DOCKER_DATA_PATH}/jellyfin/config:/config
  183. - ${STORAGE_PATH}/shows:/data/shows
  184. - ${STORAGE_PATH}/movies:/data/movies
  185. - ${STORAGE_PATH}/music:/data/music
  186. <<: *restart-policy
  187. healthcheck:
  188. <<: *common-healthcheck
  189. test: ["CMD", "curl", "-f", "http://localhost:8096/health"]
  190. networks:
  191. - media-net
  192.  
  193. bazarr:
  194. image: lscr.io/linuxserver/bazarr
  195. container_name: bazarr
  196. ports:
  197. - 6767:6767
  198. environment:
  199. <<: *common-env
  200. volumes:
  201. - ${DOCKER_DATA_PATH}/bazarr/config:/config
  202. - ${STORAGE_PATH}/movies:/movies
  203. - ${STORAGE_PATH}/shows:/shows
  204. <<: *restart-policy
  205. healthcheck:
  206. <<: *common-healthcheck
  207. test: ["CMD", "curl", "-f", "http://localhost:6767/api/system/status"]
  208. networks:
  209. - media-net
  210.  
  211.  
  212.  
  213. ========
  214.  
  215.  
  216.  
  217. # .env.example
  218. # Common
  219. PUID=1000
  220. PGID=1000
  221. TZ=Etc/UTC
  222. DOCKER_DATA_PATH=./data
  223. STORAGE_PATH=./storage
  224.  
  225. # Gluetun
  226. VPN_SERVICE_PROVIDER=
  227. VPN_USERNAME=
  228. VPN_PASSWORD=
  229. VPN_SERVER_REGION=
  230. VPN_PORT_FORWARDING=on
  231. UPDATER_PERIOD=24h
  232.  
  233. # qBittorrent
  234. QBT_USERNAME=
  235. QBT_PASSWORD=
  236.  
  237. # Jellyseerr
  238. LOG_LEVEL=info
Add Comment
Please, Sign In to add comment