diff --git a/linkwarden/docker-compose.yml b/linkwarden/docker-compose.yml new file mode 100644 index 0000000..8f68310 --- /dev/null +++ b/linkwarden/docker-compose.yml @@ -0,0 +1,57 @@ +--- +services: + linkwarden: + image: ghcr.io/linkwarden/linkwarden:latest + container_name: linkwarden + env_file: .env + environment: + - DATABASE_URL=postgresql://linkwarden:$LINKWARDEN_DB_PASSWORD@postgres:5432/linkwarden + - NEXTAUTH_URL=https://linkwarden.$DOMAIN/api/v1/auth + volumes: + - linkwarden-data:/data/data + depends_on: + - postgres + - meilisearch + restart: unless-stopped + labels: + - "traefik.enable=true" + - "traefik.http.routers.linkwarden.entrypoints=insecure" + - "traefik.http.routers.linkwarden.rule=Host(`linkwarden.$DOMAIN`)" + - "traefik.http.services.linkwarden.loadbalancer.server.port=3000" + # - "traefik.http.routers.linkwarden.tls.certresolver=le" + + postgres: + image: postgres:16-alpine + container_name: linkwarden_db + environment: + - POSTGRES_DB=linkwarden + - POSTGRES_USER=linkwarden + - POSTGRES_PASSWORD=$LINKWARDEN_DB_PASSWORD + volumes: + - linkwarden-pgdata:/var/lib/postgresql/data + restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "pg_isready -U linkwarden"] + interval: 10s + timeout: 5s + retries: 5 + + meilisearch: + image: getmeili/meilisearch:v1.12.8 + container_name: linkwarden_meilisearch + environment: + - MEILI_MASTER_KEY=$MEILI_MASTER_KEY + - MEILI_NO_ANALYTICS=true + volumes: + - linkwarden-meili_data:/meili_data + restart: unless-stopped + +networks: + default: + name: $DEFAULT_NETWORK + external: true + +volumes: + linkwarden-data: + linkwarden-pgdata: + linkwarden-meili_data: diff --git a/linkwarden/env.example b/linkwarden/env.example new file mode 100644 index 0000000..acc1581 --- /dev/null +++ b/linkwarden/env.example @@ -0,0 +1,23 @@ +# Rename this file to .env +# Full reference: https://docs.linkwarden.app/self-hosting/environment-variables + +# Required for Traefik +DEFAULT_NETWORK=traefik-network +DOMAIN=yourdomain.home + +# Required: generate with: openssl rand -hex 32 +NEXTAUTH_SECRET= + +# Database password (change it) +LINKWARDEN_DB_PASSWORD=change_me + +# Meilisearch: generate with: openssl rand -hex 16 +MEILI_MASTER_KEY= + +# Optional +# NEXT_PUBLIC_DISABLE_REGISTRATION=true +# TZ=UTC +# PAGINATION_TAKE_COUNT=100 +# NEXT_PUBLIC_EMAIL_PROVIDER=smtp +# EMAIL_FROM=linkwarden@example.com +# EMAIL_SERVER=smtp://user:pass@smtp.example.com:587