version: '3.9' services: nginx: image: nginx container_name: nginx restart: unless-stopped command: nginx -c /config/nginx.conf volumes: - /home/nick/configs/routing/nginx:/config - /mnt/storage:/static:ro ports: - 80:80 - 443:443 networks: - proxy extra_hosts: - "host.docker.internal:host-gateway" certbot: image: certbot/dns-cloudflare container_name: certbot restart: unless-stopped entrypoint: "/bin/sh -c \"trap exit TERM; while :; do certbot renew --post-hook 'chown -R 1000:1000 /etc/letsencrypt'; sleep 12h & wait $${!}; done;\"" volumes: - /home/nick/configs/routing/nginx/certs/letsencrypt:/etc/letsencrypt networks: - proxy cloudflare_argo_tunnel: image: cloudflare/cloudflared container_name: cloudflared restart: unless-stopped volumes: - '/home/nick/configs/routing/cloudflared:/etc/cloudflared' networks: - proxy command: tunnel --no-autoupdate --no-tls-verify --origincert /etc/cloudflared/cert.pem --hostname ${DOMAIN} --origin-server-name *.${DOMAIN} --url https://nginx:443 user: '1000:1000' cloudflare_ddns: image: oznu/cloudflare-ddns container_name: cloudflare_ddns restart: unless-stopped environment: - API_KEY=${CF_API_KEY} - ZONE=${DOMAIN} - SUBDOMAIN=ddns - PROXIED=false network_mode: bridge whoami: image: containous/whoami container_name: whoami restart: unless-stopped networks: - proxy yourls: build: https://git.karaolidis.com/Nikas36/yourls-plugins.git image: yourls:custom container_name: yourls restart: unless-stopped environment: - 'YOURLS_DB_HOST=yourls_db:3306' - 'YOURLS_DB_PASS=${YOURLS_DB_PASS}' - 'YOURLS_SITE=${YOURLS_URL}' - 'YOURLS_USER=${YOURLS_USER}' - 'YOURLS_PASS=${YOURLS_PASS}' networks: - yourls - proxy depends_on: - yourls_db yourls_db: image: mysql container_name: yourls_db restart: unless-stopped volumes: - '/home/nick/configs/routing/yourls:/var/lib/mysql' environment: - 'MYSQL_ROOT_PASSWORD=${YOURLS_DB_PASS}' networks: - yourls user: '1000:1000' networks: proxy: external: true name: proxy yourls: name: yourls