Skip to content

Prepare Your Environment

Before creating subscriptions, configure the infrastructure services that Sadeem connects to. This is a one-time setup — once done, every new subscription you create will inherit these settings automatically from the Portainer environment or DBFilter server group.


1. Add a Cloudflare Account

Go to Infrastructure → Cloudflare Accounts → New.

Field Value
Name Label for this account, e.g. sadeem.cloud
API Token Cloudflare API token with Zone → DNS → Edit permission
Zone ID Found on your domain's overview page in the Cloudflare dashboard

Click Confirm to validate the token.

DNS strategy — pick one

You have two options for how subscription domains resolve. Choose based on your preference:

Option A — Auto create DNS record (per subscription)

Enable Auto create DNS record on the Portainer environment (Docker) or DBFilter server group. When each subscription is built, Sadeem automatically creates an individual A record in Cloudflare for that subscription's domain. No manual DNS setup needed beyond adding the Cloudflare account above.

Option B — Wildcard DNS record (manual, one-time)

Create a single wildcard A record in Cloudflare that covers all subdomains at once:

Go to Infrastructure → Cloudflare Accounts → <your account> → Records → New:

Field Value
Type A
Name *
Content Your server's public IP
Proxied Enabled

With this in place every subdomain resolves without Sadeem touching DNS at all. Leave Auto create DNS record disabled on your environments.

Note

You don't need both. If Auto create DNS record is disabled and no wildcard exists, DNS resolution is your responsibility to handle outside of Sadeem.


2. Add an Nginx Proxy Manager Server

Go to Infrastructure → Nginx Servers → New.

Field Value
Name Label, e.g. main-nginx
URL NPM API base URL, e.g. http://your-server:81
Username NPM admin email
Password NPM admin password

Click Confirm to test the connection.


3. Add a Root Server (optional — needed for Git integration)

A root server is a Linux machine accessible via SSH. It is not required for basic subscription provisioning. You only need it if you plan to:

  • Deploy custom Odoo addons via Git integration
  • Use the VS Code server feature
  • Run SSH commands directly from Odoo

Go to Infrastructure → Root Servers → New.

Field Value
Name Label, e.g. main-server
Host IP address or hostname
SSH Port Default 22
SSH User User with appropriate filesystem access
SSH Key / Password Authentication method

Click Test Connection to verify, then Confirm.

Docker deployments

For Docker subscriptions, the root server is auto-assigned from the Portainer environment's Server field when you pick a Docker image. You do not need to set it manually on each subscription.


4. Add a Portainer Server (Docker deployments)

Go to Infrastructure → Portainer Servers → New.

Field Value
Name Label, e.g. main-portainer
URL Portainer API URL, e.g. https://your-server:9443
Access Token Portainer API access token (User Settings → Access Tokens in Portainer)

Click Confirm, then open the server and click Sync Environments to import your Docker environments.

Configure the Portainer Environment

Open the synced environment and fill in the default values that will be inherited by all subscriptions created in this environment:

Field Purpose
Server Root server for this environment (used for Git integration)
Nginx Server NPM instance to use for proxy hosts
Cloudflare Account Cloudflare connector for DNS records
Main Domain Base domain for subdomain generation, e.g. sadeem.cloud
Subdomain Start Default prefix, e.g. client → generates client1.sadeem.cloud
Next Port Starting port for HTTP port assignment (e.g. 8100)
Backup Server Default backup server for all subscriptions in this environment

When a subscription is created and a Docker image is selected, all these values are automatically copied to the subscription. You rarely need to set them manually on individual subscriptions.


5. Add a DBFilter Server Group (DBFilter deployments)

Go to Subscriptions → DBFilter Servers → New.

Field Purpose
Name Label for this server group
Nginx Server NPM instance for proxy hosts
Cloudflare Account Cloudflare connector for DNS
Main Domain Base domain for subdomain generation
Backup Server Default backup server

When a subscription uses this server group, these values are inherited automatically.


What's Next

With your environment configured, you're ready to create your first subscription.