mirror of
https://github.com/Dokploy/templates.git
synced 2026-06-15 20:25:24 +02:00
* feat: Add Fonoster template - open source Twilio alternative * fixed the build issue * fixed the service log issue
207 lines
8.0 KiB
YAML
207 lines
8.0 KiB
YAML
services:
|
|
dashboard:
|
|
image: fonoster/dashboard:0.15.15
|
|
restart: unless-stopped
|
|
ports:
|
|
- 3030
|
|
environment:
|
|
- SERVER_DASHBOARD_SESSION_SECRET=${SERVER_DASHBOARD_SESSION_SECRET}
|
|
|
|
apiserver:
|
|
image: fonoster/apiserver:0.15.15
|
|
restart: unless-stopped
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
environment:
|
|
- APISERVER_APP_URL=${APISERVER_APP_URL}
|
|
- APISERVER_ASTERISK_ARI_PROXY_URL=${APISERVER_ASTERISK_ARI_PROXY_URL}
|
|
- APISERVER_ASTERISK_ARI_SECRET=${APISERVER_ASTERISK_ARI_SECRET}
|
|
- APISERVER_ASTERISK_ARI_USERNAME=${APISERVER_ASTERISK_ARI_USERNAME}
|
|
- APISERVER_AUTHZ_SERVICE_ENABLED=${APISERVER_AUTHZ_SERVICE_ENABLED}
|
|
- APISERVER_AUTHZ_SERVICE_HOST=${APISERVER_AUTHZ_SERVICE_HOST}
|
|
- APISERVER_AUTHZ_SERVICE_METHODS=${APISERVER_AUTHZ_SERVICE_METHODS}
|
|
- APISERVER_AUTHZ_SERVICE_PORT=${APISERVER_AUTHZ_SERVICE_PORT}
|
|
- APISERVER_CLOAK_ENCRYPTION_KEY=${APISERVER_CLOAK_ENCRYPTION_KEY}
|
|
- APISERVER_DATABASE_URL=${APISERVER_DATABASE_URL}
|
|
- APISERVER_IDENTITY_DATABASE_URL=${APISERVER_IDENTITY_DATABASE_URL}
|
|
- APISERVER_IDENTITY_ISSUER=${APISERVER_IDENTITY_ISSUER}
|
|
- APISERVER_IDENTITY_CONTACT_VERIFICATION_REQUIRED=${APISERVER_IDENTITY_CONTACT_VERIFICATION_REQUIRED}
|
|
- APISERVER_IDENTITY_TWO_FACTOR_AUTHENTICATION_REQUIRED=${APISERVER_IDENTITY_TWO_FACTOR_AUTHENTICATION_REQUIRED}
|
|
- APISERVER_IDENTITY_WORKSPACE_INVITE_EXPIRATION=${APISERVER_IDENTITY_WORKSPACE_INVITE_EXPIRATION}
|
|
- APISERVER_IDENTITY_WORKSPACE_INVITE_FAIL_URL=${APISERVER_IDENTITY_WORKSPACE_INVITE_FAIL_URL}
|
|
- APISERVER_IDENTITY_WORKSPACE_INVITE_URL=${APISERVER_IDENTITY_WORKSPACE_INVITE_URL}
|
|
- APISERVER_IDENTITY_OAUTH2_GITHUB_CLIENT_ID=${APISERVER_IDENTITY_OAUTH2_GITHUB_CLIENT_ID}
|
|
- APISERVER_IDENTITY_OAUTH2_GITHUB_CLIENT_SECRET=${APISERVER_IDENTITY_OAUTH2_GITHUB_CLIENT_SECRET}
|
|
- APISERVER_IDENTITY_OAUTH2_GITHUB_ENABLED=${APISERVER_IDENTITY_OAUTH2_GITHUB_ENABLED}
|
|
- APISERVER_INFLUXDB_INIT_ORG=${APISERVER_INFLUXDB_INIT_ORG}
|
|
- APISERVER_INFLUXDB_INIT_PASSWORD=${APISERVER_INFLUXDB_INIT_PASSWORD}
|
|
- APISERVER_INFLUXDB_INIT_TOKEN=${APISERVER_INFLUXDB_INIT_TOKEN}
|
|
- APISERVER_INFLUXDB_INIT_USERNAME=${APISERVER_INFLUXDB_INIT_USERNAME}
|
|
- APISERVER_INFLUXDB_URL=${APISERVER_INFLUXDB_URL}
|
|
- APISERVER_LOGS_FORMAT=${APISERVER_LOGS_FORMAT}
|
|
- APISERVER_LOGS_LEVEL=${APISERVER_LOGS_LEVEL}
|
|
- APISERVER_LOGS_TRANSPORT=${APISERVER_LOGS_TRANSPORT}
|
|
- APISERVER_NATS_URL=${APISERVER_NATS_URL}
|
|
- APISERVER_OWNER_EMAIL=${APISERVER_OWNER_EMAIL}
|
|
- APISERVER_OWNER_NAME=${APISERVER_OWNER_NAME}
|
|
- APISERVER_OWNER_PASSWORD=${APISERVER_OWNER_PASSWORD}
|
|
- APISERVER_ROOT_DOMAIN=${APISERVER_ROOT_DOMAIN}
|
|
- APISERVER_SMTP_AUTH_PASS=${APISERVER_SMTP_AUTH_PASS}
|
|
- APISERVER_SMTP_AUTH_USER=${APISERVER_SMTP_AUTH_USER}
|
|
- APISERVER_SMTP_HOST=${APISERVER_SMTP_HOST}
|
|
- APISERVER_SMTP_PORT=${APISERVER_SMTP_PORT}
|
|
- APISERVER_SMTP_SECURE=${APISERVER_SMTP_SECURE}
|
|
- APISERVER_SMTP_SENDER=${APISERVER_SMTP_SENDER}
|
|
- APISERVER_SIGNALING_SERVER=${APISERVER_SIGNALING_SERVER}
|
|
- APISERVER_TWILIO_ACCOUNT_SID=${APISERVER_TWILIO_ACCOUNT_SID}
|
|
- APISERVER_TWILIO_AUTH_TOKEN=${APISERVER_TWILIO_AUTH_TOKEN}
|
|
- APISERVER_TWILIO_PHONE_NUMBER=${APISERVER_TWILIO_PHONE_NUMBER}
|
|
expose:
|
|
- 50051
|
|
volumes:
|
|
- ../files/config/keys:/opt/fonoster/keys:ro
|
|
- ../files/config/integrations.json:/opt/fonoster/integrations.json:ro
|
|
|
|
autopilot:
|
|
image: fonoster/autopilot:0.15.15
|
|
restart: unless-stopped
|
|
expose:
|
|
- 50061
|
|
environment:
|
|
- AUTOPILOT_AWS_S3_ACCESS_KEY_ID=${AUTOPILOT_AWS_S3_ACCESS_KEY_ID}
|
|
- AUTOPILOT_AWS_S3_ENDPOINT=${AUTOPILOT_AWS_S3_ENDPOINT}
|
|
- AUTOPILOT_AWS_S3_REGION=${AUTOPILOT_AWS_S3_REGION}
|
|
- AUTOPILOT_AWS_S3_SECRET_ACCESS_KEY=${AUTOPILOT_AWS_S3_SECRET_ACCESS_KEY}
|
|
- AUTOPILOT_CONVERSATION_PROVIDER=${AUTOPILOT_CONVERSATION_PROVIDER}
|
|
- AUTOPILOT_KNOWLEDGE_BASE_ENABLED=${AUTOPILOT_KNOWLEDGE_BASE_ENABLED}
|
|
- AUTOPILOT_LOGS_FORMAT=${AUTOPILOT_LOGS_FORMAT}
|
|
- AUTOPILOT_LOGS_LEVEL=${AUTOPILOT_LOGS_LEVEL}
|
|
- AUTOPILOT_LOGS_TRANSPORT=${AUTOPILOT_LOGS_TRANSPORT}
|
|
- AUTOPILOT_OPENAI_API_KEY=${AUTOPILOT_OPENAI_API_KEY}
|
|
- AUTOPILOT_UNSTRUCTURED_API_KEY=${AUTOPILOT_UNSTRUCTURED_API_KEY}
|
|
- AUTOPILOT_UNSTRUCTURED_API_URL=${AUTOPILOT_UNSTRUCTURED_API_URL}
|
|
volumes:
|
|
- ../files/config/integrations.json:/opt/fonoster/integrations.json:ro
|
|
|
|
routr:
|
|
image: fonoster/routr-one:2.13.13
|
|
restart: unless-stopped
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
environment:
|
|
DATABASE_URL: ${ROUTR_DATABASE_URL}
|
|
EXTERNAL_ADDRS: ${ROUTR_EXTERNAL_ADDRS}
|
|
LOGS_FORMAT: ${ROUTR_LOGS_FORMAT}
|
|
LOGS_LEVEL: ${ROUTR_LOGS_LEVEL}
|
|
LOGS_TRANSPORT: ${ROUTR_LOGS_TRANSPORT}
|
|
NATS_PUBLISHER_ENABLED: "true"
|
|
NATS_PUBLISHER_URL: ${ROUTR_NATS_PUBLISHER_URL}
|
|
RTPENGINE_HOST: ${ROUTR_RTPENGINE_HOST}
|
|
START_INTERNAL_DB: "false"
|
|
CONNECT_VERIFIER_PUBLIC_KEY_PATH: /etc/routr/keys/public.pem
|
|
expose:
|
|
- 51907
|
|
- 51908
|
|
ports:
|
|
- 5060:5060/udp
|
|
- 5060-5063:5060-5063
|
|
volumes:
|
|
- ../files/config/keys/public.pem:/etc/routr/keys/public.pem
|
|
|
|
# RTPEngine uses a range of ports to handle RTP traffic. Because exposing a large range of ports
|
|
# is not possible in Docker, we need to use network_mode: host.
|
|
#
|
|
# Unfortunately, network_mode: host is not supported for Windows or Mac.
|
|
# In those cases, we need to use a different approach.
|
|
#
|
|
# By default we are opening a small range of ports (10000-10100) to handle RTP traffic.
|
|
# However, this is not enough for production environments.
|
|
#
|
|
# We recommend that when using Linux you use network_mode: host and remove the ports section.
|
|
rtpengine:
|
|
image: fonoster/rtpengine:0.3.17
|
|
restart: unless-stopped
|
|
platform: linux/x86_64
|
|
ports:
|
|
- 10000-10100:10000-10100/udp
|
|
- 8080:8080
|
|
environment:
|
|
PORT_MAX: ${RTPENGINE_PORT_MAX}
|
|
PORT_MIN: ${RTPENGINE_PORT_MIN}
|
|
PUBLIC_IP: ${RTPENGINE_PUBLIC_IP}
|
|
|
|
asterisk:
|
|
image: fonoster/asterisk:20
|
|
restart: unless-stopped
|
|
environment:
|
|
ARI_PROXY_URL: ${ASTERISK_ARI_PROXY_URL}
|
|
ARI_SECRET: ${ASTERISK_ARI_SECRET}
|
|
ARI_USERNAME: ${ASTERISK_ARI_USERNAME}
|
|
CODECS: ${ASTERISK_CODECS}
|
|
DTMF_MODE: ${ASTERISK_DTMF_MODE}
|
|
RTP_PORT_END: ${ASTERISK_RTP_PORT_END}
|
|
RTP_PORT_START: ${ASTERISK_RTP_PORT_START}
|
|
SIPPROXY_HOST: ${ASTERISK_SIPPROXY_HOST}
|
|
SIPPROXY_PORT: ${ASTERISK_SIPPROXY_PORT}
|
|
SIPPROXY_SECRET: ${ASTERISK_SIPPROXY_SECRET}
|
|
SIPPROXY_USERNAME: ${ASTERISK_SIPPROXY_USERNAME}
|
|
expose:
|
|
- 6060
|
|
|
|
postgres:
|
|
image: postgres:16.10-alpine3.22
|
|
restart: unless-stopped
|
|
environment:
|
|
PGTZ: UTC
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
|
POSTGRES_USER: ${POSTGRES_USER}
|
|
POSTGRES_DB: ${POSTGRES_DB}
|
|
TZ: UTC
|
|
expose:
|
|
- 5432
|
|
volumes:
|
|
- db:/var/lib/postgresql/data
|
|
- ../files/config/init-db.sh:/docker-entrypoint-initdb.d/init-db.sh:ro
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
|
|
influxdb:
|
|
image: influxdb:2.7
|
|
restart: unless-stopped
|
|
expose:
|
|
- 8086
|
|
environment:
|
|
DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: ${INFLUXDB_INIT_TOKEN}
|
|
DOCKER_INFLUXDB_INIT_BUCKET: calls
|
|
DOCKER_INFLUXDB_INIT_MODE: setup
|
|
DOCKER_INFLUXDB_INIT_ORG: ${INFLUXDB_INIT_ORG}
|
|
DOCKER_INFLUXDB_INIT_PASSWORD: ${INFLUXDB_INIT_PASSWORD}
|
|
DOCKER_INFLUXDB_INIT_USERNAME: ${INFLUXDB_INIT_USERNAME}
|
|
volumes:
|
|
- influxdb:/var/lib/influxdb2
|
|
|
|
nats:
|
|
image: nats:2.11.8
|
|
restart: unless-stopped
|
|
expose:
|
|
- 4222
|
|
|
|
envoy:
|
|
image: envoyproxy/envoy:v1.35.0
|
|
restart: unless-stopped
|
|
command: ["/usr/local/bin/envoy", "-c", "/etc/envoy/envoy.yaml"]
|
|
volumes:
|
|
- ../files/config:/etc/envoy:ro
|
|
ports:
|
|
- 8449:8449
|
|
|
|
volumes:
|
|
db:
|
|
influxdb:
|
|
|