docker-compose.yml 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. version: '3.8'
  2. services:
  3. reverse-proxy:
  4. container_name: "reverse-proxy"
  5. image: "traefik:v3.6.5"
  6. restart: "unless-stopped"
  7. labels:
  8. # global redirect to https
  9. - "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)"
  10. - "traefik.http.routers.http-catchall.entrypoints=web"
  11. - "traefik.http.routers.http-catchall.middlewares=redirect-to-https"
  12. # middleware redirect
  13. - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
  14. command:
  15. - "--api.insecure=true"
  16. - "--certificatesresolvers.njordresolver.acme.caserver=https://acme-v02.api.letsencrypt.org/directory"
  17. - "--certificatesresolvers.njordresolver.acme.email=progisart@gmx.de"
  18. - "--certificatesresolvers.njordresolver.acme.httpchallenge.entrypoint=web"
  19. - "--certificatesresolvers.njordresolver.acme.storage=/letsencrypt/acme.json"
  20. - "--certificatesresolvers.njordresolver.acme.dnschallenge.resolvers=1.1.1.1:53,8.8.8.8:53"
  21. - "--entrypoints.web.address=0.0.0.0:80"
  22. - "--entrypoints.websecure.address=0.0.0.0:443"
  23. - "--log.level=info"
  24. - "--providers.docker=true"
  25. ports:
  26. - "80:80"
  27. - "443:443"
  28. - "8080:8080"
  29. volumes:
  30. - "./letsencrypt:/letsencrypt"
  31. - "/var/run/docker.sock:/var/run/docker.sock"
  32. depends_on:
  33. - gogs
  34. - nxtcld
  35. - httpd
  36. gogs:
  37. image: "gogs/gogs:0.13"
  38. container_name: "gogs"
  39. privileged: true
  40. restart: "unless-stopped"
  41. labels:
  42. - "traefik.enable=true"
  43. - "traefik.http.routers.gogs.entrypoints=websecure"
  44. - "traefik.http.routers.gogs.rule=Host(`gogs.njord.dynv6.net`)"
  45. - "traefik.http.routers.gogs.tls.certresolver=njordresolver"
  46. - "traefik.http.routers.gogs.tls=true"
  47. - "traefik.http.services.gogs.loadbalancer.server.port=3000"
  48. ports:
  49. - "881:3000"
  50. volumes:
  51. - "./gogs/data:/data"
  52. environment:
  53. - "DB_TYPE=sqlite3"
  54. nxtcld_db:
  55. image: "mariadb:latest"
  56. container_name: "nxtcld_db"
  57. command: [ "--transaction-isolation=READ-COMMITTED", "--binlog-format=ROW" ]
  58. restart: "unless-stopped"
  59. volumes:
  60. - "./nxtcld/db:/var/lib/mysql"
  61. environment:
  62. - MYSQL_ROOT_PASSWORD=nextcloud_admin
  63. - MYSQL_PASSWORD=nextcloud
  64. - MYSQL_DATABASE=nextcloud
  65. - MYSQL_USER=nextcloud
  66. nxtcld:
  67. image: "nextcloud:stable"
  68. container_name: "nxtcld"
  69. privileged: true
  70. restart: "unless-stopped"
  71. labels:
  72. - "traefik.enable=true"
  73. - "traefik.http.routers.nxtcld.entrypoints=websecure"
  74. - "traefik.http.routers.nxtcld.rule=Host(`nxtcld.njord.dynv6.net`)"
  75. - "traefik.http.routers.nxtcld.tls.certresolver=njordresolver"
  76. - "traefik.http.routers.nxtcld.tls=true"
  77. - "traefik.http.services.nxtcld.loadbalancer.server.port=80"
  78. ports:
  79. - "882:80"
  80. links:
  81. - "nxtcld_db"
  82. volumes:
  83. - "./nxtcld/data:/var/www/html"
  84. environment:
  85. - MYSQL_PASSWORD=nextcloud
  86. - MYSQL_DATABASE=nextcloud
  87. - MYSQL_USER=nextcloud
  88. - MYSQL_HOST=nxtcld_db
  89. depends_on:
  90. - nxtcld_db
  91. httpd:
  92. image: "httpd:2.4.57"
  93. container_name: "httpd"
  94. restart: "unless-stopped"
  95. labels:
  96. - "traefik.enable=true"
  97. - "traefik.http.routers.httpd.entrypoints=websecure"
  98. - "traefik.http.routers.httpd.rule=Host(`progisart.njord.dynv6.net`)"
  99. - "traefik.http.routers.httpd.tls.certresolver=njordresolver"
  100. - "traefik.http.routers.httpd.tls=true"
  101. - "traefik.http.services.httpd.loadbalancer.server.port=80"
  102. ports:
  103. - "883:80"
  104. volumes:
  105. - "./httpd/data:/usr/local/apache2/htdocs"