Skip to content

Your First Subscription

This walkthrough creates a customer subscription end-to-end — from a blank form to a live running Odoo instance. It assumes you have completed Installation and Prepare Your Environment.

The walkthrough uses the Docker deployment strategy. DBFilter differences are noted where relevant.


Subscription Lifecycle

Draft → Confirmed → Building → Running
State Meaning
Draft Being configured — nothing provisioned yet
Confirmed Validated and ready to build
Building DNS, Nginx proxy, and Docker stack being provisioned
Build Failed A provisioning step errored — inspect and retry
Running Customer instance is live
Stopped Instance paused — proxy redirects visitors, data preserved
Terminated Subscription ended — stack removed

Step 1: Create a Package

Packages define the resource limits for a subscription tier. Create one before creating subscriptions.

Go to Subscriptions → Packages → New.

Field Value
Name e.g. Starter Plan
Module Limit Max Odoo modules the customer can install
User Limit Max number of users
Storage Limit (GB) Max disk usage

Save the package.


Step 2: Create the Subscription

Go to Subscriptions → Subscriptions → New.

Basic Information

Field Value
Customer Select or create the customer partner
Package The package created above
SAAS Type Docker (or DBFilter)
Responsible Users Operators managing this subscription

Docker — select a Docker image

Pick a Docker Image. When you do, Sadeem automatically copies all defaults from the image's Portainer environment into the subscription:

  • Portainer environment
  • Nginx server
  • Cloudflare account, zone ID, and DNS settings
  • Main domain and subdomain start
  • PostgreSQL server
  • Root server (for Git integration)
  • Backup server

You typically don't need to fill in any of those fields manually.

Tip

If you haven't configured your Portainer environment defaults yet, see Prepare Your Environment.

DBFilter — select a server group

Pick a DBFilter Server Group. Sadeem copies the Nginx server, Cloudflare account, domain, and backup server from the group into the subscription automatically.

Domain

The domain is generated automatically from the Main Domain and Sub Domain Start values inherited from your environment (e.g. client1.sadeem.cloud). You can override either field or set the full Domain directly if you prefer.


Step 3: Confirm

Click Confirm in the status bar.

Sadeem validates:

  • Domain is not already in use
  • Domain format is valid
  • Required fields are present (nginx_server, server_ip, docker_image for Docker)

On success, the subscription moves to Confirmed and receives a sequence number (e.g. SUB/2026/001).


Step 4: Build

Click Build.

Sadeem provisions in order:

  1. DNS — Creates a Cloudflare A record for the domain if Auto create DNS record is enabled; skipped entirely if disabled (e.g. when using a wildcard record)
  2. Nginx — Creates a reverse proxy host in NPM with SSL
  3. Instance — Creates and starts the Odoo Docker stack on Portainer, assigning HTTP and WebSocket ports automatically

Progress is tracked in the Build Steps section. If a step fails, the subscription moves to Build Failed and the error appears in Build Fail Message.

Build Failed?

Read the Build Fail Message, fix the underlying issue, then click Diagnosis Fix to auto-repair and retry — or Reset to Draft to start over.


Step 5: Verify

Once state is Running:

  1. Click the domain link on the subscription form — the Odoo login page should load
  2. In Portainer, confirm the stack is running under your environment
  3. In NPM, confirm the proxy host is active with a valid SSL certificate

Step 6: Add a Stage (optional)

A subscription can have multiple stages — independently deployed instances (e.g. production + staging). Each stage gets its own Docker stack, Nginx proxy host, and optionally its own DNS record.

Click Create Stage on the subscription form.

Field Value
Name e.g. Staging
Sub Domain Start e.g. client1-staging
Portainer Environment Can differ from production