Restauration Automatisée des Identifiants n8n depuis GitHub

Ce workflow n8n vous permet de restaurer automatiquement vos identifiants d'instance à partir de sauvegardes stockées sur GitHub. En intégrant de manière transparente GitHub et n8n, il garantit que vos informations d'identification sont toujours à jour et récupérables en cas de besoin. Cela réduit le risque de perte de données critiques et assure la continuité des opérations. Ce processus est idéal pour les équipes techniques cherchant à automatiser la gestion des identifiants tout en maintenant une sécurité renforcée.

18,582 vues
7,972 copies
Intégration

Documentation Complète

📋 Restauration Automatisée des Identifiants n8n depuis GitHub

💡 Description

Ce workflow n8n vous permet de restaurer automatiquement vos identifiants d'instance à partir de sauvegardes stockées sur GitHub. En intégrant de manière transparente GitHub et n8n, il garantit que vos informations d'identification sont toujours à jour et récupérables en cas de besoin. Cela réduit le risque de perte de données critiques et assure la continuité des opérations. Ce processus est idéal pour les équipes techniques cherchant à automatiser la gestion des identifiants tout en maintenant une sécurité renforcée.

📈 Impact & ROI: Amélioration de la sécurité et réduction du temps passé sur la gestion manuelle des identifiants, augmentant ainsi l'efficacité opérationnelle.

🚀 Fonctionnalités Clés

  • ✅ Restauration automatique des identifiants - Sécurise vos données
  • ✅ Intégration GitHub fluide - Centralise la gestion des sauvegardes
  • ✅ Gain de temps - Élimine les tâches manuelles répétitives
  • ✅ Haute sécurité - Protège contre la perte d'informations sensibles

📊 Architecture Technique

11
Nodes
7
Connexions
2
Services

🔌 Services Intégrés

GitHubn8n

🔧 Composition du Workflow

NodeTypeDescription
When clicking ‘Test workflow’manualTriggerTraitement des données
Sticky Note1stickyNoteTraitement des données
GlobalssetTraitement des données
Sticky Note4stickyNoteTraitement des données
Sticky NotestickyNoteTraitement des données
Get all files in given pathhttpRequestRequête HTTP vers une API externe
Split the resultsplitOutDivision des données en plusieurs branches
Get file content from GitHubgithubTraitement des données
Convert files to JSONextractFromFileTraitement des données
Restore n8n Credentialsn8nTraitement des données
Check for skipped CredentialsifCondition logique pour router le flux

📖 Guide d'Implémentation

  1. Import du workflow: Téléchargez le fichier JSON et importez-le dans votre instance n8n
  2. Configuration des credentials: Configurez les accès pour chaque service utilisé
  3. Personnalisation: Adaptez les paramètres selon vos besoins spécifiques
  4. Test: Exécutez le workflow en mode test pour vérifier le bon fonctionnement
  5. Activation: Activez le workflow pour une exécution automatique

🏷️ Tags

GitHubn8nAutomatisationSauvegardeSécurité

Structure JSON

Voir le code JSON complet
{
    "id": "7zRCNv7B5WFRg7ux",
    "meta": {
        "instanceId": "e634e668fe1fc93a75c4f2a7fc0dad807ca318b79654157eadb9578496acbc76"
    },
    "name": "Restore your credentials from GitHub",
    "tags": [
        {
            "id": "2RWIfLUVCa0bnmGX",
            "name": "N8n",
            "createdAt": "2025-03-06T09:58:39.214Z",
            "updatedAt": "2025-03-06T09:58:39.214Z"
        }
    ],
    "nodes": [
        {
            "id": "f8aff38c-3e40-4820-b8f5-50e3e1f878c8",
            "name": "When clicking ‘Test workflow’",
            "type": "n8n-nodes-base.manualTrigger",
            "position": [
                -640,
                -120
            ],
            "parameters": [],
            "typeVersion": 1
        },
        {
            "id": "f838e0c6-36aa-4c0b-bdd2-ef096ffd3d1d",
            "name": "Sticky Note1",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -1020,
                -140
            ],
            "parameters": {
                "width": 320,
                "height": 420,
                "content": "## Restore from GitHub \nThis workflow will restore all instance credentials from GitHub backups.\n\n\n### Setup\nOpen `Globals` node and update the values below 👇\n\n- **repo.owner:** your Github username\n- **repo.name:** the name of your repository\n- **repo.path:** the folder to use within the repository.\n\n\nIf your username was `john-doe` and your repository was called `n8n-backups` and you wanted the credentials to go into a `credentials` folder you would set:\n\n- repo.owner - john-doe\n- repo.name - n8n-backups\n- repo.path - credentials\/\n"
            },
            "typeVersion": 1
        },
        {
            "id": "8f59b7b0-ea9d-4209-8c6b-d48fe9d8cf7b",
            "name": "Globals",
            "type": "n8n-nodes-base.set",
            "position": [
                -380,
                -120
            ],
            "parameters": {
                "options": [],
                "assignments": {
                    "assignments": [
                        {
                            "id": "6cf546c5-5737-4dbd-851b-17d68e0a3780",
                            "name": "repo.owner",
                            "type": "string",
                            "value": "BeyondspaceStudio"
                        },
                        {
                            "id": "452efa28-2dc6-4ea3-a7a2-c35d100d0382",
                            "name": "repo.name",
                            "type": "string",
                            "value": "n8n-backup"
                        },
                        {
                            "id": "81c4dc54-86bf-4432-a23f-22c7ea831e74",
                            "name": "repo.path",
                            "type": "string",
                            "value": "credentials"
                        }
                    ]
                }
            },
            "typeVersion": 3.4
        },
        {
            "id": "d72bf1a6-f3a0-4dc0-afc0-e39c7e8b16f3",
            "name": "Sticky Note4",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -440,
                -240
            ],
            "parameters": {
                "color": 4,
                "width": 150,
                "height": 80,
                "content": "## Edit this node 👇"
            },
            "typeVersion": 1
        },
        {
            "id": "4eeb0ed5-7e90-4f09-8296-04c0349de49b",
            "name": "Sticky Note",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                100,
                20
            ],
            "parameters": {
                "color": 4,
                "content": "## Skip credential\n- The empty json files\n- The n8n account api\n- ...edit this node at will"
            },
            "typeVersion": 1
        },
        {
            "id": "40856ade-3ff7-43ef-8c45-ec5a126a5787",
            "name": "Get all files in given path",
            "type": "n8n-nodes-base.httpRequest",
            "position": [
                -160,
                -120
            ],
            "parameters": {
                "url": "=https:\/\/api.github.com\/repos\/{{ $json.repo.owner }}\/{{ $json.repo.name }}\/contents\/{{ $json.repo.path }}",
                "options": [],
                "authentication": "predefinedCredentialType",
                "nodeCredentialType": "githubApi"
            },
            "credentials": {
                "githubApi": {
                    "id": "3FYHiPFtycAFT8V0",
                    "name": "GitHub account"
                }
            },
            "typeVersion": 4.2
        },
        {
            "id": "4284aadd-4840-4754-9416-6bb74a1df192",
            "name": "Split the result",
            "type": "n8n-nodes-base.splitOut",
            "position": [
                -600,
                200
            ],
            "parameters": {
                "options": [],
                "fieldToSplitOut": "path"
            },
            "typeVersion": 1
        },
        {
            "id": "48a04e72-5f9e-4dc3-863d-a8bb30f1c8c2",
            "name": "Get file content from GitHub",
            "type": "n8n-nodes-base.github",
            "position": [
                -360,
                200
            ],
            "parameters": {
                "owner": {
                    "__rl": true,
                    "mode": "name",
                    "value": "BeyondspaceStudio"
                },
                "filePath": "={{ $('Get all files in given path').item.json.path }}",
                "resource": "file",
                "operation": "get",
                "repository": {
                    "__rl": true,
                    "mode": "name",
                    "value": "n8n-backup"
                },
                "additionalParameters": []
            },
            "credentials": {
                "githubApi": {
                    "id": "3FYHiPFtycAFT8V0",
                    "name": "GitHub account"
                }
            },
            "typeVersion": 1,
            "alwaysOutputData": true
        },
        {
            "id": "507c8514-6acf-4568-83cc-bb07f06e6a96",
            "name": "Convert files to JSON",
            "type": "n8n-nodes-base.extractFromFile",
            "position": [
                -140,
                200
            ],
            "parameters": {
                "options": [],
                "operation": "fromJson"
            },
            "typeVersion": 1
        },
        {
            "id": "084e7306-4c7b-4a9b-8f3e-f844ab340f6a",
            "name": "Restore n8n Credentials",
            "type": "n8n-nodes-base.n8n",
            "position": [
                380,
                200
            ],
            "parameters": {
                "data": "={{ JSON.stringify($json.data.data) }}",
                "name": "={{ $json.data.name }}",
                "resource": "credential",
                "requestOptions": [],
                "credentialTypeName": "={{ $json.data.type }}"
            },
            "credentials": {
                "n8nApi": {
                    "id": "dzYjDgtEXtpRPKhe",
                    "name": "n8n account"
                }
            },
            "typeVersion": 1
        },
        {
            "id": "f8267df1-eb0a-491e-bed4-01480583a535",
            "name": "Check for skipped Credentials",
            "type": "n8n-nodes-base.if",
            "position": [
                100,
                200
            ],
            "parameters": {
                "options": [],
                "conditions": {
                    "options": {
                        "version": 2,
                        "leftValue": "",
                        "caseSensitive": true,
                        "typeValidation": "strict"
                    },
                    "combinator": "or",
                    "conditions": [
                        {
                            "id": "ad031296-4ac0-4087-bc35-7975a2cc25e6",
                            "operator": {
                                "type": "object",
                                "operation": "empty",
                                "singleValue": true
                            },
                            "leftValue": "={{ $json.data }}",
                            "rightValue": ""
                        },
                        {
                            "id": "ca912a57-6a4b-4b9a-be0e-37b69d3e4917",
                            "operator": {
                                "type": "string",
                                "operation": "contains"
                            },
                            "leftValue": "={{ $json.data.name }}",
                            "rightValue": "n8n account"
                        }
                    ]
                }
            },
            "typeVersion": 2.2
        }
    ],
    "active": false,
    "pinData": [],
    "settings": {
        "executionOrder": "v1"
    },
    "versionId": "8a89a054-697f-4705-89a8-5d3288936206",
    "connections": {
        "Globals": {
            "main": [
                [
                    {
                        "node": "Get all files in given path",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Split the result": {
            "main": [
                [
                    {
                        "node": "Get file content from GitHub",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Convert files to JSON": {
            "main": [
                [
                    {
                        "node": "Check for skipped Credentials",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Get all files in given path": {
            "main": [
                [
                    {
                        "node": "Split the result",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Get file content from GitHub": {
            "main": [
                [
                    {
                        "node": "Convert files to JSON",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Check for skipped Credentials": {
            "main": [
                [],
                [
                    {
                        "node": "Restore n8n Credentials",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "When clicking ‘Test workflow’": {
            "main": [
                [
                    {
                        "node": "Globals",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
                                

Workflows Similaires

Optimisation de la gestion des Pull Requests avec Pipedrive

Ce workflow permet d'automatiser le suivi des Pull Requests GitHub en les intégrant directement dans Pipedrive. Lorsqu'...

Synchronisation Automatisée des Événements Discord et Google Calendar

Ce workflow puissant automatise la synchronisation des événements programmés sur Discord avec Google Calendar, garant...

Automatisez les commandes Squarespace vers Google Sheets

Ce workflow automatise le processus de récupération des commandes de Squarespace et leur enregistrement dans Google Sh...