Prerequisites
Before installing the Sadeem SaaS Package, make sure you have everything below in place. Missing any of these will block provisioning or cause runtime errors after installation.
Odoo Instance (Master)
This is the Odoo server where you install the Sadeem modules — your management plane.
| Requirement | Detail |
|---|---|
| Odoo version | 18.0 |
| Odoo apps | queue_job — required by all Sadeem modules (install from Odoo Apps) |
| Python library | paramiko — SSH connectivity (pip install paramiko) |
| Odoo Enterprise | Not required — Community edition works |
Infrastructure Services
These are the external services the modules integrate with. You don't need all of them — only what your deployment strategy requires.
Required for all setups
| Service | Purpose | Notes |
|---|---|---|
| Root Server | A Linux server accessible via SSH | Used for command execution, monitoring, and hosting Docker or DBFilter deployments |
| Nginx Proxy Manager | Reverse proxy and SSL termination | Self-hosted; must be reachable from the Odoo master |
| Cloudflare | DNS management | A Cloudflare account with API token; the domain must be managed on Cloudflare |
Required for Docker deployments
| Service | Purpose | Notes |
|---|---|---|
| Portainer | Docker stack management | Self-hosted Portainer CE or BE; must be reachable from the Odoo master |
| Docker Engine | Container runtime | Installed on the root server that runs customer stacks |
Required for DBFilter deployments
| Service | Purpose | Notes |
|---|---|---|
| Shared Odoo instance | The "slave" Odoo server | A separate Odoo 18.0 instance configured with --db-filter; customers share this instance |
| PostgreSQL Server | Database server | Accessible from both the master Odoo and the slave Odoo |
Optional
| Service | Purpose | Notes |
|---|---|---|
| Sadeem Backup Manager | Automated backups | Separate Odoo instance with sadeem_saas_backup_manager installed |
| ntfy server | Push notifications | Self-hosted ntfy instance for mobile push alerts |
| GitHub / Git account | Custom addon deployment | Required if you want to deploy custom Odoo addons to subscriptions |
| S3-compatible storage | Cloud backup storage | Required if using sadeem_saas_backup_manager_s3 for off-site backups |
Cloudflare API Token
The sadeem_cloudflare module uses the Cloudflare API to create DNS records automatically.
Required token permissions: - Zone → DNS → Edit - Zone → Zone → Read
How to create it: 1. Log in to dash.cloudflare.com 2. Go to My Profile → API Tokens → Create Token 3. Use the Edit zone DNS template 4. Scope it to the specific zone (domain) you'll use for SaaS subdomains 5. Copy the token — you'll enter it in Odoo under Infrastructure → Cloudflare Accounts
Nginx Proxy Manager API
The sadeem_nginx_proxy_manager module uses the NPM HTTP API.
- NPM must have its API enabled (it is by default)
- You need an NPM admin username and password
- The NPM instance must be reachable from the Odoo master server on its API port (default
81)
Portainer API (Docker deployments only)
- Portainer CE or BE, any recent version
- An access token (not username/password) — generate it in Portainer under User Settings → Access Tokens
- The Portainer instance must be reachable from the Odoo master
Network Requirements
| Connection | Required |
|---|---|
| Odoo master → Root server (SSH port 22) | Yes |
| Odoo master → Nginx Proxy Manager (port 81) | Yes |
| Odoo master → Portainer (port 9000 or 9443) | Docker deployments |
| Odoo master → Backup server (HTTP/HTTPS) | If using backups |
| Odoo master → Cloudflare API (HTTPS) | Yes |
| Root server → Internet (Docker image pulls) | Docker deployments |
Access Roles
The Sadeem modules use a three-tier access control system. Assign roles before inviting team members.
| Role | What they can do |
|---|---|
| SaaS User | Read-only access to subscriptions |
| SaaS Operator | Create and manage subscriptions, run actions |
| SaaS Administrator | Full access including infrastructure configuration |
Related Pages
- Installation — install the modules once prerequisites are met
- Your First Subscription — end-to-end provisioning walkthrough
- Developer Reference — module architecture and field reference