Add Neo4j service configuration and update related files

- Introduced Neo4j service in docker-compose.yml with necessary environment variables and volume mappings.
- Updated Caddyfile to include reverse proxy settings for Neo4j.
- Enhanced .env.example to include placeholders for Neo4j username and password.
- Modified README.md to document Neo4j integration and access details.
- Added .cursorignore file to specify files and directories to ignore during indexing.
This commit is contained in:
Yury Kossakovsky
2025-05-27 14:23:01 -06:00
7 changed files with 46 additions and 6 deletions

2
.cursorignore Normal file
View File

@@ -0,0 +1,2 @@
# Add directories or file patterns to ignore during indexing (e.g. foo/ or *.csv)
!.env.example

View File

@@ -67,6 +67,16 @@ DASHBOARD_PASSWORD=
POOLER_TENANT_ID=1000
############
# [required]
# Neo4j username and password
# Replace "neo4j" with your chosen username and "password" with your chosen password.
# Keep the "/" as a separator between the two.
############
NEO4J_AUTH_USERNAME=
NEO4J_AUTH_PASSWORD=
############
# [required]
# Langfuse credentials
@@ -104,6 +114,7 @@ FLOWISE_HOSTNAME=flowise.yourdomain.com
SUPABASE_HOSTNAME=supabase.yourdomain.com
LANGFUSE_HOSTNAME=langfuse.yourdomain.com
SEARXNG_HOSTNAME=searxng.yourdomain.com
NEO4J_HOSTNAME=neo4j.yourdomain.com
GRAFANA_HOSTNAME=grafana.yourdomain.com
PROMETHEUS_HOSTNAME=prometheus.yourdomain.com
LETTA_HOSTNAME=letta.yourdomain.com
@@ -184,7 +195,7 @@ MAILER_URLPATHS_EMAIL_CHANGE="/auth/v1/verify"
## Email auth
ENABLE_EMAIL_SIGNUP=true
ENABLE_EMAIL_AUTOCONFIRM=false
ENABLE_EMAIL_AUTOCONFIRM=true
SMTP_ADMIN_EMAIL=admin@example.com
SMTP_HOST=supabase-mail
SMTP_PORT=2500

8
.gitignore vendored
View File

@@ -2,8 +2,10 @@
.env
.env.bak
.env.test
volumes/
neo4j/
searxng/settings.yml
searxng/uwsgi*
shared-backup/
shared/
supabase/
searxng/uwsgi.ini
searxng/settings.yml
volumes/

View File

@@ -56,6 +56,11 @@
reverse_proxy prometheus:9090
}
# Neo4j
{$NEO4J_HOSTNAME} {
reverse_proxy neo4j:7474
}
# SearXNG
{$SEARXNG_HOSTNAME} {
basic_auth {

View File

@@ -44,6 +44,8 @@ The installer also makes the following powerful open-source tools **available fo
✅ [**Weaviate**](https://weaviate.io/) - An open-source AI-native vector database with a focus on scalability and ease of use. It can be used for RAG, hybrid search, and more.
✅ [**Neo4j**](https://neo4j.com/) - A graph database management system that allows you to model, store, and query data as a network of nodes and relationships. It's particularly well-suited for complex, interconnected data often found in AI applications, such as knowledge graphs.
✅ [**Ollama**](https://ollama.com/) - Run Llama 3, Mistral, Gemma, and other large language models locally.
✅ [**Prometheus**](https://prometheus.io/) - An open-source monitoring and alerting toolkit to keep an eye on system health.
@@ -117,6 +119,7 @@ The services will be available at the following addresses (replace `yourdomain.c
- **Langfuse:** `langfuse.yourdomain.com`
- **Letta:** `letta.yourdomain.com`
- **Weaviate:** `weaviate.yourdomain.com`
- **Neo4j:** `neo4j.yourdomain.com`
- **Grafana:** `grafana.yourdomain.com`
- **SearXNG:** `searxng.yourdomain.com`
- **Prometheus:** `prometheus.yourdomain.com`

View File

@@ -147,6 +147,19 @@ services:
expose:
- "6333"
neo4j:
image: neo4j:latest
container_name: neo4j
profiles: ["neo4j"]
restart: unless-stopped
volumes:
- ./neo4j/logs:/logs
- ./neo4j/config:/config
- ./neo4j/data:/data
- ./neo4j/plugins:/plugins
environment:
- NEO4J_AUTH=${NEO4J_AUTH_USERNAME}/${NEO4J_AUTH_PASSWORD}
caddy:
container_name: caddy
image: docker.io/library/caddy:2-alpine
@@ -165,6 +178,7 @@ services:
- SUPABASE_HOSTNAME=${SUPABASE_HOSTNAME}
- SEARXNG_HOSTNAME=${SEARXNG_HOSTNAME}
- LANGFUSE_HOSTNAME=${LANGFUSE_HOSTNAME}
- NEO4J_HOSTNAME=${NEO4J_HOSTNAME}
- LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL:-internal}
- PROMETHEUS_HOSTNAME=${PROMETHEUS_HOSTNAME}
- GRAFANA_HOSTNAME=${GRAFANA_HOSTNAME}

View File

@@ -47,6 +47,7 @@ declare -A VARS_TO_GENERATE=(
["LANGFUSE_INIT_PROJECT_SECRET_KEY"]="langfuse_sk:32"
["WEAVIATE_PASSWORD"]="password:32" # Password for Caddy basic auth
["WEAVIATE_API_KEY"]="secret:48" # API Key for Weaviate service (36 bytes -> 48 chars base64)
["NEO4J_AUTH_PASSWORD"]="password:32" # Added Neo4j password
)
# Check if .env file already exists
@@ -332,6 +333,7 @@ generated_values["LANGFUSE_INIT_USER_EMAIL"]="$USER_EMAIL"
generated_values["N8N_WORKER_COUNT"]="$N8N_WORKER_COUNT"
generated_values["N8N_WORKFLOWS_IMPORTED_EVER"]="$N8N_WORKFLOWS_IMPORTED_EVER_VALUE"
generated_values["WEAVIATE_USERNAME"]="$USER_EMAIL" # Set Weaviate username for Caddy
generated_values["NEO4J_AUTH_USERNAME"]="$USER_EMAIL" # Set Neo4j username
if [[ -n "$OPENAI_API_KEY" ]]; then
generated_values["OPENAI_API_KEY"]="$OPENAI_API_KEY"
fi
@@ -354,6 +356,7 @@ found_vars["LANGFUSE_INIT_USER_EMAIL"]=0
found_vars["N8N_WORKER_COUNT"]=0
found_vars["N8N_WORKFLOWS_IMPORTED_EVER"]=0
found_vars["WEAVIATE_USERNAME"]=0
found_vars["NEO4J_AUTH_USERNAME"]=0
# Read template, substitute domain, generate initial values
while IFS= read -r line || [[ -n "$line" ]]; do
@@ -399,7 +402,7 @@ while IFS= read -r line || [[ -n "$line" ]]; do
# This 'else' block is for lines from template not covered by existing values or VARS_TO_GENERATE.
# Check if it is one of the user input vars - these are handled by found_vars later if not in template.
is_user_input_var=0 # Reset for each line
user_input_vars=("FLOWISE_USERNAME" "DASHBOARD_USERNAME" "LETSENCRYPT_EMAIL" "RUN_N8N_IMPORT" "PROMETHEUS_USERNAME" "SEARXNG_USERNAME" "OPENAI_API_KEY" "LANGFUSE_INIT_USER_EMAIL" "N8N_WORKER_COUNT" "N8N_WORKFLOWS_IMPORTED_EVER" "WEAVIATE_USERNAME")
user_input_vars=("FLOWISE_USERNAME" "DASHBOARD_USERNAME" "LETSENCRYPT_EMAIL" "RUN_N8N_IMPORT" "PROMETHEUS_USERNAME" "SEARXNG_USERNAME" "OPENAI_API_KEY" "LANGFUSE_INIT_USER_EMAIL" "N8N_WORKER_COUNT" "N8N_WORKFLOWS_IMPORTED_EVER" "WEAVIATE_USERNAME" "NEO4J_AUTH_USERNAME")
for uivar in "${user_input_vars[@]}"; do
if [[ "$varName" == "$uivar" ]]; then
is_user_input_var=1
@@ -487,7 +490,7 @@ else
fi
# Add any custom variables that weren't found in the template
for var in "FLOWISE_USERNAME" "DASHBOARD_USERNAME" "LETSENCRYPT_EMAIL" "RUN_N8N_IMPORT" "OPENAI_API_KEY" "PROMETHEUS_USERNAME" "SEARXNG_USERNAME" "LANGFUSE_INIT_USER_EMAIL" "N8N_WORKER_COUNT" "N8N_WORKFLOWS_IMPORTED_EVER" "WEAVIATE_USERNAME"; do
for var in "FLOWISE_USERNAME" "DASHBOARD_USERNAME" "LETSENCRYPT_EMAIL" "RUN_N8N_IMPORT" "OPENAI_API_KEY" "PROMETHEUS_USERNAME" "SEARXNG_USERNAME" "LANGFUSE_INIT_USER_EMAIL" "N8N_WORKER_COUNT" "N8N_WORKFLOWS_IMPORTED_EVER" "WEAVIATE_USERNAME" "NEO4J_AUTH_USERNAME"; do
if [[ ${found_vars["$var"]} -eq 0 && -v generated_values["$var"] ]]; then
# Before appending, check if it's already in TMP_ENV_FILE to avoid duplicates
if ! grep -q -E "^${var}=" "$TMP_ENV_FILE"; then