diff --git a/app/sbin/start/n8n b/app/sbin/start/n8n index 2b489f9..ee06383 100755 --- a/app/sbin/start/n8n +++ b/app/sbin/start/n8n @@ -1,51 +1,48 @@ #!/usr/bin/env bash -exec > /4server/data/startContainer.log 2>&1 - -echo "$(date '+%Y-%m-%d %H:%M') - startContainer $1" -CONTAINER_NAME="$1" +echo "Start N8N container ${UUID}" # Get the hostname of the machine HOSTNAME=$(hostname) -mkdir -p /4server/data/${CONTAINER_NAME}/n8n -mkdir -p /4server/data/${CONTAINER_NAME}/data +mkdir -p /4server/data/${UUID}/n8n +mkdir -p /4server/data/${UUID}/data -sudo chmod 777 /4server/data/${CONTAINER_NAME}/n8n -sudo chmod 777 /4server/data/${CONTAINER_NAME}/data +chmod 777 /4server/data/${UUID}/n8n +chmod 777 /4server/data/${UUID}/data # Stop the container if it exists -if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then - echo "$(date '+%Y-%m-%d %H:%M') - stopping existing container $CONTAINER_NAME" - docker stop "$CONTAINER_NAME" - docker rm "$CONTAINER_NAME" +if docker ps -a --format '{{.Names}}' | grep -q "^${UUID}$"; then + echo "$(date '+%Y-%m-%d %H:%M') - stopping existing container $UUID" + docker stop "$UUID" + docker rm "$UUID" fi docker run -d \ - --name "$CONTAINER_NAME" \ + --name "$UUID" \ -p 5678 \ --cap-add=SYS_ADMIN \ --security-opt seccomp=unconfined \ --restart=always \ - -e N8N_HOST="${CONTAINER_NAME}.od8n.com" \ + -e N8N_HOST="${UUID}.od8n.com" \ -e N8N_PORT=5678 \ -e N8N_PROTOCOL=https \ -e NODE_ENV=production \ - -e WEBHOOK_URL="https://${CONTAINER_NAME}.od8n.com/" \ + -e WEBHOOK_URL="https://${UUID}.od8n.com/" \ -e GENERIC_TIMEZONE="UTC-3" \ - -v "/4server/data/${CONTAINER_NAME}/n8n:/home/node/.n8n" \ - -v "/4server/data/${CONTAINER_NAME}/data:/data" \ + -v "/4server/data/${UUID}/n8n:/home/node/.n8n" \ + -v "/4server/data/${UUID}/data:/data" \ --label "traefik.enable=true" \ - --label "traefik.http.routers.${CONTAINER_NAME}.rule=Host(\`${CONTAINER_NAME}.od8n.com\`)" \ - --label "traefik.http.routers.${CONTAINER_NAME}.entrypoints=web,websecure" \ - --label "traefik.http.routers.${CONTAINER_NAME}.tls=true" \ - --label "traefik.http.routers.${CONTAINER_NAME}.tls.certresolver=production" \ - --label "traefik.http.services.${CONTAINER_NAME}.loadbalancer.server.port=5678" \ - --network docker-compose_4projects \ + --label "traefik.http.routers.${UUID}.rule=Host(\`${UUID}.od8n.com\`)" \ + --label "traefik.http.routers.${UUID}.entrypoints=web,websecure" \ + --label "traefik.http.routers.${UUID}.tls=true" \ + --label "traefik.http.routers.${UUID}.tls.certresolver=production" \ + --label "traefik.http.services.${UUID}.loadbalancer.server.port=5678" \ + --network 4server_4projects \ n8nio/n8n:latest diff --git a/app/sbin/startContainer b/app/sbin/startContainer old mode 100644 new mode 100755 index 4d57560..c711e7f --- a/app/sbin/startContainer +++ b/app/sbin/startContainer @@ -1,6 +1,9 @@ #!/bin/bash # Usage: ./start_by_uuid.sh # Example: ./start_by_uuid.sh abc-001-xxxx-xxxx-xxxx +exec > /4server/data/log/startContainer.log 2>&1 +echo "$(date '+%Y-%m-%d %H:%M') Start container $1" + DB_PATH="/4server/data/contracts.db" BIN_PATH="/4server/sbin" @@ -12,25 +15,31 @@ if [[ -z "$UUID" ]]; then exit 1 fi -# Fetch all info from SQLite and export as environment variables -eval $(sqlite3 -separator "=" "$DB_PATH" \ - "SELECT 'UUID=' || UUID, - 'EMAIL=' || email, - 'EXPIRES=' || expires, - 'TAGS=' || tags, - 'ENV=' || env, - 'AFFILIATE=' || affiliate, - 'IMAGE=' || image, - 'HISTORY=' || history, - 'COMMENT=' || comment, - 'DOMAINS=' || domains, - 'STATUS=' || status, - 'CREATED=' || created, - 'BUMP=' || bump - FROM containers WHERE UUID='$UUID';" | sed 's/ /\\ /g') +while IFS="=" read -r key value; do + export "$key=$value" +done < <(sqlite3 "$DB_PATH" " + SELECT 'UUID=' || UUID FROM containers WHERE UUID='$UUID' + UNION ALL SELECT 'EMAIL=' || email FROM containers WHERE UUID='$UUID' + UNION ALL SELECT 'EXPIRES=' || expires FROM containers WHERE UUID='$UUID' + UNION ALL SELECT 'TAGS=' || tags FROM containers WHERE UUID='$UUID' + UNION ALL SELECT 'ENV=' || env FROM containers WHERE UUID='$UUID' + UNION ALL SELECT 'AFFILIATE=' || affiliate FROM containers WHERE UUID='$UUID' + UNION ALL SELECT 'IMAGE=' || image FROM containers WHERE UUID='$UUID' + UNION ALL SELECT 'HISTORY=' || history FROM containers WHERE UUID='$UUID' + UNION ALL SELECT 'COMMENT=' || comment FROM containers WHERE UUID='$UUID' + UNION ALL SELECT 'DOMAINS=' || domains FROM containers WHERE UUID='$UUID' + UNION ALL SELECT 'STATUS=' || status FROM containers WHERE UUID='$UUID' + UNION ALL SELECT 'CREATED=' || created FROM containers WHERE UUID='$UUID' + UNION ALL SELECT 'BUMP=' || bump FROM containers WHERE UUID='$UUID'; +") + + # Debug: print loaded environment variables -# env | grep -E 'UUID|EMAIL|EXPIRES|TAGS|ENV|AFFILIATE|IMAGE|HISTORY|COMMENT|DOMAINS|STATUS|CREATED|BUMP' +env | grep -E 'UUID|EMAIL|EXPIRES|TAGS|ENV|AFFILIATE|IMAGE|HISTORY|COMMENT|DOMAINS|STATUS|CREATED|BUMP' + +echo "UUID ${UUID}" + # Extract the second part of UUID (split by "-") SECOND_PART=$(echo "$UUID" | cut -d'-' -f2) diff --git a/app/templates/docker-compose.yml b/app/templates/docker-compose.yml index 6616855..b401e7c 100644 --- a/app/templates/docker-compose.yml +++ b/app/templates/docker-compose.yml @@ -25,7 +25,7 @@ services: - /run/docker.sock:/run/docker.sock:ro - /4server/data/traefik/etc:/etc/traefik - /4server/data/traefik/certs:/certs - - /4server/data/traefik/traefik-logs:/var/log/traefik + - /4server/data/log/traefik-logs:/var/log/traefik networks: - 4projects restart: unless-stopped diff --git a/app/templates/init.d/4server-api b/app/templates/init.d/4server-api index 758ffff..4799b56 100755 --- a/app/templates/init.d/4server-api +++ b/app/templates/init.d/4server-api @@ -16,8 +16,8 @@ if [ -f /etc/od8n ]; then fi # Logs -output_log="/4server/data/api.log" -error_log="/4server/data/api.log" +output_log="/4server/data/log/api.log" +error_log="/4server/data/log/api.log" depend() { need net diff --git a/app/test/test b/app/test/test index 7d48b70..894fc0a 100755 --- a/app/test/test +++ b/app/test/test @@ -6,7 +6,7 @@ # ========= CONFIG ========= API_KEY="your-secret-api-key" BASE_URL="https://dev.local" -CONTAINER_ID="123e4567-e89b-12d3-a456-426614174000" # sample UUID +CONTAINER_ID="001-001-123e4567-e89b-12d3-a456-426614174000" # sample UUID # ========================== # --- Functions for each endpoint --- @@ -24,7 +24,11 @@ update_container() { "email": "user@example.com", "expires": "2025-12-31", "status": "active", - "created": "2025-08-16" + "created": "2025-08-16", + "tags": "N8N, SQLITE", + "affiliate": "OLIVER", + "domains": "N8N.local", + "status":"hot" }' } diff --git a/app/update b/app/update index 4f5f35a..891cd28 100755 --- a/app/update +++ b/app/update @@ -3,7 +3,7 @@ ### SYSTEM SETUP rex doas mkdir -p /4server rex doas chmod 777 /4server -rex mkdir -p /4server/data +rex mkdir -p /4server/data/log template templates/hosts /etc/hosts