Spaces:
Runtime error
Runtime error
File size: 9,198 Bytes
4b12e15 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 |
# 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. |