{"id":22120659,"url":"https://github.com/2boom-ua/web_check","last_synced_at":"2025-07-10T16:38:37.121Z","repository":{"id":206372694,"uuid":"716502840","full_name":"2boom-ua/web_check","owner":"2boom-ua","description":"web check informer for Telegram, Discord, Gotify, Ntfy, Pushbullet, Slack as linux service","archived":false,"fork":false,"pushed_at":"2024-04-13T14:42:43.000Z","size":62,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-04-14T06:46:13.911Z","etag":null,"topics":["discord","discord-notification","gotify","linux-service","notifications","ntfy","pushbullet","pushbullet-notifications","slack","slack-notification","slack-webhook","telegram","telegram-notification"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/2boom-ua.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-11-09T09:23:35.000Z","updated_at":"2024-04-17T13:28:07.994Z","dependencies_parsed_at":null,"dependency_job_id":"405b7a43-b7b6-4d50-bff3-8d010c414cfa","html_url":"https://github.com/2boom-ua/web_check","commit_stats":null,"previous_names":["vladimi2boom/web_check","2boom-ua/web_check"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/2boom-ua/web_check","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2boom-ua%2Fweb_check","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2boom-ua%2Fweb_check/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2boom-ua%2Fweb_check/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2boom-ua%2Fweb_check/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/2boom-ua","download_url":"https://codeload.github.com/2boom-ua/web_check/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2boom-ua%2Fweb_check/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264608262,"owners_count":23636695,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["discord","discord-notification","gotify","linux-service","notifications","ntfy","pushbullet","pushbullet-notifications","slack","slack-notification","slack-webhook","telegram","telegram-notification"],"created_at":"2024-12-01T14:29:20.705Z","updated_at":"2025-07-10T16:38:37.114Z","avatar_url":"https://github.com/2boom-ua.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Web Host Monitoring Script\n\u003cdiv align=\"center\"\u003e  \n    \u003cimg src=\"https://github.com/2boom-ua/web_check/blob/main/web_check.jpg?raw=true\" alt=\"\" width=\"260\" height=\"177\"\u003e\n\u003c/div\u003e\n\n\n*The idea for this software was inspired by* [louislam/uptime-kuma](https://github.com/louislam/uptime-kuma)\n\n### Overview\n\nThis Python script monitors the availability of specified web hosts. It checks the status of URLs and sends notifications through various messaging services if any host is unreachable or returns an error.\n\n### Features\n\n- **Web Host Monitoring:** Regularly checks if specified URLs are accessible.\n- **Real-time notifications with support for multiple accounts** via:\n  - Telegram\n  - Discord\n  - Slack\n  - Gotify\n  - Ntfy\n  - Pushbullet\n  - Pushover\n  - Rocket.chat\n  - Matrix\n  - Mattermost\n  - Pumble\n  - Flock\n  - Zulip\n  - Apprise\n  - Webntfy\n  - Custom webhook\n- **Dynamic Configuration:** Load URLs and settings from JSON files.\n- **Polling Period:** Adjustable interval for checking host availability.\n### Requirements\n\n- Python 3.x\n- Docker installed and running\n- Dependencies: `requests`, `schedule`\n\n### Edit url_list.json:\n```\n{\n\t\"list\": [\n\t\t[\"http://url\", \"name_of_url\"],\n\t\t[\"http://url\", \"name_of_url\"],\n\t\t[\"http://url\", \"name_of_url\"]\n\t]\n}\n```\n| Item | Required | Description |\n|------------|------------|------------|\n| list | url | Name host |\n\n### Edit config.json:\nYou can use any name and any number of records for each messaging platform configuration, and you can also mix platforms as needed. The number of message platform configurations is unlimited.\n\n[Configuration examples for Telegram, Matrix, Apprise, Pumble, Mattermost, Discord, Ntfy, Gotify, Zulip, Flock, Slack, Rocket.Chat, Pushover, Pushbullet](docs/json_message_config.md)\n```\n    \"CUSTOM_NAME\": {\n        \"ENABLED\": false,\n        \"WEBHOOK_URL\": [\n            \"first url\",\n            \"second url\",\n            \"....\"\n        ],\n        \"HEADER\": [\n            {first JSON structure},\n            {second JSON structure},\n            {....}\n        ],\n        \"PAYLOAD\": [\n            {first JSON structure},\n            {second JSON structure},\n            {....}\n        ],\n        \"FORMAT_MESSAGE\": [\n            \"markdown\",\n            \"html\",\n            \"....\"\n        ]\n    },\n```\n| Item | Required | Description |\n|------------|------------|------------|\n| ENABLED | true/false | Enable or disable Custom notifications |\n| WEBHOOK_URL | url | The URL of your Custom webhook |\n| HEADER | JSON structure | HTTP headers for each webhook request. This varies per service and may include fields like {\"Content-Type\": \"application/json\"}. |\n| PAYLOAD | JSON structure | The JSON payload structure for each service, which usually includes message content and format. Like as  {\"body\": \"message\", \"type\": \"info\", \"format\": \"markdown\"}|\n| FORMAT_MESSAGE | markdown,\u003cbr\u003ehtml,\u003cbr\u003etext,\u003cbr\u003esimplified | Specifies the message format used by each service, such as markdown, html, or other text formatting.|\n\n- **markdown** - a text-based format with lightweight syntax for basic styling (Pumble, Mattermost, Discord, Ntfy, Gotify),\n- **simplified** - simplified standard Markdown (Telegram, Zulip, Flock, Slack, RocketChat).\n- **html** - a web-based format using tags for advanced text styling,\n- **text** - raw text without any styling or formatting.\n```\n\"STARTUP_MESSAGE\": true,\n\"REQUEST_TIMEOUT\": 10,\n\"DEFAULT_DOT_STYLE\": true,\n\"MIN_REPEAT\": 1\n```\n\n| Item   | Required   | Description   |\n|------------|------------|------------|\n| STARTUP_MESSAGE | true/false | On/Off startup message. |\n| REQUEST_TIMEOUT | 10 | Request timeout in seconds. Default is 10 sec.|\n| DEFAULT_DOT_STYLE | true/false | Round/Square dots. |\n| MIN_REPEAT | 1 | Set the poll period in minutes. Minimum is 1 minute. | \n\n### Clone the repository:\n```\ngit clone https://github.com/2boom-ua/web_check.git\ncd web_check\n```\n### Install required Python packages:\n```\npip install -r requirements.txt\n```\n\n## Docker\n```bash\n  docker build -t web_check .\n```\nor\n```bash\n  docker pull ghcr.io/2boom-ua/web_check:latest\n```\n### Dowload and edit config.json and url_list.json\n```bash\ncurl -L -o ./config.json  https://raw.githubusercontent.com/2boom-ua/web_check/main/config.json\n```\n```bash\ncurl -L -o ./url_list.json  https://raw.githubusercontent.com/2boom-ua/web_check/main/url_list.json\n```\n### docker-cli\n```bash\ndocker run -v ./config.json:/web_check/config.json -v ./url_list.json:/web_check/url_list.json --name web_check -e TZ=UTC ghcr.io/2boom-ua/web_check:latest \n```\n### docker-compose\n```\nservices:\n  web_check:\n    container_name: web_check\n    image: ghcr.io/2boom-ua/web_check:latest\n    network_mode: host\n    volumes:\n      - ./config.json:/web_check/config.json\n      - ./url_list.json:/web_check/url_list.json\n    environment:\n      - TZ=Etc/UTC\n    restart: always\n```\n\n```bash\ndocker-compose up -d\n```\n---\n\n## Running as a Linux Service\nYou can set this script to run as a Linux service for continuous monitoring.\n\nCreate a systemd service file:\n```\nnano /etc/systemd/system/web_check.service\n```\n```\n[Unit]\nDescription=check active hosts\nAfter=multi-user.target\n\n[Service]\nType=simple\nRestart=always\nExecStart=/usr/bin/python3 /opt/web_check/web_check.py\n\n[Install]\nWantedBy=multi-user.target\n```\n```\nsystemctl daemon-reload\n```\n```\nsystemctl enable web_check.service\n```\n```\nsystemctl start web_check.service\n```\n### License\n\nThis project is licensed under the MIT License - see the [MIT License](https://opensource.org/licenses/MIT) for details.\n\n### Author\n\n- **2boom** - [GitHub](https://github.com/2boom-ua)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2boom-ua%2Fweb_check","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F2boom-ua%2Fweb_check","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2boom-ua%2Fweb_check/lists"}