Documentation Deploy & operate
Deployments & rollback
The app screen: build and update an app, its settings, branches and URLs, maintenance mode, runs and logs, and who may do what.
The app screen
One app is one Odoo instance in one environment of a project. This screen is where you change it, run it and follow what happened to it.
You can
- Change its settings on the Overview's tabs: Info, Configs, URLs and Automation.
- Act on it from the header: Open, Build, Backup, the Access menu and More.
- Follow its runs under Operations and its logs under Logger.
- Go back to an earlier state from Restore points, or restore a backup from Backups.
Good to know
- You only see the buttons and menus your role allows in this environment (Who may do what).
- An app runs one change at a time: while one runs, the next waits or is refused.
- App History, under the tabs, lists every change and run, newest first.

Deploy, update or build
Build opens one dialog with up to three choices. Each one shows only when you may run it and the app is in a state where it makes sense.
| Choice | What it does | When it is offered |
|---|---|---|
| Deploy | Builds the app's container and code again and starts it. The first deploy of a new app creates its database. | Always. |
| Update | Pulls the latest code of the app's branches and updates the installed modules. This is the everyday change. | Once the app exists (not while it is a draft or being deleted). |
| Build | Replaces this app's database with a neutralized copy of a production or staging backup, so you can test on real data. This overwrites all current data. | On staging and development apps that are deployed or in error. |

The options
| Option | What it does |
|---|---|
| Backup before action | Backs the database up first (Zip with the filestore, or Dump with the database only), so the change can be rolled back with its data. Offered once the app has been deployed. |
| Quick update | Update only. Pulls the code and restarts the app on its current image, without pulling or rebuilding the image. Turn on Update database modules to run the module update after the pull; leave it off for a code refresh and restart. |
| Only changed addons | Update only. Runs the module update for the addons that changed since the last run, not for all of them. When the change cannot be worked out safely, it updates the addons it is set up to update. |

On a production app the dialog asks you to take a backup first. When the environment updates on a copy of the database, the dialog says so: a failed module update then changes nothing. See Safe updates.
Build from a backup
On staging and development apps, the Build choice restores a backup from another environment of the project. Pick the source (Production or Staging), the source app and the backup to restore, or turn on Build a fresh production backup to take a new one first. Turn on Update database modules after restore when the source runs older code than this app's branch. The copy is neutralized: emails are not sent and scheduled jobs do not run.
Other actions
More groups the rest of the app's actions. You only see the ones you may run.

| Action | What it does |
|---|---|
| Application | |
| Sync Variables | Refreshes the settings the platform renders for the app's runs from its current configuration. It does not change the container's environment variables. |
| Settings | On an app's card only: opens the app, on its Overview. |
| Sync Backups | Matches the app's backup list with the backup files found on its server. |
| Setup Logs | Shows the log of the app's last setup run: the module install or update that ran with its deploy. |
| Restore | Restores a backup into this app. See Backups & restore. |
| Maintenance | |
| Cancel Queued Update | Shown while a push waits in the update queue for its turn. The waiting update will not run; the next push queues it again. |
| Restart Service | Restarts Odoo. The code, the configuration and the data stay as they are. |
| Update Modules | Runs the module update for the modules you name (separated by commas or spaces), behind the maintenance page. You can take a backup first. |
| Apply Config | Writes the Odoo configuration, the container settings and the routing from the Configs tab, then restarts the app. See Settings. |
| Enable Maintenance / Disable Maintenance | Shows or takes down the maintenance page. Only the one that fits the app's state is offered. See Maintenance mode. |
| SSL | |
| Renew SSL | Renews the certificates of the app's URLs. |
| Danger Zone | |
| Delete Instance | Removes the app from its server. On production you sign it by typing the app's name. |
| Destroy | Removes the app's record from CloudWady. Offered once the app was deleted from its server, or when it never reached one. It cannot be undone. |
When the app's last run failed or was canceled, a Retry button appears in the header. It runs the failed run again from the step that failed.
General
What the app is: its name, its address, its Odoo version and edition, and a note for your team.
You can
- Pick another Version or Edition, until the app's first deployment.
- Write a Note for your team and press Save.
Good to know
- The name and the URL are set when the app is created and cannot change.
- After the first deployment the version and edition are read-only, because the database is on them. To move to another version, create a new app.
- The note changes nothing on the app itself.
- Changing these takes Developer in development, Developer Plus in staging and Maintainer in production (Who may do what).
Branches
The repositories and branches the app is built from, and the commit it runs.
You can
- Build the app from one more branch with Add Branch: pick the repository, the branch and a Sequence, the clone order (lower first).
- Change a branch with the pencil, or flag it with Mark for Deletion in its row's menu; Restore takes the mark off.
- Read the commit the server runs again with the refresh on a row; the refresh beside a repository's name fetches its branches again.
- Download a branch's code with Download Addons in its row's menu, once you confirm your password.
Good to know
- Changes reach the app at its next Deploy or Update, which clones the branches as they are then; marked branches leave the list once it succeeds.
- Commit SHA is what the next Deploy or Update builds; a warning on Actual SHA means the server runs another commit.
- The starred branch is the app's main branch: it can never be removed.
- Without automated deployments in the plan, you cannot add a branch, and can change only the main one, to another branch of its repository.
- Changing branches takes Developer in development, Developer Plus in staging and Maintainer in production; downloading addons and fetching a repository take Maintainer or Admin.
Settings: the Configs tab
What the app's container, its odoo.conf and its routing are made from, with its editor and its database logins.
You can
- Store a change with Save.
- Write it to the running app with Apply Config in More → Maintenance, while the app is deployed.
Good to know
- Most changes reach the app only with Apply Config; When a change takes effect lists the others.
- Apply Config writes the Odoo configuration, the container settings and the routing, then restarts the app: its users are cut off while it restarts.
- Changing settings takes Developer in development, Developer Plus in staging and Maintainer in production. See Who may do what.

When a change takes effect
What each setting waits for before the running app has it.
| Change | Takes effect with |
|---|---|
| CPU and memory limits, environment variables, workers, cron threads, OCA queue, database manager, search indexing, body size, response timeout, the editor's idle time | Apply Config. It restarts the app. |
| Additional packages, config patch, a new admin password | The next Build → Deploy. |
| Certificate provider (URLs tab) | At once, when you confirm. |
| The database the app runs on | Move to another database, a run of its own. See Odoo Config. |
| New code on the branches | Build → Update, or automatic updates. |
Container
How much of its server the app may use, and what its container is built with.
You can
- Cap its CPU with CPU Limit, in steps of 0.5 cores, and its memory with Memory Limit, in MB. 0 means no cap.
- Build system packages into its image with Additional Packages, for example
openssh-client, curl. - Give it your own variables in Environment Variables: Add a name, then type its value.
Good to know
- Limits and variables apply with Apply Config. Packages are built into the image at the next Deploy.
- The limits are hard caps, so one app cannot starve the others on its server. A new app starts with its environment's defaults.
- Variables are stored encrypted and their values masked: Maintainers and Admins show them with Reveal and their own password. A masked value you leave alone is kept.
- Names the platform sets itself are refused: the section lists them under Protected variables.
Odoo Config
What goes into the app's odoo.conf, and which database server the app runs on.
You can
- Set how many Odoo worker processes and scheduled-action threads run with Workers and Max Cron Threads, 0 to 50 each.
- Reveal Odoo's master password with the key beside Admin Password, once you confirm yours, or give it a new one with the rotate button beside it. Both are for the workspace's Admins.
- Load the OCA
queue_jobmodule with Use OCA Queue; its channels come from Queue Channel,root:2unless you change it. - Add your own odoo.conf lines in Config Patch: Add a property, then type its value. Read the file as the server has it with View Config, once you confirm your password.
- Pick the Database before the first deployment; after that, move the app to another database on its server with the exchange button beside it.
Good to know
- Workers, cron threads and the OCA queue apply with Apply Config; a config patch with the next Deploy.
- A new master password is written in odoo.conf by a run of its own, which restarts the app; the key shows it once that run is done.
- A patch line that sets a property the platform writes itself is refused; the section lists them under Protected properties.
- A move backs the app up, then stops it while its database is copied, about as long as a backup and a restore; follow it in Operations.
- A move drops the app's database and logins on the old server, and any copy kept to undo its last update.
- Revealing the admin password and View Config take Developer or above; moving the database takes Maintainer or Admin.
TLS & Routing
How the router in front of the app treats requests, for every address of the app.
You can
- Open Odoo's database manager with Database Manager Allowed, only while you need it; it is off unless you turn it on.
- Tell search engines to leave the site out with Search Indexing set to Blocked.
- Refuse requests above a size with Max Body Size, from 10 MB to 10 GB; Unlimited, the default, means no cap.
- Give long requests and large uploads more time with Response Timeout (s); 0 keeps the default, about 600 seconds.
Good to know
- Each change applies with Apply Config.
- With the database manager on, anyone with the app's admin password can back up or drop its database from a browser.
- Off, it is closed at the front door, where
/web/databaseanswers with a 403 page, and in Odoo, which refuses the database service over RPC. - Search indexing is Allowed in production and Blocked in staging and development, unless you change it.
- Certificates are set on the URLs tab.
Editor
VS Code in your browser on this app's code, with a terminal in its container.
You can
- Put it on the server with Install Editor in the Access menu; the first editor on a server also installs its sign-in, which takes a few minutes.
- Open it with Open Editor; when it is asleep, it starts within a minute.
- Sign in with your CloudWady login; a sign-in lasts an hour.
- Read the code and use the terminal, which reaches what the app reaches, its database included.
- Take it off with Remove Editor; the server's last editor takes its sign-in with it.
Good to know
- The code is read-only in every environment: change it in its repository and deploy it. You cannot add extensions.
- Installing and removing apply the app's configuration, which restarts the app; neither starts while the app or its server's editor sign-in has a run under way.
- It sleeps after Stop When Idle For (Configs › Editor) with no tab open, 15 minutes unless you change it; a Deploy, Update, Apply Config or Restart Service ends it too.
- It runs inside the app's container, so its memory counts against the app's Memory Limit; it needs Traefik on the app's server and a domain for its environment.
- Installing and removing take what Apply Config takes; opening takes Developer Plus in development and staging, Maintainer in production.
Database Roles
The app's own two logins on its PostgreSQL server, so no other app can reach its database there.
You can
- Reveal the read role's password with the eye button on its row, once you confirm your own.
- Use that password to read the database, for reports for example.
- Read through the same role from the Access menu: Database (read) or pgAdmin.
- Give a role a new password with Rotate on its row, for example when someone who knew it leaves.
Good to know
- The read role reads every table, password hashes and API keys included: keep its password as safe as the data.
- The read role holds at most 5 connections at a time, so a tool cannot take the app's.
- The write role is the login the app's Odoo runs as; its password is never shown.
- A Pending role is made at the app's next deployment. With No roles yet, the app connects as the database server's own login.
- Revealing the read role's password is for the workspace's Maintainers and Admins, in every environment.
- Rotating the read role is for the workspace's Maintainers and Admins, rotating the write role for its Admins.
- The passwords stay on the app's server: the platform keeps no copy. A reveal reads it there, and is noted in the app's history; if the server does not answer, it cannot be shown.
- A rotation is a run of its own on the app's server. A new read password restarts nothing and reaches the app's pgAdmin connections; tools that saved the old one stop connecting until they get the new one. A new write password restarts the app.
URLs and certificates
The addresses the app answers on, with the state of each one's route and certificate.
You can
- Add one of your domains with Add Custom URL, the domain only, for example
shop.example.com; it joins the routes at the next Deploy, Update or Apply Config. - Change an address with the pencil until it has been set up; after that, add the new one as another URL and delete the old one.
- Send browsers from one address to another of the app's with Redirect To in its pencil, for example
www.example.comtoexample.com; it joins the routes at the next Deploy, Update or Apply Config. - Check the certificate an address serves now with the magnifier; hover over its outside check to see when it ran and why it failed.
- From a row's menu, write the app's routes again now with Refresh Route, or run the address's last failed run again with Retry Latest Workflow.
- Remove an address with Mark for Deletion, at the next Deploy, Update or Apply Config (Restore takes the mark off), or at once with Delete Now.
Good to know
- Every plan can link your own domains. With White Label and your own DNS provider on the project, its apps also get their starred address under your domain.
- Under the platform's own domain, a custom address changes only the first name of the starred one.
- CloudWady makes the DNS record of a domain on one of your DNS providers (Integrations → Domains); otherwise point its DNS at the app's server first.
- Delete Now also removes the DNS record CloudWady made and the address's certificate; it cannot be undone.
- The starred address is the app's own: it cannot be changed, marked or deleted.
- A redirect sends on only what a browser opens: a form sent, a request with a token and a live connection are still answered at the address, so integrations keep working. The starred address cannot redirect.
- Browsers remember a redirect: after you take one off, a browser that followed it may go on to the other address for a while.
- Changing addresses takes Developer in development, Developer Plus in staging and Maintainer in production; Delete Now in production takes Admin.

Certificates
Who issues the TLS certificates of every address of this app; Traefik, the router on its server, issues and renews them on its own.
You can
- Choose the Certificate Provider: Let's Encrypt, the default, or Buypass. You confirm before it changes.
- Follow each address's certificate, its expiry date and issuer, in the URLs list.
Good to know
- The change applies at once: Traefik issues the certificate of every address again from the new provider.
- Until each new certificate is issued, visitors may see a certificate warning.
- On an app with no address set up yet, the choice applies at its first deployment.
- You cannot change it while a deployment is queued or running.
- Changing it takes Developer in development, Developer Plus in staging and Maintainer in production.
Automation
What runs on every deployment of the app, and what happens to it on its own.
Good to know
- The tab needs a plan with automated deployments; without one, it is locked.
- Changing it takes Developer in development, Developer Plus in staging and Maintainer in production.

Automated Installation
What each Deploy and Update does with your addons, and the tests it runs on them.
You can
- Turn on Use Automate Installation to install your addons on a new database and update them on an existing one; the other settings then appear.
- Take every addon in the app's repositories with All Addons, minus the excluded ones, or list them in Addons, separated by commas.
- Run Odoo's tests with Run Odoo Tests, narrowed by Odoo Test Tags, for example
/module_name,-standard. - Measure test coverage with Use Coverage, against an Acceptable Coverage from 0 to 100.
- Skip demo data with Without Demo, or pull the latest base image even when the server has one with Force Pull Template.
Good to know
- Saved settings apply at the next Deploy or Update; a new app starts with its environment's defaults.
- Use Clean DB deletes the database and installs a new one on every Deploy and Update; the Overview and the Build dialog warn while it is on.
- Clean databases are never allowed in production, and demo data is always left out there.
- A coverage below the threshold is reported in the setup log; it does not fail the deployment.
- Changing these settings takes Developer in development, Developer Plus in staging and Maintainer in production.
Updates & Backups
What happens to the app without anyone pressing a button: updates on a push, nightly backups and, outside production, an end date.
You can
- Stop pushes from updating or deleting this app with Restrict Auto Update: it then changes only when someone runs Build.
- Back the app up every night with Auto Backup, on by default in production (Automatic backups).
- Outside production, give the app an end date with Use Deadline and its date; it is on by default for new development apps.
- Set what a push does for the whole environment in its Settings → Automation, with its update copy policy.
Good to know
- A change counts from the moment you save it: the next push and the next night's backup read it.
- Turning on Restrict Auto Update also takes the app off the update queue; rolling the code back turns it on until someone updates the app.
- By default a push updates apps in development and staging; in development it also deploys them, and creates an app for a branch it has not seen.
- A branch deleted upstream takes its apps with it only where Auto-Delete is on, by default in development; it never runs in production.
- Changing this section takes Developer in development, Developer Plus in staging and Maintainer in production.

Maintenance mode
Enable Maintenance puts a maintenance page in front of the app: visitors get it, with an HTTP 503 status, instead of Odoo. The page carries your workspace's branding, the app's name, an expected duration and a contact. The app itself keeps running behind it. Disable Maintenance takes the page down.
The platform also shows the page on its own while it changes your data: during Update Modules and while a rollback restores data.
Following a run
Every change you start (and every automatic one) is a run. The app's Operations menu lists its runs, their steps and the changes waiting their turn. Health and operations explains the tabs, what each state means and when you may retry or cancel.

One change at a time
An app runs one change at a time. While something runs on it, Build is hidden, and Restart Service, Update Modules and maintenance are refused with a message that names what is running, for example Cannot restart v19-0 while 'a backup' is running. Wait for it to finish, then try again.
When the platform is busy, runs wait for a free slot. A run a person started gets the next free slot before automatic updates, so your change does not wait behind a batch of pushes.
Logs
The app's log files, to follow what it does now or read back what a run did.
You can
- Follow the end of a file as it grows with Live; stop and resume it with the buttons above the log.
- Filter by level with the level buttons, which also count the lines of each level.
- Search the log, and jump between matches with Enter and Shift+Enter.
- Read the copies the platform saved, such as a deployment's setup log, under Snapshots.
- Download the full log file from the view options.
Good to know
odoo.logis the app's own log, including what its container prints.- The other files are the logs of its setup, backups, restores and transfers.
- A snapshot stays readable after the log file has moved on.

Who may do what
What you may do on an app depends on your role in the workspace and on the app's environment.
| Action | Development | Staging | Production |
|---|---|---|---|
| See the app and its settings | Viewer | Viewer | Viewer |
| Build, Retry, Backup, Restart, Update Modules, Apply Config, maintenance, Renew SSL, change settings, install or remove the editor | Developer | Developer Plus | Maintainer |
| Delete Instance | Developer | Developer Plus | Admin |
| Open the app's shell, Odoo shell or log from the Access menu | Developer Plus | Developer Plus | Maintainer |
See Permissions & access for the roles.
Going back
Every change leaves a restore point: the app's code and data just before it. If a change went wrong, roll the app back to the point before it, by its code, its data or both. See Restore points & safe updates.
Was this page helpful?
Your answer helps us prioritize documentation improvements.
Thanks — your feedback helps us improve.
Type to search titles and text.
↑↓ to move ↵ to open Esc to close