Installation & Setup
Guide on how to run, deploy, and configure Domainatrix.
Domainatrix is designed to be highly versatile. You can run it as a lightweight Docker container, host it as a background service on a Linux VPS, or run it locally on your machine.
🚀 Desktop Installation
If you prefer to run Domainatrix as a standalone desktop utility on your local machine, download the pre-compiled package for your system.
Download Links
Linux (x64):
Windows (x64):
Linux Installation
Debian / Ubuntu (.deb)
- Download the
.debpackage. - Install it using
dpkgorapt:sudo dpkg -i domainatrix_1.0.0_amd64.deb # If there are missing dependencies: sudo apt install -f - Launch Domainatrix from your application menu or run
domainatrixin your terminal.
Fedora / RHEL (.rpm)
- Download the
.rpmpackage. - Install it using
dnf:sudo dnf install ./domainatrix-1.0.0.x86_64.rpm - Launch Domainatrix from your application menu or run
domainatrixin your terminal.
AppImage (Universal)
- Download the
.AppImagepackage. - Grant execution permissions:
chmod +x Domainatrix-1.0.0.AppImage - Run the application:
./Domainatrix-1.0.0.AppImage
All application state, history, and domain settings will be safely stored locally in:
~/.config/domainatrix/data/domainatrix.sqlite
Windows Installation
- Download the
.exeinstaller. - Run the
Domainatrix.Setup.1.0.0.exeinstaller and follow the instructions.
🐳 Docker Deployment
Docker is the easiest way to deploy Domainatrix on a server or network with persistent data and isolated dependencies.
Prepare the Directory
Create a dedicated folder for your Domainatrix deployment:
mkdir -p ~/domainatrix/data
cd ~/domainatrixCreate docker-compose.yml
Save the following configuration inside that folder as docker-compose.yml:
version: '3'
services:
domainatrix:
image: pinkpixeldev/domainatrix:latest
container_name: domainatrix
restart: unless-stopped
ports:
- "8765:3000"
environment:
- NODE_ENV=production
- DB_FILE_NAME=/app/data/domainatrix.sqlite
- PORT=3000
- HOSTNAME=0.0.0.0
- CRON_SECRET=your_super_secure_cron_secret
# Add optional environment variables here (see Environment Setup page)
volumes:
- ./data:/app/dataStart the Container
Run the container in detached (background) mode:
docker compose up -dDomainatrix will now be accessible at http://localhost:8765 (or the IP address of your host on port 8765).
⚙️ Native Linux VPS Deployment (Node.js & PM2)
If you prefer to run Domainatrix natively without Docker:
Install Prerequisites
Ensure Node.js (v20+), npm, and SQLite3 are installed on your server:
# Ubuntu/Debian example
sudo apt update
sudo apt install -y nodejs npm sqlite3
# Arch Linux example
sudo pacman -Syu nodejs npm sqliteClone and Build
Clone the repository, install dependencies, and build the production bundle:
git clone https://github.com/pinkpixel-dev/domainatrix.git
cd domainatrix
npm install
npm run buildThis compiles a standalone server inside the .next/standalone/ folder.
Run with PM2
Use PM2 to run and keep the application alive:
# Install PM2 globally
sudo npm install -g pm2
# Run the standalone server with necessary environment variables
pm2 start .next/standalone/server.js --name domainatrix --env PORT=8765,DB_FILE_NAME=./data/domainatrix.sqlite,CRON_SECRET=your_cron_secret
# Ensure PM2 restarts upon system boot
pm2 save
pm2 startup🕒 Setting Up Scheduled Checks (Cron Jobs)
To automate background uptime checks, domain/SSL expiration scans, and DNS monitor updates, you need to configure a cron job to call the internal API.
Open your system crontab:
crontab -eAdd the following entries (make sure to replace your_super_secure_cron_secret with the value you defined in your .env or docker-compose.yml file, and update http://127.0.0.1:8765 with your actual instance URL if needed):
# 1. Trigger HTTP uptime checks every 5 minutes (lightweight, rapid checks)
*/5 * * * * curl -fsS -X POST -H "Authorization: Bearer your_super_secure_cron_secret" http://127.0.0.1:8765/api/monitoring/uptime/run > /dev/null 2>&1
# 2. Trigger full WHOIS, DNS, and SSL portfolio updates once a day (heavyweight checks)
0 0 * * * curl -fsS -X POST -H "Authorization: Bearer your_super_secure_cron_secret" http://127.0.0.1:8765/api/monitoring/checks/cron > /dev/null 2>&1[!TIP] Splitting the cron jobs ensures your server performs lightweight uptime checks frequently, while doing heavy WHOIS queries only once a day to prevent getting rate-limited by public registries.
