FREEAll features, unlimited servers, no credit card
adminX

Monitor, protect and manage your Linux servers from one panel.

SSH attack tracking, firewall, open ports, processes, Docker, a terminal in your browser and Telegram alerts. A lightweight agent installed with one command, real-time data. Free, and it stays free.

Servers
6 servers · 4s ago
+ Add server
ACTIVE THREAT
cache-01 under brute-force: firewall inactive
enable ufwinstall fail2ban
SSH attacks · 24h
4.812
Security score
85/100
Firewall · Ports
5/6 · 41
web-0187
203.0.113.10
CPU
2%RAM
25%
web-0287
203.0.113.11
CPU
6%RAM
11%
db-0187
203.0.113.20
CPU
3%RAM
15%
✓Ubuntu 20.04 / 22.04 / 24.04✓Debian 11+✓x86_64 and ARM64✓Hetzner, DigitalOcean, AWS, your own hardware✓Single-file Python agent, no dependencies
// FEATURES

Everything a server admin needs every day

Instead of installing separate tools and SSH-ing into each box, see all your servers on one screen.

>_

Terminal in the browser

A real PTY session to every server from the panel. Multiple tabs, command history, live metrics in the side panel.

SSHPTYtabs
ssh

SSH and DDoS attack detection

IPs trying brute force, attempt counts and one-click blocking. DDoS detection from packet rate, SYN-RECV, kernel counters and access logs; target container/port, source blocks, connection rate limits and SYN hardening.

fail2banDDoSrate limit
fw

Firewall and ports

Manage ufw rules and Docker-published ports in one place; close a port or restrict it to specific IPs. Switch to 1.1.1.1 / 8.8.8.8 with one click when the provider DNS breaks.

ufwDOCKER-USERDNS 1.1.1.1
%

Real-time metrics

CPU, RAM, disk, load and network traffic updated every 10 seconds; events on disk and RAM thresholds.

10sCPU · RAM · disknet
⏱

Historical data

CPU, RAM, disk and network history kept for 30 days. Go back from 1 hour to 30 days, see when the load started and how much traffic you used in 30 days.

30dtraffictimeline
✓

Security score

Firewall, SSH settings, fail2ban, pending security updates, exposed database ports, passwordless accounts. Every item fixed with one click.

0-100one-click fix
ps

Processes and logs

Sort running processes by CPU/RAM and terminate them; read journal and file logs with filters. Change the server time zone from the panel.

killjournalctl
dk

Docker

Containers, their state and logs. Start, stop and restart from the panel.

containerslogsrestart
!

Events

Critical / warning / info event stream: new attacker IPs, SSH logins, offline servers, critical findings.

criticalwarninginfo
key

SSH key management

Generate a key pair in the panel, distribute the public key to all servers, disable password login safely.

ed25519authorized_keys
✈

Telegram alerts

A message from your own Telegram bot when a server goes down, when CPU / RAM / disk crosses a threshold and on critical security events. It also tells you when things are back to normal.

TelegramCPU · RAM · diskoffline
2FA

2FA and multi-user

Two-factor login with an authenticator app. Every user sees only their own servers; admins manage accounts, open or close registration and can open a user's panel as that user when needed.

TOTPmulti-userroles
// TERMINAL

A real terminal, inside your browser

A full PTY session without opening an SSH client. Connect to several servers at once with tabs, see your command history, watch CPU, RAM and load flow in the side panel. The session runs over encrypted WebSocket, behind 2FA.

PTYmulti-tabhistorylive metrics2FA
web-01db-01cache-01+
root@web-01:~# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed:  3
|  `- Total failed:      412
`- Actions
   |- Currently banned:  27
   `- Total banned:      1.204
root@web-01:~# systemctl status nginx | head -3
● nginx.service - web server
     Loaded: loaded (nginx.service; enabled)
     Active: active (running) since Mon 09:12:04
root@web-01:~# 
CPU / RAM
CPURAM
1 hour24 hours7 days30 days
// HISTORICAL DATA

Not just now, but back in time

CPU, RAM, disk and network metrics are recorded continuously and kept for 30 days. Go back 1 hour, 6 hours, 24 hours, 7 or 30 days and see on the chart when that 3 AM load or the filling disk started.

RAMUsage, swap and steady growth that hints at a memory leak
DiskPer-partition usage and threshold alerts
CPULoad and CPU intensity over time
NetIn/out rate chart and total traffic over 30 days
// TELEGRAM ALERTS

Be the first to know when a server goes down.

Create a bot with BotFather, paste the token, find the chat ID with one click. Critical events reach your phone even when the panel is closed.

01
Offline, online and DNS
An alert when the server misses heartbeats for the period you choose (default 2 min), a message with the downtime when it comes back, and a separate alert when the server can no longer resolve names (provider DNS outage).
02
CPU, RAM and disk thresholds
Default 90%, configured per user. The threshold has to stay crossed for the delay you choose (default 5 min); short spikes never page you.
03
Back to normal and reminders
“Back to normal” once the value drops 5 points below the threshold; if the problem persists you get a reminder at the interval you choose (default 60 min).
04
Critical security events
Critical audit findings and DDoS / DNS problems that last long enough can land in the same chat; short blips and routine SSH scans never page you.
AX
AdminXO Alerts
bot
Telegram
🔴 db-01 is offline
No agent heartbeat for 45 seconds.
Open in panel09:41
🔥 web-01: CPU 97%
Above the 90% threshold for the last 2 minutes.
Open in panel11:07
✅ web-01: CPU back to normal (41%)
IP: 203.0.113.10
Open in panel11:19
🟢 db-01 is back online
Downtime: 2 h 21 min.
Open in panel12:02
DNS resolverresolution failingsystemd-resolved
DNS servers in use
185.12.64.1185.12.64.2
The server cannot resolve names: timeout (4s)
Cloudflare + Google (recommended)Cloudflare 1.1.1.1Google 8.8.8.8
one click later
DNS resolverworking · 12 mssystemd-resolvedmanaged by AdminXO
DNS servers in use
1.1.1.18.8.8.81.0.0.18.8.4.4
Cloudflare + Google (recommended)Cloudflare 1.1.1.1Google 8.8.8.8
// DNS RESOLVER

Provider DNS down? Switch to 1.1.1.1 with one click.

When a provider's DNS servers fail (it happens at Hetzner too), apt, API calls, webhooks and e-mail all stop at once. AdminXO notices, tells you, and turns the fix into a single button.

01
Continuous resolution test
The agent resolves a hostname regularly; a failure lands in the event list, lowers the security score and triggers a Telegram alert.
02
12 resolvers, response time measured from your server
Cloudflare, Google, Quad9, OpenDNS, AdGuard, ControlD, Neustar and your provider's servers are probed over UDP/TCP/DoT and listed with response times. Pick one with a click or enter up to 4 custom IPs.
03
Automatic rollback on failure
After the new setting is written a resolution test runs; if it fails the previous setting is back within seconds. “Back to provider default” is always one click away.
04
Panel access even while DNS is down
The agent caches the panel's IP address and keeps connecting with the last known IP when the name cannot be resolved, so you can send the fix exactly when you need it.
05
Automatic management
When enabled, the agent tests resolution every minute; after two consecutive failures it switches to the fastest responding providers on its own, using DNS-over-TLS when UDP 53 is blocked. Switches are logged and sent to Telegram.
// DDoS DETECTION

Attack or just heavy traffic? Which container is the target?

Every 10 seconds the agent reads packet/bit rate, SYN-RECV, kernel counters and access logs and decides against the last 10 minutes' baseline. Large-packet backup/CDN transfers never alert; small-packet floods are caught immediately.

01
Five kinds, one card
Volumetric, SYN flood, UDP flood, ICMP flood and HTTP flood. For HTTP: nginx, apache, caddy and Traefik access logs with requests/s, top IPs, paths and User-Agents.
02
Target: container or host?
Connections are grouped by target port; the port is mapped to a Docker container through its published ports, otherwise to the host service. Outbound connections are never counted as targets.
03
One-click response
Block the top 10 IPs or a whole /24, rate-limit new connections per IP on the target port (iptables hashlimit, Docker included, persistent), apply SYN hardening.
04
Honest limit
When inbound traffic nears the link capacity the card says "upstream protection needed"; an attack that saturates the uplink cannot be stopped on the server. Telegram alerts fire for suspicion lasting 2 minutes and for every attack.
DDoS / traffic anomalySYN floodATTACK
SYN flood · started 2 min ago · target: 443/tcp → container web-app
Packets/s ↓ / ↑
184k / 9k
64 B
SYN-RECV
3 412
drop 240/s
TCP connections
12 980
estab 310
Top connecting sourcesBlock top 10
45.142.212.0/24
4120
185.220.101.7
1890
91.108.4.22
1544
Limit 443 · 30/sSYN hardeningHTTP (L7): 1 240 req/s
// SECURITY

Makes closing the gap one click, not just noticing the attack

Every server gets a 0–100 security score. Each item that lowers the score maps to an action: enable the firewall, close root login, install fail2ban, close the open port. Applied without touching the command line; you see the result in the score instantly.

01
Failed SSH logins and brute-force detection
Source IP, tried usernames, 24-hour intensity. An event opens when the threshold is exceeded.
02
Firewall and port audit
ufw status, every listening port and which process opened it. Externally reachable ones are flagged.
03
SSH configuration check
PermitRootLogin, PasswordAuthentication and key policies. Switch to the recommended value with one click.
04
Security updates
Pending packages are listed and applied from the panel; you are told if a reboot is required.
cache-01Security 61
✕
Firewall (ufw) inactive
All ports are open to the internet.
Enable
✕
Root SSH login with password enabled (PermitRootLogin yes)
The root account is the first brute-force target.
Close
✕
Fail2ban not installed
11.399 failed SSH attempts in the last 24 hours
Install
!
Sensitive services exposed to the internet: 6379/tcp, 9000/tcp, 3306/tcp
Database/admin ports are open to everyone. Allow only required IPs or bind to 127.0.0.1.
Inspect
✓
SSH password login disabled
✓
System packages up to date
// INSTALL

Your first server in the panel in 2 minutes

STEP 1

Create an account

Username, email and password. No credit card, plan selection or trial period.

STEP 2

Install the agent

Run the one-liner the panel gives you on the server. The agent is a single Python file, open source, running as a systemd service.

$ curl -fsSL https://adminxo.com/install/TOKEN | sudo bash
STEP 3

The panel opens

The server appears in the list within seconds; the first security scan and score are ready.

// WHY FREE

Free. No limits. No fine print.

AdminXO started as a tool we wrote to manage our own servers. No paid tier, server limit or "pro" feature; everyone runs the same version.

∞
Unlimited servers
1 or 100, same thing.
0 ₺
All features
Terminal, Docker and events included.
</>
Open-source agent
You can read what runs on your server.
↗
Your data is yours
Remove a server or your account any time.
// FAQ

Questions

Is it really completely free?

Yes. No server or feature limits. There is no paid plan.

How much does the agent use on the server?

Around 20 MB of RAM idle and under 0.1% CPU. A single Python file running as a systemd service; it installs no extra packages.

Who can access my server?

Only your account. Terminal and command execution are protected by optional 2FA. The agent only opens outbound connections; it never listens on a new port.

Which distributions are supported?

Ubuntu 20.04+, Debian 11+, x86_64 and ARM64. Other systemd-based distributions usually work.

Where is my data stored?

Metrics and events live in this panel's database; metric history is kept for 30 days (raw 10-second samples for 2 days, 5-minute summaries after that), events for 60. The panel is open source and you can self-host it.

What if I want to remove the agent?

"Delete server" in the panel or `sudo /opt/adminxo/uninstall.sh` on the server. It leaves no files behind.

What happens if my provider's DNS servers go down?

The panel keeps testing name resolution on the server; when it breaks you get a Telegram alert and can switch to Cloudflare 1.1.1.1 / Google 8.8.8.8 with one click on the Overview tab. The agent caches the panel's IP, so it stays connected even while DNS is down.

Can it detect and stop a DDoS attack?

It detects: from packet rate, SYN-RECV, kernel counters and access logs it tells volumetric, SYN/UDP/ICMP and HTTP floods apart and shows the target container/port and source blocks. SYN and HTTP floods and small-to-medium attacks are stopped on the server (blocking, connection limits, SYN hardening). A large volumetric attack that saturates the uplink can only be stopped by provider protection or Cloudflare; the panel tells you so explicitly.

Find out how your servers are doing right now

Setup takes 2 minutes. Free, no card, no limits.