Deploy and manage Odoo from our cloud dashboard, or run it locally with the open-source CLI. For businesses, agencies, and developers.
Manage your entire Odoo infrastructure from a modern web dashboard. Real-time updates, visual controls, team collaboration.
Create, start, stop, restart, and delete Odoo instances from a clean UI. Real-time status updates via WebSocket. No commands to memorize.
Stream container logs live in a terminal-style viewer. Configurable tail (100-1000 lines). Auto-scroll and auto-refresh every 5 seconds.
Install GitHub addons with branch selection. Track commits, one-click update or remove. Visual addon status with install progress.
Full, database-only, or filestore-only backups. One-click restore with confirmation. Visual backup history with size, type, and status.
See all agents, instance health, and resource stats at a glance. Dashboard overview with running/stopped counts and agent status.
Email/password + OAuth (GitHub, Google). Role-based access control. Each user manages their own instances. PocketBase backend.
We handle the servers, updates, backups, and SSL. You just manage your Odoo instances from a beautiful dashboard.
For individuals and small teams getting started.
For growing businesses that need more power.
For large organizations that need dedicated resources.
Run Odoo instances on your own machine for development, testing, and CI/CD. Free, open-source, and fully featured.
Spin up Odoo instances locally in seconds. Test multiple versions, switch between projects, isolate environments.
Install custom modules from GitHub, pin to versions, auto-deploy with GitHub Actions. Built for dev workflows.
Backup and restore, reverse proxy with SSL, database management, health checks. Everything from your terminal.
Everything you need to set up and use DooService.
DooService uses a distributed architecture with three components that communicate in real-time.
Everything you get with the DooService Dashboard platform.
No SSH, no Docker, no Linux knowledge needed. We handle everything.
Create a new Odoo instance in seconds. Pick a version, name it, done.
Your data is safe. Scheduled backups with one-click restore.
Start small, upgrade anytime. From 3 instances to unlimited.
These flags apply to all commands.
--db-path <PATH>Path to the database file (env: DOOSERVICE_DB_PATH)--instances-dir <PATH>Path to instances directory. Default: ~/.dooservice (env: DOOSERVICE_INSTANCES_DIR)--docker-socket <PATH>Path to Docker socket (env: DOCKER_HOST)-v, --verboseIncrease verbosity: -v (info), -vv (debug), -vvv (trace)-q, --quietSuppress all output-o, --output <FORMAT>Output format: table (default) or jsonCreate, manage, and monitor Odoo instances. Each instance runs in an isolated Docker container with a shared PostgreSQL server (per-instance database and user isolation).
Create a new Odoo instance. Uses a shared PostgreSQL server with per-instance database isolation.
dooservice instance create -n <NAME> [OPTIONS]-n, --name <NAME>Required. Unique instance name-V, --version <VERSION>Odoo version. Default: 17.0-p, --port <PORT>HTTP port. Default: 8069--db-host <HOST>Database host (if omitted, uses shared PostgreSQL)--db-port <PORT>Database port. Default: 5432--db-user <USER>Database user. Default: odoo--db-password <PASS>Database password. Default: odoo--no-postgresDon't provision in shared PostgreSQL--no-proxyDon't expose via reverse proxy (access directly via port)--subdomain <SUB>Custom subdomain. Default: instance name--user <USER>Container user (e.g., odoo, root, 1000:1000). Default: odoo--timezone <TZ>Timezone. Default: America/Lima--language <LANG>Default language. Default: es_PE--profile <PROFILE>Resource profile (starter, professional, enterprise)--memory <MB>Memory limit in MB (overrides profile)--cpu <CORES>CPU cores (e.g., 1.5, overrides profile)--workers <N>Number of web workers (calculated from CPU if not specified)--disk <MB>Disk quota in MB--pg-memory <MB>PostgreSQL memory in MB (default: half of Odoo memory)--pg-cpu <CORES>PostgreSQL CPU cores (default: half of Odoo CPU)--no-db-initSkip automatic database initializationList all instances with their status.
dooservice instance list [OPTIONS]-s, --state <STATE>Filter by state: created, running, stopped, failedShow detailed information about an instance.
dooservice instance show <INSTANCE>Control the instance lifecycle.
dooservice instance start|stop|restart <INSTANCE>-f, --force(stop only) Force stop without graceful shutdownDelete an instance and optionally its volumes.
dooservice instance delete <INSTANCE> [OPTIONS]--volumesAlso remove associated Docker volumes-y, --yesSkip confirmation promptView Odoo container logs.
dooservice instance logs <INSTANCE> [OPTIONS]-n, --tail <COUNT>Number of lines. Default: 100Execute a command inside the Odoo container.
dooservice instance exec <INSTANCE> -- <COMMAND>Open an interactive shell in the Odoo container.
dooservice instance shell <INSTANCE>Update instance configuration (instance must be stopped first).
dooservice instance update <INSTANCE> [OPTIONS]--http-port <PORT>New HTTP port--db-host <HOST>New database host--db-port <PORT>New database port--db-user <USER>New database user--db-password <PASS>New database password--db-name <NAME>New database name--timezone <TZ>New timezone--postgres-version <VER>New PostgreSQL version (manual migration required)Show container resource statistics (CPU, memory, network I/O, storage quota).
dooservice instance stats <INSTANCE>Manage the storage quota for an instance.
dooservice instance storage <INSTANCE> [OPTIONS]--increaseIncrease quota by 1 GB--set <MB>Set quota to a specific value in MBClone an existing instance with its configuration and optionally data.
dooservice instance clone -s <SOURCE> -n <NAME> [OPTIONS]-s, --source <SOURCE>Required. Source instance name or ID-n, --name <NAME>Required. Name for the new instance--with-dataClone with data (backup + restore)--no-addonsDon't clone addonsUpdate resource limits for an instance.
dooservice instance update-resources <INSTANCE> [OPTIONS]--profile <PROFILE>New resource profile--memory <MB>New memory limit for Odoo--cpu <CORES>New CPU cores for Odoo--workers <N>New worker count--disk <MB>New disk quota in MB--pg-memory <MB>PostgreSQL memory in MB--pg-cpu <CORES>PostgreSQL CPU cores--restartRestart immediately to apply changesManage Odoo addons from GitHub repositories. Auto-detects repository type and modules. Supports pinning, CI/CD, and multi-instance deploys.
Add a GitHub addon to an instance. Clones the repository and configures the Odoo addons path.
dooservice addon add <INSTANCE> -u <URL> [OPTIONS]-u, --url <URL>Required. GitHub repository URL (HTTPS or SSH)-b, --branch <BRANCH>Branch to use. Default: mainList all addons, optionally filtered by instance.
dooservice addon list [-i <INSTANCE>]Show detailed information about an addon (modules, commit, state).
dooservice addon show <ADDON_ID>Pull latest changes for one or all addons.
dooservice addon update <TARGET> [OPTIONS]TARGETAddon ID, or all to update all addons for an instance-i, --instance <INSTANCE>Required when target is allRemove an addon from an instance.
dooservice addon remove <ADDON_ID> -i <INSTANCE>Delete an addon completely.
dooservice addon delete <ADDON_ID> [-y]Pin an addon to a specific tag or commit, or unpin to follow branch HEAD.
dooservice addon pin <ADDON_ID> --tag <TAG> | --commit <HASH>Clean up orphan addons (failed or removed state).
dooservice addon cleanup [-y]Pull latest changes and restart all instances that use the addon. Designed for CI/CD pipelines.
dooservice addon deploy <ADDON> -b <BRANCH>ADDONAddon name or ID-b, --branch <BRANCH>Required. Branch (e.g., 19.0, 19.0-dev)Set up GitHub Actions CI/CD. Generates an SSH deploy key, pushes a workflow file to the repo, and prints the secrets to configure.
dooservice addon setup-ci <ADDON> -b <BRANCH> [-s <SERVER>]ADDONAddon name or ID-b, --branch <BRANCH>Required. Branch-s, --server <SERVER>Server label. Default: system hostnameRemove the GitHub Actions workflow from an addon repository.
dooservice addon remove-ci <ADDON> [-b <BRANCH>] [-s <SERVER>]-b, --branch <BRANCH>Branch filter. If omitted, removes from all branches-s, --server <SERVER>Server label. Default: system hostnameCreate, restore, verify, and manage backups. Supports full, database-only, and filestore-only backup types.
Create a backup of an instance.
dooservice backup create <INSTANCE> [OPTIONS]-t, --type <TYPE>Backup type: full (default), database, filestore-d, --description <DESC>Optional descriptionList all backups, optionally filtered by instance.
dooservice backup list [-i <INSTANCE>]Show backup details (size, type, checksum, date).
dooservice backup show <BACKUP_ID>Restore a backup to an instance.
dooservice backup restore <INSTANCE> -b <BACKUP_ID> [-y]Delete a specific backup.
dooservice backup delete <BACKUP_ID> [-y]Delete backups older than a specified number of days.
dooservice backup cleanup [OPTIONS]--older-than <DAYS>Delete backups older than N days. Default: 30-i, --instance <INSTANCE>Filter by instance-y, --yesSkip confirmationVerify a backup's integrity by checking its SHA256 checksum.
dooservice backup verify <BACKUP_ID>Manage PostgreSQL databases within the shared PostgreSQL server.
List all databases in an instance.
dooservice db list <INSTANCE>Create a new database.
dooservice db create <INSTANCE> -n <NAME>Delete a database.
dooservice db delete <INSTANCE> -n <NAME> [-y]Duplicate a database within the same instance.
dooservice db duplicate <INSTANCE> --source <DB> --target <DB>Manage the Traefik reverse proxy for automatic HTTPS routing with Let's Encrypt certificates.
Initialize the reverse proxy with Traefik. Supports DNS challenge (wildcard certs) and HTTP challenge.
dooservice proxy init --base-domain <DOMAIN> --email <EMAIL> [OPTIONS]--base-domain <DOMAIN>Required. Base domain (e.g., example.com)--email <EMAIL>Required. Email for Let's Encrypt--dns-provider <PROVIDER>DNS provider: cloudflare, route53, digitalocean--cf-token <TOKEN>Cloudflare API Token (Zone:DNS:Edit, recommended)--cf-email <EMAIL>Cloudflare email (Global API Key method only)--cf-api-key <KEY>Cloudflare Global API Key--aws-access-key <KEY>AWS access key (required for Route53)--aws-secret-key <KEY>AWS secret key (required for Route53)--aws-region <REGION>AWS region (optional for Route53)--do-token <TOKEN>DigitalOcean API token--http-challengeUse HTTP challenge instead of DNS (no wildcard support)--stagingUse Let's Encrypt staging server (for testing)--dashboardEnable Traefik dashboard--http-port <PORT>HTTP port. Default: 80--https-port <PORT>HTTPS port. Default: 443Control the proxy container lifecycle and view status.
dooservice proxy status|start|stop|restartView active proxy routes (domain-to-instance mappings).
dooservice proxy routesView proxy container logs.
dooservice proxy logs [-n <COUNT>]Destroy the proxy, removing the container and network.
dooservice proxy destroy [-y]Set the server IP for automatic DNS record management. When configured, DooService creates A records for each instance subdomain via Cloudflare.
dooservice proxy set-server-ip <IP>Create DNS records for all existing instances. Useful after configuring set-server-ip or migrating servers.
dooservice proxy sync-dnsMonitor instance health and container status.
Check health of a specific instance.
dooservice health check <INSTANCE> [-d]-d, --detailsShow detailed component statusShow health status of all instances at a glance.
dooservice health status [-f <STATE>]-f, --filter <STATE>Filter: healthy, degraded, unhealthy, unknownManage resource profiles for instances. Profiles define CPU, memory, workers, and disk limits.
List all profiles or show details of a specific profile.
dooservice profile list [--all]dooservice profile show <PROFILE>Create a custom resource profile.
dooservice profile create -n <NAME> -d <DESC> --memory <MB> --cpu <CORES> [OPTIONS]-n, --name <NAME>Required. Profile name-d, --description <DESC>Required. Description--memory <MB>Required. Memory limit in MB--cpu <CORES>Required. CPU cores--workers <N>Web workers (auto-calculated if omitted)--disk <MB>Disk quota in MB--pg-memory <MB>PostgreSQL memory--pg-cpu <CORES>PostgreSQL CPU--price <CENTS>Monthly price in cents. Default: 0Update an existing profile (system profiles cannot be modified).
dooservice profile update <PROFILE> [OPTIONS]--memory <MB>New memory limit in MB--cpu <CORES>New CPU cores--workers <N>New worker count--disk <MB>New disk quota in MB--price <CENTS>New price in cents--active <BOOL>Activate or deactivate the profileDelete a custom profile (system profiles cannot be deleted).
dooservice profile delete <PROFILE> [-y]Initialize the default system profiles (starter, professional, enterprise).
dooservice profile initInspect the internal database for troubleshooting.
Dump database contents or inspect specific tables.
dooservice debug dump-db [--full]dooservice debug tablesdooservice debug table <NAME>