feat: Add complete BotKonzept SaaS platform
- Landing page with registration form (HTML/CSS/JS) - n8n workflows for customer registration and trial management - PostgreSQL schema for customer/instance/payment management - Automated email system (Day 3, 5, 7 with discounts) - Setup script and deployment checklist - Comprehensive documentation Features: - Automatic LXC instance creation per customer - 7-day trial with automated upgrade offers - Discount system: 30% → 15% → regular price - Supabase integration for customer management - Email automation via Postfix/SES - GDPR compliant (data in Germany) - Stripe/PayPal payment integration ready Components: - botkonzept-website/ - Landing page and registration - BotKonzept-Customer-Registration-Workflow.json - n8n registration workflow - BotKonzept-Trial-Management-Workflow.json - n8n trial management workflow - sql/botkonzept_schema.sql - Complete database schema - setup_botkonzept.sh - Automated setup script - BOTKONZEPT_README.md - Full documentation - DEPLOYMENT_CHECKLIST.md - Deployment guide
This commit is contained in:
326
Install-Workflow01.json
Normal file
326
Install-Workflow01.json
Normal file
@@ -0,0 +1,326 @@
|
||||
{
|
||||
"name": "Install-Workflow",
|
||||
"nodes": [
|
||||
{
|
||||
"parameters": {
|
||||
"authentication": "privateKey",
|
||||
"command": "/root/customer-installer/install.sh --storage local-zfs --bridge vmbr0 --ip dhcp --vlan 90 --apt-proxy http://192.168.45.2:3142",
|
||||
"cwd": "/root/customer-installer/"
|
||||
},
|
||||
"type": "n8n-nodes-base.ssh",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
192,
|
||||
0
|
||||
],
|
||||
"id": "9878a864-651e-4a53-abfc-b0bc2d2f2d15",
|
||||
"name": "Start Installer 1",
|
||||
"credentials": {
|
||||
"sshPrivateKey": {
|
||||
"id": "bPl4nGXO7Iz4wJPJ",
|
||||
"name": "PVE20"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"authentication": "privateKey",
|
||||
"command": "=./n8n_setup.sh --n8n_internal {{ $json.urls.n8n_internal }} --owner_email {{ $json.n8n.owner_email }} --owner_password \"{{ $json.n8n.owner_password }}\" --owner_first_name \"Max\" --owner_last_name \"Mustermann\" --timeout 30",
|
||||
"cwd": "/root/customer-installer/"
|
||||
},
|
||||
"type": "n8n-nodes-base.ssh",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
640,
|
||||
0
|
||||
],
|
||||
"id": "62e1b647-7daa-445e-bf99-873efbe2bc94",
|
||||
"name": "Setup n8n Owner",
|
||||
"credentials": {
|
||||
"sshPrivateKey": {
|
||||
"id": "bPl4nGXO7Iz4wJPJ",
|
||||
"name": "PVE20"
|
||||
}
|
||||
},
|
||||
"disabled": true
|
||||
},
|
||||
{
|
||||
"parameters": {},
|
||||
"type": "n8n-nodes-base.manualTrigger",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
-32,
|
||||
0
|
||||
],
|
||||
"id": "11aa3e6a-b20a-49b0-b6f9-4cec469c9916",
|
||||
"name": "When clicking ‘Execute workflow’"
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"authentication": "privateKey",
|
||||
"command": "=bash setup_nginx_proxy.sh --ctid {{ $('install_JSON').item.json.ctid }} --hostname {{ $('install_JSON').item.json.hostname }} --fqdn {{ $('install_JSON').item.json.fqdn }} --backend-ip {{ $('install_JSON').item.json.ip }}",
|
||||
"cwd": "/root/customer-installer/"
|
||||
},
|
||||
"type": "n8n-nodes-base.ssh",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
1088,
|
||||
0
|
||||
],
|
||||
"id": "176fd78c-9dd6-427b-a566-88dbf504347e",
|
||||
"name": "setup_nginx_proxy",
|
||||
"credentials": {
|
||||
"sshPrivateKey": {
|
||||
"id": "bPl4nGXO7Iz4wJPJ",
|
||||
"name": "PVE20"
|
||||
}
|
||||
},
|
||||
"disabled": true
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"formTitle": "Delete",
|
||||
"formFields": {
|
||||
"values": [
|
||||
{
|
||||
"fieldLabel": "Host-Number",
|
||||
"requiredField": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {
|
||||
"buttonLabel": "Löschen"
|
||||
}
|
||||
},
|
||||
"type": "n8n-nodes-base.formTrigger",
|
||||
"typeVersion": 2.5,
|
||||
"position": [
|
||||
-32,
|
||||
208
|
||||
],
|
||||
"id": "4c9878ec-177c-4fbd-a83a-a3895ebd8193",
|
||||
"name": "On form submission",
|
||||
"webhookId": "12847d69-15c8-44e4-b595-645ff3109355"
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"jsCode": "// Code Node - JavaScript\nconst sshOutput = $input.all();\n\n// stdout-String parsen\nconst parsedData = JSON.parse(sshOutput[0].json.stdout);\n\nreturn [{\n json: parsedData\n}];"
|
||||
},
|
||||
"type": "n8n-nodes-base.code",
|
||||
"typeVersion": 2,
|
||||
"position": [
|
||||
416,
|
||||
0
|
||||
],
|
||||
"id": "67ace9d6-7ed2-4495-b3e6-6091fd252596",
|
||||
"name": "install_JSON"
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"jsCode": "// Code Node - JavaScript\nconst sshOutput = $input.all();\n\n// stdout-String parsen\nconst parsedData = JSON.parse(sshOutput[0].json.stdout);\n\nreturn [{\n json: parsedData\n}];"
|
||||
},
|
||||
"type": "n8n-nodes-base.code",
|
||||
"typeVersion": 2,
|
||||
"position": [
|
||||
864,
|
||||
0
|
||||
],
|
||||
"id": "fc1b9d9f-5a70-476e-8ae2-4cfd81050527",
|
||||
"name": "setupOwnerJSON",
|
||||
"disabled": true
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"jsCode": "// Code Node - JavaScript\nconst sshOutput = $input.all();\n\n// stdout-String parsen\nconst parsedData = JSON.parse(sshOutput[0].json.stdout);\n\nreturn [{\n json: parsedData\n}];"
|
||||
},
|
||||
"type": "n8n-nodes-base.code",
|
||||
"typeVersion": 2,
|
||||
"position": [
|
||||
1312,
|
||||
0
|
||||
],
|
||||
"id": "86b70266-cafe-4a4f-98d1-20434f61061b",
|
||||
"name": "setupProxyJSON",
|
||||
"disabled": true
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"chatId": "26805429",
|
||||
"text": "=Done.\nhttps://{{ $json.fqdn }}\nUsername: {{ $('install_JSON').item.json.n8n.owner_email }}\nPassword: {{ $('install_JSON').item.json.n8n.owner_password }}\nChat: {{ $('install_JSON').item.json.urls.chat_webhook }}",
|
||||
"additionalFields": {
|
||||
"appendAttribution": false
|
||||
}
|
||||
},
|
||||
"type": "n8n-nodes-base.telegram",
|
||||
"typeVersion": 1.2,
|
||||
"position": [
|
||||
1536,
|
||||
0
|
||||
],
|
||||
"id": "9e20ee75-c2ae-421f-ac4c-54f5643032f2",
|
||||
"name": "Send a text message",
|
||||
"webhookId": "55a97e93-a457-4bee-8b8f-3eea1ad62928",
|
||||
"credentials": {
|
||||
"telegramApi": {
|
||||
"id": "7DYJfIx5JsxgKc0D",
|
||||
"name": "LizTheLove_Bot"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"authentication": "privateKey",
|
||||
"command": "=/root/customer-installer/delete_nginx_proxy.sh --ctid {{ $('On form submission').item.json['Host-Number'] }}",
|
||||
"cwd": "/root/customer-installer/"
|
||||
},
|
||||
"type": "n8n-nodes-base.ssh",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
416,
|
||||
208
|
||||
],
|
||||
"id": "34d50d3a-cdb8-4801-b54b-719ef60b4b63",
|
||||
"name": "deleteProxy",
|
||||
"credentials": {
|
||||
"sshPrivateKey": {
|
||||
"id": "bPl4nGXO7Iz4wJPJ",
|
||||
"name": "PVE20"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"authentication": "privateKey",
|
||||
"command": "=pct stop {{ $json['Host-Number'] }} && pct destroy {{ $json['Host-Number'] }} ",
|
||||
"cwd": "/root/customer-installer/"
|
||||
},
|
||||
"type": "n8n-nodes-base.ssh",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
192,
|
||||
208
|
||||
],
|
||||
"id": "4645ace7-30ef-4698-8288-065fe70ff9b0",
|
||||
"name": "deleteLXC",
|
||||
"credentials": {
|
||||
"sshPrivateKey": {
|
||||
"id": "bPl4nGXO7Iz4wJPJ",
|
||||
"name": "PVE20"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"pinData": {},
|
||||
"connections": {
|
||||
"Start Installer 1": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "install_JSON",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Setup n8n Owner": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "setupOwnerJSON",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"When clicking ‘Execute workflow’": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Start Installer 1",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"On form submission": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "deleteLXC",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"install_JSON": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Setup n8n Owner",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"setupOwnerJSON": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "setup_nginx_proxy",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"setup_nginx_proxy": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "setupProxyJSON",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"setupProxyJSON": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Send a text message",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"deleteLXC": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "deleteProxy",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
"active": false,
|
||||
"settings": {
|
||||
"availableInMCP": false
|
||||
},
|
||||
"versionId": "7814a0dd-fae3-40e6-913b-f7b8bac10e81",
|
||||
"meta": {
|
||||
"templateCredsSetupCompleted": true,
|
||||
"instanceId": "c832ea07b2e6ccb9d5832b81bb497b720b31ed50006898070951c4f6d209f426"
|
||||
},
|
||||
"id": "ba7BxTeeQif4zu2F",
|
||||
"tags": []
|
||||
}
|
||||
Reference in New Issue
Block a user