services: postgres: image: postgres:16-alpine container_name: linkwarden-db env_file: - .env environment: POSTGRES_PASSWORD: NEXTAUTH_SECRET: restart: unless-stopped volumes: - /srv/docker/linkwarden/pgdata:/var/lib/postgresql/data networks: - traefik_network - linkwarden linkwarden: env_file: - .env environment: - DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres restart: unless-stopped image: ghcr.io/linkwarden/linkwarden:latest container_name: linkwarden ports: - 5017:3000 volumes: - /srv/docker/linkwarden/data:/data/data depends_on: - postgres networks: - traefik_network - linkwarden labels: ### Auto create icon on Flame dashboard - flame.type=application - flame.name=${SERVICE_NAME} - flame.url=https://${SERVICE_NAME}.${DOMAIN_NAME} - flame.icon=https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/linkwarden.png ### Enable Traefik - traefik.enable=true - traefik.docker.network=traefik_network ### For HTTP #- traefik.http.routers.${SERVICE_NAME}.rule=Host(`${SERVICE_NAME}.${DOMAIN_NAME}`) #- traefik.http.routers.${SERVICE_NAME}.entrypoints=web ### For HTTPS - traefik.http.routers.${SERVICE_NAME}-https.tls=true - traefik.http.routers.${SERVICE_NAME}-https.tls.certresolver=cloudflare - traefik.http.routers.${SERVICE_NAME}-https.entrypoints=websecure - traefik.http.routers.${SERVICE_NAME}-https.rule=Host(`${SERVICE_NAME}.${DOMAIN_NAME}`) ### Monitor with uptime-kuma - kuma.monitoring.group.name=Docker Containers - kuma.${SERVICE_NAME}.docker.parent_name=monitoring - kuma.${SERVICE_NAME}.docker.name=${SERVICE_NAME} - kuma.${SERVICE_NAME}.docker.type=docker - kuma.${SERVICE_NAME}.docker.docker_container=${SERVICE_NAME} - kuma.${SERVICE_NAME}.docker.docker_host=1 - 'kuma.${SERVICE_NAME}.docker.tag_names=[{"name": "docker_tag"}]' networks: traefik_network: external: true linkwarden: name: linkwarden_network driver: bridge