mirror of
https://github.com/kossakovsky/n8n-install.git
synced 2026-03-07 14:23:08 +00:00
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:
2
.cursorignore
Normal file
2
.cursorignore
Normal file
@@ -0,0 +1,2 @@
|
||||
# Add directories or file patterns to ignore during indexing (e.g. foo/ or *.csv)
|
||||
!.env.example
|
||||
13
.env.example
13
.env.example
@@ -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
8
.gitignore
vendored
@@ -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/
|
||||
@@ -56,6 +56,11 @@
|
||||
reverse_proxy prometheus:9090
|
||||
}
|
||||
|
||||
# Neo4j
|
||||
{$NEO4J_HOSTNAME} {
|
||||
reverse_proxy neo4j:7474
|
||||
}
|
||||
|
||||
# SearXNG
|
||||
{$SEARXNG_HOSTNAME} {
|
||||
basic_auth {
|
||||
|
||||
@@ -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`
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user