Spaces:
danilonovais
/
Running on CPU Upgrade

danilonovais commited on
Commit
0c10583
·
1 Parent(s): 17471d7

Add GitHub Actions workflows and update .env config

Browse files

Introduces three new GitHub Actions workflows for nightly backups, deployment to Hugging Face Spaces, and syncing knowledge to Supabase/pgvector. Updates the .env configuration to move sensitive credentials to secrets, add runtime and logging options, and improve security by removing hardcoded secrets and clarifying usage of environment variables.

.github/workflows/backup-workflows.yml ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Nightly Backup (DB + Workflows)
2
+
3
+ on:
4
+ schedule:
5
+ - cron: "23 2 * * *" # daily at 02:23 UTC
6
+ workflow_dispatch:
7
+
8
+ jobs:
9
+ backup:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+
14
+ - name: Install Postgres client
15
+ run: |
16
+ sudo apt-get update
17
+ sudo apt-get install -y postgresql-client
18
+
19
+ - name: Run backup script
20
+ env:
21
+ DB_HOST: ${{ secrets.DB_HOST }}
22
+ DB_PORT: ${{ secrets.DB_PORT }}
23
+ DB_NAME: ${{ secrets.DB_NAME }}
24
+ DB_USER: ${{ secrets.DB_USER }}
25
+ DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
26
+ N8N_BASE_URL: ${{ secrets.N8N_BASE_URL }}
27
+ N8N_API_KEY: ${{ secrets.N8N_API_KEY }}
28
+ run: |
29
+ chmod +x scripts/backup.sh
30
+ ./scripts/backup.sh
31
+
32
+ - name: Upload artifacts
33
+ uses: actions/upload-artifact@v4
34
+ with:
35
+ name: n8n-backup
36
+ path: workflows/backup/**
.github/workflows/deploy-to-hf.yml ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Deploy to Hugging Face Space
2
+
3
+ on:
4
+ push:
5
+ branches: ["main"]
6
+ tags:
7
+ - "n8n-v*"
8
+ workflow_dispatch:
9
+
10
+ jobs:
11
+ push-to-hf-space:
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - name: Checkout
15
+ uses: actions/checkout@v4
16
+
17
+ - name: Configure Git
18
+ run: |
19
+ git config user.name "ci-bot"
20
+ git config user.email "[email protected]"
21
+
22
+ - name: Push to HF Space repo
23
+ env:
24
+ HF_TOKEN: ${{ secrets.HF_TOKEN }}
25
+ run: |
26
+ # TODO: replace with your Space path
27
+ HF_SPACE_REPO="https://huggingface.co/spaces/danilonovais/n8n-dan"
28
+ git remote add hf "https://user:${HF_TOKEN}@${HF_SPACE_REPO#https://}"
29
+ git push hf HEAD:main --force
.github/workflows/sync-knowledge.yml ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Sync Knowledge (GitHub → Supabase/pgvector)
2
+
3
+ on:
4
+ schedule:
5
+ - cron: "17 */6 * * *" # every 6h
6
+ workflow_dispatch:
7
+
8
+ jobs:
9
+ sync:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+
14
+ - name: Setup Node
15
+ uses: actions/setup-node@v4
16
+ with:
17
+ node-version: 20
18
+
19
+ - name: Install deps
20
+ run: npm ci || npm i
21
+
22
+ - name: Run sync script
23
+ env:
24
+ OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
25
+ SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
26
+ SUPABASE_SERVICE_ROLE_KEY: ${{ secrets.SUPABASE_SERVICE_ROLE_KEY }}
27
+ KNOWLEDGE_REPO_URL: ${{ secrets.KNOWLEDGE_REPO_URL }}
28
+ KNOWLEDGE_DIRS: ${{ secrets.KNOWLEDGE_DIRS }}
29
+ run: |
30
+ node scripts/sync-knowledge.mjs
config/.env CHANGED
@@ -5,7 +5,16 @@
5
  N8N_ENCRYPTION_KEY=wzU4MDO5k77AsKSU10gZILj7qkxQzoYD
6
  N8N_USER_MANAGEMENT_JWT_SECRET=rwTS25Uo0hKYcArORBS7mIMYXyo4A3av
7
  N8N_HOST=danilonovais-n8n-dan.hf.space
8
- WEBHOOK_URL=https://danilonovais-n8n-dan.hf.space
 
 
 
 
 
 
 
 
 
9
 
10
  # ===== DATABASE CONFIGURATION =====
11
  DB_TYPE=postgresdb
@@ -13,24 +22,31 @@ DB_POSTGRESDB_HOST=aws-1-sa-east-1.pooler.supabase.com
13
  DB_POSTGRESDB_PORT=6543
14
  DB_POSTGRESDB_DATABASE=postgres
15
  DB_POSTGRESDB_USER=postgres.vkgwjmvekrlrjybbmtks
16
- DB_POSTGRESDB_PASSWORD=An@10011982@@
 
 
17
  DB_POSTGRESDB_SSL=true
 
18
 
19
  # ===== DEPLOYMENT CONFIGURATION =====
20
- HF_TOKEN=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
 
21
  HF_SPACE_NAME=danilonovais/n8n-dan
22
- GITHUB_TOKEN=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
 
23
 
24
  # ===== AI INTEGRATIONS =====
25
  GOOGLE_PROJECT_ID=peppy-flame-468203-e0
26
  GOOGLE_CREDENTIALS_PATH=/home/node/.n8n/credentials/google-service-account.json
27
- OPENAI_API_KEY=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
28
- ANTHROPIC_API_KEY=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
 
 
29
  VERTEX_AI_PROJECT=n8n-workflows
30
  VERTEX_AI_LOCATION=us-central1
31
 
32
  # ===== VECTOR STORE CONFIGURATION =====
33
- CHROMA_AUTH_TOKEN=ck-EDcCL7iYVGiP3RjdvqY5RgeXjJrwHFHfYvNSQEZaJ12Q
34
  CHROMA_HOST=api.chroma.com
35
  CHROMA_PORT=443
36
 
@@ -49,10 +65,10 @@ SENTRY_DSN=your-sentry-dsn (optional)
49
  # ===== BACKUP CONFIGURATION =====
50
  BACKUP_SCHEDULE=0 2 * * *
51
  BACKUP_RETENTION_DAYS=30
52
- BACKUP_ENCRYPTION_PASSWORD=An@10011982@@
53
 
54
  # ===== SECURITY =====
55
- ALLOWED_ORIGINS=https://danilonovais-n8n-dan.hf.space,https://meudominio.com
56
- CSRF_SECRET=$(LC_ALL=C tr -dc 'A-Za-z0-9' </dev/urandom | head -c 32 ; echo)
57
  RATE_LIMIT_WINDOW=15
58
  RATE_LIMIT_MAX=100
 
5
  N8N_ENCRYPTION_KEY=wzU4MDO5k77AsKSU10gZILj7qkxQzoYD
6
  N8N_USER_MANAGEMENT_JWT_SECRET=rwTS25Uo0hKYcArORBS7mIMYXyo4A3av
7
  N8N_HOST=danilonovais-n8n-dan.hf.space
8
+ N8N_PUBLIC_API_DISABLED=false
9
+ N8N_LOG_LEVEL=info
10
+ N8N_METRICS=true
11
+ QUEUE_BULL_REDIS_DISABLED=true
12
+ EXECUTIONS_MODE=regular
13
+ EXECUTIONS_DATA_SAVE_ON_ERROR=all
14
+ EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
15
+ EXECUTIONS_DATA_PRUNE=true
16
+ EXECUTIONS_DATA_MAX_AGE=336
17
+ WEBHOOK_URL=https://danilonovais-n8n-dan.hf.space/
18
 
19
  # ===== DATABASE CONFIGURATION =====
20
  DB_TYPE=postgresdb
 
22
  DB_POSTGRESDB_PORT=6543
23
  DB_POSTGRESDB_DATABASE=postgres
24
  DB_POSTGRESDB_USER=postgres.vkgwjmvekrlrjybbmtks
25
+ DB_POSTGRESDB_SCHEMA=public
26
+ # NOTE: Keep DB password only in HF Space Secrets (runtime)
27
+ DB_POSTGRESDB_PASSWORD=
28
  DB_POSTGRESDB_SSL=true
29
+ DB_POSTGRESDB_SSL_REJECT_UNAUTHORIZED=false
30
 
31
  # ===== DEPLOYMENT CONFIGURATION =====
32
+ # NOTE: Move HF_TOKEN to GitHub Actions Secrets (not used by runtime container)
33
+ HF_TOKEN=
34
  HF_SPACE_NAME=danilonovais/n8n-dan
35
+ # NOTE: Move GITHUB_TOKEN to GitHub Actions Secrets (not used by runtime container)
36
+ GITHUB_TOKEN=
37
 
38
  # ===== AI INTEGRATIONS =====
39
  GOOGLE_PROJECT_ID=peppy-flame-468203-e0
40
  GOOGLE_CREDENTIALS_PATH=/home/node/.n8n/credentials/google-service-account.json
41
+ GOOGLE_APPLICATION_CREDENTIALS=/home/node/.n8n/credentials/google-service-account.json
42
+ # NOTE: Keep AI/API keys in HF Space Secrets (runtime) and/or GitHub Actions Secrets
43
+ OPENAI_API_KEY=
44
+ ANTHROPIC_API_KEY=
45
  VERTEX_AI_PROJECT=n8n-workflows
46
  VERTEX_AI_LOCATION=us-central1
47
 
48
  # ===== VECTOR STORE CONFIGURATION =====
49
+ CHROMA_AUTH_TOKEN=
50
  CHROMA_HOST=api.chroma.com
51
  CHROMA_PORT=443
52
 
 
65
  # ===== BACKUP CONFIGURATION =====
66
  BACKUP_SCHEDULE=0 2 * * *
67
  BACKUP_RETENTION_DAYS=30
68
+ BACKUP_ENCRYPTION_PASSWORD=
69
 
70
  # ===== SECURITY =====
71
+ ALLOWED_ORIGINS=https://danilonovais-n8n-dan.hf.space
72
+ CSRF_SECRET=REPLACE_WITH_RANDOM_32_64_CHAR_STRING
73
  RATE_LIMIT_WINDOW=15
74
  RATE_LIMIT_MAX=100