# 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.