mirror of
https://github.com/furyhawk/cloudy.git
synced 2026-05-20 07:01:04 +00:00
Compare commits
18 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0bb60245dc | |||
| b70e7111ae | |||
| 788ec952fd | |||
| 038bf3e8d9 | |||
| 1cc77c6609 | |||
| dfd071150f | |||
| b55afab109 | |||
| cbbbe695ec | |||
| 6f3d3bbe49 | |||
| 3baf43ad74 | |||
| e2784f41fe | |||
| 1ac98da285 | |||
| 03463c6b88 | |||
| a1112357b8 | |||
| 10676c0754 | |||
| 1e581d71fb | |||
| a345319737 | |||
| f865ba6f16 |
@@ -1,6 +0,0 @@
|
||||
[submodule "LibreChat"]
|
||||
path = LibreChat
|
||||
url = https://github.com/furyhawk/LibreChat.git
|
||||
[submodule "emqx-docker"]
|
||||
path = emqx-docker
|
||||
url = https://github.com/furyhawk/emqx-docker.git
|
||||
|
||||
-1
Submodule LibreChat deleted from 026961f719
+2
-2
@@ -14,5 +14,5 @@ include:
|
||||
- compose/base.yml
|
||||
- compose/services.yml
|
||||
- compose/apps.yml
|
||||
- emqx-docker/docker-compose.yml
|
||||
- LibreChat/docker-compose.yml
|
||||
- compose/deploy-emqx.yml
|
||||
- compose/deploy-librechat.yml
|
||||
|
||||
+30
-8
@@ -12,6 +12,7 @@ volumes:
|
||||
jellyfin_config: {}
|
||||
jellyfin_cache: {}
|
||||
pgadmin: {}
|
||||
pgadmin_data: {}
|
||||
privatebin_data: {}
|
||||
thelounge_data: {}
|
||||
|
||||
@@ -22,20 +23,17 @@ services:
|
||||
environment:
|
||||
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL}
|
||||
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD}
|
||||
PGID: 1000
|
||||
PUID: 1000
|
||||
PATH: "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
PYTHONPATH: "/pgadmin4"
|
||||
TZ: Asia/Singapore
|
||||
DOMAINNAME: ${DOMAINNAME}
|
||||
user: "1000:1000"
|
||||
volumes:
|
||||
- pgadmin:/var/lib/pgadmin
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- postgres
|
||||
expose:
|
||||
- 80
|
||||
- 8080
|
||||
networks:
|
||||
- net
|
||||
labels:
|
||||
@@ -65,7 +63,6 @@ services:
|
||||
|
||||
ghost-db:
|
||||
image: mysql:8
|
||||
container_name: ghost-db
|
||||
security_opt:
|
||||
- seccomp:unconfined
|
||||
restart: always
|
||||
@@ -81,7 +78,6 @@ services:
|
||||
|
||||
ghost-server:
|
||||
image: ghost
|
||||
container_name: ghost_server
|
||||
cap_add:
|
||||
- CAP_SYS_NICE
|
||||
security_opt:
|
||||
@@ -90,7 +86,7 @@ services:
|
||||
depends_on:
|
||||
- ghost-db
|
||||
environment:
|
||||
url: https://ghost.furyhawk.lol
|
||||
url: https://ghost.${DOMAINNAME}
|
||||
database__client: mysql
|
||||
database__connection__host: ghost-db
|
||||
database__connection__user: root
|
||||
@@ -176,6 +172,29 @@ services:
|
||||
- "traefik.http.routers.meshtastic.service=meshtastic_app"
|
||||
- "traefik.http.services.meshtastic_app.loadbalancer.server.port=8080"
|
||||
|
||||
pgadmin:
|
||||
image: dpage/pgadmin4
|
||||
environment:
|
||||
PGADMIN_DEFAULT_EMAIL: "${PGADMIN_DEFAULT_EMAIL}"
|
||||
PGADMIN_DEFAULT_PASSWORD: "${PGADMIN_DEFAULT_PASSWORD}"
|
||||
volumes:
|
||||
- pgadmin_data:/var/lib/pgadmin
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- postgres
|
||||
expose:
|
||||
- 80
|
||||
networks:
|
||||
- net
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.pgadmin.entrypoints=web-secure"
|
||||
- "traefik.http.routers.pgadmin.rule=Host(`pgadmin.${DOMAINNAME}`)"
|
||||
- "traefik.http.routers.pgadmin.middlewares=csrf@file"
|
||||
- "traefik.http.routers.pgadmin.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.routers.pgadmin.service=pgadmin_app"
|
||||
- "traefik.http.services.pgadmin_app.loadbalancer.server.port=80"
|
||||
|
||||
privatebin:
|
||||
image: privatebin/nginx-fpm-alpine:latest
|
||||
read_only: true
|
||||
@@ -183,7 +202,7 @@ services:
|
||||
volumes:
|
||||
- privatebin_data:/srv/data # data volume for pastes allows pastes
|
||||
# to persist after container stop or restart
|
||||
- './config/conf.php:/srv/cfg/conf.php:ro' # second volume for custom configuration file
|
||||
- "~/config/conf.php:/srv/cfg/conf.php:ro" # second volume for custom configuration file
|
||||
expose:
|
||||
- 8080
|
||||
restart: unless-stopped
|
||||
@@ -199,6 +218,9 @@ services:
|
||||
- "traefik.http.services.privatebin_app.loadbalancer.server.port=8080"
|
||||
|
||||
redlib:
|
||||
# disable container temporarily
|
||||
profiles:
|
||||
- donotstart
|
||||
image: quay.io/redlib/redlib:latest-arm
|
||||
restart: unless-stopped
|
||||
user: nobody
|
||||
|
||||
@@ -52,6 +52,10 @@ services:
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
restart: always
|
||||
deploy:
|
||||
placement:
|
||||
constraints:
|
||||
- node.role == manager
|
||||
volumes:
|
||||
- logs:/logs
|
||||
- production_traefik:/etc/traefik/acme:z
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
# For more information, see the Configuration Guide:
|
||||
# https://docs.librechat.ai/install/configuration/custom_config.html
|
||||
|
||||
# Configuration version (required)
|
||||
version: 1.0.6
|
||||
|
||||
# Cache settings: Set to true to enable caching
|
||||
cache: true
|
||||
|
||||
# Custom nterface configuration
|
||||
interface:
|
||||
# Privacy policy settings
|
||||
privacyPolicy:
|
||||
externalUrl: 'https://librechat.ai/privacy-policy'
|
||||
openNewTab: true
|
||||
|
||||
# Terms of service
|
||||
termsOfService:
|
||||
externalUrl: 'https://librechat.ai/tos'
|
||||
openNewTab: true
|
||||
|
||||
# Example Registration Object Structure (optional)
|
||||
registration:
|
||||
socialLogins: ['github', 'google', 'discord', 'openid', 'facebook']
|
||||
# allowedDomains:
|
||||
# - "gmail.com"
|
||||
# rateLimits:
|
||||
# fileUploads:
|
||||
# ipMax: 100
|
||||
# ipWindowInMinutes: 60 # Rate limit window for file uploads per IP
|
||||
# userMax: 50
|
||||
# userWindowInMinutes: 60 # Rate limit window for file uploads per user
|
||||
|
||||
# Definition of custom endpoints
|
||||
endpoints:
|
||||
# assistants:
|
||||
# disableBuilder: false # Disable Assistants Builder Interface by setting to `true`
|
||||
# pollIntervalMs: 750 # Polling interval for checking assistant updates
|
||||
# timeoutMs: 180000 # Timeout for assistant operations
|
||||
# # Should only be one or the other, either `supportedIds` or `excludedIds`
|
||||
# supportedIds: ["asst_supportedAssistantId1", "asst_supportedAssistantId2"]
|
||||
# # excludedIds: ["asst_excludedAssistantId"]
|
||||
# # (optional) Models that support retrieval, will default to latest known OpenAI models that support the feature
|
||||
# retrievalModels: ["gpt-4-turbo-preview"]
|
||||
# # (optional) Assistant Capabilities available to all users. Omit the ones you wish to exclude. Defaults to list below.
|
||||
# capabilities: ["code_interpreter", "retrieval", "actions", "tools", "image_vision"]
|
||||
custom:
|
||||
# Groq Example
|
||||
- name: 'groq'
|
||||
apiKey: '${GROQ_API_KEY}'
|
||||
baseURL: 'https://api.groq.com/openai/v1/'
|
||||
models:
|
||||
default: [
|
||||
"llama3-70b-8192",
|
||||
"llama3-8b-8192",
|
||||
"llama2-70b-4096",
|
||||
"mixtral-8x7b-32768",
|
||||
"gemma-7b-it",
|
||||
]
|
||||
fetch: false
|
||||
titleConvo: true
|
||||
titleModel: 'llama3-70b-8192'
|
||||
modelDisplayLabel: 'groq'
|
||||
|
||||
# # Mistral AI Example
|
||||
# - name: 'Mistral' # Unique name for the endpoint
|
||||
# # For `apiKey` and `baseURL`, you can use environment variables that you define.
|
||||
# # recommended environment variables:
|
||||
# apiKey: '${MISTRAL_API_KEY}'
|
||||
# baseURL: 'https://api.mistral.ai/v1'
|
||||
|
||||
# # Models configuration
|
||||
# models:
|
||||
# # List of default models to use. At least one value is required.
|
||||
# default: ['mistral-tiny', 'mistral-small', 'mistral-medium']
|
||||
# # Fetch option: Set to true to fetch models from API.
|
||||
# fetch: true # Defaults to false.
|
||||
|
||||
# # Optional configurations
|
||||
|
||||
# # Title Conversation setting
|
||||
# titleConvo: true # Set to true to enable title conversation
|
||||
|
||||
# # Title Method: Choose between "completion" or "functions".
|
||||
# # titleMethod: "completion" # Defaults to "completion" if omitted.
|
||||
|
||||
# # Title Model: Specify the model to use for titles.
|
||||
# titleModel: 'mistral-tiny' # Defaults to "gpt-3.5-turbo" if omitted.
|
||||
|
||||
# # Summarize setting: Set to true to enable summarization.
|
||||
# # summarize: false
|
||||
|
||||
# # Summary Model: Specify the model to use if summarization is enabled.
|
||||
# # summaryModel: "mistral-tiny" # Defaults to "gpt-3.5-turbo" if omitted.
|
||||
|
||||
# # Force Prompt setting: If true, sends a `prompt` parameter instead of `messages`.
|
||||
# # forcePrompt: false
|
||||
|
||||
# # The label displayed for the AI model in messages.
|
||||
# modelDisplayLabel: 'Mistral' # Default is "AI" when not set.
|
||||
|
||||
# # Add additional parameters to the request. Default params will be overwritten.
|
||||
# # addParams:
|
||||
# # safe_prompt: true # This field is specific to Mistral AI: https://docs.mistral.ai/api/
|
||||
|
||||
# # Drop Default params parameters from the request. See default params in guide linked below.
|
||||
# # NOTE: For Mistral, it is necessary to drop the following parameters or you will encounter a 422 Error:
|
||||
# dropParams: ['stop', 'user', 'frequency_penalty', 'presence_penalty']
|
||||
|
||||
# # OpenRouter Example
|
||||
# - name: 'OpenRouter'
|
||||
# # For `apiKey` and `baseURL`, you can use environment variables that you define.
|
||||
# # recommended environment variables:
|
||||
# # Known issue: you should not use `OPENROUTER_API_KEY` as it will then override the `openAI` endpoint to use OpenRouter as well.
|
||||
# apiKey: '${OPENROUTER_KEY}'
|
||||
# baseURL: 'https://openrouter.ai/api/v1'
|
||||
# models:
|
||||
# default: ['gpt-3.5-turbo']
|
||||
# fetch: true
|
||||
# titleConvo: true
|
||||
# titleModel: 'gpt-3.5-turbo'
|
||||
# # Recommended: Drop the stop parameter from the request as Openrouter models use a variety of stop tokens.
|
||||
# dropParams: ['stop']
|
||||
# modelDisplayLabel: 'OpenRouter'
|
||||
# fileConfig:
|
||||
# endpoints:
|
||||
# assistants:
|
||||
# fileLimit: 5
|
||||
# fileSizeLimit: 10 # Maximum size for an individual file in MB
|
||||
# totalSizeLimit: 50 # Maximum total size for all files in a single request in MB
|
||||
# supportedMimeTypes:
|
||||
# - "image/.*"
|
||||
# - "application/pdf"
|
||||
# openAI:
|
||||
# disabled: true # Disables file uploading to the OpenAI endpoint
|
||||
# default:
|
||||
# totalSizeLimit: 20
|
||||
# YourCustomEndpointName:
|
||||
# fileLimit: 2
|
||||
# fileSizeLimit: 5
|
||||
# serverFileSizeLimit: 100 # Global server file size limit in MB
|
||||
# avatarSizeLimit: 2 # Limit for user avatar image size in MB
|
||||
# See the Custom Configuration Guide for more information:
|
||||
# https://docs.librechat.ai/install/configuration/custom_config.html
|
||||
@@ -0,0 +1,83 @@
|
||||
volumes:
|
||||
vol-emqx-data1:
|
||||
name: foo-emqx-data1
|
||||
external: true
|
||||
# vol-emqx-data2:
|
||||
# name: foo-emqx-data2
|
||||
# external: true
|
||||
|
||||
services:
|
||||
emqx1:
|
||||
image: emqx:latest
|
||||
container_name: emqx1
|
||||
# environment:
|
||||
# - "EMQX_NODE_NAME=emqx@node1.emqx.io"
|
||||
# - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static"
|
||||
# - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io,emqx@node2.emqx.io]"
|
||||
healthcheck:
|
||||
test: ["CMD", "/opt/emqx/bin/emqx", "ctl", "status"]
|
||||
interval: 60s
|
||||
timeout: 25s
|
||||
retries: 5
|
||||
networks:
|
||||
net:
|
||||
# emqx-bridge:
|
||||
# aliases:
|
||||
# - node1.emqx.io
|
||||
ports:
|
||||
- "1883:1883"
|
||||
# - 8083:8083
|
||||
# - 8084:8084
|
||||
# - 8883:8883
|
||||
# - 18083:18083
|
||||
volumes:
|
||||
- vol-emqx-data1:/opt/emqx/data
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.emqx1.entrypoints=web-secure"
|
||||
- "traefik.http.routers.emqx1.rule=Host(`mqtt.${DOMAINNAME}`)"
|
||||
- "traefik.http.routers.emqx1.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.routers.emqx1.service=emqx-dashboard"
|
||||
- "traefik.http.services.emqx-dashboard.loadbalancer.server.port=18083"
|
||||
|
||||
# emqx2:
|
||||
# image: emqx:latest
|
||||
# container_name: emqx2
|
||||
# environment:
|
||||
# - "EMQX_NODE_NAME=emqx@node2.emqx.io"
|
||||
# - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static"
|
||||
# - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io,emqx@node2.emqx.io]"
|
||||
# healthcheck:
|
||||
# test: ["CMD", "/opt/emqx/bin/emqx", "ctl", "status"]
|
||||
# interval: 60s
|
||||
# timeout: 25s
|
||||
# retries: 5
|
||||
# networks:
|
||||
# net:
|
||||
# emqx-bridge:
|
||||
# aliases:
|
||||
# - node2.emqx.io
|
||||
# volumes:
|
||||
# - vol-emqx-data2:/opt/emqx/data
|
||||
|
||||
mqttx-web:
|
||||
image: emqx/mqttx-web:latest
|
||||
container_name: mqttx_web
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- net
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.mqttx-web.entrypoints=web-secure"
|
||||
- "traefik.http.routers.mqttx-web.rule=Host(`mqttx.${DOMAINNAME}`)"
|
||||
- "traefik.http.routers.mqttx-web.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.routers.mqttx-web.service=mqttx-web-service"
|
||||
- "traefik.http.services.mqttx-web-service.loadbalancer.server.port=80"
|
||||
|
||||
networks:
|
||||
# emqx-bridge:
|
||||
# driver: bridge
|
||||
net:
|
||||
external: true
|
||||
name: ${NETWORK:-web}
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
# Do not edit this file directly. Use a ‘docker-compose.override.yaml’ file if you can.
|
||||
# Refer to `docker-compose.override.yaml.example’ for some sample configurations.
|
||||
|
||||
volumes:
|
||||
data-node:
|
||||
pgdata2:
|
||||
libre-images:
|
||||
libre-logs:
|
||||
meili_data:
|
||||
|
||||
services:
|
||||
api:
|
||||
container_name: LibreChat
|
||||
ports:
|
||||
- "${PORT}:${PORT}"
|
||||
depends_on:
|
||||
- mongodb
|
||||
- rag_api
|
||||
image: ghcr.io/danny-avila/librechat-dev:latest
|
||||
restart: always
|
||||
user: "${UID}:${GID}"
|
||||
extra_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
environment:
|
||||
- HOST=0.0.0.0
|
||||
- MONGO_URI=mongodb://mongodb:27017/LibreChat
|
||||
- MEILI_HOST=http://meilisearch:7700
|
||||
- RAG_PORT=${RAG_PORT:-8000}
|
||||
- RAG_API_URL=http://rag_api:${RAG_PORT:-8000}
|
||||
volumes:
|
||||
- type: bind
|
||||
source: ./.env
|
||||
target: /app/.env
|
||||
- libre-images:/app/client/public/images
|
||||
- libre-logs:/app/api/logs
|
||||
- type: bind
|
||||
source: ./config/librechat.yaml
|
||||
target: /app/librechat.yaml
|
||||
mongodb:
|
||||
container_name: chat-mongodb
|
||||
image: mongo
|
||||
restart: always
|
||||
user: "${UID}:${GID}"
|
||||
volumes:
|
||||
- data-node:/data/db
|
||||
command: mongod --noauth
|
||||
meilisearch:
|
||||
container_name: chat-meilisearch
|
||||
image: getmeili/meilisearch:v1.7.3
|
||||
restart: always
|
||||
user: "${UID}:${GID}"
|
||||
environment:
|
||||
- MEILI_HOST=http://meilisearch:7700
|
||||
- MEILI_NO_ANALYTICS=true
|
||||
volumes:
|
||||
- meili_data:/meili_data
|
||||
vectordb:
|
||||
container_name: vectordb
|
||||
image: ankane/pgvector:latest
|
||||
environment:
|
||||
POSTGRES_DB: mydatabase
|
||||
POSTGRES_USER: myuser
|
||||
POSTGRES_PASSWORD: mypassword
|
||||
restart: always
|
||||
volumes:
|
||||
- pgdata2:/var/lib/postgresql/data
|
||||
rag_api:
|
||||
container_name: rag_api
|
||||
image: ghcr.io/danny-avila/librechat-rag-api-dev:latest
|
||||
environment:
|
||||
POSTGRES_DB: mydatabase
|
||||
POSTGRES_USER: myuser
|
||||
POSTGRES_PASSWORD: mypassword
|
||||
DB_HOST: vectordb
|
||||
RAG_PORT: ${RAG_PORT:-8000}
|
||||
restart: always
|
||||
depends_on:
|
||||
- vectordb
|
||||
env_file:
|
||||
- .env
|
||||
|
||||
+26
-7
@@ -35,7 +35,6 @@ services:
|
||||
|
||||
postgres:
|
||||
image: postgres
|
||||
container_name: postgres
|
||||
environment:
|
||||
POSTGRES_DB: ${POSTGRES_DB}
|
||||
POSTGRES_USER: ${POSTGRES_USER}
|
||||
@@ -64,9 +63,9 @@ services:
|
||||
# - "traefik.tcp.middlewares.test-inflightconn.inflightconn.amount=10"
|
||||
- "traefik.tcp.routers.postgres.entrypoints=postgres-socket"
|
||||
- "traefik.tcp.routers.postgres.rule=HostSNI(`*`)"
|
||||
- "traefik.tcp.routers.postgres.tls=true"
|
||||
- "traefik.tcp.routers.postgres.tls.certresolver=letsencrypt"
|
||||
# - "traefik.tcp.routers.postgres.rule=HostSNIRegexp(`^.+\\.furyhawk\\.lol$`)"
|
||||
# - "traefik.tcp.routers.postgres.tls=true"
|
||||
# - "traefik.tcp.routers.postgres.tls.certresolver=letsencrypt"
|
||||
# - "traefik.tcp.routers.postgres.middlewares=test-inflightconn"
|
||||
- "traefik.tcp.routers.postgres.service=postgres_service"
|
||||
- "traefik.tcp.services.postgres_service.loadbalancer.server.port=5432"
|
||||
@@ -110,7 +109,7 @@ services:
|
||||
MINIO_ROOT_USER: "${MINIO_ROOT_USER:-minioadmin}"
|
||||
MINIO_ROOT_PASSWORD: "${MINIO_ROOT_PASSWORD:-minioadmin}"
|
||||
MINIO_OPTS: "--console-address :9001"
|
||||
MINIO_SERVER_URL: https://drive.furyhawk.lol
|
||||
MINIO_SERVER_URL: https://minio.${DOMAINNAME}
|
||||
DOMAINNAME: ${DOMAINNAME}
|
||||
# user: "1000:1000"
|
||||
restart: unless-stopped
|
||||
@@ -145,19 +144,19 @@ services:
|
||||
neo4j_server:
|
||||
# Docker image to be used
|
||||
image: ${NEO4J_DOCKER_IMAGE:-neo4j:latest}
|
||||
container_name: neo4j_server
|
||||
restart: unless-stopped
|
||||
# Environment variables
|
||||
environment:
|
||||
NEO4J_AUTH: neo4j/${NEO4J_PASSWORD:-12345678}
|
||||
NEO4J_dbms.default_listen_address: "0.0.0.0"
|
||||
NEO4J_dbms.default_advertised_address: "neo4j.furyhawk.lol"
|
||||
NEO4J_dbms.default_advertised_address: "neo4j.${DOMAINNAME}"
|
||||
NEO4J_dbms.connector.bolt.advertised_address: ":443"
|
||||
NEO4J_PLUGINS: '["apoc"]'
|
||||
NEO4J_dbms_security_procedures_unrestricted: "apoc.*"
|
||||
NEO4J_dbms_security_procedures_allowlist: "apoc.*"
|
||||
NEO4J_server_memory_pagecache_size: 512M
|
||||
NEO4J_server_memory_heap_max__size: 2G
|
||||
DOMAINNAME: ${DOMAINNAME}
|
||||
user: "1000:1000"
|
||||
depends_on:
|
||||
- traefik
|
||||
@@ -170,6 +169,26 @@ services:
|
||||
- 7687
|
||||
networks:
|
||||
- net
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.neo4j-router.entrypoints=web-secure"
|
||||
- "traefik.http.routers.neo4j-router.rule=Host(`neo4j.${DOMAINNAME}`) && PathPrefix(`/neo4j`)||PathPrefix(`/browser`)"
|
||||
- "traefik.http.routers.neo4j-router.middlewares=csrf@file, neo4j_strip@file"
|
||||
- "traefik.http.routers.neo4j-router.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.routers.neo4j-router.service=neo4j_browser"
|
||||
- "traefik.http.services.neo4j_browser.loadbalancer.server.port=7474"
|
||||
- "traefik.http.routers.neo4j-bolt-router.entrypoints=web-secure"
|
||||
- "traefik.http.routers.neo4j-bolt-router.rule=Host(`neo4j.${DOMAINNAME}`)"
|
||||
- "traefik.http.routers.neo4j-bolt-router.middlewares=csrf@file"
|
||||
- "traefik.http.routers.neo4j-bolt-router.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.routers.neo4j-bolt-router.service=neo4j_bolt"
|
||||
- "traefik.http.services.neo4j_bolt.loadbalancer.server.port=7687"
|
||||
- "traefik.tcp.routers.neo4j-bolt-router.entrypoints=bolt-socket"
|
||||
- "traefik.tcp.routers.neo4j-bolt-router.rule=HostSNIRegexp(`^.+\\.furyhawk\\.lol$`)"
|
||||
- "traefik.tcp.routers.neo4j-bolt-router.tls=true"
|
||||
- "traefik.tcp.routers.neo4j-bolt-router.tls.certresolver=letsencrypt"
|
||||
- "traefik.tcp.routers.neo4j-bolt-router.service=neo4j_bolt"
|
||||
- "traefik.tcp.services.neo4j_bolt.loadbalancer.server.port=7687"
|
||||
|
||||
syncthing:
|
||||
image: syncthing/syncthing
|
||||
@@ -265,7 +284,7 @@ services:
|
||||
# tasks:
|
||||
# tmp-dir:
|
||||
# path: /tmp/kestra-wd/tmp
|
||||
# url: http://kestra.furyhawk.lol/
|
||||
# url: http://kestra.${DOMAINNAME}/
|
||||
# volumes:
|
||||
# - kestra_data:/app/storage
|
||||
# - /var/run/docker.sock:/var/run/docker.sock
|
||||
|
||||
+56
-123
@@ -51,13 +51,13 @@ certificatesResolvers:
|
||||
|
||||
tcp:
|
||||
routers:
|
||||
neo4j-bolt-router:
|
||||
entryPoints:
|
||||
- bolt-socket
|
||||
rule: "HostSNIRegexp(`^.+\\.furyhawk\\.lol$`)"
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
service: neo4j-bolt
|
||||
# neo4j-bolt-router:
|
||||
# entryPoints:
|
||||
# - bolt-socket
|
||||
# rule: "HostSNIRegexp(`^.+\\.furyhawk\\.lol$`)"
|
||||
# tls:
|
||||
# certResolver: letsencrypt
|
||||
# service: neo4j-bolt
|
||||
|
||||
emqx-web-socket-router:
|
||||
entryPoints:
|
||||
@@ -76,10 +76,10 @@ tcp:
|
||||
# passthrough: true
|
||||
|
||||
services:
|
||||
neo4j-bolt:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- address: "neo4j_server:7687"
|
||||
# neo4j-bolt:
|
||||
# loadBalancer:
|
||||
# servers:
|
||||
# - address: "neo4j_server:7687"
|
||||
emqx-web-socket-service:
|
||||
loadBalancer:
|
||||
servers:
|
||||
@@ -126,46 +126,35 @@ http:
|
||||
# certResolver: letsencrypt
|
||||
# service: kestra_app
|
||||
|
||||
plane-router:
|
||||
entryPoints:
|
||||
- web-secure
|
||||
rule: "Host(`plan.furyhawk.lol`) || Host(`plane.furyhawk.lol`)"
|
||||
middlewares:
|
||||
- csrf
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
service: plane_app
|
||||
# plane-router:
|
||||
# entryPoints:
|
||||
# - web-secure
|
||||
# rule: "Host(`plan.furyhawk.lol`) || Host(`plane.furyhawk.lol`)"
|
||||
# middlewares:
|
||||
# - csrf
|
||||
# tls:
|
||||
# certResolver: letsencrypt
|
||||
# service: plane_app
|
||||
|
||||
neo4j-router:
|
||||
entryPoints:
|
||||
- web-secure
|
||||
rule: "Host(`neo4j.furyhawk.lol`) && PathPrefix(`/neo4j`)||PathPrefix(`/browser`)"
|
||||
middlewares:
|
||||
- csrf
|
||||
- neo4j_strip
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
service: neo4j-browser
|
||||
# graph-router:
|
||||
# entryPoints:
|
||||
# - web-secure
|
||||
# rule: "Host(`neo4j.furyhawk.lol`)"
|
||||
# middlewares:
|
||||
# - csrf
|
||||
# tls:
|
||||
# certResolver: letsencrypt
|
||||
# service: neo4j-bolt
|
||||
|
||||
graph-router:
|
||||
entryPoints:
|
||||
- web-secure
|
||||
rule: "Host(`neo4j.furyhawk.lol`)"
|
||||
middlewares:
|
||||
- csrf
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
service: neo4j-bolt
|
||||
|
||||
mqtt-http-router:
|
||||
entryPoints:
|
||||
- web-secure
|
||||
rule: "Host(`mqtt.furyhawk.lol`)"
|
||||
middlewares:
|
||||
- csrf
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
service: emqx-dashboard
|
||||
# mqtt-http-router:
|
||||
# entryPoints:
|
||||
# - web-secure
|
||||
# rule: "Host(`mqtt.furyhawk.lol`)"
|
||||
# middlewares:
|
||||
# - csrf
|
||||
# tls:
|
||||
# certResolver: letsencrypt
|
||||
# service: emqx-dashboard
|
||||
|
||||
# mqtt-socket-router:
|
||||
# rule: "Host(`mqtt.furyhawk.lol`)"
|
||||
@@ -191,50 +180,6 @@ http:
|
||||
- csrf
|
||||
service: emqx-web-socket-secure
|
||||
|
||||
mqttx-router:
|
||||
entryPoints:
|
||||
- web-secure
|
||||
rule: "Host(`mqttx.furyhawk.lol`)"
|
||||
middlewares:
|
||||
- csrf
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
service: mqttx-web
|
||||
|
||||
# info-router:
|
||||
# entryPoints:
|
||||
# - web-secure
|
||||
# rule: "Host(`furyhawk.lol`) || Host(`www.furyhawk.lol`) || Host(`info.furyhawk.lol`) || Host(`124c41.furyhawk.lol`)"
|
||||
# middlewares:
|
||||
# - csrf
|
||||
# - no-www
|
||||
# tls:
|
||||
# certResolver: letsencrypt
|
||||
# service: site_server
|
||||
|
||||
# resume-router:
|
||||
# entryPoints:
|
||||
# - web-secure
|
||||
# rule: "Host(`resume.furyhawk.lol`)"
|
||||
# # redirect to resume
|
||||
# middlewares:
|
||||
# - csrf
|
||||
# - redirect-resume
|
||||
# tls:
|
||||
# certResolver: letsencrypt
|
||||
# service: resume_server
|
||||
|
||||
# blog-router:
|
||||
# entryPoints:
|
||||
# - web-secure
|
||||
# rule: "Host(`blog.furyhawk.lol`)"
|
||||
# # redirect to external blog
|
||||
# middlewares:
|
||||
# - redirect-blog
|
||||
# tls:
|
||||
# certResolver: letsencrypt
|
||||
# service: blog
|
||||
|
||||
middlewares:
|
||||
auth:
|
||||
basicAuth:
|
||||
@@ -317,22 +262,18 @@ http:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://LibreChat:3080
|
||||
neo4j-browser:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://neo4j_server:7474
|
||||
neo4j-bolt:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://neo4j_server:7687
|
||||
plane_app:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://node01:80
|
||||
emqx-mqtt-socket:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://emqx1:1883
|
||||
# neo4j-bolt:
|
||||
# loadBalancer:
|
||||
# servers:
|
||||
# - url: http://neo4j_server:7687
|
||||
# plane_app:
|
||||
# loadBalancer:
|
||||
# servers:
|
||||
# - url: http://node01:80
|
||||
# emqx-mqtt-socket:
|
||||
# loadBalancer:
|
||||
# servers:
|
||||
# - url: http://emqx1:1883
|
||||
emqx-web-socket:
|
||||
loadBalancer:
|
||||
servers:
|
||||
@@ -343,22 +284,10 @@ http:
|
||||
servers:
|
||||
- url: http://emqx1:8084
|
||||
# - url: http://emqx2:8084
|
||||
emqx-dashboard:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://emqx1:18083
|
||||
mqttx-web:
|
||||
loadBalancer:
|
||||
servers:
|
||||
- url: http://mqttx_web:80
|
||||
# resume_server:
|
||||
# emqx-dashboard:
|
||||
# loadBalancer:
|
||||
# servers:
|
||||
# - url: http://site_server:80
|
||||
# blog:
|
||||
# loadBalancer:
|
||||
# servers:
|
||||
# - url: https://furyhawk.github.io/124c41/
|
||||
# - url: http://emqx1:18083
|
||||
|
||||
providers:
|
||||
# https://docs.traefik.io/master/providers/file/
|
||||
@@ -369,3 +298,7 @@ providers:
|
||||
network: web
|
||||
exposedByDefault: false
|
||||
endpoint: "unix:///var/run/docker.sock"
|
||||
swarm:
|
||||
# network: overwatch
|
||||
exposedByDefault: false
|
||||
endpoint: "unix:///var/run/docker.sock"
|
||||
|
||||
-1
Submodule emqx-docker deleted from 554e4b1872
@@ -3,10 +3,9 @@
|
||||
# Variables
|
||||
|
||||
# Commands
|
||||
serve: down
|
||||
serve: pull
|
||||
@echo "Serving the project..."
|
||||
docker compose -f compose.yml up -d --build traefik
|
||||
docker compose -f compose.yml up -d
|
||||
docker compose -f compose.yml up -d --build --pull always
|
||||
down: pull
|
||||
@echo "Stopping the project..."
|
||||
docker compose -f compose.yml down --remove-orphans
|
||||
|
||||
Reference in New Issue
Block a user