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
Each app is one Odoo instance in one environment of a project. Open it from its card in the project, or from the search at the top of the dashboard. The header shows its name, its state and its environment; the buttons on the right act on it: Open (the app in a new tab), Build, Backup and More.

| Sidebar | What you find there |
|---|---|
| Overview | The app's settings, in four tabs: Info, Configs, URLs and Automation. Below them, the app's history: every change and every run, newest first. |
| Operations | Everything that ran or is running on the app: workflows, runners and queues. See Following a run. |
| Backups | The app's backups. See Backups & restore. |
| Restorations | Restores into and out of this app. |
| Restore points | The app before each change, and the way back. See Restore points & safe updates. |
| Logger | The app's logs. See Logs. |
| Overview tab | What it holds |
|---|---|
| Info | Name, address, Odoo version and edition, a note, and the branches the app builds from. |
| Configs | The container, the Odoo configuration and the routing. See Settings. |
| URLs | The addresses the app answers on and their certificates. Needs the White Label add-on. See URLs. |
| Automation | What runs on every deployment, automatic updates and backups. See Automation. |
An app's Odoo version is fixed once it has been deployed: its database is on that version, so the version buttons on the Info tab turn read-only. To move to another version, create a new app.
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. |
| Sync Backups | Matches the app's backup list with the backup files found on its server. |
| Restore | Restores a backup into this app. See Backups & restore. |
| Maintenance | |
| 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 confirm twice, the second time by typing DELETE. |
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.
Settings: the Configs tab

| Setting | What it does |
|---|---|
| Container | |
| CPU Limit (cores), Memory Limit (MB) | Hard caps, so one app cannot starve its server. 0 means no cap. New apps take the environment's defaults. |
| Additional Packages | Extra system packages installed in the Odoo image, separated by commas or new lines. Only add what your code needs at run time. |
| Custom Environment Variables | Turn it on to give the container your own variables, one NAME=value per line. The values are stored encrypted. |
| Odoo Config | |
| Database, Workers, Max Cron Threads | Where the app's database lives, and how many workers and cron threads Odoo runs. View Config shows the resulting odoo.conf. |
| Admin Password | Odoo's master password. You can reveal it (your own password is asked first) or generate a new one. |
| Use OCA Queue | Runs the OCA job queue in the app. |
| Use Config Patch | Adds your own lines to odoo.conf. |
| TLS & Routing | |
| Database Manager Allowed | Off: Odoo's database manager is closed, both at the front door (/web/database answers with a branded page) and in Odoo itself. |
| Search Indexing | Blocked: every answer tells search engines to leave the site out. Allowed in production and blocked in staging and development, unless you change it. |
| Max Body Size | Refuses requests larger than this. Unlimited means no cap. |
| Response Timeout (s) | How long a request may take before it is cut off. 0 keeps the default. Raise it for large uploads or long requests. |
When a change takes effect
| Change | Run |
|---|---|
| Workers, cron threads, database manager, indexing, body size, timeout, CPU and memory limits, environment variables | Apply Config (More → Maintenance). It restarts the app. |
| Config patch, additional packages | Build → Deploy. |
| New code on the branches | Build → Update, or let automatic updates run it. |
Branches
The Branches table on the Info tab lists the repositories and branches the app builds from. The starred branch is the main one.
| Column | Meaning |
|---|---|
| Repository, Git Branch | Where the code comes from. |
| Commit SHA | The commit the app should run. Auto-sync: it follows the branch's latest commit. |
| Actual SHA | The commit the server really runs. A warning sign means it differs from the expected one. |
Use Add Branch to build from one more repository, the pencil to change a branch, and the refresh button to read the commit from the server again. In a branch's menu, Download Addons downloads its code, and Mark for Deletion flags it: it shows Pending Deletion and leaves the app at its next successful Deploy or Update. Restore takes the mark off. A branch deleted in its repository shows Remote Deleted. The main branch is never removed.
URLs and certificates
Every app gets an address of its own. With the White Label add-on, the URLs tab lets you add your own domains and pick who issues their certificates.

| Part | What it does |
|---|---|
| Certificate Provider | Who issues the certificates of every address of the app: Let's Encrypt or Buypass. Changing it issues them again right away. |
| Add Custom URL | Adds one of your domains. Enter the domain only, without https://. Point its DNS at the app first. |
| URL column | The address, with a public check: Answering, Not answering or Not checked. |
| Certificate column | Valid, expiring or missing, with its expiry date and issuer. |
| Latest Apply, Runners | The last run that set the address up, and its steps. |
A URL's actions: edit it, check its certificate, refresh its route, retry its last run, mark it for deletion or delete it now.
Automation
The app's Automation tab says what runs on every deployment and what happens on its own.

| Setting | What it does |
|---|---|
| Use Automate Installation | Installs and updates your addons on every deployment: all of them (All Addons, minus the Excluded Addons) or the ones you list. |
| Use Clean DB | Starts from a new, empty database on every deployment. Not allowed in production. |
| Without Demo | Installs without demo data. |
| Force Pull Template | Pulls the latest base image even when the server already has one. |
| Run Odoo Tests, Use Coverage, Acceptable Coverage | Runs your Odoo tests on deployment and measures their coverage against the threshold you set. |
| Restrict Auto Update | Keeps automatic updates off this app: it only changes when a person runs Build. Rolling the code back turns it on until someone updates the app again. |
| Auto Backup | Takes a backup every night. On by default in production. |
| Deadline | Outside production: removes the app after a date you set. |
What a push does
What happens when a branch receives a push is set per environment: open the project, pick the environment, switch to Settings and open its Automation tab.

| Switch | What it does | Development | Staging | Production |
|---|---|---|---|---|
| Auto-Update Apps | Updates the branch's apps on every push. | On | On | Off |
| Auto-Deploy Apps | Deploys the branch's apps on every push, and creates an app for a branch it has not seen. | On | Off | Off |
| Auto-Delete Apps on Branch Removal | Deletes a branch's apps when the branch is deleted upstream. | On | Off | Always off |
These are the defaults of a new environment; you can change them, except Auto-Delete, which never runs in production. The same tab holds the environment's update copy policy outside 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 shows them in three tabs: Workflows (each change, step by step), Runners (each step's attempts, with their output) and Queues (changes waiting their turn).

| State | Meaning |
|---|---|
| Draft, Idle | Created, not started yet. |
| Running, Partial Done | Under way; some steps are done. |
| Retrying | A step failed and the platform will try it again in a few minutes. |
| Done | Every step worked. |
| Error | A step failed and no more automatic attempts are coming. Open it to read why, then use Retry. |
| Canceled | Stopped before it finished. |
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 Logger shows the app's log files. odoo.log is the app's own log, including what its container prints; the other files are the logs of its setup, backups, restores and transfers.

- Live follows the end of the file as it grows; stop and resume it with the buttons above the log.
- The level buttons (Info, Warning, Error, Debug, Other) count the lines of each level and filter them.
- Search the log, and jump between matches with Enter and Shift+Enter.
- Snapshots are copies of logs the platform saved, such as the setup log of a deployment; they stay readable after the file has moved on.
- The view options let you download the full log file.
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 | Developer | Developer Plus | Maintainer |
| Delete Instance | Developer | Developer Plus | Admin |
| Open a terminal on the app's server | Developer | Developer | 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