docker-compose.yaml 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  1. version: '3'
  2. services:
  3. nginx-proxy:
  4. image: jwilder/nginx-proxy
  5. # My internet-facing load balancer (CloudFlare) sits on 80 and 443. Therefore,
  6. # I let it handle all HTTPS concerns.
  7. #
  8. # If this is internet-facing, enable SSL in nginx-proxy
  9. # and forward both 80 and 443 directly.
  10. ports:
  11. - "8080:80"
  12. volumes:
  13. - /var/run/docker.sock:/tmp/docker.sock:ro
  14. # Helps with stability of large uploads
  15. - ./conf.d/proxy_timeout.conf:/etc/nginx/conf.d/proxy_timeout.conf:ro
  16. - ./conf.d/real_ip.conf:/etc/nginx/conf.d/real_ip.conf:ro
  17. - ./htpasswd:/etc/nginx/htpasswd
  18. environment:
  19. - DEFAULT_HOST=jibby.org
  20. restart: always
  21. # An example of a static HTTP file hosting site
  22. camera:
  23. image: nginx
  24. volumes:
  25. - ${MEDIA_DIR}/Camera:/home/app:ro
  26. - ./conf.d/static.conf:/etc/nginx/sites-enabled/default
  27. - ./conf.d/static.conf:/etc/nginx/conf.d/default.conf
  28. environment:
  29. - VIRTUAL_HOST=camera.jibby.org
  30. restart: always
  31. postgres:
  32. image: postgres:10.5
  33. volumes:
  34. - ${CONTAINERS_DIR}/postgres/data:/var/lib/postgresql/data
  35. - ${CONTAINERS_DIR}/postgres/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
  36. environment:
  37. - POSTGRES_USER=${POSTGRES_USER}
  38. - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
  39. restart: always
  40. mariadb:
  41. image: mariadb
  42. volumes:
  43. - ${CONTAINERS_DIR}/mariadb:/var/lib/mysql
  44. environment:
  45. # If mariadb is used for more than wordpress in the future, it'll need
  46. # its own /docker-entrypoint-initdb.d entry. But for now, envrionment
  47. # variables are fine.
  48. - MYSQL_DATABASE=wordpress
  49. - MYSQL_USER=${MARIADB_USER}
  50. - MYSQL_PASSWORD=${MARIADB_PASSWORD}
  51. - MYSQL_ROOT_PASSWORD=${MARIADB_PASSWORD}
  52. restart: always
  53. wordpress:
  54. image: wordpress
  55. links:
  56. - mariadb:mysql
  57. volumes:
  58. - ${CONTAINERS_DIR}/wordpress:/var/www/html
  59. environment:
  60. - WORDPRESS_DB_USER=${MARIADB_USER}
  61. - WORDPRESS_DB_PASSWORD=${MARIADB_PASSWORD}
  62. - VIRTUAL_HOST=jibby.org
  63. - VIRTUAL_PORT=3000
  64. restart: always
  65. nextcloud:
  66. image: nextcloud
  67. expose:
  68. - "80"
  69. links:
  70. - postgres
  71. volumes:
  72. - ${CONTAINERS_DIR}/nextcloud:/var/www/html
  73. environment:
  74. - VIRTUAL_HOST=nextcloud.jibby.org
  75. - VIRTUAL_PORT=80
  76. restart: always
  77. gogs:
  78. image: gogs/gogs
  79. expose:
  80. - "3000"
  81. volumes:
  82. - ${CONTAINERS_DIR}/gogs:/data
  83. #links:
  84. # - postgres
  85. environment:
  86. - VIRTUAL_HOST=gogs.jibby.org
  87. - VIRTUAL_PORT=3000
  88. restart: always
  89. matrix:
  90. image: matrixdotorg/synapse
  91. expose:
  92. - "8008"
  93. links:
  94. - postgres
  95. environment:
  96. - SYNAPSE_SERVER_NAME=matrix.jibby.org
  97. - SYNAPSE_REPORT_STATS=no
  98. - SYNAPSE_NO_TLS=true
  99. - SYNAPSE_ENABLE_REGISTRATION=no
  100. - SYNAPSE_LOG_LEVEL=INFO
  101. - SYNAPSE_REGISTRATION_SHARED_SECRET=${POSTGRES_PASSWORD}
  102. - POSTGRES_DB=synapse
  103. - POSTGRES_HOST=postgres
  104. - POSTGRES_USER=synapse
  105. - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
  106. - VIRTUAL_HOST=matrix.jibby.org
  107. - VIRTUAL_PROTO=http
  108. - VIRTUAL_PORT=8008
  109. volumes:
  110. - ${CONTAINERS_DIR}/matrix:/data
  111. restart: always
  112. keeweb:
  113. image: antelle/keeweb
  114. expose:
  115. - "443"
  116. environment:
  117. - VIRTUAL_HOST=keeweb.jibby.org
  118. - VIRTUAL_PROTO=https
  119. - VIRTUAL_PORT=443
  120. restart: always
  121. netdata:
  122. image: titpetric/netdata
  123. privileged: true
  124. hostname: cumulus-monitor
  125. expose:
  126. - "19999"
  127. volumes:
  128. - /proc:/host/proc:ro
  129. - /sys:/host/sys:ro
  130. - ${CONTAINERS_DIR}/netdata/health_alarm_notify.conf:/etc/netdata/health_alarm_notify.conf
  131. - ${CONTAINERS_DIR}/netdata/conf.d/:/usr/lib/netdata/conf.d/
  132. environment:
  133. - VIRTUAL_HOST=netdata.jibby.org
  134. - VIRTUAL_PORT=19999
  135. - SMTP_TO=${LETSENCRYPT_EMAIL}
  136. - SMTP_FROM=${SMTP_USER}
  137. - SMTP_USER=${SMTP_USER}
  138. - SMTP_PASS=${SMTP_PASS}
  139. restart: always
  140. selfoss:
  141. image: hardware/selfoss
  142. expose:
  143. - "8888"
  144. links:
  145. - postgres
  146. volumes:
  147. - ${CONTAINERS_DIR}/selfoss:/selfoss/data
  148. environment:
  149. - VIRTUAL_HOST=selfoss.jibby.org
  150. - VIRTUAL_PORT=8888
  151. restart: always
  152. jellyfin:
  153. image: jellyfin/jellyfin
  154. expose:
  155. - "8096"
  156. volumes:
  157. - ${CONTAINERS_DIR}/jellyfin:/config
  158. - ${MEDIA_DIR}:/media
  159. environment:
  160. - VIRTUAL_HOST=jellyfin.jibby.org
  161. - VIRTUAL_PORT=8096
  162. restart: always
  163. # Currently unused container configs:
  164. # plex:
  165. # image: plexinc/pms-docker
  166. # expose:
  167. # - "32400"
  168. # volumes:
  169. # - ${CONTAINERS_DIR}/plex:/config
  170. # - /tmp/plex:/transcode
  171. # - ${MEDIA_DIR}:/data
  172. # environment:
  173. # - PLEX_CLAIM="claim-pPM26k9y5p8hcbpnjzAq"
  174. # - VIRTUAL_HOST=plex.jossh.us,plex.jibby.org
  175. # - VIRTUAL_PORT=32400
  176. # - TZ="America/New_York"
  177. # restart: always
  178. # znc:
  179. # image: znc
  180. # expose:
  181. # - "6697"
  182. # ports:
  183. # - "6697:6697"
  184. # volumes:
  185. # - ${CONTAINERS_DIR}/znc:/home/znc/.znc
  186. # environment:
  187. # - VIRTUAL_HOST=znc.jossh.us
  188. # - LETSENCRYPT_HOST=znc.jossh.us
  189. # - VIRTUAL_PORT=6697
  190. # - VIRTUAL_PROTO=https
  191. # - LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
  192. # restart: always
  193. # gitlab:
  194. # image: gitlab/gitlab-ce
  195. # expose:
  196. # - "80"
  197. # - "22"
  198. # # Gitlab destroys databases when seeding them, and requires an admin user for seeding. So let's not link it to the running postgres instance.
  199. # environment:
  200. # - VIRTUAL_HOST=gitlab.jossh.us
  201. # - VIRTUAL_PORT=80
  202. # - LETSENCRYPT_HOST=gitlab.jossh.us
  203. # - LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
  204. # volumes:
  205. # - ${CONTAINERS_DIR}/gitlab/config:/etc/gitlab
  206. # - ${CONTAINERS_DIR}/gitlab/logs:/var/log/gitlab
  207. # - ${CONTAINERS_DIR}/gitlab/data:/var/opt/gitlab
  208. # restart: always
  209. # libresonic:
  210. # image: linuxserver/libresonic
  211. # expose:
  212. # - "4040"
  213. # volumes:
  214. # - ${CONTAINERS_DIR}/libresonic:/config
  215. # - ${MEDIA_DIR}/Music:/music
  216. # environment:
  217. # - VIRTUAL_HOST=libresonic.josh1147582.jumpingcrab.com,libresonic.jossh.us
  218. # - LETSENCRYPT_HOST=libresonic.josh1147582.jumpingcrab.com,libresonic.jossh.us
  219. # - VIRTUAL_PORT=4040
  220. # - LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
  221. # - TZ=America/New_York
  222. # restart: always
  223. # quassel:
  224. # image: linuxserver/quassel-core
  225. # expose:
  226. # - "4242"
  227. # links:
  228. # - postgres
  229. # volumes:
  230. # - ${CONTAINERS_DIR}/quassel:/config
  231. # - /etc/localtime:/etc/localtime:ro
  232. # environment:
  233. # - PGID=1000
  234. # - PUID=1000
  235. # - VIRTUAL_HOST=quassel.jossh.us,quassel.jibby.org
  236. # - VIRTUAL_PORT=4242
  237. # restart: always
  238. # quassel-webserver:
  239. # image: bodsch/docker-quassel-web
  240. # expose:
  241. # - "64080"
  242. # #ports:
  243. # # port- "8080:64080"
  244. # links:
  245. # - quassel
  246. # environment:
  247. # - QUASSEL_HOST=quassel
  248. # - QUASSEL_PORT=4242
  249. # - FORCE_DEFAULT=true
  250. # - WEBSERVER_MODE=http
  251. # - VIRTUAL_HOST=quassel-web.jossh.us,quassel-web.jibby.org
  252. # - VIRTUAL_PORT=64080
  253. # restart: always
  254. ### Mastodon
  255. #
  256. # redis:
  257. # restart: always
  258. # image: redis:4.0-alpine
  259. # healthcheck:
  260. # test: ["CMD", "redis-cli", "ping"]
  261. # volumes:
  262. # - ${CONTAINERS_DIR}/redis:/data
  263. #
  264. # mastodon-web:
  265. # #build: ./docker-mastodon
  266. # image: tootsuite/mastodon
  267. # restart: always
  268. # env_file: .env.mastodon
  269. # environment:
  270. # - VIRTUAL_HOST=mastodon.jibby.org
  271. # - VIRTUAL_PORT=3000
  272. # #- VIRTUAL_PROTO=https
  273. # command: bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000 -b '0.0.0.0'"
  274. # healthcheck:
  275. # test: ["CMD-SHELL", "wget -q --spider --header 'x-forwarded-proto: https' --proxy off localhost:3000/api/v1/instance || exit 1"]
  276. # # ports:
  277. # # - "127.0.0.1:3000:3000"
  278. # expose:
  279. # - "3000"
  280. # depends_on:
  281. # - postgres
  282. # - redis
  283. # - es
  284. # volumes:
  285. # - ${CONTAINERS_DIR}/mastodon-web/public/system:/mastodon/public/system
  286. #
  287. # mastodon-streaming:
  288. # #build: ./docker-mastodon
  289. # image: tootsuite/mastodon
  290. # restart: always
  291. # env_file: .env.mastodon
  292. # command: yarn start
  293. # healthcheck:
  294. # test: ["CMD-SHELL", "wget -q --spider --header 'x-forwarded-proto: https' --proxy off localhost:4000/api/v1/streaming/health || exit 1"]
  295. # # ports:
  296. # # - "127.0.0.1:4000:4000"
  297. # expose:
  298. # - "4000"
  299. # depends_on:
  300. # - postgres
  301. # - redis
  302. #
  303. # mastodon-sidekiq:
  304. # #build: ./docker-mastodon
  305. # image: tootsuite/mastodon
  306. # restart: always
  307. # env_file: .env.mastodon
  308. # command: bundle exec sidekiq
  309. # depends_on:
  310. # - postgres
  311. # - redis
  312. # volumes:
  313. # - ${CONTAINERS_DIR}/mastodon-sidekiq/public/system:/mastodon/public/system