mirror of
https://github.com/furyhawk/cloudy.git
synced 2026-05-21 07:26:51 +00:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 91200fe37e | |||
| 895f1d0aef | |||
| f0a1969e73 | |||
| cd14a1ce23 | |||
| 3ddbbbb255 | |||
| d0483114dc | |||
| 722b942079 | |||
| 86d8b19ae3 | |||
| 63b190ccbd |
@@ -20,17 +20,19 @@ This simple project uses Traefik as a reverse proxy to a Streamlit application a
|
|||||||
- Build for ARM64 platform
|
- Build for ARM64 platform
|
||||||
|
|
||||||
## Production Deployment
|
## Production Deployment
|
||||||
1. `git clone
|
1. `git clone https://github.com/furyhawk/cloudy.git`
|
||||||
1. `git submodule update --init --recursive`
|
2. `cd cloudy`
|
||||||
1. In `compose/traefik/traefik.yml`, change `example@test.com` to your email.
|
3. `git submodule update --init --recursive`
|
||||||
2. In `compose/traefik/traefik.yml`, change `example.com` to your domain.
|
4. In `compose/traefik/traefik.yml`, change `example@test.com` to your email.
|
||||||
3. `sudo apt-get install build-essential` (if not already installed) to use makefile.
|
5. In `compose/traefik/traefik.yml`, change `example.com` to your domain.
|
||||||
4. `mdkir ~/st-sync` syncthing folder.
|
6. `sudo apt-get install build-essential` (if not already installed) to use makefile.
|
||||||
5. `cd ~/site` public site folder.
|
7. `mkdir ~/st-sync` syncthing folder.
|
||||||
5. `mkdir ./compose/config` to store config.
|
8. `mkdir ~/site` public site folder.
|
||||||
8. `cp .env.example ./compose/.env`
|
9. `mkdir ./compose/config` to store config.
|
||||||
9. `cp usersfile.example ./compose/usersfile`
|
10. `cp .env.example ./compose/.env && cp .env ~/config/.env`
|
||||||
10. `make serve`
|
11. `cp ./compose/config/conf.php ~/config/conf.php`
|
||||||
|
12. `cp usersfile.example ./compose/usersfile`
|
||||||
|
13. `make serve`
|
||||||
|
|
||||||
### Notes:
|
### Notes:
|
||||||
```yaml
|
```yaml
|
||||||
|
|||||||
Vendored
BIN
Binary file not shown.
@@ -9,7 +9,6 @@ volumes:
|
|||||||
services:
|
services:
|
||||||
emqx1:
|
emqx1:
|
||||||
image: emqx:latest
|
image: emqx:latest
|
||||||
container_name: emqx1
|
|
||||||
# environment:
|
# environment:
|
||||||
# - "EMQX_NODE_NAME=emqx@node1.emqx.io"
|
# - "EMQX_NODE_NAME=emqx@node1.emqx.io"
|
||||||
# - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static"
|
# - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static"
|
||||||
@@ -62,7 +61,6 @@ services:
|
|||||||
|
|
||||||
mqttx-web:
|
mqttx-web:
|
||||||
image: emqx/mqttx-web:latest
|
image: emqx/mqttx-web:latest
|
||||||
container_name: mqttx_web
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
networks:
|
networks:
|
||||||
- net
|
- net
|
||||||
|
|||||||
@@ -9,8 +9,7 @@ volumes:
|
|||||||
meili_data:
|
meili_data:
|
||||||
|
|
||||||
services:
|
services:
|
||||||
api:
|
librechat_api:
|
||||||
container_name: LibreChat
|
|
||||||
ports:
|
ports:
|
||||||
- "${PORT}:${PORT}"
|
- "${PORT}:${PORT}"
|
||||||
depends_on:
|
depends_on:
|
||||||
@@ -27,17 +26,25 @@ services:
|
|||||||
- MEILI_HOST=http://meilisearch:7700
|
- MEILI_HOST=http://meilisearch:7700
|
||||||
- RAG_PORT=${RAG_PORT:-8000}
|
- RAG_PORT=${RAG_PORT:-8000}
|
||||||
- RAG_API_URL=http://rag_api:${RAG_PORT:-8000}
|
- RAG_API_URL=http://rag_api:${RAG_PORT:-8000}
|
||||||
|
- DOMAINNAME=${DOMAINNAME}
|
||||||
volumes:
|
volumes:
|
||||||
- type: bind
|
- type: bind
|
||||||
source: ./.env
|
source: ~/config/.env
|
||||||
target: /app/.env
|
target: /app/.env
|
||||||
- libre-images:/app/client/public/images
|
- libre-images:/app/client/public/images
|
||||||
- libre-logs:/app/api/logs
|
- libre-logs:/app/api/logs
|
||||||
- type: bind
|
- type: bind
|
||||||
source: ./config/librechat.yaml
|
source: ./config/librechat.yaml
|
||||||
target: /app/librechat.yaml
|
target: /app/librechat.yaml
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.librechat.entrypoints=web-secure"
|
||||||
|
- "traefik.http.routers.librechat.rule=Host(`chat.${DOMAINNAME}`) || Host(`bot.${DOMAINNAME}`)"
|
||||||
|
- "traefik.http.routers.librechat.middlewares=csrf@file"
|
||||||
|
- "traefik.http.routers.librechat.tls.certresolver=letsencrypt"
|
||||||
|
- "traefik.http.routers.librechat.service=librechat_app"
|
||||||
|
- "traefik.http.services.librechat_app.loadbalancer.server.port=${PORT}"
|
||||||
mongodb:
|
mongodb:
|
||||||
container_name: chat-mongodb
|
|
||||||
image: mongo
|
image: mongo
|
||||||
restart: always
|
restart: always
|
||||||
user: "${UID}:${GID}"
|
user: "${UID}:${GID}"
|
||||||
@@ -45,7 +52,6 @@ services:
|
|||||||
- data-node:/data/db
|
- data-node:/data/db
|
||||||
command: mongod --noauth
|
command: mongod --noauth
|
||||||
meilisearch:
|
meilisearch:
|
||||||
container_name: chat-meilisearch
|
|
||||||
image: getmeili/meilisearch:v1.7.3
|
image: getmeili/meilisearch:v1.7.3
|
||||||
restart: always
|
restart: always
|
||||||
user: "${UID}:${GID}"
|
user: "${UID}:${GID}"
|
||||||
@@ -55,7 +61,6 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- meili_data:/meili_data
|
- meili_data:/meili_data
|
||||||
vectordb:
|
vectordb:
|
||||||
container_name: vectordb
|
|
||||||
image: ankane/pgvector:latest
|
image: ankane/pgvector:latest
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_DB: mydatabase
|
POSTGRES_DB: mydatabase
|
||||||
@@ -65,7 +70,6 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- pgdata2:/var/lib/postgresql/data
|
- pgdata2:/var/lib/postgresql/data
|
||||||
rag_api:
|
rag_api:
|
||||||
container_name: rag_api
|
|
||||||
image: ghcr.io/danny-avila/librechat-rag-api-dev:latest
|
image: ghcr.io/danny-avila/librechat-rag-api-dev:latest
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_DB: mydatabase
|
POSTGRES_DB: mydatabase
|
||||||
@@ -77,5 +81,5 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- vectordb
|
- vectordb
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- ~/config/.env
|
||||||
|
|
||||||
|
|||||||
@@ -60,15 +60,15 @@ services:
|
|||||||
- net
|
- net
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
# - "traefik.tcp.middlewares.test-inflightconn.inflightconn.amount=10"
|
|
||||||
- "traefik.tcp.routers.postgres.entrypoints=postgres-socket"
|
- "traefik.tcp.routers.postgres.entrypoints=postgres-socket"
|
||||||
- "traefik.tcp.routers.postgres.rule=HostSNI(`*`)"
|
- "traefik.tcp.routers.postgres.rule=HostSNI(`*`)"
|
||||||
|
- "traefik.tcp.routers.postgres.service=postgres_service"
|
||||||
|
- "traefik.tcp.services.postgres_service.loadbalancer.server.port=5432"
|
||||||
|
# - "traefik.tcp.middlewares.test-inflightconn.inflightconn.amount=10"
|
||||||
# - "traefik.tcp.routers.postgres.rule=HostSNIRegexp(`^.+\\.furyhawk\\.lol$`)"
|
# - "traefik.tcp.routers.postgres.rule=HostSNIRegexp(`^.+\\.furyhawk\\.lol$`)"
|
||||||
# - "traefik.tcp.routers.postgres.tls=true"
|
# - "traefik.tcp.routers.postgres.tls=true"
|
||||||
# - "traefik.tcp.routers.postgres.tls.certresolver=letsencrypt"
|
# - "traefik.tcp.routers.postgres.tls.certresolver=letsencrypt"
|
||||||
# - "traefik.tcp.routers.postgres.middlewares=test-inflightconn"
|
# - "traefik.tcp.routers.postgres.middlewares=test-inflightconn"
|
||||||
- "traefik.tcp.routers.postgres.service=postgres_service"
|
|
||||||
- "traefik.tcp.services.postgres_service.loadbalancer.server.port=5432"
|
|
||||||
# - "traefik.http.routers.postgres.entrypoints=web-secure"
|
# - "traefik.http.routers.postgres.entrypoints=web-secure"
|
||||||
# - "traefik.http.routers.postgres.rule=Host(`db.${DOMAINNAME}`)"
|
# - "traefik.http.routers.postgres.rule=Host(`db.${DOMAINNAME}`)"
|
||||||
# - "traefik.http.routers.postgres.middlewares=rate-limit@file, csrf@file"
|
# - "traefik.http.routers.postgres.middlewares=rate-limit@file, csrf@file"
|
||||||
|
|||||||
@@ -95,16 +95,6 @@ http:
|
|||||||
|
|
||||||
routers:
|
routers:
|
||||||
|
|
||||||
chat-router:
|
|
||||||
entryPoints:
|
|
||||||
- web-secure
|
|
||||||
rule: "Host(`bot.furyhawk.lol`) || Host(`chat.furyhawk.lol`)"
|
|
||||||
middlewares:
|
|
||||||
- csrf
|
|
||||||
tls:
|
|
||||||
certResolver: letsencrypt
|
|
||||||
service: librechat_app
|
|
||||||
|
|
||||||
# forum-router:
|
# forum-router:
|
||||||
# entryPoints:
|
# entryPoints:
|
||||||
# - web-secure
|
# - web-secure
|
||||||
@@ -258,10 +248,6 @@ http:
|
|||||||
# loadBalancer:
|
# loadBalancer:
|
||||||
# servers:
|
# servers:
|
||||||
# - url: http://kestra:8080
|
# - url: http://kestra:8080
|
||||||
librechat_app:
|
|
||||||
loadBalancer:
|
|
||||||
servers:
|
|
||||||
- url: http://LibreChat:3080
|
|
||||||
# neo4j-bolt:
|
# neo4j-bolt:
|
||||||
# loadBalancer:
|
# loadBalancer:
|
||||||
# servers:
|
# servers:
|
||||||
@@ -284,10 +270,6 @@ http:
|
|||||||
servers:
|
servers:
|
||||||
- url: http://emqx1:8084
|
- url: http://emqx1:8084
|
||||||
# - url: http://emqx2:8084
|
# - url: http://emqx2:8084
|
||||||
# emqx-dashboard:
|
|
||||||
# loadBalancer:
|
|
||||||
# servers:
|
|
||||||
# - url: http://emqx1:18083
|
|
||||||
|
|
||||||
providers:
|
providers:
|
||||||
# https://docs.traefik.io/master/providers/file/
|
# https://docs.traefik.io/master/providers/file/
|
||||||
|
|||||||
Reference in New Issue
Block a user