mirror of
https://github.com/tiennm99/coolify.git
synced 2026-05-04 19:35:56 +00:00
Merge branch 'next' into v4.x
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
# documentation: https://www.beszel.dev/guide/agent-installation
|
||||
# slogan: Monitoring agent for Beszel
|
||||
# category: monitoring
|
||||
# tags: beszel,monitoring,server,stats,alerts
|
||||
# logo: svgs/beszel.svg
|
||||
|
||||
services:
|
||||
beszel-agent:
|
||||
image: 'henrygd/beszel-agent:0.16.1' # Released on 14 Nov 2025
|
||||
environment:
|
||||
- LISTEN=/beszel_socket/beszel.sock
|
||||
- HUB_URL=${HUB_URL?}
|
||||
- 'TOKEN=${TOKEN?}'
|
||||
- 'KEY=${KEY?}'
|
||||
volumes:
|
||||
- beszel_agent_data:/var/lib/beszel-agent
|
||||
- beszel_socket:/beszel_socket
|
||||
- '/var/run/docker.sock:/var/run/docker.sock:ro'
|
||||
@@ -9,21 +9,21 @@
|
||||
# Add the public Key in "Key" env variable and token in the "Token" variable below (These are obtained from Beszel UI)
|
||||
services:
|
||||
beszel:
|
||||
image: 'henrygd/beszel:0.15.2' # Released on October 30 2025
|
||||
image: 'henrygd/beszel:0.16.1' # Released on 14 Nov 2025
|
||||
environment:
|
||||
- SERVICE_URL_BESZEL_8090
|
||||
volumes:
|
||||
- 'beszel_data:/beszel_data'
|
||||
- 'beszel_socket:/beszel_socket'
|
||||
beszel-agent:
|
||||
image: 'henrygd/beszel-agent:0.15.2' # Released on October 30 2025
|
||||
volumes:
|
||||
- beszel_agent_data:/var/lib/beszel-agent
|
||||
- beszel_socket:/beszel_socket
|
||||
- '/var/run/docker.sock:/var/run/docker.sock:ro'
|
||||
image: 'henrygd/beszel-agent:0.16.1' # Released on 14 Nov 2025
|
||||
environment:
|
||||
- LISTEN=/beszel_socket/beszel.sock
|
||||
- HUB_URL=http://beszel:8090
|
||||
- 'TOKEN=${TOKEN}'
|
||||
- 'KEY=${KEY}'
|
||||
volumes:
|
||||
- beszel_agent_data:/var/lib/beszel-agent
|
||||
- beszel_socket:/beszel_socket
|
||||
- '/var/run/docker.sock:/var/run/docker.sock:ro'
|
||||
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
# documentation: https://github.com/basecamp/fizzy
|
||||
# slogan: Kanban tracking tool for issues and ideas by 37signals
|
||||
# category: productivity
|
||||
# tags: kanban, project management, issues, rails, ruby, basecamp, 37signals
|
||||
# logo: svgs/fizzy.png
|
||||
# port: 80
|
||||
|
||||
services:
|
||||
fizzy:
|
||||
image: ghcr.io/basecamp/fizzy:main
|
||||
environment:
|
||||
- SERVICE_FQDN_FIZZY_80
|
||||
- SECRET_KEY_BASE=$SERVICE_PASSWORD_FIZZY
|
||||
- RAILS_MASTER_KEY=$SERVICE_PASSWORD_64_MASTERKEY
|
||||
- RAILS_ENV=production
|
||||
- RAILS_LOG_TO_STDOUT=true
|
||||
- RAILS_SERVE_STATIC_FILES=true
|
||||
- DATABASE_ADAPTER=sqlite
|
||||
- SOLID_QUEUE_CONNECTS_TO=false
|
||||
- VAPID_PRIVATE_KEY=$VAPID_PRIVATE_KEY
|
||||
- VAPID_PUBLIC_KEY=$VAPID_PUBLIC_KEY
|
||||
volumes:
|
||||
- fizzy-data:/rails/db
|
||||
- fizzy-storage:/rails/storage
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:80/up"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 30s
|
||||
@@ -0,0 +1,58 @@
|
||||
# documentation: https://garagehq.deuxfleurs.fr/documentation/
|
||||
# slogan: Garage is an S3-compatible distributed object storage service designed for self-hosting.
|
||||
# category: storage
|
||||
# tags: object, storage, server, s3, api, distributed
|
||||
# logo: svgs/garage.svg
|
||||
# port: 3900
|
||||
|
||||
services:
|
||||
garage:
|
||||
image: dxflrs/garage:v2.1.0
|
||||
environment:
|
||||
- GARAGE_S3_API_URL=$GARAGE_S3_API_URL
|
||||
- GARAGE_WEB_URL=$GARAGE_WEB_URL
|
||||
- GARAGE_ADMIN_URL=$GARAGE_ADMIN_URL
|
||||
- GARAGE_RPC_SECRET=${SERVICE_HEX_32_RPCSECRET}
|
||||
- GARAGE_ADMIN_TOKEN=$SERVICE_PASSWORD_GARAGE
|
||||
- GARAGE_METRICS_TOKEN=$SERVICE_PASSWORD_GARAGEMETRICS
|
||||
- GARAGE_ALLOW_WORLD_READABLE_SECRETS=true
|
||||
- RUST_LOG=${RUST_LOG:-garage=info}
|
||||
volumes:
|
||||
- garage-meta:/var/lib/garage/meta
|
||||
- garage-data:/var/lib/garage/data
|
||||
- type: bind
|
||||
source: ./garage.toml
|
||||
target: /etc/garage.toml
|
||||
content: |
|
||||
metadata_dir = "/var/lib/garage/meta"
|
||||
data_dir = "/var/lib/garage/data"
|
||||
db_engine = "lmdb"
|
||||
|
||||
replication_factor = 1
|
||||
consistency_mode = "consistent"
|
||||
|
||||
compression_level = 1
|
||||
block_size = "1M"
|
||||
|
||||
rpc_bind_addr = "[::]:3901"
|
||||
rpc_secret_file = "env:GARAGE_RPC_SECRET"
|
||||
bootstrap_peers = []
|
||||
|
||||
[s3_api]
|
||||
s3_region = "garage"
|
||||
api_bind_addr = "[::]:3900"
|
||||
root_domain = ".s3.garage.localhost"
|
||||
|
||||
[s3_web]
|
||||
bind_addr = "[::]:3902"
|
||||
root_domain = ".web.garage.localhost"
|
||||
|
||||
[admin]
|
||||
api_bind_addr = "[::]:3903"
|
||||
admin_token_file = "env:GARAGE_ADMIN_TOKEN"
|
||||
metrics_token_file = "env:GARAGE_METRICS_TOKEN"
|
||||
healthcheck:
|
||||
test: ["CMD", "/garage", "stats", "-a"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
@@ -32,6 +32,7 @@ services:
|
||||
- ANTHROPIC_API_BASE=${ANTHROPIC_API_BASE}
|
||||
- VOYAGE_API_KEY=${VOYAGE_API_KEY}
|
||||
- VOYAGE_API_BASE=${VOYAGE_API_BASE}
|
||||
- STORE_MODEL_IN_DB=${STORE_MODEL_IN_DB}
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./litellm-config.yaml
|
||||
|
||||
@@ -37,7 +37,7 @@ services:
|
||||
is_directory: true
|
||||
environment:
|
||||
- SERVICE_URL_PAPERLESS_8000
|
||||
- PAPERLESS_URL=$SERVICE_URL_PAPERLESS_8000
|
||||
- PAPERLESS_URL=$SERVICE_URL_PAPERLESS
|
||||
- PAPERLESS_ADMIN_PASSWORD=${SERVICE_PASSWORD_PAPERLESS}
|
||||
- PAPERLESS_ADMIN_USER=${SERVICE_USER_PAPERLESS}
|
||||
- PAPERLESS_REDIS=redis://redis:6379
|
||||
|
||||
@@ -0,0 +1,166 @@
|
||||
# documentation: https://help.penpot.app/technical-guide/getting-started/#install-with-docker
|
||||
# slogan: Penpot is the first Open Source design and prototyping platform for product teams.
|
||||
# category: productivity
|
||||
# tags: penpot,design,prototyping,figma,open,source
|
||||
# logo: svgs/penpot.svg
|
||||
# port: 8080
|
||||
|
||||
services:
|
||||
frontend:
|
||||
image: penpotapp/frontend:2.11.1 # Release on 13 Nov 2025
|
||||
depends_on:
|
||||
penpot-backend:
|
||||
condition: service_healthy
|
||||
penpot-exporter:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- SERVICE_URL_FRONTEND_8080
|
||||
- 'PENPOT_FLAGS=${PENPOT_BACKEND_FLAGS:-enable-login-with-password}'
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:8080"]
|
||||
interval: 2s
|
||||
timeout: 10s
|
||||
retries: 15
|
||||
|
||||
penpot-backend:
|
||||
image: penpotapp/backend:2.11.1 # Release on 13 Nov 2025
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
penpot-valkey:
|
||||
condition: service_healthy
|
||||
minio-init:
|
||||
condition: service_completed_successfully
|
||||
environment:
|
||||
- 'PENPOT_FLAGS=${PENPOT_BACKEND_FLAGS:-enable-login-with-password}'
|
||||
|
||||
# Backend & URIs
|
||||
- PENPOT_HTTP_SERVER_PORT=6060
|
||||
- PENPOT_SECRET_KEY=${SERVICE_REALBASE64_64_PENPOT}
|
||||
- PENPOT_PUBLIC_URI=${SERVICE_URL_FRONTEND_8080}
|
||||
- PENPOT_BACKEND_URI=http://penpot-backend
|
||||
- PENPOT_EXPORTER_URI=http://penpot-exporter
|
||||
|
||||
# Database
|
||||
- PENPOT_DATABASE_URI=postgresql://postgres/${POSTGRES_DB:-penpot}
|
||||
- PENPOT_DATABASE_USERNAME=${SERVICE_USER_POSTGRES}
|
||||
- PENPOT_DATABASE_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
|
||||
# Valkey
|
||||
- 'PENPOT_REDIS_URI=redis://penpot-valkey/0'
|
||||
|
||||
# Telemetry
|
||||
- PENPOT_TELEMETRY_ENABLED=${PENPOT_TELEMETRY_ENABLED:-false}
|
||||
|
||||
# S3 Storage Configuration (MinIO)
|
||||
- PENPOT_OBJECTS_STORAGE_BACKEND=s3
|
||||
- PENPOT_OBJECTS_STORAGE_S3_REGION=us-east-1
|
||||
- PENPOT_OBJECTS_STORAGE_S3_BUCKET=penpot
|
||||
- PENPOT_OBJECTS_STORAGE_S3_ENDPOINT=http://minio:9000
|
||||
|
||||
# S3 Credentials (MinIO)
|
||||
- AWS_ACCESS_KEY_ID=${SERVICE_USER_MINIO}
|
||||
- AWS_SECRET_ACCESS_KEY=${SERVICE_PASSWORD_MINIO}
|
||||
|
||||
# Email Configuration
|
||||
- PENPOT_SMTP_DEFAULT_FROM=${PENPOT_SMTP_DEFAULT_FROM:-no-reply@example.com}
|
||||
- PENPOT_SMTP_DEFAULT_REPLY_TO=${PENPOT_SMTP_DEFAULT_REPLY_TO:-no-reply@example.com}
|
||||
- PENPOT_SMTP_HOST=${PENPOT_SMTP_HOST:-mailpit}
|
||||
- PENPOT_SMTP_PORT=${PENPOT_SMTP_PORT:-1025}
|
||||
- PENPOT_SMTP_USERNAME=${PENPOT_SMTP_USERNAME:-penpot}
|
||||
- PENPOT_SMTP_PASSWORD=${PENPOT_SMTP_PASSWORD:-penpot}
|
||||
- PENPOT_SMTP_TLS=${PENPOT_SMTP_TLS:-false}
|
||||
- PENPOT_SMTP_SSL=${PENPOT_SMTP_SSL:-false}
|
||||
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD",
|
||||
"node",
|
||||
"-e",
|
||||
"require('http').get({host:'127.0.0.1', port:6060, path:'/readyz'}, res => process.exit(res.statusCode===200 ? 0 : 1)).on('error', () => process.exit(1));"
|
||||
]
|
||||
interval: 10s
|
||||
timeout: 30s
|
||||
retries: 15
|
||||
|
||||
penpot-exporter:
|
||||
image: penpotapp/exporter:2.11.1 # Release on 13 Nov 2025
|
||||
environment:
|
||||
- PENPOT_PUBLIC_URI=${SERVICE_URL_FRONTEND_8080}
|
||||
- 'PENPOT_REDIS_URI=redis://penpot-valkey/0'
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:6061/readyz"]
|
||||
interval: 2s
|
||||
timeout: 10s
|
||||
retries: 15
|
||||
|
||||
# MinIO S3 Local server
|
||||
minio:
|
||||
image: ghcr.io/coollabsio/minio:RELEASE.2025-10-15T17-29-55Z # Released on 15 October 2025
|
||||
command: server /data
|
||||
environment:
|
||||
- MINIO_ROOT_USER=${SERVICE_USER_MINIO}
|
||||
- MINIO_ROOT_PASSWORD=${SERVICE_PASSWORD_MINIO}
|
||||
volumes:
|
||||
- minio-data:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "mc", "ready", "local"]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
|
||||
# S3 Bucket initialization
|
||||
minio-init:
|
||||
image: minio/mc:latest
|
||||
depends_on:
|
||||
minio:
|
||||
condition: service_healthy
|
||||
entrypoint: >
|
||||
sh -c "
|
||||
mc alias set local http://minio:9000 ${SERVICE_USER_MINIO} ${SERVICE_PASSWORD_MINIO} &&
|
||||
mc mb -p local/penpot || true &&
|
||||
mc anonymous set private local/penpot
|
||||
"
|
||||
restart: "no"
|
||||
exclude_from_hc: true
|
||||
|
||||
postgres:
|
||||
image: postgres:15
|
||||
volumes:
|
||||
- penpot-postgresql-data:/var/lib/postgresql/data
|
||||
environment:
|
||||
- POSTGRES_INITDB_ARGS=--data-checksums
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- POSTGRES_DB=${POSTGRES_DB:-penpot}
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
|
||||
penpot-valkey:
|
||||
image: 'valkey/valkey:8.1'
|
||||
volumes:
|
||||
- 'penpot-valkey-data:/data'
|
||||
environment:
|
||||
- 'VALKEY_EXTRA_FLAGS=--maxmemory 128mb --maxmemory-policy volatile-lfu'
|
||||
healthcheck:
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- 'valkey-cli ping | grep PONG'
|
||||
interval: 1s
|
||||
timeout: 3s
|
||||
retries: 5
|
||||
start_period: 3s
|
||||
|
||||
mailpit:
|
||||
image: axllent/mailpit:v1.28 # Released on 26 Nov 2025
|
||||
environment:
|
||||
- SERVICE_URL_MAILPIT_8025
|
||||
healthcheck:
|
||||
test: ['CMD', '/mailpit', 'readyz']
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
services:
|
||||
frontend:
|
||||
image: penpotapp/frontend:latest
|
||||
image: penpotapp/frontend:2.11.1 # Released on 13 Nov 2025
|
||||
volumes:
|
||||
- penpot-assets:/opt/data/assets
|
||||
depends_on:
|
||||
@@ -25,16 +25,16 @@ services:
|
||||
retries: 15
|
||||
|
||||
penpot-backend:
|
||||
image: penpotapp/backend:latest
|
||||
image: penpotapp/backend:2.11.1 # Released on 13 Nov 2025
|
||||
volumes:
|
||||
- penpot-assets:/opt/data/assets
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
penpot-valkey:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
- PENPOT_FLAGS=${PENPOT_BACKEND_FLAGS:-enable-login-with-password enable-smtp enable-prepl-server}
|
||||
- PENPOT_FLAGS=${PENPOT_BACKEND_FLAGS:-enable-login-with-password enable-smtp}
|
||||
- PENPOT_HTTP_SERVER_PORT=6060
|
||||
- PENPOT_SECRET_KEY=$SERVICE_REALBASE64_64_PENPOT
|
||||
- PENPOT_PUBLIC_URI=$SERVICE_URL_FRONTEND_8080
|
||||
@@ -43,9 +43,9 @@ services:
|
||||
- PENPOT_DATABASE_URI=postgresql://postgres/${POSTGRES_DB:-penpot}
|
||||
- PENPOT_DATABASE_USERNAME=${SERVICE_USER_POSTGRES}
|
||||
- PENPOT_DATABASE_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- PENPOT_REDIS_URI=redis://redis/0
|
||||
- PENPOT_ASSETS_STORAGE_BACKEND=assets-fs
|
||||
- PENPOT_STORAGE_ASSETS_FS_DIRECTORY=/opt/data/assets
|
||||
- 'PENPOT_REDIS_URI=redis://penpot-valkey/0'
|
||||
- PENPOT_OBJECTS_STORAGE_BACKEND=fs
|
||||
- PENPOT_OBJECTS_STORAGE_FS_DIRECTORY=/opt/data/assets
|
||||
- PENPOT_TELEMETRY_ENABLED=${PENPOT_TELEMETRY_ENABLED:-false}
|
||||
- PENPOT_SMTP_DEFAULT_FROM=${PENPOT_SMTP_DEFAULT_FROM:-no-reply@example.com}
|
||||
- PENPOT_SMTP_DEFAULT_REPLY_TO=${PENPOT_SMTP_DEFAULT_REPLY_TO:-no-reply@example.com}
|
||||
@@ -62,10 +62,10 @@ services:
|
||||
retries: 15
|
||||
|
||||
penpot-exporter:
|
||||
image: penpotapp/exporter:latest
|
||||
image: penpotapp/exporter:2.11.1 # Released on 13 Nov 2025
|
||||
environment:
|
||||
- PENPOT_PUBLIC_URI=$SERVICE_URL_FRONTEND_8080
|
||||
- PENPOT_REDIS_URI=redis://redis/0
|
||||
- 'PENPOT_REDIS_URI=redis://penpot-valkey/0'
|
||||
healthcheck:
|
||||
test: ['CMD', 'curl', '-f', 'http://127.0.0.1:6061/readyz']
|
||||
interval: 2s
|
||||
@@ -73,7 +73,7 @@ services:
|
||||
retries: 15
|
||||
|
||||
mailpit:
|
||||
image: axllent/mailpit:latest
|
||||
image: axllent/mailpit:v1.28 # Released on 26 Nov 2025
|
||||
environment:
|
||||
- SERVICE_URL_MAILPIT_8025
|
||||
healthcheck:
|
||||
@@ -96,14 +96,18 @@ services:
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
command: redis-server --appendonly yes
|
||||
|
||||
penpot-valkey:
|
||||
image: 'valkey/valkey:8.1'
|
||||
volumes:
|
||||
- penpot-redis-data:/data
|
||||
- 'penpot-valkey-data:/data'
|
||||
environment:
|
||||
- 'VALKEY_EXTRA_FLAGS=--maxmemory 128mb --maxmemory-policy volatile-lfu'
|
||||
healthcheck:
|
||||
test: ['CMD', 'redis-cli', 'ping']
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
test:
|
||||
- CMD-SHELL
|
||||
- 'valkey-cli ping | grep PONG'
|
||||
interval: 1s
|
||||
timeout: 3s
|
||||
retries: 5
|
||||
start_period: 3s
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
services:
|
||||
postiz:
|
||||
image: ghcr.io/gitroomhq/postiz-app:v1.60.1
|
||||
image: ghcr.io/gitroomhq/postiz-app:v2.10.1
|
||||
environment:
|
||||
- SERVICE_URL_POSTIZ_5000
|
||||
- MAIN_URL=${SERVICE_URL_POSTIZ}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
# ignore: true
|
||||
# documentation: https://docs.rustfs.com/installation/docker/
|
||||
# slogan: RustFS is a high-performance distributed storage system built with Rust, compatible with Amazon S3 APIs.
|
||||
# category: storage
|
||||
# tags: object, storage, server, s3, api, rust
|
||||
# logo: svgs/rustfs.png
|
||||
|
||||
services:
|
||||
rustfs:
|
||||
image: rustfs/rustfs:latest
|
||||
command: /data
|
||||
environment:
|
||||
- RUSTFS_SERVER_URL=$RUSTFS_SERVER_URL
|
||||
- RUSTFS_BROWSER_REDIRECT_URL=$RUSTFS_BROWSER_REDIRECT_URL
|
||||
- RUSTFS_ADDRESS=${RUSTFS_ADDRESS:-0.0.0.0:9000}
|
||||
- RUSTFS_CONSOLE_ADDRESS=${RUSTFS_CONSOLE_ADDRESS:-0.0.0.0:9001}
|
||||
- RUSTFS_CORS_ALLOWED_ORIGINS=${RUSTFS_CORS_ALLOWED_ORIGINS:-*}
|
||||
- RUSTFS_CONSOLE_CORS_ALLOWED_ORIGINS=${RUSTFS_CONSOLE_CORS_ALLOWED_ORIGINS:-*}
|
||||
- RUSTFS_ACCESS_KEY=$SERVICE_USER_RUSTFS
|
||||
- RUSTFS_SECRET_KEY=$SERVICE_PASSWORD_RUSTFS
|
||||
- RUSTFS_CONSOLE_ENABLE=${RUSTFS_CONSOLE_ENABLE:-true}
|
||||
- RUSTFS_SERVER_DOMAINS=${RUSTFS_SERVER_DOMAINS}
|
||||
- RUSTFS_EXTERNAL_ADDRESS=${RUSTFS_EXTERNAL_ADDRESS}
|
||||
volumes:
|
||||
- rustfs-data:/data
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD",
|
||||
"sh", "-c",
|
||||
"curl -f http://127.0.0.1:9000/health && curl -f http://127.0.0.1:9001/rustfs/console/health"
|
||||
]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
services:
|
||||
umami:
|
||||
image: ghcr.io/umami-software/umami:postgresql-latest
|
||||
image: ghcr.io/umami-software/umami:3.0.2
|
||||
environment:
|
||||
- SERVICE_URL_UMAMI_3000
|
||||
- DATABASE_URL=postgres://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgresql:5432/$POSTGRES_DB
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# documentation: https://docs.unsend.dev/get-started/self-hosting
|
||||
# slogan: Unsend is an open-source alternative to Resend, Sendgrid, Mailgun and Postmark etc.
|
||||
# documentation: https://docs.usesend.com/self-hosting/overview
|
||||
# slogan: Usesend is an open-source alternative to Resend, Sendgrid, Mailgun and Postmark etc.
|
||||
# category: messaging
|
||||
# tags: resend, mailer, marketing emails, transaction emails, self-hosting, postmark
|
||||
# logo: svgs/unsend.svg
|
||||
# logo: svgs/usesend.svg
|
||||
# port: 3000
|
||||
|
||||
services:
|
||||
@@ -11,19 +11,19 @@ services:
|
||||
environment:
|
||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||
- POSTGRES_DB=${SERVICE_DB_POSTGRES:-unsend}
|
||||
- POSTGRES_DB=${SERVICE_DB_POSTGRES:-usesend}
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
||||
interval: 5s
|
||||
timeout: 20s
|
||||
retries: 10
|
||||
volumes:
|
||||
- unsend-postgres-data:/var/lib/postgresql/data
|
||||
- usesend-postgres-data:/var/lib/postgresql/data
|
||||
|
||||
redis:
|
||||
image: redis:7
|
||||
volumes:
|
||||
- unsend-redis-data:/data
|
||||
- usesend-redis-data:/data
|
||||
command: ["redis-server", "--maxmemory-policy", "noeviction"]
|
||||
healthcheck:
|
||||
test:
|
||||
@@ -34,20 +34,20 @@ services:
|
||||
timeout: 10s
|
||||
retries: 20
|
||||
|
||||
unsend:
|
||||
image: unsend/unsend:latest
|
||||
usesend:
|
||||
image: usesend/usesend:latest
|
||||
expose:
|
||||
- 3000
|
||||
environment:
|
||||
- SERVICE_URL_UNSEND_3000
|
||||
- DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${SERVICE_DB_POSTGRES:-unsend}
|
||||
- NEXTAUTH_URL=${SERVICE_URL_UNSEND}
|
||||
- SERVICE_URL_USESEND_3000
|
||||
- DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${SERVICE_DB_POSTGRES:-usesend}
|
||||
- NEXTAUTH_URL=${SERVICE_URL_USESEND}
|
||||
- NEXTAUTH_SECRET=${SERVICE_BASE64_64_NEXTAUTHSECRET}
|
||||
- AWS_ACCESS_KEY=${AWS_ACCESS_KEY:?}
|
||||
- AWS_SECRET_KEY=${AWS_SECRET_KEY:?}
|
||||
- AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION:?}
|
||||
- GITHUB_ID=${GITHUB_ID}
|
||||
- GITHUB_SECRET=${GITHUB_SECRET}
|
||||
- GITHUB_ID=${GITHUB_ID:?}
|
||||
- GITHUB_SECRET=${GITHUB_SECRET:?}
|
||||
- REDIS_URL=redis://redis:6379
|
||||
- NEXT_PUBLIC_IS_CLOUD=${NEXT_PUBLIC_IS_CLOUD:-false}
|
||||
- API_RATE_LIMIT=${API_RATE_LIMIT:-1}
|
||||
@@ -58,7 +58,7 @@ services:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: [ "CMD-SHELL", "wget -qO- http://unsend:3000 || exit 1" ]
|
||||
test: ["CMD-SHELL", "wget -qO- http://usesend:3000 || exit 1"]
|
||||
interval: 5s
|
||||
retries: 10
|
||||
timeout: 2s
|
||||
Reference in New Issue
Block a user