diff --git a/affine/compose.yml b/affine/compose.yml new file mode 100644 index 0000000..94f7118 --- /dev/null +++ b/affine/compose.yml @@ -0,0 +1,84 @@ +services: + affine: + image: ghcr.io/toeverything/affine:${AFFINE_REVISION:-stable} + container_name: affine_server + depends_on: + redis: + condition: service_healthy + affine_migration: + condition: service_completed_successfully + + volumes: + - ${UPLOAD_LOCATION}:/root/.affine/storage + - ${CONFIG_LOCATION}:/root/.affine/config + + env_file: + - .env + + environment: + - REDIS_SERVER_HOST=redis + - DATABASE_URL=postgresql://${DB_USERNAME}:${DB_PASSWORD}@postgresql:5432/${DB_DATABASE:-affine} + - AFFINE_INDEXER_ENABLED=false + + labels: + - "traefik.enable=true" + - "traefik.docker.network=traefik-network" + - "traefik.http.routers.affine.rule=Host(`affine.byhaider.dev`)" + - "traefik.http.routers.affine.entrypoints=websecure" + - "traefik.http.routers.affine.tls=true" + - "traefik.http.routers.affine.tls.certresolver=cloudflare" + - "traefik.http.services.affine.loadbalancer.server.port=3010" + + networks: + - traefik-network + - postgresql + + restart: unless-stopped + + + affine_migration: + image: ghcr.io/toeverything/affine:${AFFINE_REVISION:-stable} + container_name: affine_migration_job + + volumes: + - ${UPLOAD_LOCATION}:/root/.affine/storage + - ${CONFIG_LOCATION}:/root/.affine/config + + command: ['sh', '-c', 'node ./scripts/self-host-predeploy.js'] + + env_file: + - .env + + environment: + - REDIS_SERVER_HOST=redis + - DATABASE_URL=postgresql://${DB_USERNAME}:${DB_PASSWORD}@postgresql:5432/${DB_DATABASE:-affine} + - AFFINE_INDEXER_ENABLED=false + + depends_on: + redis: + condition: service_healthy + + networks: + - postgresql + + redis: + image: redis + container_name: affine_redis + + healthcheck: + test: ['CMD', 'redis-cli', '--raw', 'incr', 'ping'] + interval: 10s + timeout: 5s + retries: 5 + + networks: + - postgresql + + restart: unless-stopped + + +networks: + traefik-network: + external: true + postgresql: + external: true \ No newline at end of file diff --git a/affine/default.env.example b/affine/default.env.example new file mode 100644 index 0000000..7ec7e2c --- /dev/null +++ b/affine/default.env.example @@ -0,0 +1,23 @@ +# select a revision to deploy, available values: stable, beta, canary +AFFINE_REVISION=stable + +# set the port for the server container it will expose the server on +PORT=3010 + +# set the host for the server for outgoing links +# AFFINE_SERVER_HTTPS=true +# AFFINE_SERVER_HOST=affine.yourdomain.com +# or +# AFFINE_SERVER_EXTERNAL_URL=https://affine.yourdomain.com + +# position of the database data to persist +DB_DATA_LOCATION=~/.affine/self-host/postgres/pgdata +# position of the upload data(images, files, etc.) to persist +UPLOAD_LOCATION=~/.affine/self-host/storage +# position of the configuration files to persist +CONFIG_LOCATION=~/.affine/self-host/config + +# database credentials +DB_USERNAME=affine +DB_PASSWORD= +DB_DATABASE=affine