Skip to content

Installation

This page covers how to install the Sadeem SaaS Package modules into your Odoo 18.0 instance. Complete the Prerequisites before starting.


Step 1: Install the Python Dependency

The sadeem_saas_base module requires paramiko for SSH connectivity. Install it on the server running Odoo:

pip install paramiko
# or, if using a virtualenv:
/path/to/odoo/venv/bin/pip install paramiko

Restart Odoo after installing the library.


Step 2: Copy Modules to the Addons Path

Copy the module directories into one of your Odoo addons paths:

# Example: copying to a custom addons directory
cp -r sadeem_saas_base /opt/odoo/addons/
cp -r sadeem_cloudflare /opt/odoo/addons/
cp -r sadeem_nginx_proxy_manager /opt/odoo/addons/
cp -r sadeem_portainer /opt/odoo/addons/
cp -r sadeem_subscription /opt/odoo/addons/
# ... and any variant modules you need (see Step 4)

Make sure the path is listed in your Odoo config file:

# /etc/odoo/odoo.conf
addons_path = /opt/odoo/addons,/opt/odoo/odoo/addons

Step 3: Install Required Odoo App

queue_job must be installed from the Odoo Apps store before installing any Sadeem module.

  1. Go to Apps in Odoo
  2. Search for queue_job
  3. Install it

Step 4: Choose Your Module Set

Install only the modules that match your deployment strategy. The base layer is always required.

Base Layer (always required)

Install these four modules first, in order:

# Module Purpose
1 sadeem_saas_base Core infrastructure — servers, SSH, Git, backups, notifications
2 sadeem_cloudflare DNS management via Cloudflare API
3 sadeem_nginx_proxy_manager Reverse proxy and SSL via NPM API
4 sadeem_portainer Docker orchestration via Portainer API
5 sadeem_subscription Core subscription lifecycle, billing, portal

Deployment Strategy (pick one)

Docker — each subscription runs as an isolated Docker stack:

Module Purpose
sadeem_saas_docker Docker deployment strategy
sadeem_subscription_trial_docker Trial requests with Docker provisioning
sadeem_subscription_website_docker Website plan purchases with Docker provisioning

DBFilter — multiple customers share a single Odoo instance:

Module Purpose
sadeem_saas_dbfilter DBFilter deployment strategy
sadeem_saas_dbfilter_sync_db Import existing databases into subscriptions
sadeem_subscription_trial_dbfilter Trial requests with DBFilter provisioning
sadeem_subscription_website_dbfilter Website plan purchases with DBFilter provisioning

Optional Add-ons

Module Purpose Requires
sadeem_subscription_trial Public trial request form (strategy-agnostic base) A trial variant module above
sadeem_subscription_website Public plan marketplace (strategy-agnostic base) A website variant module above
sadeem_subscription_waha WhatsApp notifications via Waha API sadeem_subscription

Step 5: Install Modules in Odoo

  1. Restart Odoo to pick up the new module files
  2. Go to Apps → Update Apps List
  3. Search for each module by name and click Install
  4. Install in dependency order (base layer first, then strategy, then optional)

Developer mode

Enable developer mode (Settings → Activate the developer mode) before installing — it shows more detail if an installation fails.


Step 6: Post-Install Configuration

After installation, a secret key is automatically generated for the Sadeem modules (via post_init_hook). No manual action is needed for this.

Next, configure the infrastructure connections:

  • Infrastructure → Root Servers — add your SSH server
  • Infrastructure → Cloudflare Accounts — add your Cloudflare API token
  • Infrastructure → Nginx Servers — add your NPM instance
  • Infrastructure → Portainer Servers — add your Portainer instance (Docker only)
  • Infrastructure → Backup Servers — add your backup server URL and API key (optional)

See Your First Subscription for a full walkthrough of the configuration and provisioning flow.


Upgrading

To upgrade to a new version:

  1. Replace the module directories in your addons path with the new versions
  2. Restart Odoo
  3. Go to Apps, find each Sadeem module, and click Upgrade

Warning

Always upgrade sadeem_saas_base before upgrading dependent modules.