g
This commit is contained in:
1 parent
ef641e9fe2
commit
e03bb926e8
8 files changed
+87
-52
No files matched your search
@@ -2,16 +2,15 @@
|
||||
|
||||
|
||||
dump_config (){
|
||||
echo "========== Odoo Container Configuration =========="
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') ========== Odoo Container Configuration =========="
|
||||
echo "UUID: $UUID"
|
||||
echo "BRANCH: $BRANCH"
|
||||
echo "STAGING: $STAGING"
|
||||
echo
|
||||
echo "PostgreSQL Host: $POSTGRES_HOST"
|
||||
echo "PostgreSQL Port: $POSTGRES_PORT"
|
||||
echo "PostgreSQL Admin: $POSTGRES_ADMIN_USER / $POSTGRES_ADMIN_PASSWORD"
|
||||
echo "PostgreSQL Admin: $POSTGRES_ADMIN_USER"
|
||||
echo "ODOO DB User: $ODOO_DB_USER"
|
||||
echo "ODOO DB Password: $ODOO_DB_PASSWORD"
|
||||
echo
|
||||
echo "BASEURL: $BASEURL"
|
||||
echo "DATA_DIR: $DATA_DIR"
|
||||
@@ -52,22 +51,21 @@ wait_for_postgres() {
|
||||
if pg_admin "SELECT 1;" >/dev/null 2>&1; then
|
||||
return 0
|
||||
fi
|
||||
echo "Postgres not reachable yet ($i/$tries), retrying..."
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Postgres at $POSTGRES_HOST:$POSTGRES_PORT not reachable yet ($i/$tries), retrying in 2s"
|
||||
sleep 2
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
check_and_create_db() {
|
||||
echo "check and create"
|
||||
echo "Connecting as $POSTGRES_ADMIN_USER to $POSTGRES_HOST:$POSTGRES_PORT"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Checking user and database for $UUID (DB user $ODOO_DB_USER) as $POSTGRES_ADMIN_USER on $POSTGRES_HOST:$POSTGRES_PORT"
|
||||
|
||||
# -----------------------------
|
||||
# Never guess: if Postgres cannot be queried we must NOT assume the DB is
|
||||
# missing, because a restore wipes the filestore.
|
||||
# -----------------------------
|
||||
if ! wait_for_postgres; then
|
||||
echo "ERROR: cannot connect to Postgres at $POSTGRES_HOST:$POSTGRES_PORT - skipping DB check, NO restore performed"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') ERROR: cannot connect to Postgres at $POSTGRES_HOST:$POSTGRES_PORT - skipping DB check, NO restore performed"
|
||||
return 1
|
||||
fi
|
||||
|
||||
@@ -76,8 +74,11 @@ fi
|
||||
# -----------------------------
|
||||
USER_EXISTS=$(PGPASSWORD="$POSTGRES_ADMIN_PASSWORD" psql -h "$POSTGRES_HOST" -U "$POSTGRES_ADMIN_USER" -p "$POSTGRES_PORT" -d postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='$ODOO_DB_USER';" | grep -q 1 && echo "yes" || echo "no")
|
||||
if [ "$USER_EXISTS" = "no" ]; then
|
||||
echo "Creating PostgreSQL user $ODOO_DB_USER..."
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') PostgreSQL user $ODOO_DB_USER does not exist, creating it"
|
||||
PGPASSWORD="$POSTGRES_ADMIN_PASSWORD" psql -h "$POSTGRES_HOST" -U "$POSTGRES_ADMIN_USER" -p "$POSTGRES_PORT" -d postgres -c "CREATE USER \"$ODOO_DB_USER\" WITH PASSWORD '$ODOO_DB_PASSWORD';"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') CREATE USER $ODOO_DB_USER finished with exit code $?"
|
||||
else
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') PostgreSQL user $ODOO_DB_USER already exists"
|
||||
fi
|
||||
|
||||
# -----------------------------
|
||||
@@ -86,7 +87,7 @@ fi
|
||||
DB_RESULT=$(pg_admin "SELECT 1 FROM pg_database WHERE datname='$UUID';")
|
||||
DB_RC=$?
|
||||
if [ $DB_RC -ne 0 ]; then
|
||||
echo "ERROR: DB existence query failed (rc=$DB_RC) - NO restore performed"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') ERROR: existence query for database $UUID failed (rc=$DB_RC) - NO restore performed"
|
||||
return 1
|
||||
fi
|
||||
|
||||
@@ -99,10 +100,16 @@ fi
|
||||
if [ "$DB_EXISTS" = "no" ]; then
|
||||
FILESTORE_HOST="/4server/data/$UUID/odoo/odoo-web-data/filestore"
|
||||
if [ -d "$FILESTORE_HOST" ] && [ -n "$(ls -A "$FILESTORE_HOST" 2>/dev/null)" ]; then
|
||||
echo "ERROR: database $UUID not found but a filestore exists at $FILESTORE_HOST - refusing automatic restore of default.zip (would delete the filestore). Restore manually if intended."
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') ERROR: database $UUID not found but a filestore exists at $FILESTORE_HOST - refusing automatic restore of default.zip (would delete the filestore). Restore manually if intended."
|
||||
return 1
|
||||
fi
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Database $UUID does not exist and no filestore found, restoring default.zip"
|
||||
/4server/sbin/ODOO_19/restore $UUID default.zip
|
||||
local restore_rc=$?
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Restore of default.zip for $UUID finished with exit code $restore_rc"
|
||||
return $restore_rc
|
||||
else
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Database $UUID already exists, nothing to do"
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
+10
-1
@@ -10,7 +10,7 @@ DB_PATH="/4server/data/contracts.db"
|
||||
|
||||
get_contract_info() {
|
||||
|
||||
echo "get_contract_info $UUID"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Loading contract info for $UUID from $DB_PATH"
|
||||
|
||||
# Single CTE: the table is scanned once and all projections come from it
|
||||
while IFS="=" read -r key value; do
|
||||
@@ -48,4 +48,13 @@ get_contract_info() {
|
||||
done < <(printf '%s' "$SECRET_LIST" | tr -d '\r\n' | tr '\\' '\n')
|
||||
fi
|
||||
export ODOO_DB_PASSWORD=$psql
|
||||
|
||||
if [ -z "$CONTAINERDBID" ]; then
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') WARNING: no contract found for $UUID in $DB_PATH"
|
||||
else
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Loaded contract for $UUID: DBID=$CONTAINERDBID IMAGE=$IMAGE STATUS=$STATUS CREATED=$CREATED EXPIRES=$EXPIRES"
|
||||
fi
|
||||
if [ -z "$ODOO_DB_PASSWORD" ]; then
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') WARNING: no psql secret found for $UUID, ODOO_DB_PASSWORD is empty"
|
||||
fi
|
||||
}
|
||||
+13
-10
@@ -1,5 +1,4 @@
|
||||
#!/bin/bash
|
||||
echo "START ODOO 17"
|
||||
# Load functions
|
||||
source /4server/sbin/ODOO_19/ODOO_19.lib
|
||||
source /4server/sbin/helpers
|
||||
@@ -12,9 +11,7 @@ BRANCH="${BRANCH:-release}"
|
||||
ODOO_DB_USER="${UUID}"
|
||||
#export ODOO_DB_PASSWORD=$(echo "$SECRET" | jq -r '.psql')
|
||||
|
||||
|
||||
echo "ENV: $HDD $DOMAIN_SLOTS $BACKUP_SLOTS $CONTAINERDBID"
|
||||
echo "DBID: $CONTAINERDBID"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') START ODOO 17 UUID=$UUID BRANCH=$BRANCH DBID=$CONTAINERDBID DB_USER=$ODOO_DB_USER HDD=$HDD DOMAIN_SLOTS=$DOMAIN_SLOTS BACKUP_SLOTS=$BACKUP_SLOTS WORKER=$WORKER"
|
||||
|
||||
BASEURL="${BASEURL:-/4server/data/$UUID}"
|
||||
DATA_DIR="$BASEURL/odoo/"
|
||||
@@ -38,25 +35,26 @@ if [ -f "$BASEURL/etc/domain" ]; then
|
||||
LABEL_DOMAINS+=("$domain")
|
||||
done < "$BASEURL/etc/domain"
|
||||
else
|
||||
echo "[DEBUG] No additional domain file found at $BASEURL/etc/domain"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') No custom domain file at $BASEURL/etc/domain, using default domain $UUID.odoo4projects.com only"
|
||||
fi
|
||||
|
||||
RULE=""
|
||||
for d in "${LABEL_DOMAINS[@]}"; do
|
||||
RESOLVED_IP=$(nslookup "$d" 2>/dev/null | awk '/^Address: / { print $2 }' | head -n1 || true)
|
||||
if [ -z "$RESOLVED_IP" ]; then
|
||||
echo "[DEBUG] Could not resolve $d, skipping"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Domain $d does not resolve, skipping"
|
||||
continue
|
||||
fi
|
||||
if [ "$RESOLVED_IP" = "$SERVER_IP" ]; then
|
||||
RULE+=" || Host(\`$d\`)"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Domain $d resolves to $RESOLVED_IP (server IP), added to Traefik rule"
|
||||
else
|
||||
echo "[DEBUG] Skipping $d (does not match SERVER_IP $SERVER_IP)"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Domain $d resolves to $RESOLVED_IP but server IP is $SERVER_IP, skipping"
|
||||
fi
|
||||
done
|
||||
RULE="${RULE# || }"
|
||||
DOMAIN_LABEL="traefik.http.routers.$UUID.rule=$RULE"
|
||||
echo "[DEBUG] Final Traefik label: $DOMAIN_LABEL"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Traefik label for $UUID: $DOMAIN_LABEL"
|
||||
|
||||
docker exec "$UUID" mkdir -p /var/lib/odoo/.local/share/Odoo/
|
||||
docker exec "$UUID" ln -s /home/odoo/.local/share/Odoo/filestore /var/lib/odoo/.local/share/Odoo/filestore
|
||||
@@ -64,9 +62,7 @@ docker exec "$UUID" ln -s /home/odoo/.local/share/Odoo/filestore /var/lib/odoo/.
|
||||
|
||||
find "$BASEURL" -type d -exec chmod 777 {} \;
|
||||
PORT=$((CONTAINERDBID + 2200))
|
||||
echo "PORT $PORT"
|
||||
mkdir -p ${ETC_DIR}
|
||||
echo "GITPATH ${ETC_DIR}gitpath"
|
||||
touch ${ETC_DIR}gitpath
|
||||
|
||||
mkdir -p ${GIT_DIR}keys
|
||||
@@ -74,13 +70,16 @@ touch ${GIT_DIR}keys/id_rsa.pub
|
||||
|
||||
|
||||
echo "git clone \"ssh://git@${UUID}.odoo4projects.com:${PORT}/git-server/repos/odoo.git\"" > "${ETC_DIR}/gitpath"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Wrote git clone path for $UUID to ${ETC_DIR}gitpath (SSH port $PORT)"
|
||||
|
||||
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Stopping and removing existing container $UUID (if any)"
|
||||
docker stop "$UUID" 2>/dev/null
|
||||
docker rm "$UUID" 2>/dev/null
|
||||
|
||||
EXTRA_DOCKER_PARAMETER=""
|
||||
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Starting container $UUID from docker.odoo4projects.com/4projects/odoo_17:$BRANCH (SSH port $PORT, network 4server_4projects)"
|
||||
docker run -d --name "$UUID" \
|
||||
--network 4server_4projects \
|
||||
--restart=always \
|
||||
@@ -112,7 +111,9 @@ docker run -d --name "$UUID" \
|
||||
--label "traefik.http.routers.$UUID.tls=true" \
|
||||
--label "traefik.http.routers.$UUID.service=$UUID" \
|
||||
docker.odoo4projects.com/4projects/odoo_17:$BRANCH
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') docker run for $UUID finished with exit code $?"
|
||||
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Preparing filestore and fixing ownership in container $UUID"
|
||||
docker exec "$UUID" mkdir -p /var/lib/odoo/.local/share/Odoo
|
||||
docker exec "$UUID" rm -rf /var/lib/odoo/.local/share/Odoo/filestore
|
||||
docker exec "$UUID" ln -s /home/odoo/.local/share/Odoo/filestore /var/lib/odoo/.local/share/Odoo/filestore
|
||||
@@ -124,4 +125,6 @@ docker exec $UUID chown -R odoo:odoo /mnt/*
|
||||
docker exec $UUID chown odoo:odoo /git-server/keys/id_rsa.pub
|
||||
|
||||
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Checking/creating database for $UUID (user $ODOO_DB_USER)"
|
||||
check_and_create_db
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') START ODOO 17 finished for $UUID"
|
||||
+13
-9
@@ -12,9 +12,7 @@ BRANCH="${BRANCH:-release}"
|
||||
ODOO_DB_USER="${UUID}"
|
||||
#export ODOO_DB_PASSWORD=$(echo "$SECRET" | jq -r '.psql')
|
||||
|
||||
|
||||
echo "ENV: $HDD $DOMAIN_SLOTS $BACKUP_SLOTS $CONTAINERDBID"
|
||||
echo "DBID: $CONTAINERDBID"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') START ODOO 18 UUID=$UUID BRANCH=$BRANCH DBID=$CONTAINERDBID DB_USER=$ODOO_DB_USER HDD=$HDD DOMAIN_SLOTS=$DOMAIN_SLOTS BACKUP_SLOTS=$BACKUP_SLOTS WORKER=$WORKER"
|
||||
|
||||
BASEURL="${BASEURL:-/4server/data/$UUID}"
|
||||
DATA_DIR="$BASEURL/odoo/"
|
||||
@@ -38,25 +36,26 @@ if [ -f "$BASEURL/etc/domain" ]; then
|
||||
LABEL_DOMAINS+=("$domain")
|
||||
done < "$BASEURL/etc/domain"
|
||||
else
|
||||
echo "[DEBUG] No additional domain file found at $BASEURL/etc/domain"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') No custom domain file at $BASEURL/etc/domain, using default domain $UUID.odoo4projects.com only"
|
||||
fi
|
||||
|
||||
RULE=""
|
||||
for d in "${LABEL_DOMAINS[@]}"; do
|
||||
RESOLVED_IP=$(nslookup "$d" 2>/dev/null | awk '/^Address: / { print $2 }' | head -n1 || true)
|
||||
if [ -z "$RESOLVED_IP" ]; then
|
||||
echo "[DEBUG] Could not resolve $d, skipping"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Domain $d does not resolve, skipping"
|
||||
continue
|
||||
fi
|
||||
if [ "$RESOLVED_IP" = "$SERVER_IP" ]; then
|
||||
RULE+=" || Host(\`$d\`)"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Domain $d resolves to $RESOLVED_IP (server IP), added to Traefik rule"
|
||||
else
|
||||
echo "[DEBUG] Skipping $d (does not match SERVER_IP $SERVER_IP)"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Domain $d resolves to $RESOLVED_IP but server IP is $SERVER_IP, skipping"
|
||||
fi
|
||||
done
|
||||
RULE="${RULE# || }"
|
||||
DOMAIN_LABEL="traefik.http.routers.$UUID.rule=$RULE"
|
||||
echo "[DEBUG] Final Traefik label: $DOMAIN_LABEL"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Traefik label for $UUID: $DOMAIN_LABEL"
|
||||
|
||||
docker exec "$UUID" mkdir -p /var/lib/odoo/.local/share/Odoo/
|
||||
docker exec "$UUID" ln -s /home/odoo/.local/share/Odoo/filestore /var/lib/odoo/.local/share/Odoo/filestore
|
||||
@@ -64,9 +63,7 @@ docker exec "$UUID" ln -s /home/odoo/.local/share/Odoo/filestore /var/lib/odoo/.
|
||||
|
||||
find "$BASEURL" -type d -exec chmod 777 {} \;
|
||||
PORT=$((CONTAINERDBID + 2200))
|
||||
echo "PORT $PORT"
|
||||
mkdir -p ${ETC_DIR}
|
||||
echo "GITPATH ${ETC_DIR}gitpath"
|
||||
touch ${ETC_DIR}gitpath
|
||||
|
||||
mkdir -p ${GIT_DIR}keys
|
||||
@@ -74,13 +71,16 @@ touch ${GIT_DIR}keys/id_rsa.pub
|
||||
|
||||
|
||||
echo "git clone \"ssh://git@${UUID}.odoo4projects.com:${PORT}/git-server/repos/odoo.git\"" > "${ETC_DIR}/gitpath"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Wrote git clone path for $UUID to ${ETC_DIR}gitpath (SSH port $PORT)"
|
||||
|
||||
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Stopping and removing existing container $UUID (if any)"
|
||||
docker stop "$UUID" 2>/dev/null
|
||||
docker rm "$UUID" 2>/dev/null
|
||||
|
||||
EXTRA_DOCKER_PARAMETER=""
|
||||
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Starting container $UUID from docker.odoo4projects.com/4projects/odoo_18:$BRANCH (SSH port $PORT, network 4server_4projects)"
|
||||
docker run -d --name "$UUID" \
|
||||
--network 4server_4projects \
|
||||
--restart=always \
|
||||
@@ -112,7 +112,9 @@ docker run -d --name "$UUID" \
|
||||
--label "traefik.http.routers.$UUID.tls=true" \
|
||||
--label "traefik.http.routers.$UUID.service=$UUID" \
|
||||
docker.odoo4projects.com/4projects/odoo_18:$BRANCH
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') docker run for $UUID finished with exit code $?"
|
||||
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Preparing filestore and fixing ownership in container $UUID"
|
||||
docker exec "$UUID" mkdir -p /var/lib/odoo/.local/share/Odoo
|
||||
docker exec "$UUID" rm -rf /var/lib/odoo/.local/share/Odoo/filestore
|
||||
docker exec "$UUID" ln -s /home/odoo/.local/share/Odoo/filestore /var/lib/odoo/.local/share/Odoo/filestore
|
||||
@@ -124,4 +126,6 @@ docker exec $UUID chown -R odoo:odoo /mnt/*
|
||||
docker exec $UUID chown odoo:odoo /git-server/keys/id_rsa.pub
|
||||
|
||||
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Checking/creating database for $UUID (user $ODOO_DB_USER)"
|
||||
check_and_create_db
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') START ODOO 18 finished for $UUID"
|
||||
+13
-9
@@ -11,10 +11,8 @@ BRANCH="${BRANCH:-release}"
|
||||
|
||||
ODOO_DB_USER="${UUID}"
|
||||
#export ODOO_DB_PASSWORD=$(echo "$SECRET" | jq -r '.psql')
|
||||
echo "***** $ODOO_DB_PASSWORD"
|
||||
|
||||
echo "ENV: $HDD $DOMAIN_SLOTS $BACKUP_SLOTS $CONTAINERDBID"
|
||||
echo "DBID: $CONTAINERDBID"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') START ODOO 19 UUID=$UUID BRANCH=$BRANCH DBID=$CONTAINERDBID DB_USER=$ODOO_DB_USER HDD=$HDD DOMAIN_SLOTS=$DOMAIN_SLOTS BACKUP_SLOTS=$BACKUP_SLOTS WORKER=$WORKER"
|
||||
|
||||
BASEURL="${BASEURL:-/4server/data/$UUID}"
|
||||
DATA_DIR="$BASEURL/odoo/"
|
||||
@@ -38,34 +36,33 @@ if [ -f "$BASEURL/etc/domain" ]; then
|
||||
LABEL_DOMAINS+=("$domain")
|
||||
done < "$BASEURL/etc/domain"
|
||||
else
|
||||
echo "[DEBUG] No additional domain file found at $BASEURL/etc/domain"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') No custom domain file at $BASEURL/etc/domain, using default domain $UUID.odoo4projects.com only"
|
||||
fi
|
||||
|
||||
RULE=""
|
||||
for d in "${LABEL_DOMAINS[@]}"; do
|
||||
RESOLVED_IP=$(nslookup "$d" 2>/dev/null | awk '/^Address: / { print $2 }' | head -n1 || true)
|
||||
if [ -z "$RESOLVED_IP" ]; then
|
||||
echo "[DEBUG] Could not resolve $d, skipping"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Domain $d does not resolve, skipping"
|
||||
continue
|
||||
fi
|
||||
if [ "$RESOLVED_IP" = "$SERVER_IP" ]; then
|
||||
RULE+=" || Host(\`$d\`)"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Domain $d resolves to $RESOLVED_IP (server IP), added to Traefik rule"
|
||||
else
|
||||
echo "[DEBUG] Skipping $d (does not match SERVER_IP $SERVER_IP)"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Domain $d resolves to $RESOLVED_IP but server IP is $SERVER_IP, skipping"
|
||||
fi
|
||||
done
|
||||
RULE="${RULE# || }"
|
||||
DOMAIN_LABEL="traefik.http.routers.$UUID.rule=$RULE"
|
||||
echo "[DEBUG] Final Traefik label: $DOMAIN_LABEL"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Traefik label for $UUID: $DOMAIN_LABEL"
|
||||
|
||||
|
||||
|
||||
find "$BASEURL" -type d -exec chmod 777 {} \;
|
||||
PORT=$((CONTAINERDBID + 2200))
|
||||
echo "PORT $PORT"
|
||||
mkdir -p ${ETC_DIR}
|
||||
chmod 777 ${ETC_DIR}
|
||||
echo "GITPATH ${ETC_DIR}gitpath"
|
||||
touch ${ETC_DIR}gitpath
|
||||
|
||||
mkdir -p ${BACKUP_DIR}
|
||||
@@ -77,13 +74,16 @@ touch ${GIT_DIR}keys/id_rsa.pub
|
||||
|
||||
|
||||
echo "git clone \"ssh://git@${UUID}.odoo4projects.com:${PORT}/git-server/repos/odoo.git\"" > "${ETC_DIR}/gitpath"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Wrote git clone path for $UUID to ${ETC_DIR}gitpath (SSH port $PORT)"
|
||||
|
||||
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Stopping and removing existing container $UUID (if any)"
|
||||
docker stop "$UUID" 2>/dev/null
|
||||
docker rm "$UUID" 2>/dev/null
|
||||
|
||||
EXTRA_DOCKER_PARAMETER=""
|
||||
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Starting container $UUID from docker.odoo4projects.com/4projects/odoo_19:$BRANCH (SSH port $PORT, network 4server_4projects)"
|
||||
docker run -d --name "$UUID" \
|
||||
--network 4server_4projects \
|
||||
--restart=always \
|
||||
@@ -115,11 +115,15 @@ docker run -d --name "$UUID" \
|
||||
--label "traefik.http.routers.$UUID.tls=true" \
|
||||
--label "traefik.http.routers.$UUID.service=$UUID" \
|
||||
docker.odoo4projects.com/4projects/odoo_19:$BRANCH
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') docker run for $UUID finished with exit code $?"
|
||||
|
||||
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Fixing ownership in container $UUID"
|
||||
docker exec $UUID chown -R odoo:odoo /home/odoo/.local
|
||||
docker exec $UUID chown -R odoo:odoo /mnt/*
|
||||
docker exec $UUID chown -R git:git /git-server
|
||||
chmod 777 /4server/data/$UUID/cc
|
||||
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Checking/creating database for $UUID (user $ODOO_DB_USER)"
|
||||
check_and_create_db
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') START ODOO 19 finished for $UUID"
|
||||
+13
-9
@@ -11,10 +11,8 @@ BRANCH="${BRANCH:-release}"
|
||||
|
||||
ODOO_DB_USER="${UUID}"
|
||||
#export ODOO_DB_PASSWORD=$(echo "$SECRET" | jq -r '.psql')
|
||||
echo "***** $ODOO_DB_PASSWORD"
|
||||
|
||||
echo "ENV: $HDD $DOMAIN_SLOTS $BACKUP_SLOTS $CONTAINERDBID"
|
||||
echo "DBID: $CONTAINERDBID"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') START ODOO 20 UUID=$UUID BRANCH=$BRANCH DBID=$CONTAINERDBID DB_USER=$ODOO_DB_USER HDD=$HDD DOMAIN_SLOTS=$DOMAIN_SLOTS BACKUP_SLOTS=$BACKUP_SLOTS WORKER=$WORKER"
|
||||
|
||||
BASEURL="${BASEURL:-/4server/data/$UUID}"
|
||||
DATA_DIR="$BASEURL/odoo/"
|
||||
@@ -38,34 +36,33 @@ if [ -f "$BASEURL/etc/domain" ]; then
|
||||
LABEL_DOMAINS+=("$domain")
|
||||
done < "$BASEURL/etc/domain"
|
||||
else
|
||||
echo "[DEBUG] No additional domain file found at $BASEURL/etc/domain"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') No custom domain file at $BASEURL/etc/domain, using default domain $UUID.$HOSTNAME.odoo4projects.com only"
|
||||
fi
|
||||
|
||||
RULE=""
|
||||
for d in "${LABEL_DOMAINS[@]}"; do
|
||||
RESOLVED_IP=$(nslookup "$d" 2>/dev/null | awk '/^Address: / { print $2 }' | head -n1 || true)
|
||||
if [ -z "$RESOLVED_IP" ]; then
|
||||
echo "[DEBUG] Could not resolve $d, skipping"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Domain $d does not resolve, skipping"
|
||||
continue
|
||||
fi
|
||||
if [ "$RESOLVED_IP" = "$SERVER_IP" ]; then
|
||||
RULE+=" || Host(\`$d\`)"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Domain $d resolves to $RESOLVED_IP (server IP), added to Traefik rule"
|
||||
else
|
||||
echo "[DEBUG] Skipping $d (does not match SERVER_IP $SERVER_IP)"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Domain $d resolves to $RESOLVED_IP but server IP is $SERVER_IP, skipping"
|
||||
fi
|
||||
done
|
||||
RULE="${RULE# || }"
|
||||
DOMAIN_LABEL="traefik.http.routers.$UUID.rule=$RULE"
|
||||
echo "[DEBUG] Final Traefik label: $DOMAIN_LABEL"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Traefik label for $UUID: $DOMAIN_LABEL"
|
||||
|
||||
|
||||
|
||||
find "$BASEURL" -type d -exec chmod 777 {} \;
|
||||
PORT=$((CONTAINERDBID + 2200))
|
||||
echo "PORT $PORT"
|
||||
mkdir -p ${ETC_DIR}
|
||||
chmod 777 ${ETC_DIR}
|
||||
echo "GITPATH ${ETC_DIR}gitpath"
|
||||
touch ${ETC_DIR}gitpath
|
||||
|
||||
mkdir -p ${BACKUP_DIR}
|
||||
@@ -77,13 +74,16 @@ touch ${GIT_DIR}keys/id_rsa.pub
|
||||
|
||||
|
||||
echo "git clone \"ssh://git@${UUID}.${HOSTNAME}.odoo4projects.com:${PORT}/git-server/repos/odoo.git\"" > "${ETC_DIR}/gitpath"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Wrote git clone path for $UUID to ${ETC_DIR}gitpath (SSH port $PORT)"
|
||||
|
||||
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Stopping and removing existing container $UUID (if any)"
|
||||
docker stop "$UUID" 2>/dev/null
|
||||
docker rm "$UUID" 2>/dev/null
|
||||
|
||||
EXTRA_DOCKER_PARAMETER=""
|
||||
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Starting container $UUID from docker.odoo4projects.com/4projects/odoo_20:$BRANCH (SSH port $PORT, network 4server_4projects)"
|
||||
docker run -d --name "$UUID" \
|
||||
--network 4server_4projects \
|
||||
--restart=always \
|
||||
@@ -115,11 +115,15 @@ docker run -d --name "$UUID" \
|
||||
--label "traefik.http.routers.$UUID.tls=true" \
|
||||
--label "traefik.http.routers.$UUID.service=$UUID" \
|
||||
docker.odoo4projects.com/4projects/odoo_20:$BRANCH
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') docker run for $UUID finished with exit code $?"
|
||||
|
||||
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Fixing ownership in container $UUID"
|
||||
docker exec $UUID chown -R odoo:odoo /home/odoo/.local
|
||||
docker exec $UUID chown -R odoo:odoo /mnt/*
|
||||
docker exec $UUID chown -R git:git /git-server
|
||||
chmod 777 /4server/data/$UUID/cc
|
||||
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Checking/creating database for $UUID (user $ODOO_DB_USER)"
|
||||
check_and_create_db
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') START ODOO 20 finished for $UUID"
|
||||
+5
-3
@@ -1,10 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
#--label "traefik.http.routers.${UUID}.middlewares=cors-headers@file" \
|
||||
echo "Start N8N container ${UUID}"
|
||||
|
||||
# Get the hostname of the machine
|
||||
HOSTNAME=$(hostname)
|
||||
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') START N8N UUID=${UUID} HOST=${HOSTNAME} DOMAIN=${UUID}.odoo4projects.com"
|
||||
|
||||
mkdir -p /4server/data/${UUID}/n8n
|
||||
mkdir -p /4server/data/${UUID}/data
|
||||
mkdir -p /4server/data/${UUID}/backup
|
||||
@@ -15,13 +16,14 @@ chmod 777 /4server/data/${UUID}/backup
|
||||
|
||||
# Stop the container if it exists
|
||||
if docker ps -a --format '{{.Names}}' | grep -q "^${UUID}$"; then
|
||||
echo "$(date '+%Y-%m-%d %H:%M') - stopping existing container $UUID"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Stopping and removing existing container $UUID"
|
||||
docker stop "$UUID"
|
||||
docker rm "$UUID"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') Starting container $UUID from docker.odoo4projects.com/4projects/n8n:release (data in /4server/data/${UUID}, network 4server_4projects)"
|
||||
docker run -d \
|
||||
--name "$UUID" \
|
||||
-p 5678 \
|
||||
@@ -59,4 +61,4 @@ docker run -d \
|
||||
--network 4server_4projects \
|
||||
docker.odoo4projects.com/4projects/n8n:release
|
||||
|
||||
echo "Started $1"
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') docker run for $UUID finished with exit code $?"
|
||||
Reference in new issue
Block a user