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

View File

@@ -1,4 +1,4 @@
FROM nextcloud:30-fpm-alpine FROM nextcloud:32-fpm-alpine
RUN set -ex; \ 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. # This module is currently not supported.
#pagespeed off; #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 / { location / {
rewrite ^ /index.php; 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 # This file is for the /change/socket.io and /change/peer paths
location ~ ^/change/(socket\.io|peer) { location ~ ^/change/(socket\.io|peer) {

View File

@@ -48,13 +48,13 @@ location ~ \.php(?:$|/) {
try_files $fastcgi_script_name =404; try_files $fastcgi_script_name =404;
include fastcgi_params; 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 PATH_INFO $path_info;
fastcgi_param HTTPS on; fastcgi_param HTTPS on;
fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice
fastcgi_param front_controller_active true; # Enable pretty urls fastcgi_param front_controller_active true; # Enable pretty urls
fastcgi_pass http://$server_name; fastcgi_pass $server_name;
fastcgi_intercept_errors on; fastcgi_intercept_errors on;
fastcgi_request_buffering off; 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)$ { location ~ \.(?:css|js|mjs|svg|gif|ico|jpg|png|webp|wasm|tflite|map|ogg|flac)$ {
try_files $uri /index.php$request_uri; try_files $uri /index.php$request_uri;
# HTTP response headers borrowed from Nextcloud `.htaccess` # 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 Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always; add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" 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 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` # Rule borrowed from `.htaccess`
location /remote { location /remote {
return 301 /remote.php$request_uri; return 301 /remote.php$request_uri;
} }
location / { location / {
try_files $uri $uri/ /index.php$request_uri; rewrite ^ /index.php;
# try_files $uri $uri/ /index.php$request_uri;
} }