Server requirements and preparation
What to prepare before running the installer: a server, two domains, DNS records, ports and a license key.
Micator is installed on a separate clean server with one command. Before you start, prepare the server, two domains with DNS records and a license key. The installer checks the server itself and stops with a message if something does not fit.
Server
| Requirement | Value | Installer message when not met |
|---|---|---|
| Operating system | Ubuntu 24.04 | “Ubuntu 24.04 is supported.” («Поддерживается Ubuntu 24.04.») |
| Access | root permissions: run with sudo or as the root user | “Run the installation with sudo.” («Установку запускать через sudo.») |
| Architecture | amd64 (x86_64) — the published release is built for it | “This release is verified and installed on linux/amd64 with Python 3.12 (Ubuntu 24.04).” («Этот выпуск проверяется и устанавливается на linux/amd64 с Python 3.12 (Ubuntu 24.04).») or “The release architecture does not match the server.” («Архитектура выпуска не совпадает с сервером.») |
| Processor | 2 cores or more | “At least 4 GB of RAM and two CPUs are required.” («Нужно не менее 4 ГБ RAM и двух CPU.») |
| Memory | 4 GB or more. The check passes if the system sees at least 3500 MiB | “At least 4 GB of RAM and two CPUs are required.” («Нужно не менее 4 ГБ RAM и двух CPU.») |
| Disk | 20 GB or more of free space on the partition where /opt/micator is located | “At least 20 GB of free space is required.” («Нужно не менее 20 ГБ свободного места.») |
| systemd | running | “A running systemd is required for installation.” («Для установки нужен работающий systemd.») |
| Public IPv4 | present. The installer takes it from the server's network interface | “Could not determine the public IPv4. Pass --setup-ip with the server IP.” («Не удалось определить публичный IPv4. Передайте --setup-ip IP сервера.») |
| Ports 80 and 443 | free: there is no other web server on the server | “Port 80 is busy.” («Порт 80 занят.») or “Port 443 is busy.” («Порт 443 занят.») |
/opt/micator directory | absent or empty | “The directory is not empty; installing over existing data is not allowed.” («Каталог не пуст; установка поверх существующих данных запрещена.») |
The table gives the messages of an installation with the wizard. With installation in the terminal, without the wizard, the texts about the disk, ports and directory are different.
The server must be clean. If it already has Docker containers, volumes or networks from another tracker installation, the installer stops with the message “The server already has Micator resources.” («На сервере уже есть ресурсы Micator.»)
The installer does not accept other Ubuntu versions or other distributions.
Do not run the installation on a server where a tracker or another website is already running. The installer is designed only for the first installation. An installed tracker is updated in the panel: Settings → Updates («Настройки → Обновления»), see Updating the tracker from the panel.
Choosing a server size
2 vCPUs and 4 GB RAM are the installation minimum. For a working team, imported history and concurrent reports, start with 4 vCPUs and 8 GB RAM. Campaign count alone does not determine load: click rate, routing rules, PHP pages and report queries all matter.
| Configuration | Suitable starting point |
|---|---|
| 2 vCPU / 4 GB | Getting started, light traffic and one user; leave capacity for reports and background work |
| 4 vCPU / 8 GB | A working team with history; more headroom for concurrent traffic and analytics |
| More CPU / RAM | Heavy PHP pages, several concurrent reports, high traffic or long retention; size using measurements |
Use SSD or NVMe storage with consistent write latency. The tracker writes a click to its disk journal before acknowledging it; slow or overloaded storage increases latency even when CPU is available. Swap does not replace the required RAM.
20 GB free is the installer threshold, not an operating disk size. An 80 GB or larger disk is a reasonable starting point; keep at least 25% free. Plan separately for long history and large page collections: history, pages, current and previous release images, temporary migration files and backups. A migration needs room for the archive, extracted files and working database at the same time.
Keep backups on another server and choose statistics retention to fit the disk. See Load and performance for measured 2/4 and 4/8 results and test conditions.
Domains and DNS
You need two different domains or subdomains:
- the panel domain, for example
panel.example.com— where you manage campaigns and reports; - the tracking domain, for example
track.example.com— this address is used in links and postbacks.
In the wizard, these are the Panel domain («Домен панели») and Tracking domain («Домен трекинга») fields. You cannot enter the same domain in both: the wizard responds “Enter two different domains and an email for certificates.” («Укажите два разных домена и email для сертификатов.»)
Prepare the domains before you start:
- Create an A record for the panel domain pointing to the server IP, for example
203.0.113.10. - Create an A record for the tracking domain pointing to the same IP.
- Wait until the records update.
The wizard checks each domain with an HTTP request on port 80. It must be this exact server that responds; redirects are not followed. All of the domain's addresses in DNS must be public.
A domain is entered without https://, port and path. Internationalized names are written in punycode. An IP address instead of a domain is not accepted.
You will also need an email address for the Notification email («Email для уведомлений») field — it is used for notifications about HTTPS certificates. The wizard issues certificates for both domains by itself.
Domains for campaign links are added after installation in the Domains («Домены») section of the panel; see Domains.
Ports and network
- Incoming TCP 80 and 443 must be reachable from the internet. The tracker does not open any other ports externally.
- The server needs internet access. The installer downloads the release from
install.micator.com, Ubuntu and Docker packages and the GeoIP database. The tracker issues HTTPS certificates and confirms the license.
The installer does not configure ufw and does not change access rules for SSH, 80 and 443. If a firewall is enabled on the server or at the hosting provider, open ports 80 and 443 yourself before you start.
The wizard opens at http://203.0.113.10/setup/, so the server needs a public IPv4. If the installer did not determine the address itself, pass it with the --setup-ip parameter:
sudo bash install.sh --setup-ip 203.0.113.10The other parameters are on the install.sh parameters and installing in the terminal page.
Cloudflare
The wizard checks the domain over HTTP on port 80 and does not follow redirects. If a proxy in front of the server redirects HTTP to HTTPS, the check fails.
- For the duration of setup, enable the “DNS only” mode for both domains — proxying is off.
- If you need proxying right away, choose the Full (strict) encryption mode and turn off the HTTP to HTTPS redirect (the Always Use HTTPS option) until setup is finished. The Flexible mode does not work.
Wizard messages that point to a proxy:
- “The domain panel.example.com does not point to this server yet. Check the A/AAAA records, port 80 and proxy redirects, then try again.” («Домен panel.example.com пока не ведёт на этот сервер. Проверьте A/AAAA-записи, порт 80 и редиректы прокси, затем повторите.») — the request on port 80 did not reach the server or was redirected.
- “HTTPS is not ready yet. Check DNS, ports 80/443 and the Full (strict) mode in Cloudflare, then try again.” («HTTPS пока не готов. Проверьте DNS, порты 80/443 и режим Full (strict) в Cloudflare, затем повторите.») — the certificates were not issued within the allotted time.
What the installer sets up for you
You do not need to install anything in advance.
python3,curlandopenssl— if they are missing.- Docker — if it is missing, from the official Docker repository.
- Docker Compose — if Docker is already installed but Compose is missing or older than 2.33.1. The installed Docker is not replaced. If the required version could not be installed, the installation stops with the message “Docker Compose 2.33.1 or newer is required; check the installed CLI plugins.” («Нужен Docker Compose 2.33.1 или новее; проверьте установленные CLI-плагины.»)
- The GeoIP database, the update service and the
micatorctlcheck command.
The tracker images are part of the release. Before installation, the release signature and file integrity are checked. The list of files, services and ports is on the Installation files, ports, services and logs page.
License key
The panel needs a license key to work. Get it in your account before installation. The key looks like XXXX-XXXX-XXXX-XXXX.
The key is entered in the wizard on step 2: the License («Лицензия») block, the License key («Ключ лицензии») field. If the block is marked “Required for panel access” («Для доступа к панели»), the form will not submit without a key. With installation in the terminal, the key is entered after the first login to the panel.
Without an active license, the panel is closed: after logging in, the owner sees the “Tracker access closed” («Доступ к трекеру закрыт») screen with the License key field and the Activate («Активировать») button. Traffic keeps working. How to get a trial key is on the Getting a key and activation page.
Pre-launch checklist
- A server with Ubuntu 24.04, 2 or more CPUs, 4 GB of memory and 20 GB of free space, with root access.
- There is no web server and no other tracker installation on the server.
- Ports 80 and 443 are open for incoming connections.
- Two different domains point to the server IP with A records.
- You have an email address for certificate notifications.
- You have a license key from your account.
When everything is ready, go on to installation. If the installer stopped with a message, find it on the Installation errors and how to fix them page.