FreudArthur commited on
Commit
a63e449
·
1 Parent(s): 9702efe

Refactor project structure and update configurations for n8n automation

Browse files

- Update Dockerfile to configure network settings and PostgreSQL database
- Modify .dockerignore and .gitignore for better file management
- Enhance README.md with project objectives and usage instructions
- Add new scripts and templates for bot and feature documentation
- Create initial Python scripts for API interaction and testing

.dockerignore CHANGED
@@ -1,7 +1,6 @@
1
  .git
2
  .venv
3
  venv
4
- env
5
  __pycache__/
6
  .pytest_cache/
7
  .vscode/
 
1
  .git
2
  .venv
3
  venv
 
4
  __pycache__/
5
  .pytest_cache/
6
  .vscode/
.gitignore CHANGED
@@ -2,4 +2,5 @@ n8n_volume/
2
  *.sqlite
3
  *.sqlite-wal
4
  *.db
5
- .env
 
 
2
  *.sqlite
3
  *.sqlite-wal
4
  *.db
5
+ .env
6
+ secrets.txt
Dockerfile CHANGED
@@ -1,8 +1,25 @@
1
  FROM n8nio/n8n:latest
2
 
3
- EXPOSE 7860
 
4
 
 
5
  ENV N8N_HOST=0.0.0.0
6
- ENV N8N_PORT=7860
7
  ENV N8N_PROTOCOL=http
8
- ENV N8N_RUNNERS_ENABLED=true
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  FROM n8nio/n8n:latest
2
 
3
+ EXPOSE 5678
4
+ # 7860 pour hf
5
 
6
+ # Configuration réseau
7
  ENV N8N_HOST=0.0.0.0
8
+ ENV N8N_PORT=5678
9
  ENV N8N_PROTOCOL=http
10
+
11
+ # Configuration de production
12
+ ENV NODE_ENV=production
13
+ ENV N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
14
+ ENV NODE_FUNCTION_ALLOW_EXTERNAL=python
15
+
16
+ # Runners
17
+ ENV N8N_RUNNERS_ENABLED=true
18
+
19
+ # Base de données PostgreSQL (à surcharger dans docker-compose)
20
+ ENV DB_TYPE=postgresdb
21
+ ENV DB_POSTGRESDB_SSL_ENABLED=true
22
+ ENV DB_POSTGRESDB_SSL_REJECT_UNAUTHORIZED=false
23
+
24
+ # Volume de persistance
25
+ VOLUME ["/home/node/.n8n"]
README.md CHANGED
@@ -6,5 +6,90 @@ colorTo: blue
6
  sdk: docker
7
  pinned: false
8
  ---
 
9
 
10
- # Automatisation with n8n
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  sdk: docker
7
  pinned: false
8
  ---
9
+ # n8n Automatisation
10
 
11
+ Projet Docker pour tester et développer des automatisations avec n8n, avec une base prête à connecter des bots open source et des services externes.
12
+
13
+ ## Objectif
14
+
15
+ Ce dépôt sert de socle pour:
16
+
17
+ - créer et tester des workflows n8n localement;
18
+ - connecter des bots ou services open source;
19
+ - conserver les données de n8n dans un volume Docker;
20
+ - disposer d'un service Python simple pour valider les appels HTTP et les échanges entre conteneurs.
21
+
22
+ ## Contenu du projet
23
+
24
+ - `docker-compose.yml`: démarre n8n et le service Python de test;
25
+ - `Dockerfile`: image du conteneur Python de démonstration;
26
+ - `app.py`: petit serveur HTTP de test;
27
+ - `n8n_volume/`: stockage persistant de n8n;
28
+ - `sample.json` et `worflows.json`: exemples de données/workflows.
29
+
30
+ ## Prérequis
31
+
32
+ - Docker
33
+ - Docker Compose
34
+ - un compte ou une instance PostgreSQL accessible si tu veux utiliser la base distante configurée dans `docker-compose.yml`
35
+
36
+ ## Lancer le projet
37
+
38
+ 1. Renseigne les variables d'environnement nécessaires, surtout:
39
+ - `N8N_ENCRYPTION_KEY`
40
+ - `PGHOST`
41
+ - `PGPORT`
42
+ - `PGDATABASE`
43
+ - `PGUSER`
44
+ - `PGPASSWORD`
45
+
46
+ 2. Démarre les services:
47
+
48
+ ```bash
49
+ docker compose up --build
50
+ ```
51
+
52
+ 3. Ouvre n8n dans le navigateur:
53
+
54
+ ```text
55
+ http://localhost:7860
56
+ ```
57
+
58
+ Le service Python est exposé sur:
59
+
60
+ ```text
61
+ http://localhost:8000
62
+ ```
63
+
64
+ ## Fonctionnement
65
+
66
+ Le service `n8n-python` lance n8n dans un conteneur Docker et monte le dossier `n8n_volume` pour conserver la configuration, les workflows et les données de n8n.
67
+
68
+ Le service `python` démarre un serveur HTTP minimal défini dans `app.py`. Il peut servir à tester des webhooks, des appels sortants ou des intégrations entre n8n et un backend simple.
69
+
70
+ ## Exemple d'usage
71
+
72
+ Tu peux utiliser ce projet pour:
73
+
74
+ - créer un workflow n8n qui appelle le service Python;
75
+ - tester des bots open source exposés en API;
76
+ - brancher des traitements de données, des webhooks ou des automatisations simples;
77
+ - valider un futur pack de fonctionnalités réutilisables.
78
+
79
+ ## Arborescence utile
80
+
81
+ - `app.py`: point d'entrée du service Python;
82
+ - `docker-compose.yml`: orchestration des conteneurs;
83
+ - `Dockerfile`: construction du conteneur Python;
84
+ - `n8n_volume/`: persistance de n8n.
85
+
86
+ ## Améliorations possibles
87
+
88
+ - ajouter un fichier `.env` exemple;
89
+ - documenter les variables PostgreSQL;
90
+ - ajouter des exemples de workflows n8n prêts à importer;
91
+ - ajouter une page de présentation des bots open source disponibles.
92
+
93
+ ## Licence
94
+
95
+ Ce projet est sous licence MIT. Voir le fichier `LICENSE`.
backup/config ADDED
File without changes
docker-compose.yml CHANGED
@@ -13,8 +13,10 @@ services:
13
  - N8N_PROTOCOL=http
14
  - NODE_ENV=production
15
  - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
 
16
  - NODE_FUNCTION_ALLOW_EXTERNAL=python
17
  - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
 
18
 
19
  - DB_TYPE=postgresdb
20
  - DB_POSTGRESDB_HOST=${PGHOST}
 
13
  - N8N_PROTOCOL=http
14
  - NODE_ENV=production
15
  - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
16
+ - DB_POSTGRESDB_TIMEOUT=60000
17
  - NODE_FUNCTION_ALLOW_EXTERNAL=python
18
  - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
19
+ - N8N_WEBHOOK_URL=http://localhost:7860/
20
 
21
  - DB_TYPE=postgresdb
22
  - DB_POSTGRESDB_HOST=${PGHOST}
duck.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import requests
2
+
3
+ url = "https://api.duckduckgo.com/"
4
+ params = {
5
+ "q": "DuckDuckGo",
6
+ "format": "json",
7
+ "no_html": 1,
8
+ "t": "my_test_app"
9
+ }
10
+
11
+ response = requests.get(url, params=params)
12
+ data = response.json()
13
+
14
+ # Safely print out the topic abstract summary
15
+ print("Abstract Text:", data.get("AbstractText"))
16
+ print("Source URL:", data.get("AbstractURL"))
idea/README.md ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Idées de Bots & Fonctionnalités
2
+
3
+ Ce dossier centralise les idées de bots et de fonctionnalités open source à intégrer dans les workflows n8n.
4
+
5
+ ## Structure
6
+
7
+ - `bots/`: liste des bots open source envisagés
8
+ - `features/`: fonctionnalités ou automatisations à développer
9
+ - `workflows_templates/`: templates de workflows prêts à importer dans n8n
10
+
11
+ ## Norme de naming
12
+
13
+ - Un fichier par bot ou feature
14
+ - Format markdown `.md`
15
+ - Noms clairs et explicites
16
+
17
+ ## Exemple d'une idée
18
+
19
+ ```markdown
20
+ # [Nom du Bot/Feature]
21
+
22
+ ## Description
23
+ Courte description de ce que ça fait
24
+
25
+ ## Cas d'usage
26
+ - Cas d'usage 1
27
+ - Cas d'usage 2
28
+
29
+ ## Dépendances/APIs
30
+ - API externe 1
31
+ - Librairie Python 1
32
+
33
+ ## Statut
34
+ - [ ] Planifié
35
+ - [ ] En développement
36
+ - [ ] Prêt
37
+ - [ ] Déployé
38
+
39
+ ## Notes
40
+ Autres informations pertinentes
41
+ ```
idea/TEMPLATE_BOT.md ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Modèle de Bot/Feature
2
+
3
+ Utilise ce fichier comme template pour documenter chaque bot ou feature. Renomme-le et remplis les sections.
4
+
5
+ ## Nom du Bot/Feature
6
+
7
+ **Nom court**:
8
+ **Type**: Bot / Feature / Intégration
9
+ **Auteur (optionnel)**:
10
+
11
+ ## Description
12
+
13
+ Décris en 2-3 lignes ce que fait ce bot/cette feature et son objectif principal.
14
+
15
+ ## Cas d'usage
16
+
17
+ Liste les principaux cas d'usage ou scénarios d'automatisation:
18
+
19
+ - Cas 1
20
+ - Cas 2
21
+ - Cas 3
22
+
23
+ ## Technologies & Dépendances
24
+
25
+ - **API/Services externes**: (ex: Slack, GitHub, OpenAI)
26
+ - **Librairies Python**: (ex: requests, transformers)
27
+ - **Nodes n8n requis**: (ex: HTTP Request, Code, etc.)
28
+
29
+ ## Workflow Input/Output
30
+
31
+ ### Entrées
32
+ ```json
33
+ {
34
+ "param1": "type/description",
35
+ "param2": "type/description"
36
+ }
37
+ ```
38
+
39
+ ### Sorties
40
+ ```json
41
+ {
42
+ "result": "type/description",
43
+ "status": "type/description"
44
+ }
45
+ ```
46
+
47
+ ## Statut
48
+
49
+ - [ ] Planifié
50
+ - [ ] En développement
51
+ - [ ] Prêt pour test
52
+ - [ ] En production
53
+
54
+ ## Notes & Améliorations possibles
55
+
56
+ - Note 1
57
+ - Amélioration future 1
58
+
59
+ ## Ressources
60
+
61
+ - Lien vers la documentation
62
+ - Lien vers le repo source
63
+ - Exemples d'API
64
+
65
+ ## Date de création
66
+
67
+ YYYY-MM-DD
68
+
69
+ ## Dernière mise à jour
70
+
71
+ YYYY-MM-DD
idea/bots/.gitkeep ADDED
@@ -0,0 +1 @@
 
 
1
+ # Dossier pour les bots open source
idea/features/.gitkeep ADDED
@@ -0,0 +1 @@
 
 
1
+ # Dossier pour les fonctionnalités à développer
idea/workflows_templates/.gitkeep ADDED
@@ -0,0 +1 @@
 
 
1
+ # Dossier pour les templates de workflows n8n
script.sh ADDED
@@ -0,0 +1,146 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ # Hello word
3
+ mkdir directorye3
4
+
5
+
6
+ pwd
7
+
8
+
9
+
10
+ if [ -d "$DOSSIER" ]; then
11
+ echo "Le dossier existe ($DOSSIER)"
12
+ else
13
+ echo "Le dossier n'existe pas ($DOSSIER). Il va être créé"
14
+ mkdir $DOSSIER
15
+ fi
16
+
17
+ # Deplacement dans le fichier ama_piscine et verification du chemin
18
+ echo "Deplacons nous dans le dossier ama_piscine"
19
+ cd $DOSSIER
20
+ pwd
21
+
22
+ # Creation des dossiers jour1 jour2 jour3
23
+ echo "Creeons les dossiers jour1 jour2 jour3"
24
+
25
+ mkdir jour1 jour2 jour3
26
+
27
+ echo "Notre chemin"
28
+
29
+ pwd
30
+
31
+ # Deplacement dans jour1 et creation des 4 fichiers
32
+ echo "On se rend dans jour1"
33
+ cd jour1
34
+
35
+ echo "On cree les quatres fichiers en meme temps"
36
+ touch script.sh notes.txt donnees.csv rapport.md
37
+
38
+ # Affichage du contenu de notest.txt et remplissage progressif
39
+ echo "On regarde le contenu et on inscrit les infos dans notes.txt"
40
+ ls -la
41
+
42
+ echo "AMA- Piscine Cohorte 2- Jour 1"
43
+ echo "Etudiant : Freud"
44
+ echo "Date : 01-06-2026"
45
+ echo "Statut: En cours "
46
+
47
+ # Affichage des lignes
48
+ echo "Premiere ligne de notes.txt"
49
+ head -n 1 notes.txt
50
+
51
+ echo "Derniere ligne de notes.txt"
52
+ tail -n 1 notes.txt
53
+
54
+ echo "Nombre de lignes de notes.txt"
55
+ wc -l notes.txt
56
+
57
+ echo "Ligne ou se trouve statut"
58
+ grep -l "Statut" notes.txt
59
+
60
+
61
+ # Copie de notes dans jour2 et 3
62
+ echo "On copie notes dans jour2 et 3"
63
+ cp notes.txt ../jour2/notes.txt
64
+
65
+
66
+
67
+ cp notes.txt ../jour3/notes.txt
68
+ # Remonter dans ama_piscine
69
+ echo "On remonte a ama_piscine"
70
+ cd ..
71
+
72
+ # Renommage de donnees.csv
73
+ echo "On renomme donnees.csv"
74
+ mv jour1/donnees.csv jour1/resultats_jour1.csv
75
+
76
+ # Deplacement de rapport.md dans jour2
77
+ echo "On déplace rapport.md vers jour2"
78
+ mv jour1/rapport.md jour2
79
+
80
+ tree
81
+
82
+ # Recherche de tous les fichiers txt
83
+ echo "On cherche tous les txt"
84
+ find . -name "*.txt"
85
+
86
+ # Recherche de tous les fichiers contenant notes
87
+ echo "On cherche tous les fichiers dont le nom comporte notes"
88
+ find . -name "*notes*"
89
+
90
+ # Affichage de la version de python
91
+ echo "Version de python"
92
+ python3 --version
93
+
94
+ # Affichage du chemin de python
95
+ echo "Chemin de python"
96
+ which python3
97
+
98
+ # Redirection des librairies vers librairies
99
+ echo "On redirige les librairies installées"
100
+ pip3 list > jour1/librairies.txt
101
+
102
+ # Verification des lbrairies
103
+ echo "Verification des librairies"
104
+
105
+ if grep "numpy" jour1/librairies.txt ; then
106
+ echo "Numpy [OK]"
107
+ $a = "Numpy"
108
+ else
109
+ echo "Numpy [Manquante]"
110
+ $a = ""
111
+ fi
112
+
113
+
114
+ if grep "scipy" jour1/librairies.txt ; then
115
+ echo "Scipy[OK]"
116
+ $b = "Scipy"
117
+ else
118
+ echo "Scipy [Manquante]"
119
+ $b = ""
120
+ fi
121
+
122
+
123
+
124
+ if grep "sumpy" jour1/librairies.txt ; then
125
+ echo "Sumpy [OK]"
126
+ $c = "Sumpy"
127
+ else
128
+ echo "Sumpy [Manquante]"
129
+ $c = ""
130
+ fi
131
+
132
+ # Recapitulatif
133
+
134
+ echo "Arborescence crée"
135
+ tree
136
+
137
+ # Contenu de notes.txt
138
+ echo "Contenu de notes.txt"
139
+ cat jour1/notes.txt
140
+
141
+ # Liste des librairies vérifiés
142
+ echo "Librairies vérifiés"
143
+ echo "$a"
144
+ echo "$b"
145
+ echo "$c"
146
+
sell.sh ADDED
File without changes
test.py ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from mistralai.client import Mistral
2
+ import os
3
+ from dotenv import load_dotenv
4
+ load_dotenv()
5
+
6
+ with Mistral(
7
+ api_key=os.getenv("MISTRAL_API_KEY", ""),
8
+ ) as mistral:
9
+
10
+ res = mistral.chat.complete(model="mistral-large-latest", messages=[
11
+ {
12
+ "role": "user",
13
+ "content": "Who is the best French painter? Answer in one short sentence.\nWhat is the most powerful AI today",
14
+ },
15
+ ], stream=False, response_format={
16
+ "type": "text",
17
+ })
18
+
19
+ # Handle response
20
+ print(res)
21
+