Verified customer guide

Install a production gateway from a clean server

Prepare DNS first, run one signed installer and finish with a private gateway listener behind managed HTTPS. These instructions match the current 30-day commercial flow and the latest signed release channel.

Before installation

Prepare the Linux host and panel domain

The accepted baseline is a clean Ubuntu 24.04 x86_64 server. Compatible Ubuntu or Debian hosts are checked before the installer changes anything.

Server

x86_64, at least 3 GiB RAM, 20 GiB free root-disk space, root or sudo access and working systemd.

Network

Outbound HTTPS plus inbound SSH, TCP 80 and TCP 443. Port 8090 must be free and remains loopback-only.

Domain

Create a lowercase hostname such as gateway.example.com. Point its A record to this server before installation.

License

Keep the valid 30-day key ready. Its first successful activation starts the license period.

If an AAAA record exists, it must point to reachable IPv6 on the same server. Correct or remove a stale AAAA record before continuing.
Linux automatic mode

Run the public signed installer

Use an interactive SSH shell. Normal mode installs and configures local PostgreSQL, Redis, Nginx and the gateway without asking you to design the infrastructure.

curl -fsSL https://download.mfimail.eu/install.sh | sudo bash
1

Select Linux server

The installer rejects WSL2 when Linux server mode is selected and verifies x64, systemd, memory, disk and required ports.

2

Enter the license key

Keep it private. The key is used for activation and is not retained by default.

3

Create the first administrator

Choose the username, email and password. The password is requested twice and never printed.

4

Enter the panel domain

Enter only the hostname, without https://, a path, port or raw IP. DNS must already point to this server.

5

Confirm the TLS email

Press Enter to reuse the administrator email for Let's Encrypt notices.

6

Review and type INSTALL

The license is activated after this confirmation and before packages or application files are changed.

7

Open the printed HTTPS URL

Sign in with the new administrator and add provider accounts. No separate database setup is required in automatic mode.

Administrator policy

Choose credentials without hidden complexity rules

Username

Use 3-64 letters, digits, dots, underscores or dashes. Press Enter to use admin.

Password

Use 8-64 characters with no spaces, tabs, newlines or other whitespace.

There is no composition requirement. Digit-only, uppercase-only, lowercase-only and symbol-only passwords are accepted. Existing administrators remain valid after signed updates.
After installation

Verify health before adding accounts

The installer prints the exact HTTPS panel URL. The gateway, provider workers, PostgreSQL, Redis, license state and public route should all report ready.

Check status

sudo mfi-ai-gateway status
sudo mfi-ai-gateway doctor

Install a signed update

sudo mfi-ai-gateway update

Type UPDATE when prompted. Admin, database, license, device identity and domain are preserved.

Change the domain

sudo mfi-ai-gateway domain new-name.example.com admin@example.com

Update DNS first, then run doctor.

Renew TLS

sudo mfi-ai-gateway renew-tls

Run doctor after certificate maintenance.

Windows local preview

Use WSL2 only for local mode

The WSL2 bootstrap supports Ubuntu 22.04 or 24.04 with systemd and opens a Windows-local panel URL. It does not create public DNS, Nginx TLS or public firewall rules. Clean Windows + WSL2 acceptance remains pending, so this path is still marked preview.

$p="$env:TEMP\mfi-install-wsl.ps1"; irm https://download.mfimail.eu/install-wsl.ps1 -OutFile $p; & $p
Advanced operators

Bring existing infrastructure only when required

Customer-managed PostgreSQL and Redis are available behind the explicit --advanced installer flag. A custom reverse proxy can later take ingress ownership while the gateway listener remains loopback-only.

curl -fsSL https://download.mfimail.eu/install.sh | sudo bash -s -- --advanced
Normal customers should use automatic mode. Never expose port 8090 directly to the internet.
Troubleshooting and support

Share symptoms, never secrets

Start with status and doctor. Installer license or DNS preflight failures intentionally stop before application, PostgreSQL, Redis, Nginx or firewall changes.

Install state

Include OS/version, Linux or WSL2, the panel hostname and the exact final visible error.

Service state

Include status output and only failed doctor lines. Remove tokens and environment values.

License state

Include the license ID or a short masked preview. Never send the full key.

Never share an administrator password, session cookie, device private key, database DSN, Redis URL or complete license key.