Spain · 2026 World Cup champions
AXTO

Antivirus — installation guide

Install Antivirus on your own Linux server or Windows PC with Docker, activate it online with your subscription key or fully offline with a Lifetime licence, and open it at http://localhost:8086.

1. What you need

  1. A 64-bit Linux server (x86-64 or ARM64) with Docker Engine 24+ and Docker Compose v2 — or Windows 10/11 with Docker Desktop (WSL 2).
  2. At least 2 CPU cores, 4 GB RAM and 10 GB free disk space (more for large workloads).
  3. A licence: a key from a Business or Enterprise plan (https://axto.io/app/self-hosted), or a Lifetime licence (https://axto.io/app/lifetime).

2. Option A — AXTO Setup (recommended)

AXTO Setup checks Docker, downloads the signed images, writes the configuration and starts the app. It keeps your data when you update.

  1. Windows: download AXTO Setup from the portal (Self-hosted → Download AXTO Setup), run it and paste your licence key.
  2. Linux: download the installer and install with your key (ARM64 servers: use os=linux-arm64 — AXTO Setup picks the matching ARM64 images):
    curl -fsSL -o axto-setup "https://axto.io/api/download/installer?os=linux-amd64"
    chmod +x axto-setup
    ./axto-setup install --key AV-XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX
  3. Lifetime licence: use the installer key (LIFE-…) shown in https://axto.io/app/lifetime. AXTO Setup installs the app and activates this device automatically (one device slot); on the command line: axto-setup install antivirus --key LIFE-…

3. Option B — Docker by hand (air-gapped friendly)

Use this on servers without internet access: copy the files over, load the images and start the app.

  1. Download the images from the portal (Self-hosted, or Lifetime licences → Downloads) and load them:
    docker load -i guardian-antivirus.tar.gz
  2. Download antivirus-compose.yml and antivirus.example.yml from the portal, put them in one folder and save the config as antivirus.yml.
  3. Subscription only: paste your licence key into antivirus.license_key. (Lifetime: leave it empty.)
  4. Start the app:
    docker compose -p axto-antivirus -f antivirus-compose.yml up -d
  5. Open http://localhost:8086 in your browser.

4. Activate online (subscription)

  1. The app checks its licence with axto.io at start and every 30 minutes. If axto.io cannot be reached it keeps working for up to 4 hours on its last verified proof.
  2. The licence binds to the first server that uses it. Moving to new hardware? Press “Reset server binding” in https://axto.io/app/self-hosted.
  3. Licences renew with your plan — no new key is needed when you renew.

5. Activate offline (Lifetime licence)

A Lifetime licence needs no internet connection at all: each device gets a signed activation file that the app verifies locally. AXTO Setup does these steps for you (see Option A); by hand, for air-gapped servers:

  1. Start the app once (without a key). Read its machine ID — it is also printed in the app's log:
    docker compose -p axto-antivirus -f antivirus-compose.yml exec -T antivirus cat /guardian/data/.axto/machine-id
  2. With AXTO Setup: axto-setup machine-id antivirus
  3. In https://axto.io/app/lifetime, press “Activate a device”, paste the machine ID and download the file.
  4. Install the file and restart — with AXTO Setup: axto-setup activate antivirus antivirus.axto-license — or by hand:
    docker compose -p axto-antivirus -f antivirus-compose.yml cp antivirus.axto-license antivirus:/guardian/data/.axto/antivirus.axto-license
    docker compose -p axto-antivirus -f antivirus-compose.yml restart
  5. The app now runs with no connection to axto.io. The file only works on that machine and that app; activate each device separately.

6. Update

  1. AXTO Setup: axto-setup update antivirus
  2. By hand: load the new images, then run the start command again. Your data volumes and activation stay in place.

7. Your data & backups

  1. Everything the app stores lives in Docker volumes; the machine ID and licence state live in /guardian/data/.axto.
  2. Stopping or updating never deletes data. Only removing the volumes (docker compose down -v, or uninstall without --keep-data) does.
  3. Back up the volumes regularly with your usual Docker backup tooling.

8. Troubleshooting

  1. Port 8086 already in use → install with --port <other port> (AXTO Setup) or change the port in antivirus-compose.yml.
  2. “Licence bound to a different server” → reset the binding in https://axto.io/app/self-hosted.
  3. Lifetime file “belongs to another machine” → activate this machine's ID in https://axto.io/app/lifetime.
  4. Docker not running → axto-setup doctor tells you exactly what to fix.
  5. See what the app says:
    docker compose -p axto-antivirus -f antivirus-compose.yml logs --tail 100 antivirus

Need help? Chat with us or e-mail hello@axto.io.