working
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
|
||||
43
app/sbin/startContainer
Normal file → Executable file
43
app/sbin/startContainer
Normal file → Executable file
@@ -1,6 +1,9 @@
|
||||
#!/bin/bash
|
||||
# Usage: ./start_by_uuid.sh <uuid>
|
||||
# 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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
}'
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user