#!/bin/bash set -e # API Configuration COOLIFY_TOKEN="1790|8Klldu1hXjtODfZhl0dFn5D6Jhd7X285CuPzcQBdffaed898" GITEA_TOKEN="968f51fc9f957c567f592c691bafd453c839b7e9" CLOUDFLARE_TOKEN="h5mN_lhWW5Rl4aVP0eyVU_Z7u3PndZVtW4q7ExLK" COOLIFY_API="https://app.coolify.io/api/v1" GITEA_API="https://git.startanaicompany.com/api/v1" CLOUDFLARE_API="https://api.cloudflare.com/client/v4" # Project details PROJECT_UUID="y8804s80goowsccwk8400kwo" REPO_NAME="ai-recruit-site-template" GITEA_USER="mikael.westoo" ZONE_ID="e6ade38a28032c3542140a9cbf592838" echo "=== Step 1: Adding Private Key to Coolify ===" PRIVATE_KEY_JSON=$(jq -Rs . < ./deploy_key) PRIVATE_KEY_RESPONSE=$(curl -s -X POST "${COOLIFY_API}/private-keys" \ -H "Authorization: Bearer ${COOLIFY_TOKEN}" \ -H "Content-Type: application/json" \ -d "{\"name\": \"recruitai-deploy-key\", \"description\": \"Deploy key for RecruitAI\", \"private_key\": ${PRIVATE_KEY_JSON}}") echo "$PRIVATE_KEY_RESPONSE" PRIVATE_KEY_UUID=$(echo "$PRIVATE_KEY_RESPONSE" | jq -r '.uuid') echo "Private Key UUID: ${PRIVATE_KEY_UUID}" echo "" echo "=== Step 2: Adding Deploy Key to Gitea ===" PUBLIC_KEY=$(cat ./deploy_key.pub) curl -s -X POST "${GITEA_API}/repos/${GITEA_USER}/${REPO_NAME}/keys" \ -H "Authorization: token ${GITEA_TOKEN}" \ -H "Content-Type: application/json" \ -d "{\"title\": \"Coolify Deploy Key\", \"key\": \"${PUBLIC_KEY}\", \"read_only\": true}" | jq '.' echo "" echo "=== Step 3: Pushing to Gitea ===" git remote remove origin 2>/dev/null || true git remote add origin git@git.startanaicompany.com:${GITEA_USER}/${REPO_NAME}.git git push -u origin master echo "" echo "=== Step 4: Creating Coolify Application ===" APP_RESPONSE=$(curl -s -X POST "${COOLIFY_API}/applications/public" \ -H "Authorization: Bearer ${COOLIFY_TOKEN}" \ -H "Content-Type: application/json" \ -d "{ \"project_uuid\": \"${PROJECT_UUID}\", \"environment_name\": \"production\", \"server_uuid\": 0, \"type\": \"public\", \"source\": { \"type\": \"git\", \"url\": \"git@git.startanaicompany.com:${GITEA_USER}/${REPO_NAME}\", \"branch\": \"master\", \"private_key_uuid\": \"${PRIVATE_KEY_UUID}\" }, \"build_pack\": \"dockerfile\", \"ports_exposes\": \"3000\", \"name\": \"recruitai\" }") echo "$APP_RESPONSE" | jq '.' APP_UUID=$(echo "$APP_RESPONSE" | jq -r '.uuid') DEFAULT_FQDN=$(echo "$APP_RESPONSE" | jq -r '.fqdn' | sed 's|http://||' | sed 's|https://||') echo "" echo "App UUID: ${APP_UUID}" echo "Default FQDN: ${DEFAULT_FQDN}" echo "" echo "=== Step 5: Adding Webhook to Gitea ===" curl -s -X POST "${GITEA_API}/repos/${GITEA_USER}/${REPO_NAME}/hooks" \ -H "Authorization: token ${GITEA_TOKEN}" \ -H "Content-Type: application/json" \ -d "{ \"type\": \"gitea\", \"config\": { \"url\": \"https://app.coolify.io/api/v1/deploy?uuid=${APP_UUID}\", \"content_type\": \"json\", \"http_method\": \"GET\" }, \"events\": [\"push\"], \"active\": true }" | jq '.' echo "" echo "=== Step 6: Creating DNS Record ===" DNS_RESPONSE=$(curl -s -X POST "${CLOUDFLARE_API}/zones/${ZONE_ID}/dns_records" \ -H "Authorization: Bearer ${CLOUDFLARE_TOKEN}" \ -H "Content-Type: application/json" \ -d "{ \"type\": \"CNAME\", \"name\": \"recruitai\", \"content\": \"${DEFAULT_FQDN}\", \"ttl\": 1, \"proxied\": false }") echo "$DNS_RESPONSE" | jq '.' echo "" echo "=== Step 7: Updating Application Domain ===" curl -s -X PATCH "${COOLIFY_API}/applications/${APP_UUID}" \ -H "Authorization: Bearer ${COOLIFY_TOKEN}" \ -H "Content-Type: application/json" \ -d "{\"domains\": \"http://recruitai.startanaicompany.com\"}" | jq '.' echo "" echo "=== Step 8: Deploying Application ===" curl -s -X GET "${COOLIFY_API}/deploy?uuid=${APP_UUID}&force=true" \ -H "Authorization: Bearer ${COOLIFY_TOKEN}" | jq '.' echo "" echo "==========================================" echo "=== Deployment Complete! ===" echo "==========================================" echo "" echo "Site URL: http://recruitai.startanaicompany.com" echo "Admin Panel: http://recruitai.startanaicompany.com/admin/login" echo "" echo "App UUID: ${APP_UUID}" echo "Project UUID: ${PROJECT_UUID}" echo "" echo "Please wait 2-3 minutes for the deployment to complete." echo "You can check the deployment status in the Coolify dashboard."