diff --git a/Dev/n8n_gemini_db/.env b/Dev/n8n_gemini_db/.env new file mode 100644 index 0000000..6bf692c --- /dev/null +++ b/Dev/n8n_gemini_db/.env @@ -0,0 +1,9 @@ +# PostgreSQL Database Settings +POSTGRES_DB=n8n +POSTGRES_USER=n8nuser +POSTGRES_PASSWORD=mysecretpassword + +# n8n Subdomain and Domain Settings +# Example: n8n.example.com +DOMAIN_NAME=example.com +SUBDOMAIN=n8n diff --git a/Dev/n8n_gemini_db/README.md b/Dev/n8n_gemini_db/README.md new file mode 100644 index 0000000..32b8b10 --- /dev/null +++ b/Dev/n8n_gemini_db/README.md @@ -0,0 +1,67 @@ +# n8n, Gemini-CLI és PostgreSQL Docker Compose Projekt + +## Áttekintés + +Ez a projekt egy Docker Compose alapú környezet, amely az alábbi szolgáltatásokat integrálja: +* **n8n:** Egy erőteljes workflow automatizálási eszköz. +* **Gemini-CLI:** Egy egyedi Docker image, amely a Google Gemini mesterséges intelligencia modelljével való interakciót teszi lehetővé. Ez a konténer szolgálhat "intelligens agyként" az n8n workflow-k számára. +* **PostgreSQL:** Egy robusztus relációs adatbázis, amelyet az n8n használ a saját adatainak tárolására, de természetesen a workflow-k is elérhetik. + +A szolgáltatások egy közös Docker hálózaton keresztül kommunikálnak egymással, biztosítva a zökkenőmentes adatcserét és funkcionális bővíthetőséget. + +## Architektúra + +* **`db` service (PostgreSQL):** Tárolja az n8n működéséhez szükséges adatokat, valamint tetszőleges adatok kezelésére is alkalmas a workflow-kból. +* **`n8n` service:** A workflow-k futtatásáért felelős. Hozzáfér a PostgreSQL adatbázishoz, és képes parancsokat futtatni a `gemini-cli` konténerben. +* **`gemini-cli` service:** Tartalmazza a Gemini AI modellel való interakcióhoz szükséges logikát (pl. Python szkripteket). Az n8n workflow-k ezen keresztül tudnak mesterséges intelligencia alapú feladatokat végezni (pl. szövegelemzés, generálás, adatok strukturálása). + +A szolgáltatások közötti kommunikáció a `n8n_network` nevű bridge hálózaton keresztül történik, a konténernevek (pl. `db`, `gemini-cli`) használatával. Az adatperzisztenciát a `postgres_data` és `n8n_data` volume-ok, míg a fájlcserét az `n8n` és `gemini-cli` között a `shared_data` volume biztosítja. + +## Előfeltételek + +A projekt futtatásához szükséged lesz: +* [Docker](https://www.docker.com/get-started) +* [Docker Compose](https://docs.docker.com/compose/install/) + +## Telepítés és Indítás + +1. **Navigálj a projekt könyvtárába:** + ```bash + cd Dev/n8n_gemini_db + ``` + +2. **Konfiguráld az `.env` fájlt:** + Nyisd meg a `.env` fájlt, és módosítsd benne a placeholder értékeket (pl. `POSTGRES_PASSWORD`, `DOMAIN_NAME`, `SUBDOMAIN`) a saját igényeid szerint. **Fontos:** Ezt a fájlt soha ne tedd Git repository-ba éles adatokkal! + +3. **Add hozzá a `gemini-cli` logikádat:** + * Helyezd el a `gemini-cli` eszközöd Python szkriptjeit (vagy egyéb futtatható fájljait) a `gemini-cli/` alkönyvtárba. + * A szkriptek által igényelt Python könyvtárakat sorold fel a `gemini-cli/requirements.txt` fájlban. + +4. **Építsd fel és indítsd el a konténereket:** + Futtasd az alábbi parancsot a projekt gyökérkönyvtárában: + ```bash + docker-compose up --build -d + ``` + * A `--build` kapcsoló biztosítja, hogy a `gemini-cli` image felépüljön a `Dockerfile` alapján. + * A `-d` kapcsolóval a konténerek a háttérben fognak futni. + +## Használat + +1. **n8n Felület elérése:** + Az n8n felhasználói felülete általában a `http://localhost:5678` címen (vagy az `.env` fájlban beállított `WEBHOOK_URL` alapján) érhető el. + +2. **`gemini-cli` integráció n8n workflow-kba:** + Az n8n workflow-kon belül az "Execute Command" node segítségével tudsz parancsokat futtatni a `gemini-cli` konténerben. A `gemini_cli_service` a konténer neve, amit a `docker-compose.yml` definiál: + + ``` + docker exec gemini_cli_service python /data/your_script.py --arg1 value1 + ``` + * A `/data` mappa a `shared_data` volume, ami az `n8n` és a `gemini-cli` között van megosztva. Itt tudsz adatokat (pl. input fájlokat az n8n-ből) átadni a `gemini-cli` szkriptjeidnek, és az eredményeket (pl. output fájlokat) is ide mentheted vissza, hogy az n8n tovább feldolgozza. + +## Leállítás + +A konténerek leállításához és törléséhez a projekt gyökérkönyvtárából futtasd: +```bash +docker-compose down +``` +Ez leállítja és törli a szolgáltatás konténereit, valamint a `n8n_network` hálózatot. Az adatok (`postgres_data`, `n8n_data`, `shared_data`) azonban megmaradnak, hacsak nem törlöd őket expliciten. diff --git a/Dev/n8n_gemini_db/docker-compose.yml b/Dev/n8n_gemini_db/docker-compose.yml new file mode 100644 index 0000000..c04e197 --- /dev/null +++ b/Dev/n8n_gemini_db/docker-compose.yml @@ -0,0 +1,61 @@ +version: '3.8' + +services: + db: + image: postgres:13 + container_name: n8n_postgres_db + restart: always + environment: + - POSTGRES_USER=${POSTGRES_USER} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - POSTGRES_DB=${POSTGRES_DB} + volumes: + - postgres_data:/var/lib/postgresql/data + networks: + - n8n_network + + n8n: + image: n8nio/n8n + container_name: n8n_service + restart: always + ports: + - "5678:5678" + environment: + - DB_TYPE=postgres + - DB_POSTGRESDB_HOST=db + - DB_POSTGRESDB_PORT=5432 + - DB_POSTGRESDB_DATABASE=${POSTGRES_DB} + - DB_POSTGRESDB_USER=${POSTGRES_USER} + - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD} + - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME} + - N8N_PROTOCOL=https + - NODE_ENV=production + - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/ + volumes: + - n8n_data:/home/node/.n8n + - shared_data:/data + networks: + - n8n_network + depends_on: + - db + + gemini-cli: + build: + context: ./gemini-cli + container_name: gemini_cli_service + restart: always + volumes: + - shared_data:/data + networks: + - n8n_network + # A parancs, hogy a konténer fusson és várjon a feladatokra + command: tail -f /dev/null + +networks: + n8n_network: + driver: bridge + +volumes: + postgres_data: + n8n_data: + shared_data: diff --git a/Dev/n8n_gemini_db/gemini-cli/Dockerfile b/Dev/n8n_gemini_db/gemini-cli/Dockerfile new file mode 100644 index 0000000..2e3f561 --- /dev/null +++ b/Dev/n8n_gemini_db/gemini-cli/Dockerfile @@ -0,0 +1,18 @@ +# Use an official Python runtime as a parent image +FROM python:3.10-slim + +# Set the working directory in the container +WORKDIR /usr/src/app + +# Copy the requirements file into the container at /usr/src/app +COPY requirements.txt ./ + +# Install any needed packages specified in requirements.txt +RUN pip install --no-cache-dir -r requirements.txt + +# Copy the rest of the application's code into the container +COPY . . + +# This will be overridden by the docker-compose command, +# but it's good practice to have a default command. +CMD ["tail", "-f", "/dev/null"] diff --git a/Dev/n8n_gemini_db/gemini-cli/requirements.txt b/Dev/n8n_gemini_db/gemini-cli/requirements.txt new file mode 100644 index 0000000..96705d8 --- /dev/null +++ b/Dev/n8n_gemini_db/gemini-cli/requirements.txt @@ -0,0 +1,3 @@ +# Add any Python libraries needed for your gemini-cli tool here +# For example, to use the Google Generative AI SDK: +google-generativeai