networks: traefik-net: name: traefik-net volumes: traefik-certs: name: traefik-certs services: traefik: image: traefik:v2.10 command: - --providers.docker - --providers.docker.network=traefik-net - --providers.docker.exposedbydefault=false - --entrypoints.web.address=:80 - --entrypoints.web.http.redirections.entryPoint.to=websecure - --entrypoints.web.http.redirections.entryPoint.scheme=https - --entrypoints.web.http.redirections.entrypoint.permanent=true - --entrypoints.websecure.address=:443 - --certificatesresolvers.le.acme.tlschallenge=true - --certificatesresolvers.le.acme.email=${EMAIL} - --certificatesresolvers.le.acme.storage=/letsencrypt/acme.json ports: - 80:80 - 443:443 volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - traefik-certs:/letsencrypt db: image: postgres:15 volumes: - ./data/postgres:/var/lib/postgresql/data restart: unless-stopped environment: - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_DB=${POSTGRES_DATABASE} joplin: image: joplin/server:latest depends_on: - db restart: unless-stopped labels: - traefik.enable=true - traefik.http.routers.joplin.rule=Host(`${HOST}`) - traefik.http.routers.joplin.entrypoints=websecure - traefik.http.routers.joplin.tls.certresolver=le - traefik.http.services.joplin.loadbalancer.server.port=22300 environment: - APP_PORT=22300 - APP_BASE_URL=${HOST} - DB_CLIENT=pg - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DATABASE=${POSTGRES_DATABASE} - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PORT=${POSTGRES_PORT} - POSTGRES_HOST=db - MAILER_ENABLED=${MAILER_ENABLED} - MAILER_HOST=${MAILER_HOST} - MAILER_PORT=${MAILER_PORT} - MAILER_SECURITY=${MAILER_SECURITY} - MAILER_AUTH_USER=${MAILER_AUTH_USER} - MAILER_AUTH_PASSWORD=${MAILER_AUTH_PASSWORD} - MAILER_NOREPLY_NAME=${MAILER_NOREPLY_NAME} - MAILER_NOREPLY_EMAIL=${MAILER_NOREPLY_EMAIL}