diff --git a/.gitignore b/.gitignore index 23a4dcc..03bd412 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1 @@ -web-apps/docker-env.env -wordpress/docker-wordpress-env.env -secret-messages/docker-secrets-env.env +*.env diff --git a/ghost-blog/docker-compose.yml b/ghost-blog/docker-compose.yml new file mode 100644 index 0000000..ad4b9a5 --- /dev/null +++ b/ghost-blog/docker-compose.yml @@ -0,0 +1,46 @@ +version: '3' + +services: + # MySQL service for Ghost + mysql-ghost: + image: mysql:latest + restart: always + environment: + MYSQL_ROOT_PASSWORD: ${GHOST_DB_ROOT_PASSWORD} # Set MySQL root password + MYSQL_DATABASE: ${GHOST_DB_NAME} # Set Ghost database name + MYSQL_USER: ${GHOST_DB_USER} # Set Ghost database user + MYSQL_PASSWORD: ${GHOST_DB_PASSWORD} # Set Ghost database password + volumes: + - /opt/storagemysql-ghost:/var/lib/mysql # Mount MySQL data directory + hostname: mysql-ghost # Set hostname for MySQL container + networks: + - traefik # Use external network named "traefik" + + # Ghost service + ghost: + image: ghost:latest + restart: always + environment: + url: ${GHOST_URL} # Set Ghost URL + database__client: mysql # Set Ghost database client + database__connection__host: mysql-ghost # Set MySQL host for Ghost + database__connection__user: ${GHOST_DB_USER} # Set Ghost database user + database__connection__password: ${GHOST_DB_PASSWORD} # Set Ghost database password + database__connection__database: ${GHOST_DB_NAME} # Set Ghost database name + volumes: + - opt/storageghost/content:/var/lib/ghost/content # Mount Ghost content directory + labels: + - "traefik.enable=true" # Enable Traefik for this service + - "traefik.http.routers.ghost.rule=Host(`${GHOST_DOMAIN}`)" # Route Ghost to specified host + - "traefik.http.routers.ghost.entrypoints=websecure" # Use HTTPS entrypoint for Ghost + - "traefik.http.routers.ghost.tls=true" # Enable TLS for Ghost + - "traefik.http.routers.ghost.tls.certresolver=myresolver" # Use Let's Encrypt resolver for Ghost + - "traefik.http.services.ghost.loadbalancer.server.port=2368" # Set load balancer port for Ghost + - "traefik.http.routers.ghost.middlewares=redirect-to-https@docker" # Use redirect middleware for Ghost + networks: + - traefik # Use external network named "traefik" + +#This specifies external network traefik - docker network create traefik is required (managed outside of docker-compose) +networks: + traefik: + external: true # Use external network named "traefik" \ No newline at end of file diff --git a/ghost-blog/docker-env.env.example b/ghost-blog/docker-env.env.example new file mode 100644 index 0000000..a5cdff6 --- /dev/null +++ b/ghost-blog/docker-env.env.example @@ -0,0 +1,7 @@ +# Ghost configuration +GHOST_DOMAIN=blog.example.com +GHOST_DB_ROOT_PASSWORD=ghost_mysql +GHOST_DB_NAME=ghost_db +GHOST_DB_USER=ghost_user +GHOST_DB_PASSWORD=ghost_mysql +GHOST_URL=https://blog.example.com diff --git a/web-apps/Dockerfile b/nextcloud/Dockerfile similarity index 100% rename from web-apps/Dockerfile rename to nextcloud/Dockerfile diff --git a/nextcloud/docker-compose.yml b/nextcloud/docker-compose.yml new file mode 100644 index 0000000..7a1b4e8 --- /dev/null +++ b/nextcloud/docker-compose.yml @@ -0,0 +1,75 @@ +version: '3' + +services: + # MySQL service for Nextcloud + mysql-nextcloud: + image: mysql:latest + restart: always + environment: + MYSQL_DATABASE: ${NEXTCLOUD_DB_NAME} # Set Nextcloud database name + MYSQL_USER: ${NEXTCLOUD_DB_USER} # Set Nextcloud database user + MYSQL_ROOT_PASSWORD: ${NEXTCLOUD_DB_ROOT_PASSWORD} # Set MySQL root password + MYSQL_PASSWORD: ${NEXTCLOUD_DB_PASSWORD} # Set Nextcloud database password + hostname: mysql-nextcloud # Set hostname for MySQL container + volumes: + - /opt/storagemysql-nextcloud:/var/lib/mysql # Mount MySQL data directory + networks: + - traefik # Use external network named "traefik" + + # Nextcloud service + nextcloud: + build: + context: . + dockerfile: Dockerfile + image: nextcloud-full:latest + # image: nextcloud:latest + restart: always + hostname: nextcloud # Set hostname for Nextcloud container + environment: + VIRTUAL_HOST: ${NEXTCLOUD_HOST} # Set virtual host for Nextcloud + MYSQL_HOST: mysql-nextcloud # Set MySQL host for Nextcloud + MYSQL_DATABASE: ${NEXTCLOUD_DB_NAME} # Set Nextcloud database name + MYSQL_USER: ${NEXTCLOUD_DB_USER} # Set Nextcloud database user + MYSQL_PASSWORD: ${NEXTCLOUD_DB_PASSWORD} # Set Nextcloud database password + NEXTCLOUD_ADMIN_USER: ${NEXTCLOUD_ADMIN_USER} # Set Nextcloud admin user + NEXTCLOUD_ADMIN_PASSWORD: ${NEXTCLOUD_ADMIN_PASSWORD} # Set Nextcloud admin password + NEXTCLOUD_TRUSTED_DOMAINS: ${NEXTCLOUD_HOST} # Set trusted domains for Nextcloud + volumes: + - /opt/storagenextcloud/data:/var/www/html # Mount Nextcloud data directory + - /opt/storagenextcloud/config:/var/www/html/config # Mount Nextcloud config directory + labels: + - "traefik.enable=true" # Enable Traefik for this service + - "traefik.http.routers.nextcloud.rule=Host(`${NEXTCLOUD_HOST}`)" # Route Nextcloud to specified host + - "traefik.http.routers.nextcloud.entrypoints=websecure" # Use HTTPS entrypoint for Nextcloud + - "traefik.http.routers.nextcloud.tls=true" # Enable TLS for Nextcloud + - "traefik.http.services.ghost.loadbalancer.server.port=80" # Set load balancer port for Nextcloud + - "traefik.http.routers.nextcloud.tls.certresolver=myresolver" # Use Let's Encrypt resolver for Nextcloud + - "traefik.http.routers.nextcloud.middlewares=nc-rep,nc-header" # Use redirect and header middlewares for Nextcloud + - "traefik.http.middlewares.nc-rep.redirectregex.regex=https://(.*)/.well-known/(card|cal)dav" # Set regex for redirect middleware + - "traefik.http.middlewares.nc-rep.redirectregex.replacement=https://$$1/remote.php/dav/" # Set replacement for redirect middleware + - "traefik.http.middlewares.nc-rep.redirectregex.permanent=true" # Set redirect as permanent + - "traefik.http.middlewares.nc-header.headers.frameDeny=true" # Set header for frame deny + - "traefik.http.middlewares.nc-header.headers.sslRedirect=true" # Set header for SSL redirect + - "traefik.http.middlewares.nc-header.headers.contentTypeNosniff=true" # Set header for content type nosniff + - "traefik.http.middlewares.nc-header.headers.stsIncludeSubdomains=true" # Set header for STS include subdomains + - "traefik.http.middlewares.nc-header.headers.stsPreload=true" # Set header for STS preload + - "traefik.http.middlewares.nc-header.headers.stsSeconds=31536000" # Set header for STS seconds + - "traefik.http.middlewares.nc-header.headers.referrerPolicy=same-origin" # Set header for referrer policy + - "traefik.http.middlewares.nc-header.headers.browserXssFilter=true" # Set header for browser XSS filter + - "traefik.http.middlewares.nc-header.headers.customRequestHeaders.X-Forwarded-Proto=https" # Set custom request header for X-Forwarded-Proto + - "traefik.http.middlewares.nc-header.headers.customRequestHeaders.X-Forwarded-Proto=websecure" # Set custom request header for X-Forwarded-Proto + - "traefik.http.middlewares.nc-header.headers.customResponseHeaders.X-Robots-Tag=noindex, nofollow" # Set custom response header for X-Robots-Tag + - "traefik.http.middlewares.nc-header.headers.customFrameOptionsValue=SAMEORIGIN" # Set custom frame options value + # - "traefik.http.routers.nextcloud.middlewares: 'nextcloud_redirectregex'" + # - "traefik.http.middlewares.nextcloud_redirectregex.redirectregex.permanent: true" + + networks: + - traefik # Use external network named "traefik" + + + +networks: + traefik: + external: true # Use external network named "traefik" + + diff --git a/web-apps/docker-env.example b/nextcloud/docker-env.env.example similarity index 64% rename from web-apps/docker-env.example rename to nextcloud/docker-env.env.example index 2898772..f3add2a 100644 --- a/web-apps/docker-env.example +++ b/nextcloud/docker-env.env.example @@ -1,9 +1,5 @@ -# Traefik configuration -TRAEFIK_DOMAIN=example.com -TRAEFIK_CERT_RESOLVER=myresolver -TRAEFIK_HOST=example.com -ACME_EMAIL=admin@example.com + # Nextcloud configuration NEXTCLOUD_DOMAIN=cloud.example.com @@ -16,10 +12,3 @@ NEXTCLOUD_DB_ROOT_PASSWORD=nextcloud_mysql NEXTCLOUD_DB_PASSWORD=nextcloud_mysql NEXTCLOUD_HOST=cloud.example.com -# Ghost configuration -GHOST_DOMAIN=blog.example.com -GHOST_DB_ROOT_PASSWORD=ghost_mysql -GHOST_DB_NAME=ghost_db -GHOST_DB_USER=ghost_user -GHOST_DB_PASSWORD=ghost_mysql -GHOST_URL=https://blog.example.com diff --git a/web-apps/supervisord.conf b/nextcloud/supervisord.conf similarity index 100% rename from web-apps/supervisord.conf rename to nextcloud/supervisord.conf diff --git a/secret-messages/docker-compose.yaml b/secret-messages/docker-compose.yml similarity index 100% rename from secret-messages/docker-compose.yaml rename to secret-messages/docker-compose.yml diff --git a/traefik-proxy/docker-compose.yml b/traefik-proxy/docker-compose.yml new file mode 100644 index 0000000..7e38e50 --- /dev/null +++ b/traefik-proxy/docker-compose.yml @@ -0,0 +1,40 @@ +version: '3' + +services: + # Traefik service for reverse proxy and SSL termination + traefik: + image: traefik:v2.4 + command: + - "--api.insecure=true" # Enable insecure API for Traefik dashboard + - "--providers.docker=true" # Enable Docker provider for Traefik + - "--providers.docker.exposedbydefault=false" # Do not expose containers by default + - "--entrypoints.web.address=:80" # HTTP entrypoint + - "--entrypoints.websecure.address=:443" # HTTPS entrypoint + - "--certificatesresolvers.myresolver.acme.email=${ACME_EMAIL}" # Email for Let's Encrypt registration + - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json" # Storage for Let's Encrypt certificates + - "--certificatesresolvers.myresolver.acme.httpchallenge=true" # Use HTTP challenge for Let's Encrypt + - "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web" # Use HTTP entrypoint for Let's Encrypt challenge + ports: + - "80:80" # Expose HTTP port + - "443:443" # Expose HTTPS port + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro # Mount Docker socket for Traefik to access Docker API + - /opt/storagehndrx.co/traefik/letsencrypt:/letsencrypt # Mount Let's Encrypt certificates storage + labels: + - "traefik.enable=true" # Enable Traefik for this service + - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https" # Redirect HTTP to HTTPS + - "traefik.http.routers.traefik.rule=Host(`${TRAEFIK_HOST}`)" # Route Traefik dashboard to specified host + - "traefik.http.routers.traefik.entrypoints=websecure" # Use HTTPS entrypoint for Traefik dashboard + - "traefik.http.routers.traefik.tls=true" # Enable TLS for Traefik dashboard + - "traefik.http.routers.traefik.tls.certresolver=myresolver" # Use Let's Encrypt resolver for Traefik dashboard + - "traefik.http.routers.traefik.service=api@internal" # Use Traefik API for Traefik dashboard + - "traefik.http.routers.traefik.middlewares=redirect-to-https@docker" # Use redirect middleware for Traefik dashboard + networks: + - traefik # Use external network named "traefik" + + + +#This specifies external network traefik - docker network create traefik is required (managed outside of docker-compose) +networks: + traefik: + external: true # Use external network named "traefik" \ No newline at end of file diff --git a/traefik-proxy/docker-env.env.example b/traefik-proxy/docker-env.env.example new file mode 100644 index 0000000..23f6328 --- /dev/null +++ b/traefik-proxy/docker-env.env.example @@ -0,0 +1,5 @@ +# Traefik configuration +TRAEFIK_DOMAIN=example.com +TRAEFIK_CERT_RESOLVER=myresolver +TRAEFIK_HOST=example.com +ACME_EMAIL=admin@example.com \ No newline at end of file diff --git a/web-apps/docker-compose.yml b/web-apps/docker-compose.yml deleted file mode 100644 index 1cd8568..0000000 --- a/web-apps/docker-compose.yml +++ /dev/null @@ -1,276 +0,0 @@ -version: '3' - -services: - # Traefik service for reverse proxy and SSL termination - traefik: - image: traefik:v2.4 - command: - - "--api.insecure=true" # Enable insecure API for Traefik dashboard - - "--providers.docker=true" # Enable Docker provider for Traefik - - "--providers.docker.exposedbydefault=false" # Do not expose containers by default - - "--entrypoints.web.address=:80" # HTTP entrypoint - - "--entrypoints.websecure.address=:443" # HTTPS entrypoint - - "--certificatesresolvers.myresolver.acme.email=${ACME_EMAIL}" # Email for Let's Encrypt registration - - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json" # Storage for Let's Encrypt certificates - - "--certificatesresolvers.myresolver.acme.httpchallenge=true" # Use HTTP challenge for Let's Encrypt - - "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web" # Use HTTP entrypoint for Let's Encrypt challenge - ports: - - "80:80" # Expose HTTP port - - "443:443" # Expose HTTPS port - volumes: - - /var/run/docker.sock:/var/run/docker.sock:ro # Mount Docker socket for Traefik to access Docker API - - /opt/storagehndrx.co/traefik/letsencrypt:/letsencrypt # Mount Let's Encrypt certificates storage - labels: - - "traefik.enable=true" # Enable Traefik for this service - - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https" # Redirect HTTP to HTTPS - - "traefik.http.routers.traefik.rule=Host(`${TRAEFIK_HOST}`)" # Route Traefik dashboard to specified host - - "traefik.http.routers.traefik.entrypoints=websecure" # Use HTTPS entrypoint for Traefik dashboard - - "traefik.http.routers.traefik.tls=true" # Enable TLS for Traefik dashboard - - "traefik.http.routers.traefik.tls.certresolver=myresolver" # Use Let's Encrypt resolver for Traefik dashboard - - "traefik.http.routers.traefik.service=api@internal" # Use Traefik API for Traefik dashboard - - "traefik.http.routers.traefik.middlewares=redirect-to-https@docker" # Use redirect middleware for Traefik dashboard - networks: - - traefik # Use external network named "traefik" - - # MySQL service for Nextcloud - mysql-nextcloud: - image: mysql:latest - restart: always - environment: - MYSQL_DATABASE: ${NEXTCLOUD_DB_NAME} # Set Nextcloud database name - MYSQL_USER: ${NEXTCLOUD_DB_USER} # Set Nextcloud database user - MYSQL_ROOT_PASSWORD: ${NEXTCLOUD_DB_ROOT_PASSWORD} # Set MySQL root password - MYSQL_PASSWORD: ${NEXTCLOUD_DB_PASSWORD} # Set Nextcloud database password - hostname: mysql-nextcloud # Set hostname for MySQL container - volumes: - - /opt/storagemysql-nextcloud:/var/lib/mysql # Mount MySQL data directory - networks: - - traefik # Use external network named "traefik" - - # Nextcloud service - nextcloud: - build: - context: . - dockerfile: Dockerfile - image: nextcloud-full:latest - # image: nextcloud:latest - restart: always - hostname: nextcloud # Set hostname for Nextcloud container - environment: - VIRTUAL_HOST: ${NEXTCLOUD_HOST} # Set virtual host for Nextcloud - MYSQL_HOST: mysql-nextcloud # Set MySQL host for Nextcloud - MYSQL_DATABASE: ${NEXTCLOUD_DB_NAME} # Set Nextcloud database name - MYSQL_USER: ${NEXTCLOUD_DB_USER} # Set Nextcloud database user - MYSQL_PASSWORD: ${NEXTCLOUD_DB_PASSWORD} # Set Nextcloud database password - NEXTCLOUD_ADMIN_USER: ${NEXTCLOUD_ADMIN_USER} # Set Nextcloud admin user - NEXTCLOUD_ADMIN_PASSWORD: ${NEXTCLOUD_ADMIN_PASSWORD} # Set Nextcloud admin password - NEXTCLOUD_TRUSTED_DOMAINS: ${NEXTCLOUD_HOST} # Set trusted domains for Nextcloud - volumes: - - /opt/storagenextcloud/data:/var/www/html # Mount Nextcloud data directory - - /opt/storagenextcloud/config:/var/www/html/config # Mount Nextcloud config directory - labels: - - "traefik.enable=true" # Enable Traefik for this service - - "traefik.http.routers.nextcloud.rule=Host(`${NEXTCLOUD_HOST}`)" # Route Nextcloud to specified host - - "traefik.http.routers.nextcloud.entrypoints=websecure" # Use HTTPS entrypoint for Nextcloud - - "traefik.http.routers.nextcloud.tls=true" # Enable TLS for Nextcloud - - "traefik.http.services.ghost.loadbalancer.server.port=80" # Set load balancer port for Nextcloud - - "traefik.http.routers.nextcloud.tls.certresolver=myresolver" # Use Let's Encrypt resolver for Nextcloud - - "traefik.http.routers.nextcloud.middlewares=nc-rep,nc-header" # Use redirect and header middlewares for Nextcloud - - "traefik.http.middlewares.nc-rep.redirectregex.regex=https://(.*)/.well-known/(card|cal)dav" # Set regex for redirect middleware - - "traefik.http.middlewares.nc-rep.redirectregex.replacement=https://$$1/remote.php/dav/" # Set replacement for redirect middleware - - "traefik.http.middlewares.nc-rep.redirectregex.permanent=true" # Set redirect as permanent - - "traefik.http.middlewares.nc-header.headers.frameDeny=true" # Set header for frame deny - - "traefik.http.middlewares.nc-header.headers.sslRedirect=true" # Set header for SSL redirect - - "traefik.http.middlewares.nc-header.headers.contentTypeNosniff=true" # Set header for content type nosniff - - "traefik.http.middlewares.nc-header.headers.stsIncludeSubdomains=true" # Set header for STS include subdomains - - "traefik.http.middlewares.nc-header.headers.stsPreload=true" # Set header for STS preload - - "traefik.http.middlewares.nc-header.headers.stsSeconds=31536000" # Set header for STS seconds - - "traefik.http.middlewares.nc-header.headers.referrerPolicy=same-origin" # Set header for referrer policy - - "traefik.http.middlewares.nc-header.headers.browserXssFilter=true" # Set header for browser XSS filter - - "traefik.http.middlewares.nc-header.headers.customRequestHeaders.X-Forwarded-Proto=https" # Set custom request header for X-Forwarded-Proto - - "traefik.http.middlewares.nc-header.headers.customRequestHeaders.X-Forwarded-Proto=websecure" # Set custom request header for X-Forwarded-Proto - - "traefik.http.middlewares.nc-header.headers.customResponseHeaders.X-Robots-Tag=noindex, nofollow" # Set custom response header for X-Robots-Tag - - "traefik.http.middlewares.nc-header.headers.customFrameOptionsValue=SAMEORIGIN" # Set custom frame options value - # - "traefik.http.routers.nextcloud.middlewares: 'nextcloud_redirectregex'" - # - "traefik.http.middlewares.nextcloud_redirectregex.redirectregex.permanent: true" - - networks: - - traefik # Use external network named "traefik" - - # # MySQL service for Ghost - # mysql-ghost: - # image: mysql:latest - # restart: always - # environment: - # MYSQL_ROOT_PASSWORD: ${GHOST_DB_ROOT_PASSWORD} # Set MySQL root password - # MYSQL_DATABASE: ${GHOST_DB_NAME} # Set Ghost database name - # MYSQL_USER: ${GHOST_DB_USER} # Set Ghost database user - # MYSQL_PASSWORD: ${GHOST_DB_PASSWORD} # Set Ghost database password - # volumes: - # - /opt/storagemysql-ghost:/var/lib/mysql # Mount MySQL data directory - # hostname: mysql-ghost # Set hostname for MySQL container - # networks: - # - traefik # Use external network named "traefik" - - # # Ghost service - # ghost: - # image: ghost:latest - # restart: always - # environment: - # url: ${GHOST_URL} # Set Ghost URL - # database__client: mysql # Set Ghost database client - # database__connection__host: mysql-ghost # Set MySQL host for Ghost - # database__connection__user: ${GHOST_DB_USER} # Set Ghost database user - # database__connection__password: ${GHOST_DB_PASSWORD} # Set Ghost database password - # database__connection__database: ${GHOST_DB_NAME} # Set Ghost database name - # volumes: - # - opt/storageghost/content:/var/lib/ghost/content # Mount Ghost content directory - # labels: - # - "traefik.enable=true" # Enable Traefik for this service - # - "traefik.http.routers.ghost.rule=Host(`${GHOST_DOMAIN}`)" # Route Ghost to specified host - # - "traefik.http.routers.ghost.entrypoints=websecure" # Use HTTPS entrypoint for Ghost - # - "traefik.http.routers.ghost.tls=true" # Enable TLS for Ghost - # - "traefik.http.routers.ghost.tls.certresolver=myresolver" # Use Let's Encrypt resolver for Ghost - # - "traefik.http.services.ghost.loadbalancer.server.port=2368" # Set load balancer port for Ghost - # - "traefik.http.routers.ghost.middlewares=redirect-to-https@docker" # Use redirect middleware for Ghost - # networks: - # - traefik # Use external network named "traefik" - - -networks: - traefik: - external: true # Use external network named "traefik" - - - -#Same shit as above basically ^ working is above. -# version: '3' - -# services: -# traefik: -# image: traefik:v2.4 -# command: -# - "--api.insecure=true" -# - "--providers.docker=true" -# - "--providers.docker.exposedbydefault=false" -# - "--entrypoints.web.address=:80" -# - "--entrypoints.websecure.address=:443" -# - "--certificatesresolvers.myresolver.acme.email=${ACME_EMAIL}" -# - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json" -# - "--certificatesresolvers.myresolver.acme.httpchallenge=true" -# - "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web" -# ports: -# - "80:80" -# - "443:443" -# volumes: -# - /var/run/docker.sock:/var/run/docker.sock:ro -# - opt/storagehndrx.co/traefik/letsencrypt:/letsencrypt -# labels: -# - "traefik.enable=true" -# - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https" -# - "traefik.http.routers.traefik.rule=Host(`${TRAEFIK_HOST}`)" -# - "traefik.http.routers.traefik.entrypoints=websecure" -# - "traefik.http.routers.traefik.tls=true" -# - "traefik.http.routers.traefik.tls.certresolver=myresolver" -# - "traefik.http.routers.traefik.service=api@internal" -# - "traefik.http.routers.traefik.middlewares=redirect-to-https@docker" -# networks: -# - traefik - -# mysql-nextcloud: -# image: mysql:latest -# restart: always -# environment: -# MYSQL_DATABASE: ${NEXTCLOUD_DB_NAME} -# MYSQL_USER: ${NEXTCLOUD_DB_USER} -# MYSQL_ROOT_PASSWORD: ${NEXTCLOUD_DB_ROOT_PASSWORD} -# MYSQL_PASSWORD: ${NEXTCLOUD_DB_PASSWORD} -# hostname: mysql-nextcloud -# volumes: -# - opt/storagemysql-nextcloud:/var/lib/mysql -# networks: -# - traefik - -# nextcloud: -# image: nextcloud:latest -# restart: always -# hostname: nextcloud -# environment: -# VIRTUAL_HOST: ${NEXTCLOUD_HOST} -# MYSQL_HOST: mysql-nextcloud -# MYSQL_DATABASE: ${NEXTCLOUD_DB_NAME} -# MYSQL_USER: ${NEXTCLOUD_DB_USER} -# MYSQL_PASSWORD: ${NEXTCLOUD_DB_PASSWORD} -# NEXTCLOUD_ADMIN_USER: ${NEXTCLOUD_ADMIN_USER} -# NEXTCLOUD_ADMIN_PASSWORD: ${NEXTCLOUD_ADMIN_PASSWORD} -# NEXTCLOUD_TRUSTED_DOMAINS: ${NEXTCLOUD_HOST} -# volumes: -# - opt/storagenextcloud/data:/var/www/html -# - /opt/storagenextcloud/config:/var/www/html/config -# labels: -# - "traefik.enable=true" -# - "traefik.http.routers.nextcloud.rule=Host(`${NEXTCLOUD_HOST}`)" -# - "traefik.http.routers.nextcloud.entrypoints=websecure" -# - "traefik.http.routers.nextcloud.tls=true" -# - "traefik.http.services.ghost.loadbalancer.server.port=80" -# - "traefik.http.routers.nextcloud.tls.certresolver=myresolver" -# - "traefik.http.routers.nextcloud.middlewares=nc-rep,nc-header" -# - "traefik.http.middlewares.nc-rep.redirectregex.regex=https://(.*)/.well-known/(card|cal)dav" -# - "traefik.http.middlewares.nc-rep.redirectregex.replacement=https://$$1/remote.php/dav/" -# - "traefik.http.middlewares.nc-rep.redirectregex.permanent=true" -# - "traefik.http.middlewares.nc-header.headers.frameDeny=true" -# - "traefik.http.middlewares.nc-header.headers.sslRedirect=true" -# - "traefik.http.middlewares.nc-header.headers.contentTypeNosniff=true" -# - "traefik.http.middlewares.nc-header.headers.stsIncludeSubdomains=true" -# - "traefik.http.middlewares.nc-header.headers.stsPreload=true" -# - "traefik.http.middlewares.nc-header.headers.stsSeconds=31536000" -# - "traefik.http.middlewares.nc-header.headers.referrerPolicy=same-origin" -# - "traefik.http.middlewares.nc-header.headers.browserXssFilter=true" -# - "traefik.http.middlewares.nc-header.headers.customRequestHeaders.X-Forwarded-Proto=https" -# - "traefik.http.middlewares.nc-header.headers.customRequestHeaders.X-Forwarded-Proto=websecure" -# - "traefik.http.middlewares.nc-header.headers.customResponseHeaders.X-Robots-Tag=none" -# - "traefik.http.middlewares.nc-header.headers.customFrameOptionsValue=SAMEORIGIN" -# networks: -# - traefik - -# mysql-ghost: -# image: mysql:latest -# restart: always -# environment: -# MYSQL_ROOT_PASSWORD: ${GHOST_DB_ROOT_PASSWORD} -# MYSQL_DATABASE: ${GHOST_DB_NAME} -# MYSQL_USER: ${GHOST_DB_USER} -# MYSQL_PASSWORD: ${GHOST_DB_PASSWORD} -# volumes: -# - /opt/storagemysql-ghost:/var/lib/mysql -# hostname: mysql-ghost -# networks: -# - traefik - -# ghost: -# image: ghost:latest -# restart: always -# environment: -# url: ${GHOST_URL} -# database__client: mysql -# database__connection__host: mysql-ghost -# database__connection__user: ${GHOST_DB_USER} -# database__connection__password: ${GHOST_DB_PASSWORD} -# database__connection__database: ${GHOST_DB_NAME} -# volumes: -# - /opt/storageghost/content:/var/lib/ghost/content -# labels: -# - "traefik.enable=true" -# - "traefik.http.routers.ghost.rule=Host(`${GHOST_DOMAIN}`)" -# - "traefik.http.routers.ghost.entrypoints=websecure" -# - "traefik.http.routers.ghost.tls=true" -# - "traefik.http.routers.ghost.tls.certresolver=myresolver" -# - "traefik.http.services.ghost.loadbalancer.server.port=2368" -# - "traefik.http.routers.ghost.middlewares=redirect-to-https@docker" -# networks: -# - traefik - - -# networks: -# traefik: -# external: true diff --git a/web-apps/dockerfile b/web-apps/dockerfile deleted file mode 100644 index 115cac5..0000000 --- a/web-apps/dockerfile +++ /dev/null @@ -1,60 +0,0 @@ -FROM nextcloud:apache - -RUN set -ex; \ - \ - apt-get update; \ - apt-get install -y --no-install-recommends \ - ffmpeg \ - ghostscript \ - libmagickcore-6.q16-6-extra \ - procps \ - smbclient \ - supervisor \ -# libreoffice \ - ; \ - rm -rf /var/lib/apt/lists/* - -RUN set -ex; \ - \ - savedAptMark="$(apt-mark showmanual)"; \ - \ - apt-get update; \ - apt-get install -y --no-install-recommends \ - libbz2-dev \ - libc-client-dev \ - libkrb5-dev \ - libsmbclient-dev \ - ; \ - \ - docker-php-ext-configure imap --with-kerberos --with-imap-ssl; \ - docker-php-ext-install \ - bz2 \ - imap \ - ; \ - pecl install smbclient; \ - docker-php-ext-enable smbclient; \ - \ -# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies - apt-mark auto '.*' > /dev/null; \ - apt-mark manual $savedAptMark; \ - ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ - | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); print so }' \ - | sort -u \ - | xargs -r dpkg-query --search \ - | cut -d: -f1 \ - | sort -u \ - | xargs -rt apt-mark manual; \ - \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ - rm -rf /var/lib/apt/lists/* - -RUN mkdir -p \ - /var/log/supervisord \ - /var/run/supervisord \ -; - -COPY supervisord.conf / - -ENV NEXTCLOUD_UPDATE=1 - -CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"] \ No newline at end of file diff --git a/wordpress/docker-compose-wordpress.yaml b/wordpress/docker-compose.yml similarity index 100% rename from wordpress/docker-compose-wordpress.yaml rename to wordpress/docker-compose.yml diff --git a/wordpress/docker-wordpress-env.example b/wordpress/docker-env.env.example similarity index 100% rename from wordpress/docker-wordpress-env.example rename to wordpress/docker-env.env.example