Cloudflared-Mon is a python based Cloudflare Zero Tunnel monitoring. With Cloudflare you will be notified when tunnel health has changed.
MIT License
Cloudflared-Mon is a python based Cloudflare Zero Tunnel monitoring. With Cloudflare you will be notified when tunnel health has changed.
Before we can start working with Cloudflared-Mon, we need to create a new telegram bot.
How to Create a New Bot for Telegram Open Telegram messenger, sign in to your account or create a new one.
Enter @Botfather in the search tab and choose this bot (Official Telegram bots have a blue checkmark beside their name.)
Click Start to activate BotFather bot.
In response, you receive a list of commands to manage bots. Choose or type the /newbot command and send it.
Choose a name for your bot your subscribers will see it in the conversation. And choose a username for your bot the bot can be found by its username in searches. The username must be unique and end with the word bot.
After you choose a suitable name for your bot the bot is created. You will receive a message with a link to your bot t.me/<bot_username>, recommendations to set up a profile picture, description, and a list of commands to manage your new bot.
Cloudflared-Mon is a docker based application that can be installed using docker compose:
version: "3.7"
services:
cloudflared-mon:
image: techblog/cloudflared-mon
container_name: cloudflared-mon
restart: always
environment:
- CHECK_INTERVALS=60
- NOTIFIERS=
- CF_TOKEN=
- CF_EMAIL=
- CF_ACCOUNT_ID=
volumes:
- ./cloudflared-mon/db:/app/db
Cloudflare-Mon is using sqlite database to save and monitor the Tunnels state. Use docker persistent storage to keep the db after update or changes.
The section identifies all of the services supported by this library. Check out the wiki for more information on the supported modules here.
The table below identifies the services this tool supports and some example service urls you need to use in order to take advantage of it. Click on any of the services listed below to get more details on how you can configure Apprise to access them.
Notification Service | Service ID | Default Port | Example Syntax |
---|---|---|---|
Apprise API | apprise:// or apprises:// | (TCP) 80 or 443 | apprise://hostname/Token |
AWS SES | ses:// | (TCP) 443 | ses://user@domain/AccessKeyID/AccessSecretKey/RegionNameses://user@domain/AccessKeyID/AccessSecretKey/RegionName/email1/email2/emailN |
Boxcar | boxcar:// | (TCP) 443 | boxcar://hostnameboxcar://hostname/@tagboxcar://hostname/device_tokenboxcar://hostname/device_token1/device_token2/device_tokenNboxcar://hostname/@tag/@tag2/device_token |
Discord | discord:// | (TCP) 443 | discord://webhook_id/webhook_tokendiscord://avatar@webhook_id/webhook_token |
Emby | emby:// or embys:// | (TCP) 8096 | emby://user@hostname/emby://user:password@hostname |
Enigma2 | enigma2:// or enigma2s:// | (TCP) 80 or 443 | enigma2://hostname |
Faast | faast:// | (TCP) 443 | faast://authorizationtoken |
FCM | fcm:// | (TCP) 443 | fcm://project@apikey/DEVICE_IDfcm://project@apikey/#TOPICfcm://project@apikey/DEVICE_ID1/#topic1/#topic2/DEVICE_ID2/ |
Flock | flock:// | (TCP) 443 | flock://tokenflock://botname@tokenflock://app_token/u:useridflock://app_token/g:channel_idflock://app_token/u:userid/g:channel_id |
Gitter | gitter:// | (TCP) 443 | gitter://token/roomgitter://token/room1/room2/roomN |
Google Chat | gchat:// | (TCP) 443 | gchat://workspace/key/token |
Gotify | gotify:// or gotifys:// | (TCP) 80 or 443 | gotify://hostname/tokengotifys://hostname/token?priority=high |
Growl | growl:// | (UDP) 23053 | growl://hostnamegrowl://hostname:portnogrowl://password@hostnamegrowl://password@hostname:portNote: you can also use the get parameter version which can allow the growl request to behave using the older v1.x protocol. An example would look like: growl://hostname?version=1 |
Home Assistant | hassio:// or hassios:// | (TCP) 8123 or 443 | hassio://hostname/accesstokenhassio://user@hostname/accesstokenhassio://user:password@hostname:port/accesstokenhassio://hostname/optional/path/accesstoken |
IFTTT | ifttt:// | (TCP) 443 | ifttt://webhooksID/Eventifttt://webhooksID/Event1/Event2/EventNifttt://webhooksID/Event1/?+Key=Valueifttt://webhooksID/Event1/?-Key=value1 |
Join | join:// | (TCP) 443 | join://apikey/devicejoin://apikey/device1/device2/deviceN/join://apikey/groupjoin://apikey/groupA/groupB/groupNjoin://apikey/DeviceA/groupA/groupN/DeviceN/ |
KODI | kodi:// or kodis:// | (TCP) 8080 or 443 | kodi://hostnamekodi://user@hostnamekodi://user:password@hostname:port |
Kumulos | kumulos:// | (TCP) 443 | kumulos://apikey/serverkey |
LaMetric Time | lametric:// | (TCP) 443 | lametric://apikey@device_ipaddrlametric://apikey@hostname:portlametric://client_id@client_secret |
Mailgun | mailgun:// | (TCP) 443 | mailgun://user@hostname/apikeymailgun://user@hostname/apikey/emailmailgun://user@hostname/apikey/email1/email2/emailNmailgun://user@hostname/apikey/?name="From%20User" |
Matrix | matrix:// or matrixs:// | (TCP) 80 or 443 | matrix://hostnamematrix://user@hostnamematrixs://user:pass@hostname:port/#room_aliasmatrixs://user:pass@hostname:port/!room_idmatrixs://user:pass@hostname:port/#room_alias/!room_id/#room2matrixs://token@hostname:port/?webhook=matrixmatrix://user:token@hostname/?webhook=slack&format=markdown |
Mattermost | mmost:// or mmosts:// | (TCP) 8065 | mmost://hostname/authkeymmost://hostname:80/authkeymmost://user@hostname:80/authkeymmost://hostname/authkey?channel=channelmmosts://hostname/authkeymmosts://user@hostname/authkey |
Microsoft Teams | msteams:// | (TCP) 443 | msteams://TokenA/TokenB/TokenC/ |
MQTT | mqtt:// or mqtts:// | (TCP) 1883 or 8883 | mqtt://hostname/topicmqtt://user@hostname/topicmqtts://user:pass@hostname:9883/topic |
Nextcloud | ncloud:// or nclouds:// | (TCP) 80 or 443 | ncloud://adminuser:pass@host/Usernclouds://adminuser:pass@host/User1/User2/UserN |
NextcloudTalk | nctalk:// or nctalks:// | (TCP) 80 or 443 | nctalk://user:pass@host/RoomIdnctalks://user:pass@host/RoomId1/RoomId2/RoomIdN |
Notica | notica:// | (TCP) 443 | notica://Token/ |
Notifico | notifico:// | (TCP) 443 | notifico://ProjectID/MessageHook/ |
Office 365 | o365:// | (TCP) 443 | o365://TenantID:AccountEmail/ClientID/ClientSecreto365://TenantID:AccountEmail/ClientID/ClientSecret/TargetEmailo365://TenantID:AccountEmail/ClientID/ClientSecret/TargetEmail1/TargetEmail2/TargetEmailN |
OneSignal | onesignal:// | (TCP) 443 | onesignal://AppID@APIKey/PlayerIDonesignal://TemplateID:AppID@APIKey/UserIDonesignal://AppID@APIKey/#IncludeSegmentonesignal://AppID@APIKey/Email |
Opsgenie | opsgenie:// | (TCP) 443 | opsgenie://APIKeyopsgenie://APIKey/UserIDopsgenie://APIKey/#Teamopsgenie://APIKey/*Scheduleopsgenie://APIKey/^Escalation |
ParsePlatform | parsep:// or parseps:// | (TCP) 80 or 443 | parsep://AppID:MasterKey@Hostnameparseps://AppID:MasterKey@Hostname |
PopcornNotify | popcorn:// | (TCP) 443 | popcorn://ApiKey/ToPhoneNopopcorn://ApiKey/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/popcorn://ApiKey/ToEmailpopcorn://ApiKey/ToEmail1/ToEmail2/ToEmailN/popcorn://ApiKey/ToPhoneNo1/ToEmail1/ToPhoneNoN/ToEmailN |
Prowl | prowl:// | (TCP) 443 | prowl://apikeyprowl://apikey/providerkey |
PushBullet | pbul:// | (TCP) 443 | pbul://accesstokenpbul://accesstoken/#channelpbul://accesstoken/A_DEVICE_IDpbul://accesstoken/[email protected]pbul://accesstoken/#channel/#channel2/[email protected]/DEVICE |
Pushjet | pjet:// or pjets:// | (TCP) 80 or 443 | pjet://hostname/secretpjet://hostname:port/secretpjets://secret@hostname/secretpjets://hostname:port/secret |
Push (Techulus) | push:// | (TCP) 443 | push://apikey/ |
Pushed | pushed:// | (TCP) 443 | pushed://appkey/appsecret/pushed://appkey/appsecret/#ChannelAliaspushed://appkey/appsecret/#ChannelAlias1/#ChannelAlias2/#ChannelAliasNpushed://appkey/appsecret/@UserPushedIDpushed://appkey/appsecret/@UserPushedID1/@UserPushedID2/@UserPushedIDN |
Pushover | pover:// | (TCP) 443 | pover://user@tokenpover://user@token/DEVICEpover://user@token/DEVICE1/DEVICE2/DEVICENNote: you must specify both your user_id and token |
PushSafer | psafer:// or psafers:// | (TCP) 80 or 443 | psafer://privatekeypsafers://privatekey/DEVICEpsafer://privatekey/DEVICE1/DEVICE2/DEVICEN |
reddit:// | (TCP) 443 | reddit://user:password@app_id/app_secret/subredditreddit://user:password@app_id/app_secret/sub1/sub2/subN | |
Rocket.Chat | rocket:// or rockets:// | (TCP) 80 or 443 | rocket://user:password@hostname/RoomID/Channelrockets://user:password@hostname:443/#Channel1/#Channel1/RoomIDrocket://user:password@hostname/#Channelrocket://webhook@hostnamerockets://webhook@hostname/@User/#Channel |
Ryver | ryver:// | (TCP) 443 | ryver://Organization/Tokenryver://botname@Organization/Token |
SendGrid | sendgrid:// | (TCP) 443 | sendgrid://APIToken:FromEmail/sendgrid://APIToken:FromEmail/ToEmailsendgrid://APIToken:FromEmail/ToEmail1/ToEmail2/ToEmailN/ |
ServerChan | serverchan:// | (TCP) 443 | serverchan://token/ |
SimplePush | spush:// | (TCP) 443 | spush://apikeyspush://salt:password@apikeyspush://apikey?event=Apprise |
Slack | slack:// | (TCP) 443 | slack://TokenA/TokenB/TokenC/slack://TokenA/TokenB/TokenC/Channelslack://botname@TokenA/TokenB/TokenC/Channelslack://user@TokenA/TokenB/TokenC/Channel1/Channel2/ChannelN |
SMTP2Go | smtp2go:// | (TCP) 443 | smtp2go://user@hostname/apikeysmtp2go://user@hostname/apikey/emailsmtp2go://user@hostname/apikey/email1/email2/emailNsmtp2go://user@hostname/apikey/?name="From%20User" |
Streamlabs | strmlabs:// | (TCP) 443 | strmlabs://AccessToken/strmlabs://AccessToken/?name=name&identifier=identifier&amount=0¤cy=USD |
SparkPost | sparkpost:// | (TCP) 443 | sparkpost://user@hostname/apikeysparkpost://user@hostname/apikey/emailsparkpost://user@hostname/apikey/email1/email2/emailNsparkpost://user@hostname/apikey/?name="From%20User" |
Spontit | spontit:// | (TCP) 443 | spontit://UserID@APIKey/spontit://UserID@APIKey/Channelspontit://UserID@APIKey/Channel1/Channel2/ChannelN |
Syslog | syslog:// | (UDP) 514 (if hostname specified) | syslog://syslog://Facilitysyslog://hostnamesyslog://hostname/Facility |
Telegram | tgram:// | (TCP) 443 | tgram://bottoken/ChatIDtgram://bottoken/ChatID1/ChatID2/ChatIDN |
twitter:// | (TCP) 443 | twitter://CKey/CSecret/AKey/ASecrettwitter://user@CKey/CSecret/AKey/ASecrettwitter://CKey/CSecret/AKey/ASecret/User1/User2/User2twitter://CKey/CSecret/AKey/ASecret?mode=tweet | |
Twist | twist:// | (TCP) 443 | twist://pasword:logintwist://password:login/#channeltwist://password:login/#team:channeltwist://password:login/#team:channel1/channel2/#team3:channel |
XBMC | xbmc:// or xbmcs:// | (TCP) 8080 or 443 | xbmc://hostnamexbmc://user@hostnamexbmc://user:password@hostname:port |
XMPP | xmpp:// or xmpps:// | (TCP) 5222 or 5223 | xmpp://user:password@hostnamexmpps://user:password@hostname:port?jid=user@hostname/resourcexmpps://user:password@hostname/target@myhost, target2@myhost/resource |
Webex Teams (Cisco) | wxteams:// | (TCP) 443 | wxteams://Token |
Zulip Chat | zulip:// | (TCP) 443 | zulip://botname@Organization/Tokenzulip://botname@Organization/Token/Streamzulip://botname@Organization/Token/Email |