Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
Commit
·
0c10583
1
Parent(s):
17471d7
Add GitHub Actions workflows and update .env config
Browse filesIntroduces 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 +36 -0
- .github/workflows/deploy-to-hf.yml +29 -0
- .github/workflows/sync-knowledge.yml +30 -0
- config/.env +26 -10
.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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
|
|
|
|
17 |
DB_POSTGRESDB_SSL=true
|
|
|
18 |
|
19 |
# ===== DEPLOYMENT CONFIGURATION =====
|
20 |
-
HF_TOKEN
|
|
|
21 |
HF_SPACE_NAME=danilonovais/n8n-dan
|
22 |
-
GITHUB_TOKEN
|
|
|
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 |
-
|
28 |
-
|
|
|
|
|
29 |
VERTEX_AI_PROJECT=n8n-workflows
|
30 |
VERTEX_AI_LOCATION=us-central1
|
31 |
|
32 |
# ===== VECTOR STORE CONFIGURATION =====
|
33 |
-
CHROMA_AUTH_TOKEN=
|
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=
|
53 |
|
54 |
# ===== SECURITY =====
|
55 |
-
ALLOWED_ORIGINS=https://danilonovais-n8n-dan.hf.space
|
56 |
-
CSRF_SECRET
|
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
|