Add deployment script and documentation

- Deployment script for Coolify setup
- Comprehensive deployment guide
- SSH public key included
- Updated .gitignore to exclude private key
This commit is contained in:
Mikael Westöö
2026-01-23 21:23:39 +01:00
parent 406d278a39
commit 30f094f049
4 changed files with 434 additions and 0 deletions

127
deploy.sh Executable file
View File

@@ -0,0 +1,127 @@
#!/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."