Deploy your first environment
This guide picks up where Create Your First Project left off. By the end, you'll have a running Odoo instance accessible over HTTPS.
Before you start, make sure you have:
- A server added and showing "Running" status
- A project created (with or without a Git repo)
- Available resource quota (check Settings > Usage)
Create the environment
- Go to Projects and open your project
- Click the Environments tab, then Add Environment
Pick the basics
Environment name - Auto-generated from your project slug and type (e.g., acme-development). You can change it, but the auto-generated name is fine.
Environment type - Start with Development. You can always clone it to staging or production later.
Server - Pick from the dropdown. Each entry shows available capacity. If the server shows "Offline", check your SSH connection in Settings > Servers.
Allocate resources
Use the presets for a quick start:
| Preset | CPU | RAM | Disk | Good for |
|---|---|---|---|---|
| Small | 1 core | 2 GB | 10 GB | Development, small apps |
| Medium | 2 cores | 4 GB | 20 GB | Staging, moderate traffic |
| Large | 4 cores | 8 GB | 50 GB | Production |
| X-Large | 8 cores | 16 GB | 100 GB | Heavy workloads |
Start small and scale up later if needed. You can resize without losing data.
PostgreSQL gets 30% of your CPU and RAM by default. The rest goes to Odoo. You can customize this split under Advanced PostgreSQL Settings if your workload is database-heavy.
Configure domain and Git branch
Subdomain - Auto-generated (e.g., acme-development.apps.oec.sh). You can customize it. OEC.SH checks availability as you type.
Custom domain - Optional. You can add one later. For production, you'll probably want erp.yourcompany.com instead of the system subdomain.
Git branch - Defaults to your project's main branch. For development environments, you might want develop or a feature branch instead.
Create it
Click Create Environment. This takes about a second.
A dialog asks: Deploy now?
Click Deploy Now to start the deployment immediately.
Watch the deployment
The deployment modal shows real-time progress through 16 steps. The important ones:
- Connecting - SSH into your server
- Cloning repos - Pulling your code from Git
- Starting PostgreSQL - Creating the database container
- Pulling Odoo image - Downloading the Docker image (slow on first deploy, cached after)
- Starting Odoo - Launching the application container
- Installing dependencies - Running
pip installfor yourrequirements.txt - Initializing database - Setting up the Odoo schema
- Health check - Verifying Odoo responds to HTTP requests
The modal auto-refreshes every 2 seconds. When you see a green Success badge and 100% progress, you're done.
Typical timing: 3-5 minutes for the first deploy, 2-3 minutes for subsequent deploys.
Access your Odoo instance
After deployment completes:
- Click the environment URL shown in the modal (e.g.,
https://acme-development.apps.oec.sh) - Log in:
- Email:
admin - Password: Find it in the environment details page under Admin Credentials (click "Reveal Password")
- Email:
Change the admin password immediately after your first login. Go to Settings > Users > admin > Change Password.
From here you can install modules, configure your company, and start building.
What to do next
Set up backups - Go to your environment's Backups tab and create a backup policy. Don't skip this.
Add a custom domain - For production, see Add Custom Domain.
Clone to staging - When development looks good, clone the environment to staging for testing. See Clone Environment.
Enable auto-deploy - In the environment's Repositories tab, toggle auto-deploy so pushing to your Git branch triggers a new deployment.
If something goes wrong
Deployment stuck on "Pulling Image"
First deploys need to download the Odoo Docker image (~500-800 MB). On slow connections this can take a few minutes. Wait it out - subsequent deploys skip this step entirely.
"Database initialization failed"
Usually a code problem in your custom modules. Check:
- Python syntax errors in your addons
- Missing packages in
requirements.txt - Broken
__manifest__.pydependencies
The Logs tab on your environment page shows the full error output.
"Health check failed"
Odoo started but crashed. Common causes:
- Not enough RAM - Increase to at least 2 GB (4 GB recommended)
- Missing Python dependency - Check
requirements.txt - Module error - Check the Odoo container logs for the traceback
"Failed to connect to server"
Your server is unreachable. Check:
- Server is powered on
- SSH credentials are correct (test in Settings > Servers)
- Firewall allows SSH from OEC.SH
"Quota exceeded"
You've used all your plan's resources. Either stop/delete unused environments to free up quota, or upgrade your plan in Settings > Billing.
Need more help? Check the Troubleshooting Guide or email support@oec.sh.