Prechádzať zdrojové kódy

feat: Add n8n automation service with PostgreSQL support

- Integrated n8n service in Docker Compose with volume and PostgreSQL setup
- Adjusted permissions for n8n volume to resolve access issues
- Successfully configured and tested n8n on port 5678
- Added PostgreSQL database for n8n to ensure persistent storage
- Updated .env with necessary environment variables for n8n
mathias.riechsteiner 1 rok pred
rodič
commit
76884eae1d
1 zmenil súbory, kde vykonal 114 pridanie a 7 odobranie
  1. 114 7
      src/docker/docker-compose.yml

+ 114 - 7
src/docker/docker-compose.yml

@@ -13,7 +13,7 @@ services:
       - ../data/npm:/data
       - ../data/npm_letsencrypt:/etc/letsencrypt
     networks:
-      - paperless-network
+      - automate-network
 
   paperless:
     image: 'ghcr.io/paperless-ngx/paperless-ngx:latest'
@@ -33,7 +33,7 @@ services:
       - paperless-db
       - paperless-redis
     networks:
-      - paperless-network
+      - automate-network
 
   paperless-db:
     image: 'postgres:13'
@@ -48,13 +48,13 @@ services:
     volumes:
       - ../data/paperless_db:/var/lib/postgresql/data
     networks:
-      - paperless-network
+      - automate-network
 
   paperless-redis:
     image: 'redis:alpine'
     container_name: 'paperless-redis'
-    expose:
-      - "6379"
+    ports:
+      - "6379:6379"
     restart: unless-stopped
     volumes:
       - ../data/paperless_redis:/data
@@ -64,8 +64,115 @@ services:
       timeout: 5s
       retries: 5
     networks:
-      - paperless-network
+      - automate-network
+
+  nextcloud:
+    image: 'nextcloud:latest'
+    container_name: 'nextcloud'
+    restart: unless-stopped
+    environment:
+      - MYSQL_HOST=${NEXTCLOUD_DB_HOST}
+      - MYSQL_DATABASE=${NEXTCLOUD_DB_NAME}
+      - MYSQL_USER=${NEXTCLOUD_DB_USER}
+      - MYSQL_PASSWORD=${NEXTCLOUD_DB_PASSWORD}
+    ports:
+      - "8080:80"
+    volumes:
+      - ../data/nextcloud:/var/www/html
+    depends_on:
+      - nextcloud-db
+    networks:
+        - automate-network
+  
+  nextcloud-db:
+    image: 'mariadb:10.5'
+    container_name: 'nextcloud-db'
+    restart: unless-stopped
+    environment:
+      - MYSQL_ROOT_PASSWORD=${NEXTCLOUD_DB_ROOT_PASSWORD}
+      - MYSQL_DATABASE=${NEXTCLOUD_DB_NAME}
+      - MYSQL_USER=${NEXTCLOUD_DB_USER}
+      - MYSQL_PASSWORD=${NEXTCLOUD_DB_PASSWORD}
+    ports:
+      - "3306:3306"
+    volumes:
+      - ../data/nextcloud_db:/var/lib/mysql
+    networks:
+      - automate-network      
+
+  kimai:
+    image: 'kimai/kimai2:latest'
+    container_name: 'kimai'
+    restart: unless-stopped
+    environment:
+      - APP_ENV=prod
+      - DATABASE_URL=mysql://${KIMAI_DB_USER}:${KIMAI_DB_PASSWORD}@kimai-db/${KIMAI_DB_NAME}
+    ports:
+      - "8090:8001"
+    volumes:
+      - data:/opt/kimai/var/data
+      - plugins:/opt/kimai/var/plugins
+    depends_on:
+      - kimai-db
+    networks:
+      - automate-network
+
+  kimai-db:
+    image: 'mariadb:10.5'
+    container_name: 'kimai-db'
+    restart: unless-stopped
+    environment:
+      - MYSQL_ROOT_PASSWORD=${KIMAI_DB_ROOT_PASSWORD}
+      - MYSQL_DATABASE=${KIMAI_DB_NAME}
+      - MYSQL_USER=${KIMAI_DB_USER}
+      - MYSQL_PASSWORD=${KIMAI_DB_PASSWORD}
+    ports:
+      - "3307:3306"
+    volumes:
+      - ../data/kimai_db:/var/lib/mysql
+    networks:
+      - automate-network
+
+  n8n:
+    image: 'n8nio/n8n:latest'
+    container_name: 'n8n'
+    restart: unless-stopped
+    environment:
+      - N8N_BASIC_AUTH_ACTIVE=true
+      - N8N_BASIC_AUTH_USER=${N8N_USER}
+      - N8N_BASIC_AUTH_PASSWORD=${N8N_PASSWORD}
+      - N8N_PORT=5678
+      - DB_TYPE=postgresdb
+      - DB_POSTGRESDB_HOST=n8n-db
+      - DB_POSTGRESDB_DATABASE=${N8N_DB_NAME}
+      - DB_POSTGRESDB_USER=${N8N_DB_USER}
+      - DB_POSTGRESDB_PASSWORD=${N8N_DB_PASSWORD}
+    ports:
+      - "5678:5678"
+    volumes:
+      - ../data/n8n:/home/node/.n8n
+    depends_on:
+      - n8n-db
+    networks:
+      - automate-network
+
+  n8n-db:
+    image: 'postgres:13'
+    container_name: 'n8n-db'
+    restart: unless-stopped
+    environment:
+      - POSTGRES_DB=${N8N_DB_NAME}
+      - POSTGRES_USER=${N8N_DB_USER}
+      - POSTGRES_PASSWORD=${N8N_DB_PASSWORD}
+    volumes:
+      - ../data/n8n_db:/var/lib/postgresql/data
+    networks:
+      - automate-network      
 
 networks:
-  paperless-network:
+  automate-network:
     driver: bridge
+
+volumes:
+  data:
+  plugins: