This guide provides installation instructions for Vigil on Linux servers. Choose the deployment method that best fits your infrastructure: Docker (recommended for most users), native packages (Debian/Ubuntu), Cargo (Rust ecosystem), or source build (maximum control).
Latest Stable Version: v1.28.6 (November 28, 2025)
| Component | Minimum | Recommended |
|---|---|---|
| CPU | 1 core | 2+ cores |
| RAM | 256 MB | 512 MB+ |
| Disk | 100 MB | 1 GB+ (for logs) |
| OS | Debian 11+, Ubuntu 20.04+, RHEL 9+ | Debian 12, Ubuntu 22.04+ |
For Docker installation, see Docker.
For Rust installation, see Rust.
Recommended for: Most deployments, quick setup, isolated runtime, easy updates
sudo mkdir -p /opt/vigil/{config,data}
sudo chown -R 1000:1000 /opt/vigil
Create a minimal configuration at /opt/vigil/config/config.cfg:
[server]
log_level = "info"
inet = "[::]:8080"
workers = 4
manager_token = "${VIGIL_MANAGER_TOKEN}"
reporter_token = "${VIGIL_REPORTER_TOKEN}"
[assets]
path = "./res/assets/"
[branding]
page_title = "Service Status"
page_url = "https://status.example.com"
company_name = "Your Company"
icon_color = "#3B82F6"
logo_color = "#1E40AF"
[metrics]
poll_interval = 120
poll_retry = 2
poll_delay_dead = 10
poll_delay_sick = 5
[probe]
[[probe.service]]
id = "example-api"
label = "Example API"
[[probe.service.node]]
id = "api-health"
label = "API Health"
mode = "poll"
replicas = ["https://api.example.com/health"]
http_method = "GET"
export VIGIL_MANAGER_TOKEN=$(openssl rand -hex 32)
export VIGIL_REPORTER_TOKEN=$(openssl rand -hex 32)
echo "VIGIL_MANAGER_TOKEN=$VIGIL_MANAGER_TOKEN" >> /opt/vigil/config/.env
echo "VIGIL_REPORTER_TOKEN=$VIGIL_REPORTER_TOKEN" >> /opt/vigil/config/.env
docker run -d \
--name vigil \
--restart unless-stopped \
-p 8080:8080 \
-v /opt/vigil/config/config.cfg:/etc/vigil.cfg:ro \
-v /opt/vigil/data:/var/lib/vigil \
--env-file /opt/vigil/config/.env \
--read-only \
--tmpfs /tmp:rw,noexec,nosuid,size=64m \
valeriansaliou/vigil:v1.28.6
docker logs vigil
curl http://localhost:8080/status/report
Expected output: JSON status report with configured services
Recommended for: Production deployments, systemd integration, automatic updates
# Install prerequisites
sudo apt-get update
sudo apt-get install -y curl gnupg apt-transport-https
# Add repository (Debian 12 Bookworm)
echo "deb [signed-by=/usr/share/keyrings/valeriansaliou/vigil.gpg] https://packagecloud.io/valeriansaliou/vigil/debian/ bookworm main" | \
sudo tee /etc/apt/sources.list.d/valeriansaliou_vigil.list
# Download and install GPG key
curl -fsSL https://packagecloud.io/valeriansaliou/vigil/gpgkey | \
sudo gpg --dearmor -o /usr/share/keyrings/valeriansaliou/vigil.gpg
# Update package index
sudo apt-get update
For other distributions:
# Ubuntu 22.04 (Jammy)
echo "deb [signed-by=/usr/share/keyrings/valeriansaliou/vigil.gpg] https://packagecloud.io/valeriansaliou/vigil/ubuntu/ jammy main" | \
sudo tee /etc/apt/sources.list.d/valeriansaliou_vigil.list
# Debian 11 (Bullseye)
echo "deb [signed-by=/usr/share/keyrings/valeriansaliou/vigil.gpg] https://packagecloud.io/valeriansaliou/vigil/debian/ bullseye main" | \
sudo tee /etc/apt/sources.list.d/valeriansaliou_vigil.list
sudo apt-get install vigil
Edit the configuration file at /etc/vigil/config.cfg:
sudo nano /etc/vigil/config.cfg
Refer to Vigil Configuration for complete configuration options.
Create /etc/default/vigil:
sudo nano /etc/default/vigil
Add your tokens:
VIGIL_MANAGER_TOKEN="your-manager-token-here"
VIGIL_REPORTER_TOKEN="your-reporter-token-here"
sudo systemctl daemon-reload
sudo systemctl enable vigil
sudo systemctl start vigil
sudo systemctl status vigil
curl http://localhost:8080/status/report
journalctl -u vigil -f
Recommended for: Rust developers, custom builds, latest features
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
rustup update stable
cargo install vigil-server
vigil --version
mkdir -p ~/.vigil
cp $(cargo install --list | grep vigil-server | awk '{print $2}')/res/config.cfg ~/.vigil/config.cfg
Or download sample config:
curl -o ~/.vigil/config.cfg \
https://raw.githubusercontent.com/valeriansaliou/vigil/master/config.cfg
export VIGIL_MANAGER_TOKEN="your-manager-token"
export VIGIL_REPORTER_TOKEN="your-reporter-token"
vigil -c ~/.vigil/config.cfg
Create /etc/systemd/system/vigil.service:
[Unit]
Description=Vigil Microservices Status Page
After=network.target
[Service]
Type=simple
User=vigil
Group=vigil
EnvironmentFile=/etc/default/vigil
ExecStart=/home/vigil/.cargo/bin/vigil -c /etc/vigil/config.cfg
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
sudo useradd -r -s /bin/false vigil
sudo systemctl daemon-reload
sudo systemctl enable vigil
sudo systemctl start vigil
Recommended for: Custom modifications, latest development version, maximum control
# Debian/Ubuntu
sudo apt-get update
sudo apt-get install -y \
build-essential \
pkg-config \
libssl-dev \
libcurl4-openssl-dev \
git \
cmake
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
git clone https://github.com/valeriansaliou/vigil.git
cd vigil
# Build release version (optimized)
cargo build --release
# Binary will be at:
# ./target/release/vigil
sudo cp target/release/vigil /usr/local/bin/
sudo chmod +x /usr/local/bin/vigil
Follow steps from Method 3 (Cargo Installation) for configuration.
Recommended for: Production deployments with reverse proxy and database
Create docker-compose.yml:
services:
vigil:
image: valeriansaliou/vigil:v1.28.6
container_name: vigil
restart: unless-stopped
ports:
- "127.0.0.1:8080:8080"
volumes:
- ./config/config.cfg:/etc/vigil.cfg:ro
- ./data:/var/lib/vigil
env_file:
- .env
read_only: true
tmpfs:
- /tmp:rw,noexec,nosuid,size=64m
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
networks:
- vigil-network
nginx:
image: nginx:alpine
container_name: vigil-nginx
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./nginx/ssl:/etc/nginx/ssl:ro
- ./nginx/html:/usr/share/nginx/html:ro
depends_on:
- vigil
networks:
- vigil-network
networks:
vigil-network:
driver: bridge
Create .env file:
VIGIL_MANAGER_TOKEN=your-manager-token-here
VIGIL_REPORTER_TOKEN=your-reporter-token-here
Start the stack:
docker compose up -d
docker compose ps
For production deployments, always use HTTPS. See Vigil Security for Nginx reverse proxy configuration with TLS 1.3.
Configure your first service probes in the configuration file. Refer to Vigil Configuration for probe types and options.
Set up at least one notification channel (Email, Slack, Telegram, etc.) to receive alerts when services go down.
Trigger a test alert by temporarily stopping a monitored service to verify notifications are delivered correctly.
In your config, enable startup_notification = true to verify notification channels on Vigil startup:
[notify]
startup_notification = true
Create /etc/logrotate.d/vigil:
/var/log/vigil/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 0640 vigil vigil
postrotate
systemctl reload vigil > /dev/null 2>&1 || true
endscript
}
sudo cp /etc/vigil/config.cfg /backup/vigil-config-$(date +%Y%m%d).cfg
# Or for Docker:
cp /opt/vigil/config/config.cfg /backup/vigil-config-$(date +%Y%m%d).cfg
# Pull latest image
docker pull valeriansaliou/vigil:v1.28.6
# Stop and remove old container
docker stop vigil && docker rm vigil
# Start new container
docker run -d \
--name vigil \
--restart unless-stopped \
-p 8080:8080 \
-v /opt/vigil/config/config.cfg:/etc/vigil.cfg:ro \
-v /opt/vigil/data:/var/lib/vigil \
--env-file /opt/vigil/config/.env \
valeriansaliou/vigil:v1.28.6
sudo apt-get update
sudo apt-get install --only-upgrade vigil
sudo systemctl restart vigil
cargo install --force vigil-server
sudo systemctl restart vigil
Check logs for errors:
# Docker
docker logs vigil
# Native package
journalctl -u vigil -n 50 --no-pager
# Cargo/Source
vigil -c /path/to/config.cfg
Validate configuration file:
vigil -c /path/to/config.cfg --check
Grant raw network capability:
sudo setcap 'cap_net_raw+ep' $(which vigil)
# Or for Docker:
docker run --cap-add=NET_RAW ...
Change the listening port in config:
[server]
inet = "[::]:8081"
Ensure proper file permissions:
sudo chown -R vigil:vigil /etc/vigil
sudo chmod 640 /etc/vigil/config.cfg
Any questions?
Feel free to contact us. Find all contact information on our contact page.