{
  "project": "Server404",
  "api_version": "2.0",
  "generated_at": "2026-06-13 21:18:36",
  "source": "live",
  "overall": "ok",
  "web01": {
    "project": "Server404",
    "api_version": "2.0",
    "node": "web01",
    "hostname": "web01",
    "role": "public web server",
    "generated_at": "2026-06-13 21:18:36",
    "source": "live",
    "duration_ms": 645,
    "overall": "ok",
    "score": {
      "value": 100,
      "checks_total": 17,
      "checks_passed": 17,
      "checks_failed": 0
    },
    "system": {
      "os": "Ubuntu 24.04.4 LTS",
      "kernel": "6.8.0-117-generic",
      "uptime": "up 2 weeks, 4 days, 3 hours, 2 minutes",
      "cpu_cores": 1,
      "load_average": {
        "1m": 0.0,
        "5m": 0.0,
        "15m": 0.0
      },
      "memory": {
        "memory_used_percent": 13.1,
        "swap_used_percent": 0.0,
        "memory_total_mb": 3916,
        "memory_used_mb": 513,
        "memory_available_mb": 3402,
        "swap_total_mb": 1023,
        "swap_used_mb": 0
      },
      "failed_units": {
        "count": 0,
        "units": []
      },
      "disk_root": {
        "size": "9.8G",
        "used": "4.2G",
        "available": "5.4G",
        "used_percent": "44%",
        "mount": "/"
      },
      "inode_root": {
        "inodes": "655360",
        "used": "140706",
        "available": "514654",
        "used_percent": "22%",
        "mount": "/"
      },
      "webroot": {
        "path": "/var/www/server404/current",
        "exists": true,
        "bytes": 137765,
        "human": "134.5 KB"
      },
      "backup_active": {
        "path": "/var/backups/server404/active",
        "exists": false,
        "bytes": 0,
        "human": "unavailable"
      },
      "reports": {
        "path": "/opt/server404-admin/reports",
        "exists": true,
        "bytes": 121071,
        "human": "118.2 KB"
      }
    },
    "services": {
      "nginx": {
        "active": "active",
        "substate": "running",
        "enabled": "enabled",
        "since": "Tue 2026-05-26 18:15:58 MSK"
      },
      "ssh": {
        "active": "active",
        "substate": "running",
        "enabled": "disabled",
        "since": "Tue 2026-05-26 18:16:26 MSK"
      },
      "fail2ban": {
        "active": "active",
        "substate": "running",
        "enabled": "enabled",
        "since": "Tue 2026-05-26 18:15:57 MSK"
      },
      "zabbix-agent2": {
        "active": "active",
        "substate": "running",
        "enabled": "enabled",
        "since": "Tue 2026-06-02 21:35:08 MSK"
      }
    },
    "network": {
      "listening_ports": [
        22,
        53,
        80,
        323,
        443,
        4040,
        7681,
        10050
      ],
      "expected_public_ports": [
        22,
        80,
        443
      ]
    },
    "tls": {
      "server404.space": {
        "host": "server404.space",
        "issuer": "E8",
        "subject": "server404.space",
        "valid_until": "2026-08-24 03:17:23 UTC",
        "days_left": 71
      },
      "www.server404.space": {
        "host": "www.server404.space",
        "issuer": "E8",
        "subject": "server404.space",
        "valid_until": "2026-08-24 03:17:23 UTC",
        "days_left": 71
      }
    },
    "endpoints": {
      "main": {
        "url": "https://server404.space/",
        "code": "200"
      },
      "architecture": {
        "url": "https://server404.space/architecture",
        "code": "200"
      },
      "security": {
        "url": "https://server404.space/security",
        "code": "200"
      },
      "monitoring": {
        "url": "https://server404.space/monitoring",
        "code": "200"
      },
      "backup": {
        "url": "https://server404.space/backup",
        "code": "200"
      },
      "links": {
        "url": "https://server404.space/links",
        "code": "200"
      },
      "health": {
        "url": "https://server404.space/health",
        "body": "ok"
      }
    },
    "security_checks": {
      ".env": "403",
      ".git_config": "403",
      "backup_sql": "403",
      ".DS_Store": "403",
      ".ssh": "403"
    },
    "backup": {
      "active_dir": "/var/backups/server404/active",
      "latest": {
        "path": "/var/backups/server404/active",
        "exists": false
      },
      "principle": "backup is accepted only with SHA-256 and restore-proof"
    },
    "versions": {
      "nginx": "nginx version: nginx/1.24.0 (Ubuntu)",
      "python": "Python 3.12.3",
      "zabbix_agent2": "zabbix_agent2 (Zabbix) 7.0.26"
    },
    "checks": [
      {
        "name": "service:nginx",
        "passed": true
      },
      {
        "name": "service:ssh",
        "passed": true
      },
      {
        "name": "service:fail2ban",
        "passed": true
      },
      {
        "name": "service:zabbix-agent2",
        "passed": true
      },
      {
        "name": "failed_units",
        "passed": true
      },
      {
        "name": "health_ok",
        "passed": true
      },
      {
        "name": "endpoint:main",
        "passed": true
      },
      {
        "name": "endpoint:architecture",
        "passed": true
      },
      {
        "name": "endpoint:security",
        "passed": true
      },
      {
        "name": "endpoint:monitoring",
        "passed": true
      },
      {
        "name": "endpoint:backup",
        "passed": true
      },
      {
        "name": "endpoint:links",
        "passed": true
      },
      {
        "name": "forbidden:.env",
        "passed": true
      },
      {
        "name": "forbidden:.git_config",
        "passed": true
      },
      {
        "name": "forbidden:backup_sql",
        "passed": true
      },
      {
        "name": "forbidden:.DS_Store",
        "passed": true
      },
      {
        "name": "forbidden:.ssh",
        "passed": true
      }
    ]
  },
  "mon01": {
    "project": "Server404",
    "api_version": "2.0",
    "node": "mon01",
    "hostname": "mon01",
    "role": "monitoring server",
    "generated_at": "2026-06-13 21:18:36",
    "source": "live",
    "duration_ms": 328,
    "overall": "ok",
    "score": {
      "value": 100,
      "checks_total": 12,
      "checks_passed": 12,
      "checks_failed": 0
    },
    "system": {
      "os": "Ubuntu 24.04.4 LTS",
      "kernel": "6.8.0-117-generic",
      "uptime": "up 2 weeks, 4 days, 14 hours, 12 minutes",
      "cpu_cores": 1,
      "load_average": {
        "1m": 0.1,
        "5m": 0.08,
        "15m": 0.07
      },
      "memory": {
        "memory_used_percent": 30.6,
        "swap_used_percent": 0.0,
        "memory_total_mb": 3916,
        "memory_used_mb": 1198,
        "memory_available_mb": 2717,
        "swap_total_mb": 1023,
        "swap_used_mb": 0
      },
      "failed_units": {
        "count": 0,
        "units": []
      },
      "disk_root": {
        "size": "9.8G",
        "used": "7.3G",
        "available": "2.4G",
        "used_percent": "76%",
        "mount": "/"
      },
      "inode_root": {
        "inodes": "655360",
        "used": "192276",
        "available": "463084",
        "used_percent": "30%",
        "mount": "/"
      },
      "backup_active": {
        "path": "/var/backups/server404/active",
        "exists": false,
        "bytes": 0,
        "human": "unavailable"
      },
      "reports": {
        "path": "/opt/server404-admin/reports",
        "exists": true,
        "bytes": 412018,
        "human": "402.4 KB"
      },
      "uptime_kuma_data": {
        "path": "/opt/server404-admin/uptime-kuma/data",
        "exists": false,
        "bytes": 0,
        "human": "unavailable"
      }
    },
    "services": {
      "nginx": {
        "active": "active",
        "substate": "running",
        "enabled": "enabled",
        "since": "Tue 2026-05-26 08:07:23 MSK"
      },
      "ssh": {
        "active": "active",
        "substate": "running",
        "enabled": "disabled",
        "since": "Tue 2026-05-26 07:06:59 MSK"
      },
      "docker": {
        "active": "active",
        "substate": "running",
        "enabled": "enabled",
        "since": "Tue 2026-05-26 07:36:47 MSK"
      },
      "postgresql": {
        "active": "active",
        "substate": "exited",
        "enabled": "enabled",
        "since": "Tue 2026-05-26 08:02:02 MSK"
      },
      "zabbix-server": {
        "active": "active",
        "substate": "running",
        "enabled": "enabled",
        "since": "Tue 2026-05-26 13:49:39 MSK"
      },
      "zabbix-agent2": {
        "active": "active",
        "substate": "running",
        "enabled": "enabled",
        "since": "Tue 2026-06-02 21:35:11 MSK"
      },
      "fail2ban": {
        "active": "active",
        "substate": "running",
        "enabled": "enabled",
        "since": "Tue 2026-05-26 13:33:53 MSK"
      },
      "server404-report-api-mon01": {
        "active": "active",
        "substate": "running",
        "enabled": "enabled",
        "since": "Mon 2026-06-01 02:32:30 MSK"
      }
    },
    "network": {
      "listening_ports": [
        22,
        53,
        80,
        323,
        443,
        3001,
        4041,
        5432,
        8080,
        10050,
        10051,
        40923
      ],
      "expected_public_ports": [
        22,
        80,
        443
      ],
      "expected_internal_ports": [
        3001,
        5432,
        8080,
        10050
      ],
      "restricted_ports": {
        "10051": "Zabbix Server, allowed only from web01 by firewall"
      }
    },
    "tls": {
      "status.server404.space": {
        "host": "status.server404.space",
        "issuer": "E8",
        "subject": "status.server404.space",
        "valid_until": "2026-08-24 03:36:28 UTC",
        "days_left": 71
      }
    },
    "endpoints": {
      "status_health": {
        "url": "https://status.server404.space/health",
        "body": "ok"
      },
      "status_page": {
        "url": "https://status.server404.space/status/server404",
        "code": "200"
      }
    },
    "monitoring": {
      "uptime_kuma_container": {
        "name": "server404-uptime-kuma",
        "status": "running",
        "health": "healthy",
        "started_at": "2026-05-31T06:11:40.382490433Z",
        "image": "louislam/uptime-kuma:1"
      },
      "uptime_kuma_http_monitors_expected": 8,
      "zabbix_version": "zabbix_server (Zabbix) 7.0.26",
      "zabbix_agent2_version": "zabbix_agent2 (Zabbix) 7.0.26",
      "zabbix_web_scenario": "Server404 /health availability",
      "zabbix_expected": {
        "url": "https://server404.space/health",
        "http_code": "200",
        "body": "ok",
        "failed_step": 0
      }
    },
    "backup": {
      "active_dir": "/var/backups/server404/active",
      "latest": {
        "path": "/var/backups/server404/active",
        "exists": false
      },
      "principle": "backup is accepted only with SHA-256 and restore-proof"
    },
    "versions": {
      "nginx": "nginx version: nginx/1.24.0 (Ubuntu)",
      "docker": "Docker version 29.1.3, build 29.1.3-0ubuntu3~24.04.2",
      "postgresql": "psql (PostgreSQL) 16.14 (Ubuntu 16.14-0ubuntu0.24.04.1)",
      "python": "Python 3.12.3",
      "zabbix_server": "zabbix_server (Zabbix) 7.0.26",
      "zabbix_agent2": "zabbix_agent2 (Zabbix) 7.0.26"
    },
    "checks": [
      {
        "name": "service:nginx",
        "passed": true
      },
      {
        "name": "service:ssh",
        "passed": true
      },
      {
        "name": "service:docker",
        "passed": true
      },
      {
        "name": "service:postgresql",
        "passed": true
      },
      {
        "name": "service:zabbix-server",
        "passed": true
      },
      {
        "name": "service:zabbix-agent2",
        "passed": true
      },
      {
        "name": "service:fail2ban",
        "passed": true
      },
      {
        "name": "service:server404-report-api-mon01",
        "passed": true
      },
      {
        "name": "failed_units",
        "passed": true
      },
      {
        "name": "status_health",
        "passed": true
      },
      {
        "name": "status_page",
        "passed": true
      },
      {
        "name": "uptime_kuma_container",
        "passed": true
      }
    ]
  }
}