From b668667158b0632ea1cf88f5c6a3a7ec55f81309 Mon Sep 17 00:00:00 2001 From: Michael Scheidel Date: Sat, 27 Dec 2025 19:19:48 +0100 Subject: [PATCH] =?UTF-8?q?workflow/Paperless=20Sync=5F=20192.168.2.142=20?= =?UTF-8?q?docker-prod.json=20gel=C3=B6scht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...rless Sync_ 192.168.2.142 docker-prod.json | 543 ------------------ 1 file changed, 543 deletions(-) delete mode 100644 workflow/Paperless Sync_ 192.168.2.142 docker-prod.json diff --git a/workflow/Paperless Sync_ 192.168.2.142 docker-prod.json b/workflow/Paperless Sync_ 192.168.2.142 docker-prod.json deleted file mode 100644 index 1f2d916..0000000 --- a/workflow/Paperless Sync_ 192.168.2.142 docker-prod.json +++ /dev/null @@ -1,543 +0,0 @@ -{ - "name": "Paperless Sync: 192.168.2.142 docker-prod", - "nodes": [ - { - "parameters": {}, - "type": "n8n-nodes-base.manualTrigger", - "typeVersion": 1, - "position": [ - -208, - 0 - ], - "id": "324fa415-ab8b-46f2-a9cc-00a6036aecb2", - "name": "When clicking ‘Execute workflow’" - }, - { - "parameters": { - "url": "https://192.168.2.142:9443/api/stacks", - "authentication": "genericCredentialType", - "genericAuthType": "httpHeaderAuth", - "sendHeaders": true, - "headerParameters": { - "parameters": [ - { - "name": "Content-Type", - "value": "application/json" - } - ] - }, - "options": { - "allowUnauthorizedCerts": true - } - }, - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.3, - "position": [ - 240, - 0 - ], - "id": "83017d97-7949-4a14-8ad5-e5d9db55d4ad", - "name": "get stack list", - "credentials": { - "httpHeaderAuth": { - "id": "lmln2LlZ5kgMGNWh", - "name": "portainer-api 192.168.2.142" - } - } - }, - { - "parameters": { - "method": "POST", - "url": "=https://192.168.2.142:9443/api/stacks/{{$json.stackId}}/stop?endpointId={{$json.endpointId}}\n", - "authentication": "genericCredentialType", - "genericAuthType": "httpHeaderAuth", - "options": { - "allowUnauthorizedCerts": true - } - }, - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.3, - "position": [ - 688, - 0 - ], - "id": "8dac28cc-1772-4843-b741-366628c78c09", - "name": "stop stack", - "credentials": { - "httpBasicAuth": { - "id": "iJkXePPAceSyENTx", - "name": "CMI CAN Bus local" - }, - "httpHeaderAuth": { - "id": "lmln2LlZ5kgMGNWh", - "name": "portainer-api 192.168.2.142" - } - } - }, - { - "parameters": { - "amount": 10 - }, - "type": "n8n-nodes-base.wait", - "typeVersion": 1.1, - "position": [ - 912, - 0 - ], - "id": "a4a0f38c-ff47-47f5-8fc8-3926971d5e71", - "name": "wait 10 secs", - "webhookId": "0fc1095d-f6c6-4fe7-ac78-1de703458b29" - }, - { - "parameters": { - "method": "POST", - "url": "=https://192.168.2.142:9443/api/stacks/{{ $('select stack by name').item.json.stackId }}/start?endpointId={{ $('select stack by name').item.json.endpointId }}", - "authentication": "genericCredentialType", - "genericAuthType": "httpHeaderAuth", - "options": { - "allowUnauthorizedCerts": true - } - }, - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.3, - "position": [ - 688, - 224 - ], - "id": "16ea4b2f-85cc-4815-905c-716e8e9444fb", - "name": "start stack", - "executeOnce": true, - "credentials": { - "httpBasicAuth": { - "id": "iJkXePPAceSyENTx", - "name": "CMI CAN Bus local" - }, - "httpHeaderAuth": { - "id": "lmln2LlZ5kgMGNWh", - "name": "portainer-api 192.168.2.142" - } - }, - "onError": "continueRegularOutput" - }, - { - "parameters": { - "url": "https://192.168.2.142:9443/api/endpoints/3/docker/containers/json?all=1", - "authentication": "genericCredentialType", - "genericAuthType": "httpHeaderAuth", - "options": { - "allowUnauthorizedCerts": true - } - }, - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.3, - "position": [ - 912, - 224 - ], - "id": "b31681b7-e9c2-4202-bff3-175141f54c8f", - "name": "list containers", - "credentials": { - "httpHeaderAuth": { - "id": "lmln2LlZ5kgMGNWh", - "name": "portainer-api 192.168.2.142" - } - } - }, - { - "parameters": { - "assignments": { - "assignments": [ - { - "id": "dfe53d42-71aa-4bbd-9cc1-90228d46ba6c", - "name": "stackName", - "value": "paperless-ngx", - "type": "string" - }, - { - "id": "b350e0c4-751a-4b8f-a8fd-29cae43f3953", - "name": "endpointId", - "value": 3, - "type": "number" - }, - { - "id": "bae42f62-9ca5-48ac-ba32-3b9fff0df26a", - "name": "confirmWipe", - "value": "YES_I_KNOW_THIS_DELETES_DATA", - "type": "string" - } - ] - }, - "options": {} - }, - "type": "n8n-nodes-base.set", - "typeVersion": 3.4, - "position": [ - 16, - 0 - ], - "id": "ba4ead74-e20f-479e-b4f6-1f3ece3c793e", - "name": "stack config" - }, - { - "parameters": { - "jsCode": "const targetName = $('stack config').item.json.stackName; // paperless-ngx\nconst endpointIdWanted = $('stack config').item.json.endpointId; // 3\n\n// get stack list liefert mehrere items (je stack ein item)\nconst stacks = $input.all().map(i => i.json);\n\nconst match = stacks.find(s =>\n s.Name === targetName && Number(s.EndpointId) === Number(endpointIdWanted)\n);\n\nif (!match) {\n throw new Error(`Stack '${targetName}' (endpoint ${endpointIdWanted}) nicht gefunden`);\n}\n\nreturn [{\n json: {\n ...$('stack config').item.json,\n stackId: match.Id,\n endpointId: match.EndpointId,\n stackType: match.Type,\n projectPath: match.ProjectPath,\n entryPoint: match.EntryPoint,\n }\n}];\n" - }, - "type": "n8n-nodes-base.code", - "typeVersion": 2, - "position": [ - 464, - 0 - ], - "id": "e496f2af-54c7-4a60-b3bc-5f75ff53bc40", - "name": "select stack by name" - }, - { - "parameters": { - "url": "={{ 'https://192.168.2.142:9443/api/endpoints/' + $json.EndpointId + '/docker/volumes' }}\n\n\n\n", - "authentication": "genericCredentialType", - "genericAuthType": "httpHeaderAuth", - "options": { - "allowUnauthorizedCerts": true - } - }, - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.3, - "position": [ - 1136, - 0 - ], - "id": "9b2584f1-07ae-4dcf-a908-69da38c7cecf", - "name": "list volumes", - "credentials": { - "httpHeaderAuth": { - "id": "lmln2LlZ5kgMGNWh", - "name": "portainer-api 192.168.2.142" - } - } - }, - { - "parameters": { - "jsCode": "const stackCfg = $items('stack config')[0].json;\n\nconst stackName = stackCfg.stackName; // paperless-ngx\nconst confirm = stackCfg.confirmWipe; // YES_I_KNOW_THIS_DELETES_DATA\n\n\nif (confirm !== 'YES_I_KNOW_THIS_DELETES_DATA') {\n throw new Error('confirmWipe fehlt oder falsch. Abbruch (Sicherheitsgurt).');\n}\n\nconst volumes = $input.first().json.Volumes || [];\nconst filtered = volumes.filter(v => {\n const name = v.Name || '';\n const labels = v.Labels || {};\n // Sicherster Weg: compose project label\n const project = labels['com.docker.compose.project'];\n return project === stackName || name.startsWith(`${stackName}_`);\n});\n\nreturn filtered.map(v => ({\n json: {\n volumeName: v.Name,\n volumeNameEncoded: encodeURIComponent(v.Name),\n mountpoint: v.Mountpoint || null\n }\n}));\n\n" - }, - "type": "n8n-nodes-base.code", - "typeVersion": 2, - "position": [ - 1360, - 0 - ], - "id": "61bf6894-ffcf-4da1-9e97-8ee1e7e42947", - "name": "filter paperless volumes" - }, - { - "parameters": { - "method": "DELETE", - "url": "=https://192.168.2.142:9443/api/endpoints/{{$items('stack config')[0].json.endpointId}}/docker/volumes/{{$json.volumeNameEncoded}}", - "authentication": "genericCredentialType", - "genericAuthType": "httpHeaderAuth", - "options": { - "allowUnauthorizedCerts": true - } - }, - "type": "n8n-nodes-base.httpRequest", - "typeVersion": 4.3, - "position": [ - -208, - 224 - ], - "id": "efccd544-eee0-429d-a5f7-4f62609d326c", - "name": "delete volume", - "alwaysOutputData": true, - "credentials": { - "httpHeaderAuth": { - "id": "lmln2LlZ5kgMGNWh", - "name": "portainer-api 192.168.2.142" - } - }, - "onError": "continueRegularOutput" - }, - { - "parameters": { - "amount": 10 - }, - "type": "n8n-nodes-base.wait", - "typeVersion": 1.1, - "position": [ - 16, - 224 - ], - "id": "8134a5d1-6127-45d0-a9b4-6e4b6693d119", - "name": "wait 10 secs1", - "webhookId": "f1303df5-4fcd-4e01-a703-d57e59f4c837" - }, - { - "parameters": { - "command": "docker exec duplicati sh -lc '\nset -eux\nSRC=\"file:///backups/paperless-ngx\"\nREST=\"/docker-volumes\"\nLOG=\"/backups/_logfiles_/restore-paperless-to-volumes-192_168_2_142.log\"\n\nmkdir -p \"$(dirname \"$LOG\")\"\nrm -f \"$LOG\"\n\n/app/duplicati/duplicati-cli restore \"$SRC\" \\\n --restore-path=\"$REST\" \\\n --passphrase=\"?Aichwald01\" \\\n --overwrite=true \\\n --restore-permissions=true \\\n --restore-metadata=true \\\n --console-log-level=Information \\\n --log-file-log-level=Information \\\n --log-file=\"$LOG\" \\\n --progress\n\necho \"RC=$?\"\ntail -n 40 \"$LOG\" || true\n'" - }, - "type": "n8n-nodes-base.ssh", - "typeVersion": 1, - "position": [ - 240, - 224 - ], - "id": "279df0c2-cef9-435e-ade7-229f2112b21f", - "name": "restore auf docker volumes", - "executeOnce": true, - "credentials": { - "sshPassword": { - "id": "OWWGwX8FprplHTEu", - "name": "SSH Password account 192.168.2.142" - } - } - }, - { - "parameters": { - "amount": 10 - }, - "type": "n8n-nodes-base.wait", - "typeVersion": 1.1, - "position": [ - 464, - 224 - ], - "id": "b36dd6a9-a50f-4168-b70d-668be7ae1245", - "name": "wait 10 secs2", - "webhookId": "f71f70aa-2e67-4e6d-acd3-d0b57d5e7cee", - "executeOnce": true - }, - { - "parameters": { - "rule": { - "interval": [ - { - "triggerAtHour": 23, - "triggerAtMinute": 30 - } - ] - } - }, - "type": "n8n-nodes-base.scheduleTrigger", - "typeVersion": 1.3, - "position": [ - -208, - -160 - ], - "id": "872c878c-aa13-4e19-aa10-c47ba17da9b9", - "name": "Schedule Trigger" - }, - { - "parameters": { - "chatId": "749279624", - "text": "Paperless-ngx auf 192.168.2.142 wurde aktualisiert.", - "additionalFields": {} - }, - "type": "n8n-nodes-base.telegram", - "typeVersion": 1.2, - "position": [ - 1136, - 224 - ], - "id": "915a7f3f-4d42-4615-ad04-08e993dc8754", - "name": "send a message", - "webhookId": "8474c08a-567f-4e93-8100-38b208770f29", - "executeOnce": true, - "credentials": { - "telegramApi": { - "id": "EUy2hT71fSdnEr2w", - "name": "Telegram account" - } - } - } - ], - "pinData": {}, - "connections": { - "When clicking ‘Execute workflow’": { - "main": [ - [ - { - "node": "stack config", - "type": "main", - "index": 0 - } - ] - ] - }, - "get stack list": { - "main": [ - [ - { - "node": "select stack by name", - "type": "main", - "index": 0 - } - ] - ] - }, - "stop stack": { - "main": [ - [ - { - "node": "wait 10 secs", - "type": "main", - "index": 0 - } - ] - ] - }, - "wait 10 secs": { - "main": [ - [ - { - "node": "list volumes", - "type": "main", - "index": 0 - } - ] - ] - }, - "start stack": { - "main": [ - [ - { - "node": "list containers", - "type": "main", - "index": 0 - } - ] - ] - }, - "list containers": { - "main": [ - [ - { - "node": "send a message", - "type": "main", - "index": 0 - } - ] - ] - }, - "stack config": { - "main": [ - [ - { - "node": "get stack list", - "type": "main", - "index": 0 - } - ] - ] - }, - "select stack by name": { - "main": [ - [ - { - "node": "stop stack", - "type": "main", - "index": 0 - } - ] - ] - }, - "list volumes": { - "main": [ - [ - { - "node": "filter paperless volumes", - "type": "main", - "index": 0 - } - ] - ] - }, - "filter paperless volumes": { - "main": [ - [ - { - "node": "delete volume", - "type": "main", - "index": 0 - } - ] - ] - }, - "delete volume": { - "main": [ - [ - { - "node": "wait 10 secs1", - "type": "main", - "index": 0 - } - ] - ] - }, - "wait 10 secs1": { - "main": [ - [ - { - "node": "restore auf docker volumes", - "type": "main", - "index": 0 - } - ] - ] - }, - "restore auf docker volumes": { - "main": [ - [ - { - "node": "wait 10 secs2", - "type": "main", - "index": 0 - } - ] - ] - }, - "wait 10 secs2": { - "main": [ - [ - { - "node": "start stack", - "type": "main", - "index": 0 - } - ] - ] - }, - "Schedule Trigger": { - "main": [ - [ - { - "node": "stack config", - "type": "main", - "index": 0 - } - ] - ] - } - }, - "active": true, - "settings": { - "executionOrder": "v1" - }, - "versionId": "e450aa82-3ea8-426f-a7ec-700efcc9caa8", - "meta": { - "templateCredsSetupCompleted": true, - "instanceId": "3cc6c4256e2bbdec1b3708c49dc3889c7266357f3e239651c157c2de760e6c65" - }, - "id": "OcvLZ6BURSXpKgaP", - "tags": [ - { - "name": "Paperless-ngx", - "id": "2gKReVMDIhJ1ungJ", - "updatedAt": "2025-12-27T15:20:11.288Z", - "createdAt": "2025-12-27T15:20:11.288Z" - }, - { - "updatedAt": "2025-12-20T20:16:34.199Z", - "createdAt": "2025-12-20T20:16:34.199Z", - "id": "RCWZE5pB9KsORMxb", - "name": "Office Automation" - } - ] -} \ No newline at end of file