Read only
The agent is designed to collect information from the server. It does not restart services, kill processes or change firewall rules.
Server Guardian runs inside your Linux server, collects host metrics, keeps recent history in memory and exposes a JSON API for the mobile app.
The agent is designed to collect information from the server. It does not restart services, kill processes or change firewall rules.
The /health endpoint can be used to confirm that the agent is online before connecting the app.
The monitored routes under /v1/ require the private agent token in the request header.
Use these commands on the Linux server. The example below uses the 32 bit Linux build because it is the URL informed for this page.
Run this inside the server using root or a user with sudo access.
cd /tmp
wget https://projy-ai.nyc3.digitaloceanspaces.com/server-guardian-1.0.0-linux-386.tar.gz
tar -xzf server-guardian-1.0.0-linux-386.tar.gz
cd server-guardian-1.0.0-linux-386
The installer creates the systemd service, installs the binary and creates the configuration file.
sudo ./scripts/install.sh --port 9091
Confirm that Server Guardian is running before opening the port to external access.
sudo systemctl status server-guardian
sudo journalctl -u server-guardian -f
Choose the correct package for your CPU architecture. Each package also has a SHA256 file to verify the download.
Run uname -m on the server and use the table below.
uname -m
| Build | Recommended for | Package | SHA256 |
|---|---|---|---|
| linux-amd64 | Most VPS, cloud servers and x86_64 Linux servers. |
server-guardian-1.0.0-linux-amd64.tar.gz |
server-guardian-1.0.0-linux-amd64.tar.gz.sha256 |
| linux-arm64 | ARM 64 bit servers, Raspberry Pi 4 or newer, AWS Graviton. |
server-guardian-1.0.0-linux-arm64.tar.gz |
server-guardian-1.0.0-linux-arm64.tar.gz.sha256 |
| linux-armv7 | ARM 32 bit servers and Raspberry Pi 3 class devices. |
server-guardian-1.0.0-linux-armv7.tar.gz |
server-guardian-1.0.0-linux-armv7.tar.gz.sha256 |
| linux-386 | Legacy 32 bit Linux servers. |
server-guardian-1.0.0-linux-386.tar.gz |
server-guardian-1.0.0-linux-386.tar.gz.sha256 |
sha256sum -c server-guardian-1.0.0-linux-386.tar.gz.sha256
The installer creates the configuration file inside /etc/server-guardian/config.json. The token is private and must not be shown in public pages, screenshots or support tickets.
token field is secret. Keep it only on the server and inside the app configuration. Never send the token in the URL query string.
Use this command to inspect or edit the agent configuration.
sudo vi /etc/server-guardian/config.json
This is only an example. Do not paste a real token into public documentation.
{
"server_name": "My Linux Server",
"listen_host": "0.0.0.0",
"listen_port": 9091,
"token": "YOUR_GENERATED_AGENT_TOKEN",
"history_minutes": 30,
"collect_interval_seconds": 10
}
sudo grep '"token"' /etc/server-guardian/config.json
Start with the local test. After that, test from another machine or from the internet using the public IP or DNS name.
This proves that the agent is running locally on port 9091.
curl -fsS http://127.0.0.1:9091/health
Replace SERVER_PUBLIC_IP with the server public IP or DNS name.
curl -fsS http://SERVER_PUBLIC_IP:9091/health
TOKEN="$(sudo grep -o '"token"[[:space:]]*:[[:space:]]*"[^"]*"' /etc/server-guardian/config.json | cut -d'"' -f4)"
curl -fsS -H "Authorization: Bearer $TOKEN" http://127.0.0.1:9091/v1/dashboard
TOKEN="$(sudo grep -o '"token"[[:space:]]*:[[:space:]]*"[^"]*"' /etc/server-guardian/config.json | cut -d'"' -f4)"
curl -fsS -H "X-Agent-Token: $TOKEN" http://127.0.0.1:9091/v1/status
If the internal curl works but the external curl fails, the port is probably blocked by Linux firewall or by the cloud firewall.
sudo ss -ltnp | grep ':9091'
sudo ufw allow 9091/tcp
sudo ufw status
sudo iptables -I INPUT -p tcp --dport 9091 -j ACCEPT
sudo iptables -L INPUT -n --line-numbers