#!/bin/bash # Unified Odoo start script for all versions (17 / 18 / 19). # Called by startContainer with IMAGE_TAG exported, e.g.: # IMAGE_TAG=odoo_19 /4server/sbin/start/odoo # # Requires (exported by startContainer before this is called): # CONTAINER_ID, IMAGE_TAG, SOFTWARE, DB_NAME _self="$(realpath "${BASH_SOURCE[0]:-$0}")"; SBIN_ROOT="$(dirname "$(dirname "$_self")")" # parent of start/ source "$SBIN_ROOT/helpers" source "$SBIN_ROOT/odoo.lib" load_container_config "$CONTAINER_ID" get_contract_info BRANCH="${BRANCH:-release}" DB_NAME="${DB_NAME:-$CONTAINER_ID}" ODOO_DB_USER="$DB_NAME" log "Starting Odoo container: CONTAINER_ID=$CONTAINER_ID IMAGE_TAG=$IMAGE_TAG DB_NAME=$DB_NAME" BASEURL="/4server/data/$CONTAINER_ID" DATA_DIR="$BASEURL/odoo" CUSTOM_DIR="$BASEURL/git/$CONTAINER_ID/custom" ENTERPRISE_DIR="$BASEURL/git/$CONTAINER_ID/enterprise" LOGS_DIR="$BASEURL/logs" CONFIG_DIR="$BASEURL/config" CC_DIR="$BASEURL/cc" BACKUP_DIR="/BACKUP/$CONTAINER_ID" GIT_DIR="$BASEURL/git-server" INSTALL_DIR="$BASEURL/install" SSH_DIR="$BASEURL/.ssh" ETC_DIR="$BASEURL/etc" PORT=$((CONTAINERDBID + 2200)) log "SSH port: $PORT" # --- prepare directories --- find "$BASEURL" -type d -exec chmod 777 {} \; mkdir -p "$ETC_DIR" "$BACKUP_DIR" "$GIT_DIR/keys" "$INSTALL_DIR" "$SSH_DIR" chmod 777 "$ETC_DIR" "$BACKUP_DIR" "$GIT_DIR" touch "$GIT_DIR/keys/id_rsa.pub" echo "git clone \"ssh://git@${CONTAINER_ID}.odoo4projects.com:${PORT}/git-server/repos/odoo.git\"" > "$ETC_DIR/gitpath" # --- build Traefik domain rule (exports DOMAIN_LABEL) --- build_traefik_rule # --- stop and remove any existing container --- docker stop "$CONTAINER_ID" 2>/dev/null || true docker rm "$CONTAINER_ID" 2>/dev/null || true # --- run --- docker run -d --name "$CONTAINER_ID" \ --network 4server_4projects \ --restart=always \ -v "$DATA_DIR/odoo-web-data:/home/odoo/.local/share/Odoo" \ -v "$CUSTOM_DIR:/mnt/addons/custom" \ -v "$ENTERPRISE_DIR:/mnt/addons/enterprise" \ -v "$LOGS_DIR:/mnt/logs" \ -v "$CC_DIR:/mnt/cc" \ -v "$BACKUP_DIR:/mnt/backup" \ -v "$GIT_DIR:/git-server" \ -v "$INSTALL_DIR:/mnt/install" \ -v "$SSH_DIR:/etc/sshkey" \ -v "$ETC_DIR:/mnt/etc" \ -p "$PORT:22" \ -e HOST="beedb" \ -e USER="$ODOO_DB_USER" \ -e PASSWORD="$ODOO_DB_PASSWORD" \ -e CONTAINER_ID="$CONTAINER_ID" \ -e DB_NAME="$DB_NAME" \ -e HDD="$HDD" \ -e DOMAINS_SLOTS="$DOMAINS_SLOTS" \ -e BACKUP_SLOTS="$BACKUP_SLOTS" \ -e WORKER="$WORKER" \ -e GIT="$GIT" \ --label "$DOMAIN_LABEL" \ --label "traefik.http.services.$CONTAINER_ID.loadbalancer.server.port=8069" \ --label "traefik.http.routers.$CONTAINER_ID.entrypoints=web,websecure" \ --label "traefik.http.routers.$CONTAINER_ID.tls=true" \ --label "traefik.http.routers.$CONTAINER_ID.tls.certresolver=production" \ --label "traefik.http.routers.$CONTAINER_ID.service=$CONTAINER_ID" \ "docker.odoo4projects.com/4projects/${IMAGE_TAG}:${BRANCH}" \ || die "docker run failed for $CONTAINER_ID" # --- fix ownership inside container --- docker exec "$CONTAINER_ID" chown -R odoo:odoo /home/odoo/.local docker exec "$CONTAINER_ID" chown -R odoo:odoo /mnt docker exec "$CONTAINER_ID" chown -R git:git /git-server chmod 777 "$CC_DIR" # --- ensure DB/user exist, restore from default.zip if brand new --- check_and_create_db