mirror of
https://github.com/opengram-server/opengram.git
synced 2026-07-22 05:30:17 +03:00
Initial commit
This commit is contained in:
@@ -0,0 +1,653 @@
|
||||
version: "3.9"
|
||||
|
||||
networks:
|
||||
tg-net:
|
||||
driver: bridge
|
||||
|
||||
services:
|
||||
### Redis
|
||||
redis:
|
||||
image: redis:alpine
|
||||
restart: always
|
||||
networks:
|
||||
- tg-net
|
||||
#ports:
|
||||
#- "6379:6379"
|
||||
volumes:
|
||||
- ./data/redis:/data
|
||||
|
||||
### RabbitMq
|
||||
rabbitmq:
|
||||
image: rabbitmq:3-management-alpine
|
||||
restart: always
|
||||
networks:
|
||||
- tg-net
|
||||
#ports:
|
||||
# - "5672:5672"
|
||||
# - "15672:15672"
|
||||
volumes:
|
||||
- ./data/rabbitmq:/var/lib/rabbitmq
|
||||
environment:
|
||||
# RABBITMQ_DEFAULT_USER: ${RabbitMQ__Connections__Default__UserName}
|
||||
# RABBITMQ_DEFAULT_PASS: ${RabbitMQ__Connections__Default__Password}
|
||||
RABBITMQ_DEFAULT_USER: test
|
||||
RABBITMQ_DEFAULT_PASS: test
|
||||
|
||||
### MongoDb
|
||||
mongodb:
|
||||
image: mongo:latest
|
||||
restart: always
|
||||
networks:
|
||||
- tg-net
|
||||
ports:
|
||||
- "27017:27017"
|
||||
volumes:
|
||||
- ./data/mongo/:/data
|
||||
#- ./data/mongo/db:/data/db
|
||||
#- ./data/mongo/configdb:/data/configdb
|
||||
#environment:
|
||||
# MONGO_INITDB_ROOT_USERNAME: admin
|
||||
# MONGO_INITDB_ROOT_PASSWORD: admin
|
||||
|
||||
### Minio
|
||||
minio:
|
||||
image: minio/minio:latest
|
||||
restart: always
|
||||
networks:
|
||||
- tg-net
|
||||
ports:
|
||||
- "9000:9000"
|
||||
- "9001:9001"
|
||||
environment:
|
||||
MINIO_ROOT_USER: ${Minio__AccessKey}
|
||||
MINIO_ROOT_PASSWORD: ${Minio__SecretKey}
|
||||
volumes:
|
||||
- ./data/minio:/data
|
||||
#- /docker/minio/config:/root/./minio/
|
||||
command: server /data --console-address ":9001"
|
||||
#privileged: true
|
||||
|
||||
################### MyTelegram server
|
||||
|
||||
### Data seeder
|
||||
data-seeder:
|
||||
build:
|
||||
context: ../../source
|
||||
dockerfile: src/MyTelegram.DataSeeder/Dockerfile
|
||||
restart: always
|
||||
networks:
|
||||
- tg-net
|
||||
environment:
|
||||
Serilog__MinimumLevel__Default: ${Serilog__MinimumLevel__Default}
|
||||
ConnectionStrings__Default: ${ConnectionStrings__Default}
|
||||
App__DatabaseName: tg
|
||||
App__ReadModelDatabaseName: tg
|
||||
App__CreateTestUsers: ${App__CreateTestUsers}
|
||||
# App__LoadAllStickersIntoMemory: ${App__LoadAllStickersIntoMemory}
|
||||
RabbitMQ__Connections__Default__HostName: ${RabbitMQ__Connections__Default__HostName}
|
||||
RabbitMQ__Connections__Default__Port: ${RabbitMQ__Connections__Default__Port}
|
||||
RabbitMQ__Connections__Default__UserName: ${RabbitMQ__Connections__Default__UserName}
|
||||
RabbitMQ__Connections__Default__Password: ${RabbitMQ__Connections__Default__Password}
|
||||
# RabbitMQ__EventBus__ClientName: ${RabbitMQ__EventBus__ClientName}
|
||||
# RabbitMQ__EventBus__ExchangeName: ${RabbitMQ__EventBus__ExchangeName}
|
||||
volumes:
|
||||
- ./data/mytelegram/data-seeder/logs:/app/Logs
|
||||
depends_on:
|
||||
- mongodb
|
||||
|
||||
### Admin API
|
||||
admin-api:
|
||||
build:
|
||||
context: ../../source
|
||||
dockerfile: src/MyTelegram.Admin.Api/Dockerfile
|
||||
restart: always
|
||||
networks:
|
||||
- tg-net
|
||||
ports:
|
||||
- "5555:5000"
|
||||
environment:
|
||||
ASPNETCORE_URLS: http://+:5000
|
||||
Serilog__MinimumLevel__Default: ${Serilog__MinimumLevel__Default}
|
||||
ConnectionStrings__Default: ${ConnectionStrings__Default}
|
||||
App__DatabaseName: tg
|
||||
App__ReadModelDatabaseName: tg
|
||||
RabbitMQ__Connections__Default__HostName: ${RabbitMQ__Connections__Default__HostName}
|
||||
RabbitMQ__Connections__Default__Port: ${RabbitMQ__Connections__Default__Port}
|
||||
RabbitMQ__Connections__Default__UserName: ${RabbitMQ__Connections__Default__UserName}
|
||||
RabbitMQ__Connections__Default__Password: ${RabbitMQ__Connections__Default__Password}
|
||||
ADMIN_API_KEY: ${ADMIN_API_KEY}
|
||||
volumes:
|
||||
- ./data/mytelegram/admin-api/logs:/app/Logs
|
||||
depends_on:
|
||||
- mongodb
|
||||
- rabbitmq
|
||||
|
||||
### 1.Gateway server
|
||||
gateway-server:
|
||||
build:
|
||||
context: ../../source
|
||||
dockerfile: src/MyTelegram.GatewayServer/Dockerfile
|
||||
args:
|
||||
BUILD_CONFIGURATION: ${BUILD_CONFIGURATION}
|
||||
restart: always
|
||||
networks:
|
||||
- tg-net
|
||||
ports:
|
||||
- "${App__Servers__0__Port}:${App__Servers__0__Port}"
|
||||
- "${App__Servers__1__Port}:${App__Servers__1__Port}"
|
||||
- "${App__Servers__2__Port}:${App__Servers__2__Port}"
|
||||
- "${App__Servers__3__Port}:${App__Servers__3__Port}"
|
||||
- "${App__Servers__4__Port}:${App__Servers__4__Port}"
|
||||
- "${App__Servers__5__Port}:${App__Servers__5__Port}"
|
||||
volumes:
|
||||
- ./data/mytelegram/gateway/logs:/app/Logs
|
||||
- ./secrets/mtproto:/app/secrets/mtproto:ro
|
||||
environment:
|
||||
Serilog__MinimumLevel__Default: ${Serilog__MinimumLevel__Default}
|
||||
App__ThisDcId: ${App__ThisDcId}
|
||||
App__MediaDcId: ${App__MediaDcId}
|
||||
# App__MediaOnly: ${App__MediaOnly}
|
||||
# App__Servers__0__Enabled: ${App__Servers__0__Enabled}
|
||||
# App__Servers__0__ServerType: ${App__Servers__0__ServerType}
|
||||
# App__Servers__0__Ip: ${App__Servers__0__Ip}
|
||||
# App__Servers__0__Ipv6: ${App__Servers__0__Ipv6}
|
||||
App__Servers__0__Port: ${App__Servers__0__Port}
|
||||
# App__Servers__0__Ssl: ${App__Servers__0__Ssl}
|
||||
# App__Servers__0__CertPemFilePath: ${App__Servers__0__CertPemFilePath}
|
||||
# App__Servers__0__KeyPemFilePath: ${App__Servers__0__KeyPemFilePath}
|
||||
# App__Servers__0__EnableProxyProtocolV2: ${App__Servers__0__EnableProxyProtocolV2}
|
||||
# App__Servers__0__MediaOnly: ${App__Servers__0__MediaOnly}
|
||||
App__Servers__1__Enabled: ${App__Servers__1__Enabled}
|
||||
# App__Servers__1__ServerType: ${App__Servers__1__ServerType}
|
||||
# App__Servers__1__Ip: ${App__Servers__1__Ip}
|
||||
# App__Servers__1__Ipv6: ${App__Servers__1__Ipv6}
|
||||
App__Servers__1__Port: ${App__Servers__1__Port}
|
||||
# App__Servers__1__Ssl: ${App__Servers__1__Ssl}
|
||||
# App__Servers__1__CertPemFilePath: ${App__Servers__1__CertPemFilePath}
|
||||
# App__Servers__1__KeyPemFilePath: ${App__Servers__1__KeyPemFilePath}
|
||||
# App__Servers__1__EnableProxyProtocolV2: ${App__Servers__1__EnableProxyProtocolV2}
|
||||
# App__Servers__1__MediaOnly: ${App__Servers__1__MediaOnly}
|
||||
App__Servers__2__Enabled: ${App__Servers__2__Enabled}
|
||||
# App__Servers__2__ServerType: ${App__Servers__2__ServerType}
|
||||
# App__Servers__2__Ip: ${App__Servers__2__Ip}
|
||||
# App__Servers__2__Ipv6: ${App__Servers__2__Ipv6}
|
||||
App__Servers__2__Port: ${App__Servers__2__Port}
|
||||
# App__Servers__2__Ssl: ${App__Servers__2__Ssl}
|
||||
# App__Servers__2__CertPemFilePath: ${App__Servers__2__CertPemFilePath}
|
||||
# App__Servers__2__KeyPemFilePath: ${App__Servers__2__KeyPemFilePath}
|
||||
# App__Servers__2__EnableProxyProtocolV2: ${App__Servers__2__EnableProxyProtocolV2}
|
||||
# App__Servers__2__MediaOnly: ${App__Servers__2__MediaOnly}
|
||||
App__Servers__3__Enabled: ${App__Servers__3__Enabled}
|
||||
# App__Servers__3__ServerType: ${App__Servers__3__ServerType}
|
||||
# App__Servers__3__Ip: ${App__Servers__3__Ip}
|
||||
# App__Servers__3__Ipv6: ${App__Servers__3__Ipv6}
|
||||
App__Servers__3__Port: ${App__Servers__3__Port}
|
||||
# App__Servers__3__Ssl: ${App__Servers__3__Ssl}
|
||||
# App__Servers__3__CertPemFilePath: ${App__Servers__3__CertPemFilePath}
|
||||
# App__Servers__3__KeyPemFilePath: ${App__Servers__3__KeyPemFilePath}
|
||||
# App__Servers__3__EnableProxyProtocolV2: ${App__Servers__3__EnableProxyProtocolV2}
|
||||
# App__Servers__3__MediaOnly: ${App__Servers__3__MediaOnly}
|
||||
# App__Servers__4__Enabled: ${App__Servers__4__Enabled}
|
||||
# App__Servers__4__ServerType: ${App__Servers__4__ServerType}
|
||||
# App__Servers__4__Ip: ${App__Servers__4__Ip}
|
||||
# App__Servers__4__Ipv6: ${App__Servers__4__Ipv6}
|
||||
App__Servers__4__Port: ${App__Servers__4__Port}
|
||||
# App__Servers__4__Ssl: ${App__Servers__4__Ssl}
|
||||
# App__Servers__4__CertPemFilePath: ${App__Servers__4__CertPemFilePath}
|
||||
# App__Servers__4__KeyPemFilePath: ${App__Servers__4__KeyPemFilePath}
|
||||
# App__Servers__4__EnableProxyProtocolV2: ${App__Servers__4__EnableProxyProtocolV2}
|
||||
# App__Servers__4__MediaOnly: ${App__Servers__4__MediaOnly}
|
||||
# App__Servers__5__Enabled: ${App__Servers__5__Enabled}
|
||||
# App__Servers__5__ServerType: ${App__Servers__5__ServerType}
|
||||
# App__Servers__5__Ip: ${App__Servers__5__Ip}
|
||||
# App__Servers__5__Ipv6: ${App__Servers__5__Ipv6}
|
||||
App__Servers__5__Port: ${App__Servers__5__Port}
|
||||
# App__Servers__5__Ssl: ${App__Servers__5__Ssl}
|
||||
# App__Servers__5__CertPemFilePath: ${App__Servers__5__CertPemFilePath}
|
||||
# App__Servers__5__KeyPemFilePath: ${App__Servers__5__KeyPemFilePath}
|
||||
# App__Servers__5__EnableProxyProtocolV2: ${App__Servers__5__EnableProxyProtocolV2}
|
||||
# App__Servers__5__MediaOnly: ${App__Servers__5__MediaOnly}
|
||||
RabbitMQ__Connections__Default__HostName: ${RabbitMQ__Connections__Default__HostName}
|
||||
RabbitMQ__Connections__Default__Port: ${RabbitMQ__Connections__Default__Port}
|
||||
RabbitMQ__Connections__Default__UserName: ${RabbitMQ__Connections__Default__UserName}
|
||||
RabbitMQ__Connections__Default__Password: ${RabbitMQ__Connections__Default__Password}
|
||||
# RabbitMQ__EventBus__ClientName: ${RabbitMQ__EventBus__ClientName}
|
||||
RabbitMQ__EventBus__ExchangeName: ${RabbitMQ__EventBus__ExchangeName}
|
||||
depends_on:
|
||||
- rabbitmq
|
||||
- mongodb
|
||||
- redis
|
||||
|
||||
# ### 2.Seq server
|
||||
# seq-server:
|
||||
# image: mytelegram/mytelegram-seq-server:${MyTelegramVersion}
|
||||
# restart: always
|
||||
# networks:
|
||||
# - tg-net
|
||||
# #ports:
|
||||
# # - "10001:80"
|
||||
# environment:
|
||||
# ConnectionStrings__Default: ${DefaultConnectionStrings}
|
||||
# Serilog__MinimumLevel__Default: ${DefaultLogLevel}
|
||||
# volumes:
|
||||
# - ./data/mytelegram/seq/logs:/data/Logs
|
||||
# depends_on:
|
||||
# - mongodb
|
||||
|
||||
### 2.Auth server
|
||||
auth-server:
|
||||
build:
|
||||
context: ../../source
|
||||
dockerfile: src/MyTelegram.AuthServer/Dockerfile
|
||||
args:
|
||||
BUILD_CONFIGURATION: ${BUILD_CONFIGURATION}
|
||||
restart: always
|
||||
networks:
|
||||
- tg-net
|
||||
environment:
|
||||
Serilog__MinimumLevel__Default: ${Serilog__MinimumLevel__Default}
|
||||
App__PrivateKeyFilePath: /app/secrets/mtproto/rsa_private.pem
|
||||
RabbitMQ__Connections__Default__HostName: ${RabbitMQ__Connections__Default__HostName}
|
||||
RabbitMQ__Connections__Default__Port: ${RabbitMQ__Connections__Default__Port}
|
||||
RabbitMQ__Connections__Default__UserName: ${RabbitMQ__Connections__Default__UserName}
|
||||
RabbitMQ__Connections__Default__Password: ${RabbitMQ__Connections__Default__Password}
|
||||
# RabbitMQ__EventBus__ClientName: ${RabbitMQ__EventBus__ClientName}
|
||||
RabbitMQ__EventBus__ExchangeName: ${RabbitMQ__EventBus__ExchangeName}
|
||||
Redis__Configuration: ${Redis__Configuration}
|
||||
volumes:
|
||||
- ./data/mytelegram/auth/logs:/app/Logs
|
||||
- ./secrets/mtproto:/app/secrets/mtproto:ro
|
||||
depends_on:
|
||||
- mongodb
|
||||
- rabbitmq
|
||||
- redis
|
||||
|
||||
### 3.Session server
|
||||
session-server:
|
||||
image: ${MyTelegramRegistry}/mytelegram-session-server:${MyTelegramVersion}
|
||||
restart: always
|
||||
networks:
|
||||
- tg-net
|
||||
environment:
|
||||
Serilog__MinimumLevel__Default: ${Serilog__MinimumLevel__Default}
|
||||
ConnectionStrings__Default: ${ConnectionStrings__Default}
|
||||
# App__ThisDcId: ${App__ThisDcId}
|
||||
# App__MediaOnly: ${App__MediaOnly}
|
||||
App__DatabaseName: tg
|
||||
App__ReadModelDatabaseName: tg
|
||||
App__AccessHashSecretKey: ${App__AccessHashSecretKey}
|
||||
# App__IdGeneratorGrpcServiceUrl: ${App__IdGeneratorGrpcServiceUrl}
|
||||
App__MessengerServerGrpcServiceUrl: ${App__MessengerServerGrpcServiceUrl}
|
||||
# App__DispatchUnknownObjectToMessengerServer: ${App__DispatchUnknownObjectToMessengerServer}
|
||||
# App__TempAuthKeyExpirationMinutes: ${App__TempAuthKeyExpirationMinutes}
|
||||
# App__CommandServerObjectIds: ${App__CommandServerObjectIds}
|
||||
RabbitMQ__Connections__Default__HostName: ${RabbitMQ__Connections__Default__HostName}
|
||||
RabbitMQ__Connections__Default__Port: ${RabbitMQ__Connections__Default__Port}
|
||||
RabbitMQ__Connections__Default__UserName: ${RabbitMQ__Connections__Default__UserName}
|
||||
RabbitMQ__Connections__Default__Password: ${RabbitMQ__Connections__Default__Password}
|
||||
# RabbitMQ__EventBus__ClientName: ${RabbitMQ__EventBus__ClientName}
|
||||
# RabbitMQ__EventBus__ExchangeName: ${RabbitMQ__EventBus__ExchangeName}
|
||||
Redis__Configuration: ${Redis__Configuration}
|
||||
volumes:
|
||||
- ./data/mytelegram/session/logs:/app/Logs
|
||||
depends_on:
|
||||
- mongodb
|
||||
- rabbitmq
|
||||
- redis
|
||||
|
||||
# ### 5.Messenger grpc server
|
||||
# messenger-grpc-service:
|
||||
# image: mytelegram/mytelegram-messenger-grpc-service:${MyTelegramVersion}
|
||||
# restart: always
|
||||
# networks:
|
||||
# - tg-net
|
||||
# environment:
|
||||
# Serilog__MinimumLevel__Default: ${Serilog__MinimumLevel__Default}
|
||||
# ConnectionStrings__Default: ${ConnectionStrings__Default}
|
||||
# App__DatabaseName: tg
|
||||
# App__ReadModelDatabaseName: tg
|
||||
# volumes:
|
||||
# - ./data/mytelegram/messenger-grpc-service/logs:/app/Logs
|
||||
# depends_on:
|
||||
# - mongodb
|
||||
|
||||
### 4.File server (original - for Telegram)
|
||||
file-server:
|
||||
image: ${MyTelegramRegistry}/mytelegram-file-server:${MyTelegramVersion}
|
||||
restart: always
|
||||
user: "0:0" # Run as root to avoid permission issues
|
||||
networks:
|
||||
- tg-net
|
||||
volumes:
|
||||
- ./data/mytelegram/file/uploads:/app/uploads
|
||||
- ./data/mytelegram/file:/app/Logs
|
||||
environment:
|
||||
Serilog__MinimumLevel__Default: ${Serilog__MinimumLevel__Default}
|
||||
ConnectionStrings__Default: ${ConnectionStrings__Default}
|
||||
App__DatabaseName: tg
|
||||
App__ReadModelDatabaseName: tg
|
||||
App__AccessHashSecretKey: ${App__AccessHashSecretKey}
|
||||
Minio__Endpoint: ${Minio__Endpoint}
|
||||
Minio__AccessKey: ${Minio__AccessKey}
|
||||
Minio__SecretKey: ${Minio__SecretKey}
|
||||
RabbitMQ__Connections__Default__HostName: ${RabbitMQ__Connections__Default__HostName}
|
||||
RabbitMQ__Connections__Default__Port: ${RabbitMQ__Connections__Default__Port}
|
||||
RabbitMQ__Connections__Default__UserName: ${RabbitMQ__Connections__Default__UserName}
|
||||
RabbitMQ__Connections__Default__Password: ${RabbitMQ__Connections__Default__Password}
|
||||
Redis__Configuration: ${Redis__Configuration}
|
||||
depends_on:
|
||||
- mongodb
|
||||
- rabbitmq
|
||||
|
||||
### 4.5 File merge proxy (HTTP API for merging file parts from local filesystem)
|
||||
file-merge-proxy:
|
||||
build:
|
||||
context: ../../file-merge-proxy
|
||||
dockerfile: Dockerfile
|
||||
restart: always
|
||||
networks:
|
||||
- tg-net
|
||||
volumes:
|
||||
- ./data/mytelegram/file/uploads:/app/uploads
|
||||
environment:
|
||||
PORT: 5000
|
||||
UPLOAD_PATH: /app/uploads
|
||||
ports:
|
||||
- "5000:5000"
|
||||
|
||||
### 5.Messenger command server
|
||||
messenger-command-server:
|
||||
build:
|
||||
context: ../../source
|
||||
dockerfile: src/MyTelegram.Messenger.CommandServer/Dockerfile
|
||||
restart: always
|
||||
networks:
|
||||
- tg-net
|
||||
extra_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
environment:
|
||||
Serilog__MinimumLevel__Default: ${Serilog__MinimumLevel__Default}
|
||||
ConnectionStrings__Default: ${ConnectionStrings__Default}
|
||||
App__DatabaseName: tg
|
||||
App__ReadModelDatabaseName: tg
|
||||
App__AccessHashSecretKey: ${App__AccessHashSecretKey}
|
||||
App__FileServerGrpcServiceUrl: ${App__FileServerGrpcServiceUrl}
|
||||
App__FixedVerifyCode: ${App__FixedVerifyCode}
|
||||
App__VerificationCodeLength: ${App__VerificationCodeLength}
|
||||
App__VerificationCodeExpirationSeconds: ${App__VerificationCodeExpirationSeconds}
|
||||
App__CheckPhoneNumberFormat: ${App__CheckPhoneNumberFormat}
|
||||
App__EnableSearchNonContacts: ${App__EnableSearchNonContacts}
|
||||
# App__JoinChatDomain: ${App__JoinChatDomain}
|
||||
# App__ChannelGetDifferenceIntervalSeconds: ${App__ChannelGetDifferenceIntervalSeconds}
|
||||
# App__UseInMemoryFilters: ${App__UseInMemoryFilters}
|
||||
# App__IsMediaDc: ${App__IsMediaDc}
|
||||
# App__AutoCreateSuperGroup: ${App__AutoCreateSuperGroup}
|
||||
# App__EnableFutureAuthToken: ${App__EnableFutureAuthToken}
|
||||
# App__SetPremiumToTrueAfterUserCreated: ${App__SetPremiumToTrueAfterUserCreated}
|
||||
# App__SendWelcomeMessageAfterUserSignIn: ${App__SendWelcomeMessageAfterUserSignIn}
|
||||
App__WebRtcConnections__0__Ip: ${App__WebRtcConnections__0__Ip}
|
||||
App__WebRtcConnections__0__Ipv6: ${App__WebRtcConnections__0__Ipv6}
|
||||
App__WebRtcConnections__0__Port: ${App__WebRtcConnections__0__Port}
|
||||
App__WebRtcConnections__0__Turn: ${App__WebRtcConnections__0__Turn}
|
||||
App__WebRtcConnections__0__Stun: ${App__WebRtcConnections__0__Stun}
|
||||
App__WebRtcConnections__0__UserName: ${App__WebRtcConnections__0__UserName}
|
||||
App__WebRtcConnections__0__Password: ${App__WebRtcConnections__0__Password}
|
||||
# App__ThisDcId: ${App__ThisDcId}
|
||||
# App__DcOptions__0__Enabled: ${App__DcOptions__0__Enabled}
|
||||
# App__DcOptions__0__Id: ${App__DcOptions__0__Id}
|
||||
App__DcOptions__0__IpAddress: ${App__DcOptions__0__IpAddress}
|
||||
# App__DcOptions__0__Port: ${App__DcOptions__0__Port}
|
||||
# App__DcOptions__0__TcpoOnly: ${App__DcOptions__0__TcpoOnly}
|
||||
# App__DcOptions__0__ThisPortOnly: ${App__DcOptions__0__ThisPortOnly}
|
||||
# App__DcOptions__0__Ipv6: ${App__DcOptions__0__Ipv6}
|
||||
# App__DcOptions__0__Cdn: ${App__DcOptions__0__Cdn}
|
||||
# App__DcOptions__0__MediaOnly: ${App__DcOptions__0__MediaOnly}
|
||||
# App__DcOptions__0__Static: ${App__DcOptions__0__Static}
|
||||
|
||||
App__DcOptions__1__Enabled: ${App__DcOptions__1__Enabled}
|
||||
# App__DcOptions__1__Id: ${App__DcOptions__1__Id}
|
||||
App__DcOptions__1__IpAddress: ${App__DcOptions__1__IpAddress}
|
||||
App__DcOptions__1__Port: ${App__DcOptions__1__Port}
|
||||
# App__DcOptions__1__TcpoOnly: ${App__DcOptions__1__TcpoOnly}
|
||||
# App__DcOptions__1__ThisPortOnly: ${App__DcOptions__1__ThisPortOnly}
|
||||
# App__DcOptions__1__Ipv6: ${App__DcOptions__1__Ipv6}
|
||||
# App__DcOptions__1__Cdn: ${App__DcOptions__1__Cdn}
|
||||
# App__DcOptions__1__MediaOnly: ${App__DcOptions__1__MediaOnly}
|
||||
# App__DcOptions__1__Static: ${App__DcOptions__1__Static}
|
||||
|
||||
App__DcOptions__2__Enabled: ${App__DcOptions__2__Enabled}
|
||||
# App__DcOptions__2__Id: ${App__DcOptions__2__Id}
|
||||
App__DcOptions__2__IpAddress: ${App__DcOptions__2__IpAddress}
|
||||
# App__DcOptions__2__Port: ${App__DcOptions__2__Port}
|
||||
# App__DcOptions__2__TcpoOnly: ${App__DcOptions__2__TcpoOnly}
|
||||
# App__DcOptions__2__ThisPortOnly: ${App__DcOptions__2__ThisPortOnly}
|
||||
# App__DcOptions__2__Ipv6: ${App__DcOptions__2__Ipv6}
|
||||
# App__DcOptions__2__Cdn: ${App__DcOptions__2__Cdn}
|
||||
# App__DcOptions__2__MediaOnly: ${App__DcOptions__2__MediaOnly}
|
||||
# App__DcOptions__2__Static: ${App__DcOptions__2__Static}
|
||||
|
||||
App__DcOptions__3__Enabled: ${App__DcOptions__3__Enabled}
|
||||
# App__DcOptions__3__Id: ${App__DcOptions__3__Id}
|
||||
App__DcOptions__3__IpAddress: ${App__DcOptions__3__IpAddress}
|
||||
# App__DcOptions__3__Port: ${App__DcOptions__3__Port}
|
||||
# App__DcOptions__3__TcpoOnly: ${App__DcOptions__3__TcpoOnly}
|
||||
# App__DcOptions__3__ThisPortOnly: ${App__DcOptions__3__ThisPortOnly}
|
||||
# App__DcOptions__3__Ipv6: ${App__DcOptions__3__Ipv6}
|
||||
# App__DcOptions__3__Cdn: ${App__DcOptions__3__Cdn}
|
||||
# App__DcOptions__3__MediaOnly: ${App__DcOptions__3__MediaOnly}
|
||||
# App__DcOptions__3__Static: ${App__DcOptions__3__Static}
|
||||
RabbitMQ__Connections__Default__HostName: ${RabbitMQ__Connections__Default__HostName}
|
||||
RabbitMQ__Connections__Default__Port: ${RabbitMQ__Connections__Default__Port}
|
||||
RabbitMQ__Connections__Default__UserName: ${RabbitMQ__Connections__Default__UserName}
|
||||
RabbitMQ__Connections__Default__Password: ${RabbitMQ__Connections__Default__Password}
|
||||
# RabbitMQ__EventBus__ClientName: ${RabbitMQ__EventBus__ClientName}
|
||||
# RabbitMQ__EventBus__ExchangeName: ${RabbitMQ__EventBus__ExchangeName}
|
||||
Redis__Configuration: ${Redis__Configuration}
|
||||
volumes:
|
||||
- ./data/mytelegram/file/uploads:/app/uploads
|
||||
- ./data/mytelegram/command-server/logs:/app/Logs
|
||||
depends_on:
|
||||
- mongodb
|
||||
- rabbitmq
|
||||
- redis
|
||||
|
||||
### 6.Messenger query server
|
||||
messenger-query-server:
|
||||
# CHANGED: Build locally from source instead of using remote image
|
||||
build:
|
||||
context: ../../source
|
||||
dockerfile: src/MyTelegram.Messenger.QueryServer/Dockerfile
|
||||
image: mytelegram-messenger-query-server-local:latest
|
||||
restart: always
|
||||
networks:
|
||||
- tg-net
|
||||
environment:
|
||||
Serilog__MinimumLevel__Default: ${Serilog__MinimumLevel__Default}
|
||||
ConnectionStrings__Default: ${ConnectionStrings__Default}
|
||||
App__DatabaseName: tg
|
||||
App__ReadModelDatabaseName: tg
|
||||
App__AccessHashSecretKey: ${App__AccessHashSecretKey}
|
||||
App__FileServerGrpcServiceUrl: ${App__FileServerGrpcServiceUrl}
|
||||
App__FixedVerifyCode: ${App__FixedVerifyCode}
|
||||
App__VerificationCodeLength: ${App__VerificationCodeLength}
|
||||
App__VerificationCodeExpirationSeconds: ${App__VerificationCodeExpirationSeconds}
|
||||
App__EnableSearchNonContacts: ${App__EnableSearchNonContacts}
|
||||
# App__JoinChatDomain: ${App__JoinChatDomain}
|
||||
# App__ChannelGetDifferenceIntervalSeconds: ${App__ChannelGetDifferenceIntervalSeconds}
|
||||
# App__UseInMemoryFilters: ${App__UseInMemoryFilters}
|
||||
# App__IsMediaDc: ${App__IsMediaDc}
|
||||
# App__AutoCreateSuperGroup: ${App__AutoCreateSuperGroup}
|
||||
# App__EnableFutureAuthToken: ${App__EnableFutureAuthToken}
|
||||
# App__SetPremiumToTrueAfterUserCreated: ${App__SetPremiumToTrueAfterUserCreated}
|
||||
# App__SendWelcomeMessageAfterUserSignIn: ${App__SendWelcomeMessageAfterUserSignIn}
|
||||
App__WebRtcConnections__0__Ip: ${App__WebRtcConnections__0__Ip}
|
||||
App__WebRtcConnections__0__Ipv6: ${App__WebRtcConnections__0__Ipv6}
|
||||
App__WebRtcConnections__0__Port: ${App__WebRtcConnections__0__Port}
|
||||
App__WebRtcConnections__0__Turn: ${App__WebRtcConnections__0__Turn}
|
||||
App__WebRtcConnections__0__Stun: ${App__WebRtcConnections__0__Stun}
|
||||
App__WebRtcConnections__0__UserName: ${App__WebRtcConnections__0__UserName}
|
||||
App__WebRtcConnections__0__Password: ${App__WebRtcConnections__0__Password}
|
||||
# App__ThisDcId: ${App__ThisDcId}
|
||||
# App__DcOptions__0__Enabled: ${App__DcOptions__0__Enabled}
|
||||
# App__DcOptions__0__Id: ${App__DcOptions__0__Id}
|
||||
App__DcOptions__0__IpAddress: ${App__DcOptions__0__IpAddress}
|
||||
App__DcOptions__0__Port: ${App__DcOptions__0__Port}
|
||||
# App__DcOptions__0__TcpoOnly: ${App__DcOptions__0__TcpoOnly}
|
||||
# App__DcOptions__0__ThisPortOnly: ${App__DcOptions__0__ThisPortOnly}
|
||||
# App__DcOptions__0__Ipv6: ${App__DcOptions__0__Ipv6}
|
||||
# App__DcOptions__0__Cdn: ${App__DcOptions__0__Cdn}
|
||||
# App__DcOptions__0__MediaOnly: ${App__DcOptions__0__MediaOnly}
|
||||
# App__DcOptions__0__Static: ${App__DcOptions__0__Static}
|
||||
|
||||
App__DcOptions__1__Enabled: ${App__DcOptions__1__Enabled}
|
||||
# App__DcOptions__1__Id: ${App__DcOptions__1__Id}
|
||||
App__DcOptions__1__IpAddress: ${App__DcOptions__1__IpAddress}
|
||||
App__DcOptions__1__Port: ${App__DcOptions__1__Port}
|
||||
# App__DcOptions__1__TcpoOnly: ${App__DcOptions__1__TcpoOnly}
|
||||
# App__DcOptions__1__ThisPortOnly: ${App__DcOptions__1__ThisPortOnly}
|
||||
# App__DcOptions__1__Ipv6: ${App__DcOptions__1__Ipv6}
|
||||
# App__DcOptions__1__Cdn: ${App__DcOptions__1__Cdn}
|
||||
# App__DcOptions__1__MediaOnly: ${App__DcOptions__1__MediaOnly}
|
||||
# App__DcOptions__1__Static: ${App__DcOptions__1__Static}
|
||||
|
||||
App__DcOptions__2__Enabled: ${App__DcOptions__2__Enabled}
|
||||
# App__DcOptions__2__Id: ${App__DcOptions__2__Id}
|
||||
App__DcOptions__2__IpAddress: ${App__DcOptions__2__IpAddress}
|
||||
App__DcOptions__2__Port: ${App__DcOptions__2__Port}
|
||||
# App__DcOptions__2__TcpoOnly: ${App__DcOptions__2__TcpoOnly}
|
||||
# App__DcOptions__2__ThisPortOnly: ${App__DcOptions__2__ThisPortOnly}
|
||||
# App__DcOptions__2__Ipv6: ${App__DcOptions__2__Ipv6}
|
||||
# App__DcOptions__2__Cdn: ${App__DcOptions__2__Cdn}
|
||||
# App__DcOptions__2__MediaOnly: ${App__DcOptions__2__MediaOnly}
|
||||
# App__DcOptions__2__Static: ${App__DcOptions__2__Static}
|
||||
|
||||
App__DcOptions__3__Enabled: ${App__DcOptions__3__Enabled}
|
||||
# App__DcOptions__3__Id: ${App__DcOptions__3__Id}
|
||||
App__DcOptions__3__IpAddress: ${App__DcOptions__3__IpAddress}
|
||||
# App__DcOptions__3__Port: ${App__DcOptions__3__Port}
|
||||
# App__DcOptions__3__TcpoOnly: ${App__DcOptions__3__TcpoOnly}
|
||||
# App__DcOptions__3__ThisPortOnly: ${App__DcOptions__3__ThisPortOnly}
|
||||
# App__DcOptions__3__Ipv6: ${App__DcOptions__3__Ipv6}
|
||||
# App__DcOptions__3__Cdn: ${App__DcOptions__3__Cdn}
|
||||
# App__DcOptions__3__MediaOnly: ${App__DcOptions__3__MediaOnly}
|
||||
# App__DcOptions__3__Static: ${App__DcOptions__3__Static}
|
||||
Minio__Endpoint: ${Minio__Endpoint}
|
||||
Minio__AccessKey: ${Minio__AccessKey}
|
||||
Minio__SecretKey: ${Minio__SecretKey}
|
||||
Minio__BucketName: ${Minio__BucketName}
|
||||
RabbitMQ__Connections__Default__HostName: ${RabbitMQ__Connections__Default__HostName}
|
||||
RabbitMQ__Connections__Default__Port: ${RabbitMQ__Connections__Default__Port}
|
||||
RabbitMQ__Connections__Default__UserName: ${RabbitMQ__Connections__Default__UserName}
|
||||
RabbitMQ__Connections__Default__Password: ${RabbitMQ__Connections__Default__Password}
|
||||
# RabbitMQ__EventBus__ClientName: ${RabbitMQ__EventBus__ClientName}
|
||||
# RabbitMQ__EventBus__ExchangeName: ${RabbitMQ__EventBus__ExchangeName}
|
||||
Redis__Configuration: ${Redis__Configuration}
|
||||
volumes:
|
||||
- ./data/mytelegram/query-server/logs:/app/Logs
|
||||
depends_on:
|
||||
- mongodb
|
||||
- rabbitmq
|
||||
- redis
|
||||
|
||||
### 7.Bot API Server
|
||||
bot-api-server:
|
||||
build:
|
||||
context: ../../source
|
||||
dockerfile: src/MyTelegram.BotApi/Dockerfile
|
||||
restart: always
|
||||
networks:
|
||||
- tg-net
|
||||
ports:
|
||||
- "8081:8081"
|
||||
environment:
|
||||
ASPNETCORE_URLS: http://+:8081
|
||||
Serilog__MinimumLevel__Default: ${Serilog__MinimumLevel__Default}
|
||||
ConnectionStrings__Default: ${ConnectionStrings__Default}
|
||||
App__DatabaseName: tg
|
||||
App__ReadModelDatabaseName: tg
|
||||
RabbitMQ__Connections__Default__HostName: ${RabbitMQ__Connections__Default__HostName}
|
||||
RabbitMQ__Connections__Default__Port: ${RabbitMQ__Connections__Default__Port}
|
||||
RabbitMQ__Connections__Default__UserName: ${RabbitMQ__Connections__Default__UserName}
|
||||
RabbitMQ__Connections__Default__Password: ${RabbitMQ__Connections__Default__Password}
|
||||
RabbitMQ__EventBus__ClientProvidedName: MyTelegram.BotApi
|
||||
RabbitMQ__EventBus__ExchangeName: ${RabbitMQ__EventBus__ExchangeName}
|
||||
MongoDB__ConnectionString: ${ConnectionStrings__Default}
|
||||
MongoDB__DatabaseName: tg
|
||||
BotApi__Port: 8081
|
||||
BotApi__LocalMode: true
|
||||
BotApi__MaxFileSize: 2147483648
|
||||
volumes:
|
||||
- ./data/mytelegram/bot-api/logs:/app/Logs
|
||||
depends_on:
|
||||
- mongodb
|
||||
- rabbitmq
|
||||
- redis
|
||||
|
||||
### 8.TURN/STUN server for VoIP
|
||||
turn-server:
|
||||
image: coturn/coturn:latest
|
||||
restart: always
|
||||
network_mode: host
|
||||
# networks:
|
||||
# - tg-net
|
||||
# ports:
|
||||
# - "3478:3478/udp"
|
||||
# - "3478:3478/tcp"
|
||||
# - "5349:5349/tcp"
|
||||
# Note: network_mode: host exposes all ports directly, including relay ports 49152-65535
|
||||
volumes:
|
||||
- ./turnserver.conf:/etc/coturn/turnserver.conf:ro
|
||||
- ./data/coturn/logs:/var/log/coturn
|
||||
environment:
|
||||
TURN_EXTERNAL_IP: "${TURN_EXTERNAL_IP:-auto-detect}"
|
||||
command: ["-c", "/etc/coturn/turnserver.conf"]
|
||||
|
||||
### 9.Sms sender
|
||||
sms-sender:
|
||||
image: ${MyTelegramRegistry}/mytelegram-sms-sender:${MyTelegramVersion}
|
||||
restart: always
|
||||
networks:
|
||||
- tg-net
|
||||
environment:
|
||||
Serilog__MinimumLevel__Default: ${Serilog__MinimumLevel__Default}
|
||||
# TwilioSms__Enabled: ${TwilioSms__Enabled}
|
||||
# TwilioSms__AccountSId: ${TwilioSms__AccountSId}
|
||||
# TwilioSms__AuthToken: ${TwilioSms__AuthToken}
|
||||
# TwilioSms__FromNumber: ${TwilioSms__FromNumber}
|
||||
# TwilioSms__MessagingServiceSId: ${TwilioSms__MessagingServiceSId}
|
||||
# VonageSms__Enabled: ${VonageSms__Enabled}
|
||||
# VonageSms__BrandName: ${VonageSms__BrandName}
|
||||
# VonageSms__ApiKey: ${VonageSms__ApiKey}
|
||||
# VonageSms__ApiSecret: ${VonageSms__ApiSecret}
|
||||
RabbitMQ__Connections__Default__HostName: ${RabbitMQ__Connections__Default__HostName}
|
||||
RabbitMQ__Connections__Default__Port: ${RabbitMQ__Connections__Default__Port}
|
||||
RabbitMQ__Connections__Default__UserName: ${RabbitMQ__Connections__Default__UserName}
|
||||
RabbitMQ__Connections__Default__Password: ${RabbitMQ__Connections__Default__Password}
|
||||
# RabbitMQ__EventBus__ClientName: ${RabbitMQ__EventBus__ClientName}
|
||||
# RabbitMQ__EventBus__ExchangeName: ${RabbitMQ__EventBus__ExchangeName}
|
||||
volumes:
|
||||
- ./data/mytelegram/sms-sender/logs:/app/Logs
|
||||
depends_on:
|
||||
- rabbitmq
|
||||
|
||||
### 10.Fragment Backend API (Run locally with npm run dev)
|
||||
# fragment-backend:
|
||||
# build:
|
||||
# context: ../../fragment/fragment-backend
|
||||
# dockerfile: Dockerfile
|
||||
# restart: always
|
||||
# networks:
|
||||
# - tg-net
|
||||
# ports:
|
||||
# - "3001:3001"
|
||||
# environment:
|
||||
# PORT: 3001
|
||||
# MONGODB_URI: mongodb://mongodb:27017/tg
|
||||
# JWT_SECRET: fragment_secret_key_change_in_production
|
||||
# BOT_API_URL: http://bot-api-server:8081
|
||||
# FRAGMENT_BOT_TOKEN: ${FRAGMENT_BOT_TOKEN}
|
||||
# volumes:
|
||||
# - ./data/fragment/backend/logs:/app/logs
|
||||
# depends_on:
|
||||
# - mongodb
|
||||
# - bot-api-server
|
||||
Reference in New Issue
Block a user