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