Compare commits

...

3 Commits

Author SHA1 Message Date
08003fcbac Basic AI chat working 2025-10-15 11:15:24 +01:00
50b848d2dc small changes 2025-10-14 23:01:07 +01:00
aee12cb2ec Get Nextcloud working (I hope) 2025-07-25 23:22:07 +01:00
6 changed files with 143 additions and 115 deletions

View File

@@ -5,13 +5,13 @@ x-logging: &logging
max-size: "5m"
max-file: "2"
x-firecrawl-service: &firecrawl-service
image: ghcr.io/mendableai/firecrawl
x-firecrawl-env: &firecrawl-env
REDIS_URL: redis://redis:6379
REDIS_RATE_LIMIT_URL: redis://redis:6379
PLAYWRIGHT_MICROSERVICE_URL: http://playwright:3000/scrape
#x-firecrawl-service: &firecrawl-service
# image: ghcr.io/mendableai/firecrawl
#
#x-firecrawl-env: &firecrawl-env
# REDIS_URL: redis://redis:6379
# REDIS_RATE_LIMIT_URL: redis://redis:6379
# PLAYWRIGHT_MICROSERVICE_URL: http://playwright:3000/scrape
services:
# change:
@@ -59,14 +59,17 @@ services:
- nginx
nextcloud:
profiles: ["prod"]
profiles: ["prod", "dev"]
<<: *logging
build: ./nextcloud
image: nextcloud:31-fpm-alpine
image: nextcloud:32-fpm-alpine
restart: unless-stopped
user: 1000:1000
ports:
- 9000:9000
volumes:
- nextcloud:/var/www/html
- ./nextcloud/redis-session.ini:/usr/local/etc/php/conf.d/redis-session.ini
- /mnt/tower/stardust:/var/www/html/data
- /mnt/tower/foundry:/var/www/foundry
environment:
@@ -115,6 +118,7 @@ services:
- VIRTUAL_PORT=9980
- "DONT_GEN_SSL_CERT=True"
- domain=tower.${DOMAIN}
- "aliasgroup1=https://tower.${DOMAIN}"
- cert_domain=office.${DOMAIN}
- server_name=office.${DOMAIN}
- username=${COLLABORA_USER}
@@ -172,7 +176,7 @@ services:
- db
depends_on:
- mongodb
- rag_api
# - rag_api
restart: always
extra_hosts:
- "host.docker.internal:host-gateway"
@@ -184,14 +188,14 @@ services:
- HOST=0.0.0.0
- NODE_ENV=production
- MONGO_URI=mongodb://${DB_USER}:${DB_PASSWORD}@mongodb:27017/LibreChat?authSource=admin
- MEILI_HOST=http://meilisearch:7700
- MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
- RAG_PORT=8000
- RAG_API_URL=http://rag_api:8000
- SEARXNG_INSTANCE_URL=http://searxng:8080
- SEARXNG_API_KEY=${SEARXNG_SECRET_KEY}
- FIRECRAWL_URL=http://firecrawl:3002
- FIRECRWAL_API_KEY=
#- MEILI_HOST=http://meilisearch:7700
#- MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
#- RAG_PORT=8000
#- RAG_API_URL=http://rag_api:8000
#- SEARXNG_INSTANCE_URL=http://searxng:8080
#- SEARXNG_API_KEY=${SEARXNG_SECRET_KEY}
#- FIRECRAWL_URL=http://firecrawl:3002
#- FIRECRWAL_API_KEY=
- ALLOW_EMAIL_LOGIN=true
- ALLOW_REGISTRATION=false
- ALLOW_SOCIAL_LOGIN=false
@@ -205,9 +209,10 @@ services:
- JWT_REFRESH_SECRET=${LIBRECHAT_JWT_REFRESH_SECRET}
- AIHUBMIX_KEY=${AIHUBMIX_KEY}
- OPENROUTER_KEY=${OPENROUTER_KEY}
- IMAGE_GEN_OAI_BASEURL=https://aihubmix.com/v1
- IMAGE_GEN_OAI_API_KEY=${AIHUBMIX_KEY}
- IMAGE_GEN_OAI_MODEL=gpt-image-1
- JINA_API_KEY=${JINA_API_KEY}
#- JINA_API_KEY=${JINA_API_KEY}
volumes:
- type: bind
source: ./librechat/librechat.yaml
@@ -270,7 +275,7 @@ services:
- PRUNE_BACKUPS_DAYS=30
volumes:
- minecraft:/data:ro
- /mnt/tower/backups/minecraft:/backups
- /mnt/backups/minecraft:/backups
navidrome:
profiles: ["prod"]
@@ -676,52 +681,52 @@ services:
networks:
- db
playwright:
profiles: ["prod", "dev"]
<<: *logging
image: ghcr.io/mendableai/playwright-service:latest
environment:
PORT: 3000
BLOCK_MEDIA: true
networks:
- playwright
#playwright:
# profiles: ["prod", "dev"]
# <<: *logging
# image: ghcr.io/mendableai/playwright-service:latest
# environment:
# PORT: 3000
# BLOCK_MEDIA: true
# networks:
# - playwright
firecrawl:
profiles: ["prod", "dev"]
<<: [*logging, *firecrawl-service]
environment:
<<: *firecrawl-env
HOST: "0.0.0.0"
PORT: 3002
FLY_PROCESS_GROUP: app
ENV: local
VIRTUAL_HOST: scraper.${DOMAIN}
CERT_NAME: ${DOMAIN}
VIRTUAL_PORT: 3002
depends_on:
- redis
- playwright
ports:
- "3002:3002"
networks:
- redis
- playwright
command: [ "pnpm", "run", "start:production" ]
#firecrawl:
# profiles: ["prod", "dev"]
# <<: [*logging, *firecrawl-service]
# environment:
# <<: *firecrawl-env
# HOST: "0.0.0.0"
# PORT: 3002
# FLY_PROCESS_GROUP: app
# ENV: local
# VIRTUAL_HOST: scraper.${DOMAIN}
# CERT_NAME: ${DOMAIN}
# VIRTUAL_PORT: 3002
# depends_on:
# - redis
# - playwright
# ports:
# - "3002:3002"
# networks:
# - redis
# - playwright
# command: [ "pnpm", "run", "start:production" ]
firecrawl-worker:
profiles: ["prod", "dev"]
<<: [*firecrawl-service, *logging]
environment:
<<: *firecrawl-env
FLY_PROCESS_GROUP: worker
networks:
- redis
- playwright
depends_on:
- redis
- playwright
- firecrawl
command: [ "pnpm", "run", "workers" ]
#firecrawl-worker:
# profiles: ["prod", "dev"]
# <<: [*firecrawl-service, *logging]
# environment:
# <<: *firecrawl-env
# FLY_PROCESS_GROUP: worker
# networks:
# - redis
# - playwright
# depends_on:
# - redis
# - playwright
# - firecrawl
# command: [ "pnpm", "run", "workers" ]
redis:
profiles: ["prod", "dev"]
@@ -747,50 +752,50 @@ services:
- MONGO_INITDB_ROOT_PASSWORD=${DB_PASSWORD}
<<: *logging
meilisearch:
profiles: ["prod", "dev"]
image: getmeili/meilisearch:v1.12.3
restart: always
networks:
- db
# ports:
# - 7700:7700
environment:
- MEILI_HOST=http://meilisearch:7700
- MEILI_NO_ANALYTICS=true
- MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
volumes:
- meilisearch:/meili_data
<<: *logging
#meilisearch:
# profiles: ["prod", "dev"]
# image: getmeili/meilisearch:v1.12.3
# restart: always
# networks:
# - db
# # ports:
# # - 7700:7700
# environment:
# - MEILI_HOST=http://meilisearch:7700
# - MEILI_NO_ANALYTICS=true
# - MEILI_MASTER_KEY=${MEILI_MASTER_KEY}
# volumes:
# - meilisearch:/meili_data
# <<: *logging
vectordb:
profiles: ["prod", "dev"]
image: ankane/pgvector:latest
networks:
- db
environment:
POSTGRES_DB: mydatabase
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
restart: always
volumes:
- pgdata2:/var/lib/postgresql/data
<<: *logging
#vectordb:
# profiles: ["prod", "dev"]
# image: ankane/pgvector:latest
# networks:
# - db
# environment:
# POSTGRES_DB: mydatabase
# POSTGRES_USER: myuser
# POSTGRES_PASSWORD: mypassword
# restart: always
# volumes:
# - pgdata2:/var/lib/postgresql/data
# <<: *logging
rag_api:
profiles: ["prod", "dev"]
image: ghcr.io/danny-avila/librechat-rag-api-dev:latest
environment:
- DB_HOST=vectordb
- RAG_PORT=8000
- EMBEDDINGS_PROVIDER=huggingface
- HF_TOKEN=${HF_TOKEN}
restart: always
networks:
- db
depends_on:
- vectordb
<<: *logging
#rag_api:
# profiles: ["prod", "dev"]
# image: ghcr.io/danny-avila/librechat-rag-api-dev:latest
# environment:
# - DB_HOST=vectordb
# - RAG_PORT=8000
# - EMBEDDINGS_PROVIDER=huggingface
# - HF_TOKEN=${HF_TOKEN}
# restart: always
# networks:
# - db
# depends_on:
# - vectordb
# <<: *logging
nginx:
<<: *logging
@@ -838,13 +843,13 @@ volumes:
change:
mongodb:
searxng:
pgdata2:
meilisearch:
#pgdata2:
#meilisearch:
networks:
db:
nginx:
redis:
meet.jitsi:
playwright:
#playwright:

View File

@@ -1,4 +1,4 @@
FROM nextcloud:30-fpm-alpine
FROM nextcloud:32-fpm-alpine
RUN set -ex; \
\

View File

@@ -0,0 +1,5 @@
session.save_handler = redis
session.save_path = "tcp://redis:6379"
redis.session.locking_enabled = 1
redis.session.lock_retries = -1
redis.session.lock_wait_time = 10000

View File

@@ -131,6 +131,16 @@ http {
# This module is currently not supported.
#pagespeed off;
# Set .mjs and .wasm MIME types
# Either include it in the default mime.types list
# and include that list explicitly or add the file extension
# only for Nextcloud like below:
include mime.types;
types {
text/javascript mjs;
application/wasm wasm;
}
location / {
rewrite ^ /index.php;
}

View File

@@ -1,4 +1,4 @@
Need to figure out how to get this working with nginx-proxy
# Need to figure out how to get this working with nginx-proxy
# This file is for the /change/socket.io and /change/peer paths
location ~ ^/change/(socket\.io|peer) {

View File

@@ -48,13 +48,13 @@ location ~ \.php(?:$|/) {
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param HTTPS on;
fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice
fastcgi_param front_controller_active true; # Enable pretty urls
fastcgi_pass http://$server_name;
fastcgi_pass $server_name;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
@@ -66,7 +66,8 @@ location ~ \.php(?:$|/) {
location ~ \.(?:css|js|mjs|svg|gif|ico|jpg|png|webp|wasm|tflite|map|ogg|flac)$ {
try_files $uri /index.php$request_uri;
# HTTP response headers borrowed from Nextcloud `.htaccess`
add_header Cache-Control "public, max-age=15778463$asset_immutable";
add_header Cache-Control "public, max-age=15778463";
# add_header Cache-Control "public, max-age=15778463$asset_immutable";
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
@@ -82,12 +83,19 @@ location ~ \.(otf|woff2?)$ {
access_log off; # Optional: Don't log access to assets
}
location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap|mp4|webm)$ {
try_files $uri /index.php$request_uri;
# Optional: Don't log access to other assets
access_log off;
}
# Rule borrowed from `.htaccess`
location /remote {
return 301 /remote.php$request_uri;
}
location / {
try_files $uri $uri/ /index.php$request_uri;
rewrite ^ /index.php;
# try_files $uri $uri/ /index.php$request_uri;
}