commit 14f882be05a6c75ef5b5d93c43c4ed225b5859c2 Author: Gabriel Carneiro Date: Thu Feb 27 10:15:51 2025 -0300 initial commit diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..5aef819 --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +MYSQL_ROOT_PASSWORD=examplepass +MYSQL_PASSWORD=examplepass diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..3130c56 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,69 @@ +version: '2' + +volumes: + nextcloud: + db: + +services: + db: + image: mariadb:10.6 + restart: always + command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW + volumes: + - db:/var/lib/mysql + environment: + - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root-password + - MYSQL_PASSWORD_FILE=/run/secrets/mysql-password + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + networks: + - traefik-public + + app: + image: nextcloud + restart: always + ports: + - 8090:80 + links: + - db + volumes: + - nextcloud:/var/www/html + environment: + - MYSQL_PASSWORD_FILE=/run/secrets/mysql-password + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + - MYSQL_HOST=db + networks: + - traefik-public + labels: + - "traefik.enable=true" + - "traefik.http.routers.nextcloud.rule=Host(`drive.alice.ufsj.edu.br`)" + - "traefik.http.routers.nextcloud.service=nextcloud" + - "traefik.http.routers.nextcloud.entrypoints=websecure" + - "traefik.http.services.nextcloud.loadbalancer.server.port=80" + - "traefik.http.routers.nextcloud.tls=true" + - "traefik.http.routers.nextcloud.tls.certresolver=letsencrypt" + - "traefik.http.services.nextcloud.loadbalancer.passhostheader=true" + - "traefik.http.middlewares.nextcloud-securityheaders.headers.stsSeconds=15552000" + - "traefik.http.middlewares.nextcloud-securityheaders.headers.stsIncludeSubdomains=true" + - "traefik.http.middlewares.nextcloud-securityheaders.headers.stsPreload=true" + - "traefik.http.routers.nextcloud.middlewares=nextcloud-redirectregex1,nextcloud-redirectregex2,compresstraefik,nextcloud-securityheaders" + - "traefik.http.middlewares.nextcloud-redirectregex1.redirectregex.permanent=true" + - "traefik.http.middlewares.nextcloud-redirectregex1.redirectregex.regex=https?://([^/]*)/.well-known/(card|cal)dav" + - "traefik.http.middlewares.nextcloud-redirectregex1.redirectregex.replacement=https://$${1}/remote.php/dav/" + - "traefik.http.middlewares.nextcloud-redirectregex2.redirectregex.permanent=true" + - "traefik.http.middlewares.nextcloud-redirectregex2.redirectregex.regex=https?://([^/]*)(/.well-known[^#]*)" + - "traefik.http.middlewares.nextcloud-redirectregex2.redirectregex.replacement=https://$${1}/index.php$${2}" + - "traefik.http.middlewares.compresstraefik.compress=true" + - "traefik.docker.network=traefik-public" + +networks: + traefik-public: + external: true + +secrets: + mysql-root-password: + file: ./secrets/mysql-root-password + + mysql-password: + file: ./secrets/mysql-password