jananathbanuka
fix issues
4b12e15
# Installing on the Google Cloud Platform (GCP)
## 🎥 Video Instructions
Watch **[Detailed Video Instructions](https://youtu.be/6bC93sek9v8)** to set up the No-Code Architects Toolkit API.
- Use the **Docker Image** below:
```
stephengpope/no-code-architects-toolkit:latest
```
### Video Resources
- **[Postman Template](https://bit.ly/49Gkh61)**
- **[NCA Toolkit API GPT](https://bit.ly/4feDDk4)**
Or use the guide below walks you through the steps to install the NCA Toolkit API on GCP.
---
## **Prerequisites**
- A Google Cloud account. [Sign up here](https://cloud.google.com/) if you don't already have one.
- New users receive $300 in free credits.
- Basic knowledge of GCP services such as Cloud Run and Cloud Storage.
- A terminal or code editor for managing files.
---
## **Step 1: Create a Google Cloud Project**
1. Log into the [GCP Console](https://console.cloud.google.com/).
2. Click on the **Project Selector** in the top navigation bar and select **New Project**.
3. Enter a project name, such as `NCA Toolkit Project`.
4. Click **Create**.
---
## **Step 2: Enable Required APIs**
Enable the following APIs:
- **Cloud Storage API**
- **Cloud Storage JSON API**
- **Cloud Run API**
### **How to Enable APIs:**
1. In the GCP Console, navigate to **APIs & Services** > **Enable APIs and Services**.
2. Search for each API, click on it, and enable it.
---
## **Step 3: Create a Service Account**
1. Navigate to **IAM & Admin** > **Service Accounts** in the GCP Console.
2. Click **+ Create Service Account**.
- Enter a name (e.g., `NCA Toolkit Service Account`).
3. Assign the following roles to the service account:
- **Storage Admin**
- **Viewer**
4. Click **Done** to create the service account.
5. Open the service account details and navigate to the **Keys** tab.
- Click **Add Key** > **Create New Key**.
- Choose **JSON** format, download the file, and store it securely.
---
## **Step 4: Create a Cloud Storage Bucket**
1. Navigate to **Storage** > **Buckets** in the GCP Console.
2. Click **+ Create Bucket**.
- Choose a unique bucket name (e.g., `nca-toolkit-bucket`).
- Leave default settings, but:
- Uncheck **Enforce public access prevention**.
- Set **Access Control** to **Uniform**.
3. Click **Create** to finish.
4. Go to the bucket permissions, and add **allUsers** as a principal with the role:
- **Storage Object Viewer**.
5. Save changes.
---
## **Step 5: Deploy on Google Cloud Run**
### 1. Navigate to Cloud Run
- Open the **Cloud Run** service in the **Google Cloud Console**.
### 2. Create a New Service
- Click **Create Service**.
- Then **Deploy one revision from Docker Hub using the image below**:
```
stephengpope/no-code-architects-toolkit:latest
```
### 3. Allow Unauthenticated Invocations
- Check the box to **allow unauthenticated invocations**.
### 4. Configure Resource Allocation
- Set **Memory**: `16 GB`.
- Set **CPU**: `4 CPUs`.
- Set **CPU Allocation**: **Always Allocated**.
### 5. Adjust Scaling Settings
- **Minimum Instances**: `0` (to minimize cost during idle times).
- **Maximum Instances**: `5` (adjustable based on expected load).
### 6. Use Second-Generation Servers
- Scroll to **Platform Version** and select **Second Generation**.
- Second-generation servers offer better performance and feature support for advanced use cases.
### 7. Add Environment Variables
- Add the following environment variables:
- `API_KEY`: Your API key (e.g., `Test123`).
- `GCP_BUCKET_NAME`: The name of your Cloud Storage bucket.
- `GCP_SA_CREDENTIALS`: The JSON key of your service account.
- Paste the **entire contents** of the downloaded JSON key file into this field.
- Ensure:
- Proper JSON formatting.
- No leading or trailing spaces.
### 8. Configure Advanced Settings
- Set the **Container Port**: Default to `8080`.
- **Request Timeout**: `300 seconds` (to handle long-running requests).
- Enable **Startup Boost** to improve performance for the first request after a cold start.
### 9. Deploy the Service
- Verify all settings and click **Create**.
- The deployment process might take a few minutes. Once completed, a green checkmark should appear in the Cloud Run dashboard.
By following these steps, the NCA Toolkit will be successfully deployed and accessible via Google Cloud Run with second-generation servers for optimal performance.
---
## **Step 6: Test the Deployment**
1. Install **[Postman Template](https://bit.ly/49Gkh61)** on your computer.
2. Import the API example requests from the NCA Toolkit GitHub repository.
3. Configure two environment variables in Postman:
- `base_url`: Your deployed Cloud Run service URL.
- `x-api-key`: The API key you configured in **Step 5**.
4. Use the example requests to validate that the API is functioning correctly.
5. Use the **[NCA Toolkit API GPT](https://bit.ly/4feDDk4)** to learn more.
By following these steps, your NCA Toolkit API should be successfully deployed on Google Cloud Platform.
---
## **Optional: Enable Cloud Run Jobs for Long-Running Tasks**
For tasks that may exceed Cloud Run's request timeout or require dedicated resources, you can optionally configure Cloud Run Jobs to offload long-running operations.
### **What are Cloud Run Jobs?**
Cloud Run Jobs execute tasks that run to completion and then shut down, making them ideal for:
- Video processing
- Large file downloads
- Batch operations
- Any task that may take longer than the request timeout
### **Benefits:**
- **No timeout limits**: Jobs can run as long as needed (up to 24 hours)
- **Cost-effective**: Only pay for the time the job is running
- **Automatic scaling**: Each job gets dedicated resources
- **Better reliability**: Jobs won't be interrupted by request timeouts
---
### **Setup Instructions**
#### **1. Create a Cloud Run Job**
1. Navigate to **Cloud Run** > **Jobs** in the GCP Console
2. Click **Create Job**
3. Configure the job:
- **Container image**: `stephengpope/no-code-architects-toolkit:latest`
- **Job name**: `nca-toolkit-job` (or your preferred name)
- **Region**: Same as your Cloud Run service (e.g., `us-central1`)
- **Memory**: `16 GB`
- **CPU**: `4 CPUs`
- **Task timeout**: `3600 seconds` (1 hour, adjust as needed)
- **Maximum retries**: `0` (jobs will handle their own error reporting)
#### **2. Configure Environment Variables**
Add the same environment variables as your Cloud Run service:
- `API_KEY`: Your API key
- `GCP_BUCKET_NAME`: Your Cloud Storage bucket name
- `GCP_SA_CREDENTIALS`: Your service account JSON key (entire contents)
#### **3. Add Job Configuration to Cloud Run Service**
Update your Cloud Run **service** environment variables to enable job triggering:
- `GCP_JOB_NAME`: The name of your Cloud Run Job (e.g., `nca-toolkit-job`)
- `GCP_JOB_LOCATION`: The region where your job is deployed (e.g., `us-central1`)
#### **4. Grant Permissions**
Your service account needs permission to trigger jobs:
1. Navigate to **IAM & Admin** > **IAM**
2. Find your service account (e.g., `NCA Toolkit Service Account`)
3. Click **Edit** and add the following role:
- **Cloud Run Invoker**
4. Save changes
---
### **How It Works**
When you make a request with a `webhook_url` parameter:
1. **Cloud Run service** receives the request
2. If `GCP_JOB_NAME` is configured, it triggers a **Cloud Run Job** instead of processing locally
3. The job starts, processes the task, and sends results to your webhook
4. The job automatically shuts down after completion
**Example request:**
```json
{
"media_url": "https://example.com/large-video.mp4",
"webhook_url": "https://your-webhook.com/callback"
}
```
The service will:
- Return immediately with a job submission confirmation
- Trigger the Cloud Run Job
- Job processes the video and sends results to your webhook when complete
---
### **Monitoring Jobs**
- View job executions in **Cloud Run** > **Jobs** > **[Your Job Name]** > **Executions**
- Each execution shows:
- Execution ID (used for tracking in logs)
- Start time
- Duration
- Status (Running, Succeeded, Failed)
- Logs
---
### **Cost Considerations**
Cloud Run Jobs pricing:
- Billed per second of CPU and memory usage
- Only charged while the job is actively running
- No charges when idle
**Example:** A 10-minute video processing job using 4 CPU / 16 GB would cost approximately $0.20-0.30 per execution.
---
### **Troubleshooting**
**Jobs not triggering?**
- Verify `GCP_JOB_NAME` and `GCP_JOB_LOCATION` are set correctly in your Cloud Run service
- Check that your service account has **Cloud Run Invoker** role
- Ensure the job exists in the specified region
**Jobs failing?**
- Check job execution logs in Cloud Run console
- Verify all environment variables are properly set on the job
- Ensure task timeout is sufficient for your workload
**Not receiving webhooks?**
- Verify your webhook URL is accessible from GCP
- Check job execution logs for webhook delivery errors
- Ensure your webhook endpoint can handle POST requests
---
**Note:** Cloud Run Jobs are completely optional. If not configured, all requests will be processed by the Cloud Run service normally.