增加在线聊天室的功能

This commit is contained in:
zeaslity
2023-08-18 17:37:09 +08:00
parent 37aeb45c97
commit 92acacb7b4
14 changed files with 469 additions and 16 deletions

View File

@@ -0,0 +1,30 @@
### Rocket.Chat configuration
# Rocket.Chat version
# see:- https://github.com/RocketChat/Rocket.Chat/releases
RELEASE=6.3.1
# MongoDB endpoint (include ?replicaSet= parameter)
#MONGO_URL= 存在默认配置
# MongoDB endpoint to the local database
#MONGO_OPLOG_URL=
# IP to bind the process to
BIND_IP=127.0.0.1
# URL used to access your Rocket.Chat instance
#ROOT_URL=
# Port Rocket.Chat runs on (in-container)
#PORT=
# Port on the host to bind to
HOST_PORT=3456
### MongoDB configuration
# MongoDB version/image tag
#MONGODB_VERSION=
# See:- https://hub.docker.com/r/bitnami/mongodb
### Traefik config (if enabled)
# Traefik version/image tag
#TRAEFIK_RELEASE=
# Domain for https (change ROOT_URL & BIND_IP accordingly)
#DOMAIN=
# Email for certificate notifications
#LETSENCRYPT_EMAIL=

View File

@@ -0,0 +1,35 @@
# https://raw.githubusercontent.com/RocketChat/Docker.Official.Image/master/compose.yml
version: "3"
services:
rocketchat:
image: registry.rocket.chat/rocketchat/rocket.chat:6.3.1
restart: always
environment:
MONGO_URL: "mongodb://mongodb:27017/rocketchat?replicaSet=rs0"
MONGO_OPLOG_URL: "mongodb:mongodb:27017/local?replicaSet=rs0"
ROOT_URL: http://localhost:3000
PORT: 3000
DEPLOY_METHOD: docker
REG_TOKEN: lovemm.23
depends_on:
- mongodb
expose:
- 3456
ports:
- "127.0.0.1:3456:3000"
mongodb:
image: docker.io/bitnami/mongodb:5.0
restart: always
volumes:
- /data/rocket-chat/mongodb_data:/bitnami/mongodb
environment:
MONGODB_REPLICA_SET_MODE: primary
MONGODB_REPLICA_SET_NAME: rs0
MONGODB_PORT_NUMBER: 27017
MONGODB_INITIAL_PRIMARY_HOST: mongodb
MONGODB_INITIAL_PRIMARY_PORT_NUMBER: 27017
MONGODB_ADVERTISED_HOSTNAME: mongodb
MONGODB_ENABLE_JOURNAL: "true"
ALLOW_EMPTY_PASSWORD: "yes"

View File

@@ -0,0 +1,46 @@
# https://raw.githubusercontent.com/RocketChat/Docker.Official.Image/master/compose.yml
services:
rocketchat:
image: registry.rocket.chat/rocketchat/rocket.chat:${RELEASE:-latest}
restart: always
labels:
traefik.enable: "true"
traefik.http.routers.rocketchat.rule: Host(`${DOMAIN:-}`)
traefik.http.routers.rocketchat.tls: "true"
traefik.http.routers.rocketchat.entrypoints: https
traefik.http.routers.rocketchat.tls.certresolver: le
environment:
MONGO_URL: "${MONGO_URL:-\
mongodb://${MONGODB_ADVERTISED_HOSTNAME:-mongodb}:${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}/\
${MONGODB_DATABASE:-rocketchat}?replicaSet=${MONGODB_REPLICA_SET_NAME:-rs0}}"
MONGO_OPLOG_URL: "${MONGO_OPLOG_URL:\
-mongodb://${MONGODB_ADVERTISED_HOSTNAME:-mongodb}:${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}/\
local?replicaSet=${MONGODB_REPLICA_SET_NAME:-rs0}}"
ROOT_URL: ${ROOT_URL:-http://localhost:${HOST_PORT:-3000}}
PORT: ${PORT:-3000}
DEPLOY_METHOD: docker
DEPLOY_PLATFORM: ${DEPLOY_PLATFORM:-}
REG_TOKEN: ${REG_TOKEN:-}
depends_on:
- mongodb
expose:
- ${PORT:-3000}
ports:
- "${BIND_IP:-0.0.0.0}:${HOST_PORT:-3000}:${PORT:-3000}"
mongodb:
image: docker.io/bitnami/mongodb:${MONGODB_VERSION:-5.0}
restart: always
volumes:
- /data/rocket-chat/mongodb_data:/bitnami/mongodb
environment:
MONGODB_REPLICA_SET_MODE: primary
MONGODB_REPLICA_SET_NAME: ${MONGODB_REPLICA_SET_NAME:-rs0}
MONGODB_PORT_NUMBER: ${MONGODB_PORT_NUMBER:-27017}
MONGODB_INITIAL_PRIMARY_HOST: ${MONGODB_INITIAL_PRIMARY_HOST:-mongodb}
MONGODB_INITIAL_PRIMARY_PORT_NUMBER: ${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}
MONGODB_ADVERTISED_HOSTNAME: ${MONGODB_ADVERTISED_HOSTNAME:-mongodb}
MONGODB_ENABLE_JOURNAL: ${MONGODB_ENABLE_JOURNAL:-true}
ALLOW_EMPTY_PASSWORD: ${ALLOW_EMPTY_PASSWORD:-yes}

View File

@@ -0,0 +1,2 @@
1. 使用域名为 chat.107421.xyz
2. 使用Cloudflare的Zero Trust

View File

@@ -0,0 +1,21 @@
# 部署于 Seoul-amd64-02上
version: "3"
services:
mongodb:
image: docker.io/bitnami/mongodb:5.0
restart: always
volumes:
- /data/rocket-chat/mongodb_data:/bitnami/mongodb
environment:
MONGODB_REPLICA_SET_MODE: primary
MONGODB_REPLICA_SET_NAME: rs0
MONGODB_PORT_NUMBER: 27017
MONGODB_INITIAL_PRIMARY_HOST: mongodb
MONGODB_INITIAL_PRIMARY_PORT_NUMBER: 27017
MONGODB_ADVERTISED_HOSTNAME: mongodb
MONGODB_ENABLE_JOURNAL: "true"
ALLOW_EMPTY_PASSWORD: "yes"
ports:
- "7017:27017"

View File

@@ -0,0 +1,17 @@
version: "3"
services:
rocketchat:
image: registry.rocket.chat/rocketchat/rocket.chat:6.3.1
restart: always
environment:
MONGO_URL: "mongodb://10.0.0.14:27017/rocketchat?replicaSet=rs0"
MONGO_OPLOG_URL: "mongodb:10.0.0.14:27017/local?replicaSet=rs0"
ROOT_URL: http://localhost:3000
PORT: 3000
DEPLOY_METHOD: docker
REG_TOKEN: lovemm.23
expose:
- 3456
ports:
- "127.0.0.1:3456:3000"

View File

@@ -0,0 +1,28 @@
LOGGER=true
LOGLEVEL=info
SERVICEDIR=services
TRANSPORTER=redis://redis:6379
REDIS_URL=redis://redis:6379
MONGO_URL=mongodb://mongo/tailchat
SECRET=lovemm.23
# file
API_URL=https://chat.107421.xyz
# minio
MINIO_URL=minio:9000
MINIO_USER=tailchat
MINIO_PASS=com.msgbyte.tailchat
# SMTP
SMTP_SENDER=
SMTP_URI=
# metrics
PROMETHEUS=1
# Admin
ADMIN_USER=zeaslity
ADMIN_PASS=lovemm.23

View File

@@ -0,0 +1,116 @@
version: "3.3"
services:
# Tailchat Core Services
service-core:
build:
context: .
image: tailchat-0818
restart: unless-stopped
env_file: docker-compose.env
environment:
SERVICES: core/gateway,core/user/*.service.js,core/group/*.service.js,core/chat/*.service.js,core/file,core/plugin/registry,core/config
PORT: 3000
depends_on:
- mongo
- redis
- minio
ports:
- "3001:3000"
# labels:
# - "traefik.enable=true"
# - "traefik.http.routers.api-gw.rule=PathPrefix(`/`)"
# - "traefik.http.services.api-gw.loadbalancer.server.port=3000"
networks:
- internal
# Open Platform
service-openapi:
build:
context: .
image: tailchat-0818
restart: unless-stopped
env_file: docker-compose.env
environment:
SERVICES: openapi/app,openapi/bot,openapi/integration,openapi/oidc/oidc
OPENAPI_PORT: 3003
OPENAPI_UNDER_PROXY: "true"
depends_on:
- mongo
- redis
- minio
ports:
- "3003:3003"
# labels:
# - "traefik.enable=true"
# - "traefik.http.routers.openapi-oidc.rule=PathPrefix(`/open`)"
# - "traefik.http.services.openapi-oidc.loadbalancer.server.port=3003"
networks:
- internal
# Plugin Service (All Plugins)
service-all-plugins:
build:
context: .
image: tailchat-0818
restart: unless-stopped
env_file: docker-compose.env
environment:
SERVICEDIR: plugins
depends_on:
- mongo
- redis
- minio
networks:
- internal
# Database
mongo:
image: mongo:4
restart: on-failure
volumes:
- /data/tailchat/mongo_data:/data/db
networks:
- internal
# Data cache and Transporter
redis:
image: redis:alpine
restart: on-failure
networks:
- internal
# Persist Storage
minio:
image: minio/minio
restart: on-failure
networks:
- internal
environment:
MINIO_ROOT_USER: tailchat
MINIO_ROOT_PASSWORD: com.msgbyte.tailchat
volumes:
- /data/tailchat/minio_storage:/data
command: minio server /data --console-address ":9001"
# Router
# traefik:
# image: traefik:v2.1
# restart: unless-stopped
# command:
# - "--api.insecure=true" # Don't do that in production!
# - "--providers.docker=true"
# - "--providers.docker.exposedbydefault=false"
# - "--entryPoints.web.address=:80"
# - "--entryPoints.web.forwardedHeaders.insecure" # Not good
# ports:
# - 11000:80
# - 127.0.0.1:11001:8080
# volumes:
# - /var/run/docker.sock:/var/run/docker.sock:ro
# networks:
# - internal
# - default
networks:
internal:

View File

@@ -0,0 +1,66 @@
server {
server_name chat.107421.xyz;
listen 80;
return 301 https://chat.107421.xyz$request_uri;
}
server {
listen 443 ssl;
server_name chat.107421.xyz;
ssl_certificate /etc/nginx/conf.d/ssl_key/chat.107421.xyz.cert.pem;
ssl_certificate_key /etc/nginx/conf.d/ssl_key/chat.107421.xyz.key.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
location /open {
access_log /var/log/nginx/access.log main;
client_max_body_size 5120m;
client_body_buffer_size 5120m;
client_body_timeout 6000s;
proxy_send_timeout 10000s;
proxy_read_timeout 10000s;
proxy_connect_timeout 600s;
proxy_max_temp_file_size 5120m;
proxy_request_buffering on;
proxy_buffering off;
proxy_buffer_size 4k;
proxy_buffers 4 12k;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://146.56.147.12:3003;
}
location / {
access_log /var/log/nginx/access.log main;
client_max_body_size 5120m;
client_body_buffer_size 5120m;
client_body_timeout 6000s;
proxy_send_timeout 10000s;
proxy_read_timeout 10000s;
proxy_connect_timeout 600s;
proxy_max_temp_file_size 5120m;
proxy_request_buffering on;
proxy_buffering off;
proxy_buffer_size 4k;
proxy_buffers 4 12k;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://146.56.147.12:3001;
}
}