Deploy Oxy on GCP
This guide walks you through deploying Oxy on Google Cloud Platform using Compute Engine VM instances with direct access. We’ll cover everything from setting up a virtual machine to configuring Oxy with proper data persistence.This guide sets up Oxy for direct access on port 3000. For production
deployments, consider implementing additional security measures such as HTTPS
with SSL certificates, authentication, and network access controls.
This is part of our Hands-on Deployment Guides. For
additional deployment options, see our Docker Deployment
Guide or the general deployment
overview.
Prerequisites
Before you begin, make sure you have:- A Google Cloud Platform account
- A domain name (optional, but recommended for production deployments)
- Basic familiarity with Linux command line
Getting a VM Instance
Follow these steps to create a VM instance in Google Cloud Platform:Access Google Cloud Console
Go to the Google Cloud Console and sign in with your account.
Create or Select a Project
Select an existing project or create a new one using the project selector at
the top of the page.
Navigate to Compute Engine
From the navigation menu, select Compute Engine > VM instances.If this is your first time using Compute Engine, you might need to enable the API.
Create a VM Instance
Click the CREATE INSTANCE button and configure your instance: - Name:
Choose a name for your instance (e.g.,
oxy-server) - Region & Zone:
Select a region close to your users - Machine Configuration: - For optimal
cost-performance, consider using ARM-based instances (T2A series): -
t2a-standard-1 (1 vCPU ARM, 4 GB memory) - Boot disk: - Operating
System: Ubuntu - Version: Latest stable (e.g., Ubuntu 22.04) - Size:
recommended starting point 10 GB - Firewall: - Check “Allow HTTP traffic”
to allow access on port 3000 - You may also check “Allow HTTPS traffic” if you
plan to set up HTTPS later Click Create to provision your VM.Pointing Your Domain to the VM (Optional)
If you have a domain name you want to use for your Oxy deployment:Access DNS Settings
Go to your domain registrar’s website (such as GoDaddy, Namecheap, or Google Domains) and navigate to the DNS settings for your domain.
Add DNS Records
Add the following DNS records: - A Record: - Host/Name:
@ (represents
the root domain) - Value/Points to: Your VM’s External IP address - TTL: 3600
(or as recommended by your registrar) - A Record for www subdomain: -
Host/Name: www - Value/Points to: Your VM’s External IP address - TTL: 3600
(or as recommended by your registrar)Wait for DNS Propagation
DNS changes can take from a few minutes to several hours to propagate. You can check the status using online tools like whatsmydns.net.
Setting Up the VM
Connect to your VM instance and prepare it for Oxy deployment:Connect to Your VM
You can connect directly from the Google Cloud Console by clicking the “SSH” button next to your instance, or use a terminal:
Installing Oxy CLI
Let’s install Oxy directly on the VM:Install Oxy
Run the official Oxy installation script:This script will download and install the latest stable version of Oxy.
Setting Up Oxy Workspace
Let’s use the built-inoxy init command to initialize a new workspace with all the necessary files and configuration:
Initialize Oxy Project
bash oxy init This interactive command will: 1. Create a config.yml
file with your database and model configurations 2. Set up sample project
files 3. Create necessary directories like agents and workflows Follow the
prompts to configure: - Database settings (You can start with DuckDB for
simplicity) - Model configuration (e.g., OpenAI with your API key) The
initialization process will ask for your OpenAI API key and create all the
necessary configuration.Alternative: Set Up Git and Clone Existing Project
If you already have an existing Oxy project in a Git repository, you should
set up Git and clone your repository instead of using
oxy init.bash git config --global user.name "Your Name" git config --global user.email "your.email@example.com" Then clone your existing repository: bash git clone https://github.com/yourusername/your-oxy-project.git ~/oxy-workspace cd ~/oxy-workspace This will give you your existing project configuration and
agents, which is preferable to starting from scratch if you already have a
working setup.Configure Environment Variables
Create a standard Add your environment variables:Save and exit.Note: You won’t need to manually set the OpenAI API key in the environment as it’s already configured during the
.env file in the workspace directory:If you don’t set
OXY_STATE_DIR, Oxy will use the default location ~/.local/share/oxy/.
We recommend setting it explicitly for production deployments to make backups and maintenance easier.oxy init process.Firewall Configuration
To ensure your Oxy deployment is accessible, you need to create a firewall rule that allows traffic on port 3000:Create Rule for Port 3000
Click CREATE FIREWALL RULE and configure: - Name:
allow-oxy-port-3000 - Direction: Ingress - Action: Allow -
Targets: Specified target tags - Target tags: oxy-server (or the tag
you want to use) - Source IP ranges: 0.0.0.0/0 (for public access) or
your specific IP range for restricted access - Protocols and ports: -
Check “Specified protocols and ports” - Select “TCP” - Enter port 3000 Click
CREATE to save the rule.Setting Up and Starting Oxy as a Service
Let’s configure Oxy to run automatically on system startup and restart if it fails:Create a Systemd Service File
We specify port 3000 explicitly to match the firewall rule configuration. The service will be accessible directly on this port from the internet.
ubuntu user which is standard on GCP instances. If you’re using a different username, adjust accordingly.Save and exit.Enable and Start the Service
sudo systemctl daemon-reload sudo systemctl enable oxy sudo systemctl
Machine Recommendations
Oxy runs well with just 4GB of memory for most use cases.
| Usage Level | ARM-based (Best Value) | x86-based |
|---|---|---|
| Small (1-3 users) | t2a-standard-1 (2 vCPU, 4 GB) | e2-medium (1 vCPU, 4 GB) |
| Medium (3-5 users) | t2a-standard-2 (2 vCPU, 8 GB) | e2-standard-2 (2 vCPU, 8 GB) |
| Large (5-15 users) | t2a-standard-4 (4 vCPU, 16 GB) | e2-standard-4 (4 vCPU, 16 GB) |
Scaling on GCP
As your usage grows, you may need to scale your deployment:Vertical Scaling
- Stop your VM from the GCP Console
- Edit the VM configuration to increase CPU and memory
- Start the VM again
-
Reconnect and start your Oxy service:
Storage Scaling
If you need more storage for your Oxy data:- Create a new persistent disk in the GCP Console
-
Connect to your VM and mount the disk:
-
To make the mount persistent across reboots, add it to fstab:
Troubleshooting
Cannot access Oxy through the domain or IP
Cannot access Oxy through the domain or IP
- Check your GCP firewall rules: Go to VPC Network → Firewall in GCP Console
and verify port 3000 is allowed - Verify VM network tags match the firewall
rule target tags - Test local connection:
curl http://localhost:3000- For domain issues: Rundig yourdomain.comto verify DNS is pointing to your VM’s external IP - Check if your VM’s external IP has changed (this can happen after stop/start)
Oxy service won't start
Oxy service won't start
- View detailed logs:
sudo journalctl -u oxy -f- Verify environment file exists:cat ~/oxy-workspace/.env- Check service file:sudo cat /etc/systemd/system/oxy.service- Ensure workspace exists:ls -la ~/oxy-workspace- Verify Oxy binary is installed:which oxy
Data not persisting between restarts
Data not persisting between restarts
- Verify data directory exists:
ls -la ~/oxy-data- Check environment variable is set:grep OXY_STATE_DIR ~/oxy-workspace/.env- If you didn’t setOXY_STATE_DIR, check the default location:ls -la ~/.local/share/oxy/- Ensure proper permissions:sudo chown -R ubuntu:ubuntu ~/oxy-data
Connection refused or timeout errors
Connection refused or timeout errors
- Verify the VM instance is running in the GCP Console - Check if the
firewall rule allows traffic on port 3000 - Ensure Oxy service is running:
sudo systemctl status oxy- Test if the port is open:sudo netstat -tlnp | grep :3000- Verify the VM has the correct network tag applied
Next Steps
Once your GCP deployment is running:- Configure agents and workflows in your workspace
- Set up regular backups for your data
- Consider implementing a CI/CD pipeline for deploying configuration updates
- Monitor your VM’s resource usage and scale as needed