docker-compose.yaml 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. version: '2'
  2. services:
  3. nginx-proxy:
  4. image: jwilder/nginx-proxy
  5. ports:
  6. - "80:80"
  7. - "443:443"
  8. volumes:
  9. - ${CONTAINERS_DIR}/certs:/etc/nginx/certs:ro
  10. - /etc/nginx/vhost.d
  11. - /var/run/docker.sock:/tmp/docker.sock:ro
  12. - /usr/share/nginx/html
  13. - ./max_body_size.conf:/etc/nginx/conf.d/max_body_size.conf:ro
  14. - ./htpasswd:/etc/nginx/htpasswd
  15. labels:
  16. com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: ""
  17. environment:
  18. - DEFAULT_HOST=jossh.us
  19. restart: always
  20. letsencrypt-nginx-proxy-companion:
  21. image: jrcs/letsencrypt-nginx-proxy-companion
  22. volumes:
  23. - ${CONTAINERS_DIR}/certs:/etc/nginx/certs:rw
  24. - /var/run/docker.sock:/var/run/docker.sock:ro
  25. volumes_from:
  26. - nginx-proxy
  27. restart: always
  28. postgres:
  29. image: postgres
  30. restart: always
  31. volumes:
  32. - ${CONTAINERS_DIR}/postgres/data:/var/lib/postgresql/data
  33. - ${CONTAINERS_DIR}/postgres/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
  34. environment:
  35. - POSTGRES_USER=${POSTGRES_USER}
  36. - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
  37. mariadb:
  38. image: mariadb
  39. restart: always
  40. volumes:
  41. - ${CONTAINERS_DIR}/mariadb:/var/lib/mysql
  42. environment:
  43. # If mariadb is used for more than wordpress in the future, it'll need its own /docker-entrypoint-initdb.d entry. But for now, envrionment variables are fine.
  44. - MYSQL_DATABASE=wordpress
  45. - MYSQL_USER=${MARIADB_USER}
  46. - MYSQL_PASSWORD=${MARIADB_PASSWORD}
  47. - MYSQL_ROOT_PASSWORD=${MARIADB_PASSWORD}
  48. wordpress:
  49. image: wordpress
  50. links:
  51. - mariadb:mysql
  52. restart: always
  53. volumes:
  54. - ${CONTAINERS_DIR}/wordpress:/var/www/html
  55. environment:
  56. - WORDPRESS_DB_USER=${MARIADB_USER}
  57. - WORDPRESS_DB_PASSWORD=${MARIADB_PASSWORD}
  58. - VIRTUAL_HOST=josh1147582.jumpingcrab.com,jossh.us
  59. - LETSENCRYPT_HOST=josh1147582.jumpingcrab.com,jossh.us
  60. - VIRTUAL_PORT=3000
  61. - LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
  62. nextcloud:
  63. image: nextcloud
  64. expose:
  65. - "80"
  66. links:
  67. - postgres
  68. volumes:
  69. - ${CONTAINERS_DIR}/nextcloud:/var/www/html
  70. environment:
  71. - VIRTUAL_HOST=nextcloud.josh1147582.jumpingcrab.com,nextcloud.jossh.us
  72. - VIRTUAL_PORT=80
  73. - LETSENCRYPT_HOST=nextcloud.josh1147582.jumpingcrab.com,nextcloud.jossh.us
  74. - LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
  75. restart: always
  76. gogs:
  77. image: gogs/gogs
  78. expose:
  79. - "3000"
  80. volumes:
  81. - ${CONTAINERS_DIR}/gogs:/data
  82. #links:
  83. # - postgres
  84. environment:
  85. - VIRTUAL_HOST=gogs.josh1147582.jumpingcrab.com,gogs.jossh.us
  86. - LETSENCRYPT_HOST=gogs.josh1147582.jumpingcrab.com,gogs.jossh.us
  87. - VIRTUAL_PORT=3000
  88. - LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
  89. restart: always
  90. # Matrix doesn't play well with reverse proxying. See:
  91. # https://github.com/matrix-org/synapse#reverse-proxying-the-federation-port
  92. # https://github.com/vector-im/riot-web/issues/3329
  93. # So this container isn't proxied, but uses the postgres container.
  94. matrix:
  95. image: avhost/docker-matrix
  96. expose:
  97. - "8008"
  98. - "8448"
  99. - "3478"
  100. ports:
  101. - "8008:8008"
  102. - "8448:8448"
  103. - "3478:3478"
  104. links:
  105. - postgres
  106. volumes:
  107. - ${CONTAINERS_DIR}/matrix:/data
  108. - /etc/letsencrypt/josh1147582.jumpingcrab.com/:/keys
  109. restart: always
  110. keeweb:
  111. image: antelle/keeweb
  112. expose:
  113. - "443"
  114. environment:
  115. - VIRTUAL_HOST=keeweb.jossh.us
  116. - LETSENCRYPT_HOST=keeweb.jossh.us
  117. - VIRTUAL_PROTO=https
  118. - VIRTUAL_PORT=443
  119. - LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
  120. libresonic:
  121. image: linuxserver/libresonic
  122. expose:
  123. - "4040"
  124. volumes:
  125. - ${CONTAINERS_DIR}/libresonic:/config
  126. - ${MEDIA_DIR}/Music:/music
  127. environment:
  128. - VIRTUAL_HOST=libresonic.josh1147582.jumpingcrab.com,libresonic.jossh.us
  129. - LETSENCRYPT_HOST=libresonic.josh1147582.jumpingcrab.com,libresonic.jossh.us
  130. - VIRTUAL_PORT=4040
  131. - LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
  132. - TZ=America/New_York
  133. restart: always
  134. quassel:
  135. image: linuxserver/quassel-core
  136. expose:
  137. - "4242"
  138. ports:
  139. - "4242:4242"
  140. volumes:
  141. - ${CONTAINERS_DIR}/quassel:/config
  142. - /etc/localtime:/etc/localtime:ro
  143. environment:
  144. - PGID=1000
  145. - PUID=1000
  146. restart: always
  147. netdata:
  148. image: firehol/netdata
  149. privileged: true
  150. #cap_add:
  151. # - SYS_PTRACE
  152. expose:
  153. - "19999"
  154. volumes:
  155. - /proc:/host/proc:ro
  156. - /sys:/host/sys:ro
  157. environment:
  158. - VIRTUAL_HOST=netdata.jossh.us
  159. - LETSENCRYPT_HOST=netdata.jossh.us
  160. - VIRTUAL_PORT=19999
  161. - LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
  162. restart: always
  163. quassel-webserver:
  164. image: bodsch/docker-quassel-web
  165. expose:
  166. - "64080"
  167. ports:
  168. - "8080:64080"
  169. links:
  170. - quassel
  171. environment:
  172. - QUASSEL_HOST=quassel
  173. - QUASSEL_PORT=4242
  174. - FORCE_DEFAULT=true
  175. - WEBSERVER_MODE=http
  176. - VIRTUAL_HOST=quassel.jossh.us
  177. - LETSENCRYPT_HOST=quassel.jossh.us
  178. - VIRTUAL_PORT=64080
  179. - LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
  180. restart: always
  181. selfoss:
  182. image: jenserat/selfoss
  183. expose:
  184. - "80"
  185. links:
  186. - postgres
  187. volumes:
  188. - ${CONTAINERS_DIR}/selfoss:/var/www/html/data
  189. environment:
  190. - VIRTUAL_HOST=selfoss.jossh.us
  191. - LETSENCRYPT_HOST=selfoss.jossh.us
  192. - VIRTUAL_PORT=80
  193. - LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
  194. restart: always
  195. # Currently unused container configs:
  196. #znc:
  197. # image: znc
  198. # expose:
  199. # - "6697"
  200. # ports:
  201. # - "6697:6697"
  202. # volumes:
  203. # - ${CONTAINERS_DIR}/znc:/home/znc/.znc
  204. # environment:
  205. # - VIRTUAL_HOST=znc.jossh.us
  206. # - LETSENCRYPT_HOST=znc.jossh.us
  207. # - VIRTUAL_PORT=6697
  208. # - VIRTUAL_PROTO=https
  209. # - LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
  210. # restart: always
  211. # gitlab:
  212. # image: gitlab/gitlab-ce
  213. # expose:
  214. # - "80"
  215. # - "22"
  216. # # Gitlab destroys databases when seeding them, and requires an admin user for seeding. So let's not link it to the running postgres instance.
  217. # environment:
  218. # - VIRTUAL_HOST=gitlab.jossh.us
  219. # - VIRTUAL_PORT=80
  220. # - LETSENCRYPT_HOST=gitlab.jossh.us
  221. # - LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
  222. # volumes:
  223. # - ${CONTAINERS_DIR}/gitlab/config:/etc/gitlab
  224. # - ${CONTAINERS_DIR}/gitlab/logs:/var/log/gitlab
  225. # - ${CONTAINERS_DIR}/gitlab/data:/var/opt/gitlab
  226. # restart: always