Repository files navigation

Monocker

Monitors Docker (MONitors dOCKER) containers and alerts on 'state' change.

image

Features

  • Monitors 'state' changes for all containers
  • Specific inclusions or exclusions of containers to monitor
  • Optionally, only alert on state changes to (paused, exited, running (unhealthy), or dead)
  • In-built Docker healthcheck

Integration with

  • Telegram
  • Pushbullet
  • Pushover
  • Discord
  • Ntfy
  • Slack
  • Gotify
  • Matrix
  • Apprise

Future Considerations

  • Additional messaging platform support

Installation

services:
monocker:
container_name: monocker
image: petersem/monocker
environment:
#DOCKER_HOST: tcp://docker-socket-proxy:2375
SERVER_LABEL: 'Your server name'
SERVER_AVATAR: 'https://content.invisioncic.com/u329766/monthly_2024_05/monocker.png.ba5ffdb390b627097d2a53645cf87350.png'
MESSAGE_PLATFORM: 'gotify@server@app_token'
ONLY_OFFLINE_STATES: 'false'
EXCLUDE_EXITED: 'false' PERIOD: 30
DISABLE_STARTUP_MSG: 'false'
#CUSTOM_NTFY_SERVER: 'https://custom.ntfy.com' #NTFY_USER: 'user' #NTFY_PASS: 'password' SHA: 'false'
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped

Environment Options

ItemRequiredDescription
DOCKER_HOSTFalseUse a docker interface other than the default. (E.G DOCKER_HOST: tcp://docker-socket-proxy:2375)
  • This can be a UNIX socket (unix://), Windows named pipe (npipe://) or TCP connection (tcp://). If it's a pipe or socket, be sure to mount the connection as a volume. If the connection is proxied, ensure that GET requests are allowed on the /containers endpoint.
  • By default, this value is unset and the connection will use /var/run/docker.sock.
ItemRequiredDescription
SERVER_LABELFalseLabel to preface messages. Handy if you are running multiple versions of Monocker.
SERVER_AVATARFalseAvatar image URL to add to messages. Handy if you are running Monocker on different machines (discord, ntfy mobile, and slack)
ONLY_OFFLINE_STATESFalseWhen true, only notify when a container state changes to paused, exited, running (unhealthy), or dead. Otherwise, all state changes are notified (false)
EXCLUDE_EXITEDFalseRegardless of any other settings, you can ignore or include the status of 'exited'. (false includes exited)
PERIODFalseSet the poll period in seconds. Default/Minimum is 10 seconds, recommended 30 seconds, to minimise messages sent.
DISABLE_STARTUP_MSGFalseSuppresses startup messages from being sent. Default is false
SHAFalseWill include the container SHA ID in sent messages
MESSAGE_PLATFORMTrueSpecify 'ONE' messaging platform.
  • 'pushbullet@your_api_key@your_device_id'
  • 'pushover@your_user_key@your_app_api_token'
  • 'discord@webhook_url'
  • 'ntfy@topic_title'
  • 'slack@bot_user_oauth_token@your_chat_id'
  • 'gotify@server_url@app_token'
  • 'telegram@your_bot_id@your_chat_id'
  • 'apprise@apprise_url@config_id@tag' (Only one tag is supported, and server_avatar is not currently supported)
  • 'matrix@https://matrix.org@user:matrix.org@access-token@room-id:matrix.org' (For Matrix, add the userid 'without' the leading @ sign. Values are server, userid, access-token, room-id)

Advanced NTFY Setting

Use these settings if you host your own Ntfy server, or otherwise require authentication to connect.

ItemRequiredDescription
CUSTOM_NTFY_SERVERFalseThe URL for your self-hosted Ntfy server (Else will use https://nttp.sh)
NTFY_USERFalseThe username to login (on ntfy.sh or your own server. Optional if you have your own server open)
NTFY_PASSFalseThe password to login (on ntfy.sh or your own server)
ItemRequiredDescription
LABEL_ENABLEFalseIncludes or excludes specified containers, if labelled. (defaults to false)

This feature allows you to specify (with labels in your yaml) 'either' to monitor or exclude specific containers.

  • If it is set to false, then all containers will be monitored, except for any containers with the following label:
 labels:
monocker.enable: 'false'
  • If it is set to true, only containers with the following label will be monitored
 labels:
monocker.enable: 'true'
  • If you just want to monitor everything, then set LABEL_ENABLE: 'false' or just leave it out altogether, and dont worry about labelling any other containers.

Help with MESSAGE_PLATFORM values

  • For Telegram: See video and use this link for how to obtain ID values. https://api.telegram.org/bot{bot-id}/getUpdates
  • For Pushbullet: Open Pushbullet in a browser and get device ID from URL Example
  • For Pushover: Login to Pushover in a browser to see details for user key and app token
  • For Discord: See Discord doco for how to create a webhook and get the url
  • For Slack: See documentation for how to obtain ID values.
  • For Ntfy: create a new topic on https://ntfy.sh/app (or your own server), use the name of the topic as follows: ntfy@MY_TOPIC_TITLE
  • For Apprise: please review official documentation. here
  • For Matrix, review these images for how to get userID, roomID, and Access token

Thank you!

If you like my work, you can make a dontation to say thanks! Donate

Primary support on Discord Link to code on GitHub

This application uses semantic versioning. See here for more details.

About

No description, website, or topics provided.

Resources

Stars

202 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Monocker

Monitors Docker (MONitors dOCKER) containers and alerts on 'state' change.

image

Features

  • Monitors 'state' changes for all containers
  • Specific inclusions or exclusions of containers to monitor
  • Optionally, only alert on state changes to (paused, exited, running (unhealthy), or dead)
  • In-built Docker healthcheck

Integration with

  • Telegram
  • Pushbullet
  • Pushover
  • Discord
  • Ntfy
  • Slack
  • Gotify
  • Matrix
  • Apprise

Future Considerations

  • Additional messaging platform support

Installation

services:
monocker:
container_name: monocker
image: petersem/monocker
environment:
#DOCKER_HOST: tcp://docker-socket-proxy:2375
SERVER_LABEL: 'Your server name'
SERVER_AVATAR: 'https://content.invisioncic.com/u329766/monthly_2024_05/monocker.png.ba5ffdb390b627097d2a53645cf87350.png'
MESSAGE_PLATFORM: 'gotify@server@app_token'
ONLY_OFFLINE_STATES: 'false'
EXCLUDE_EXITED: 'false' PERIOD: 30
DISABLE_STARTUP_MSG: 'false'
#CUSTOM_NTFY_SERVER: 'https://custom.ntfy.com' #NTFY_USER: 'user' #NTFY_PASS: 'password' SHA: 'false'
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped

Environment Options

ItemRequiredDescription
DOCKER_HOSTFalseUse a docker interface other than the default. (E.G DOCKER_HOST: tcp://docker-socket-proxy:2375)
  • This can be a UNIX socket (unix://), Windows named pipe (npipe://) or TCP connection (tcp://). If it's a pipe or socket, be sure to mount the connection as a volume. If the connection is proxied, ensure that GET requests are allowed on the /containers endpoint.
  • By default, this value is unset and the connection will use /var/run/docker.sock.
ItemRequiredDescription
SERVER_LABELFalseLabel to preface messages. Handy if you are running multiple versions of Monocker.
SERVER_AVATARFalseAvatar image URL to add to messages. Handy if you are running Monocker on different machines (discord, ntfy mobile, and slack)
ONLY_OFFLINE_STATESFalseWhen true, only notify when a container state changes to paused, exited, running (unhealthy), or dead. Otherwise, all state changes are notified (false)
EXCLUDE_EXITEDFalseRegardless of any other settings, you can ignore or include the status of 'exited'. (false includes exited)
PERIODFalseSet the poll period in seconds. Default/Minimum is 10 seconds, recommended 30 seconds, to minimise messages sent.
DISABLE_STARTUP_MSGFalseSuppresses startup messages from being sent. Default is false
SHAFalseWill include the container SHA ID in sent messages
MESSAGE_PLATFORMTrueSpecify 'ONE' messaging platform.
  • 'pushbullet@your_api_key@your_device_id'
  • 'pushover@your_user_key@your_app_api_token'
  • 'discord@webhook_url'
  • 'ntfy@topic_title'
  • 'slack@bot_user_oauth_token@your_chat_id'
  • 'gotify@server_url@app_token'
  • 'telegram@your_bot_id@your_chat_id'
  • 'apprise@apprise_url@config_id@tag' (Only one tag is supported, and server_avatar is not currently supported)
  • 'matrix@https://matrix.org@user:matrix.org@access-token@room-id:matrix.org' (For Matrix, add the userid 'without' the leading @ sign. Values are server, userid, access-token, room-id)

Advanced NTFY Setting

Use these settings if you host your own Ntfy server, or otherwise require authentication to connect.

ItemRequiredDescription
CUSTOM_NTFY_SERVERFalseThe URL for your self-hosted Ntfy server (Else will use https://nttp.sh)
NTFY_USERFalseThe username to login (on ntfy.sh or your own server. Optional if you have your own server open)
NTFY_PASSFalseThe password to login (on ntfy.sh or your own server)
ItemRequiredDescription
LABEL_ENABLEFalseIncludes or excludes specified containers, if labelled. (defaults to false)

This feature allows you to specify (with labels in your yaml) 'either' to monitor or exclude specific containers.

  • If it is set to false, then all containers will be monitored, except for any containers with the following label:
 labels:
monocker.enable: 'false'
  • If it is set to true, only containers with the following label will be monitored
 labels:
monocker.enable: 'true'
  • If you just want to monitor everything, then set LABEL_ENABLE: 'false' or just leave it out altogether, and dont worry about labelling any other containers.

Help with MESSAGE_PLATFORM values

  • For Telegram: See video and use this link for how to obtain ID values. https://api.telegram.org/bot{bot-id}/getUpdates
  • For Pushbullet: Open Pushbullet in a browser and get device ID from URL Example
  • For Pushover: Login to Pushover in a browser to see details for user key and app token
  • For Discord: See Discord doco for how to create a webhook and get the url
  • For Slack: See documentation for how to obtain ID values.
  • For Ntfy: create a new topic on https://ntfy.sh/app (or your own server), use the name of the topic as follows: ntfy@MY_TOPIC_TITLE
  • For Apprise: please review official documentation. here
  • For Matrix, review these images for how to get userID, roomID, and Access token

Thank you!

If you like my work, you can make a dontation to say thanks! Donate

Primary support on Discord Link to code on GitHub

This application uses semantic versioning. See here for more details.

About

No description, website, or topics provided.

Resources

Stars

202 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Monocker

Monitors Docker (MONitors dOCKER) containers and alerts on 'state' change.

image

Features

  • Monitors 'state' changes for all containers
  • Specific inclusions or exclusions of containers to monitor
  • Optionally, only alert on state changes to (paused, exited, running (unhealthy), or dead)
  • In-built Docker healthcheck

Integration with

  • Telegram
  • Pushbullet
  • Pushover
  • Discord
  • Ntfy
  • Slack
  • Gotify
  • Matrix
  • Apprise

Future Considerations

  • Additional messaging platform support

Installation

services:
monocker:
container_name: monocker
image: petersem/monocker
environment:
#DOCKER_HOST: tcp://docker-socket-proxy:2375
SERVER_LABEL: 'Your server name'
SERVER_AVATAR: 'https://content.invisioncic.com/u329766/monthly_2024_05/monocker.png.ba5ffdb390b627097d2a53645cf87350.png'
MESSAGE_PLATFORM: 'gotify@server@app_token'
ONLY_OFFLINE_STATES: 'false'
EXCLUDE_EXITED: 'false' PERIOD: 30
DISABLE_STARTUP_MSG: 'false'
#CUSTOM_NTFY_SERVER: 'https://custom.ntfy.com' #NTFY_USER: 'user' #NTFY_PASS: 'password' SHA: 'false'
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped

Environment Options

ItemRequiredDescription
DOCKER_HOSTFalseUse a docker interface other than the default. (E.G DOCKER_HOST: tcp://docker-socket-proxy:2375)
  • This can be a UNIX socket (unix://), Windows named pipe (npipe://) or TCP connection (tcp://). If it's a pipe or socket, be sure to mount the connection as a volume. If the connection is proxied, ensure that GET requests are allowed on the /containers endpoint.
  • By default, this value is unset and the connection will use /var/run/docker.sock.
ItemRequiredDescription
SERVER_LABELFalseLabel to preface messages. Handy if you are running multiple versions of Monocker.
SERVER_AVATARFalseAvatar image URL to add to messages. Handy if you are running Monocker on different machines (discord, ntfy mobile, and slack)
ONLY_OFFLINE_STATESFalseWhen true, only notify when a container state changes to paused, exited, running (unhealthy), or dead. Otherwise, all state changes are notified (false)
EXCLUDE_EXITEDFalseRegardless of any other settings, you can ignore or include the status of 'exited'. (false includes exited)
PERIODFalseSet the poll period in seconds. Default/Minimum is 10 seconds, recommended 30 seconds, to minimise messages sent.
DISABLE_STARTUP_MSGFalseSuppresses startup messages from being sent. Default is false
SHAFalseWill include the container SHA ID in sent messages
MESSAGE_PLATFORMTrueSpecify 'ONE' messaging platform.
  • 'pushbullet@your_api_key@your_device_id'
  • 'pushover@your_user_key@your_app_api_token'
  • 'discord@webhook_url'
  • 'ntfy@topic_title'
  • 'slack@bot_user_oauth_token@your_chat_id'
  • 'gotify@server_url@app_token'
  • 'telegram@your_bot_id@your_chat_id'
  • 'apprise@apprise_url@config_id@tag' (Only one tag is supported, and server_avatar is not currently supported)
  • 'matrix@https://matrix.org@user:matrix.org@access-token@room-id:matrix.org' (For Matrix, add the userid 'without' the leading @ sign. Values are server, userid, access-token, room-id)

Advanced NTFY Setting

Use these settings if you host your own Ntfy server, or otherwise require authentication to connect.

ItemRequiredDescription
CUSTOM_NTFY_SERVERFalseThe URL for your self-hosted Ntfy server (Else will use https://nttp.sh)
NTFY_USERFalseThe username to login (on ntfy.sh or your own server. Optional if you have your own server open)
NTFY_PASSFalseThe password to login (on ntfy.sh or your own server)
ItemRequiredDescription
LABEL_ENABLEFalseIncludes or excludes specified containers, if labelled. (defaults to false)

This feature allows you to specify (with labels in your yaml) 'either' to monitor or exclude specific containers.

  • If it is set to false, then all containers will be monitored, except for any containers with the following label:
 labels:
monocker.enable: 'false'
  • If it is set to true, only containers with the following label will be monitored
 labels:
monocker.enable: 'true'
  • If you just want to monitor everything, then set LABEL_ENABLE: 'false' or just leave it out altogether, and dont worry about labelling any other containers.

Help with MESSAGE_PLATFORM values

  • For Telegram: See video and use this link for how to obtain ID values. https://api.telegram.org/bot{bot-id}/getUpdates
  • For Pushbullet: Open Pushbullet in a browser and get device ID from URL Example
  • For Pushover: Login to Pushover in a browser to see details for user key and app token
  • For Discord: See Discord doco for how to create a webhook and get the url
  • For Slack: See documentation for how to obtain ID values.
  • For Ntfy: create a new topic on https://ntfy.sh/app (or your own server), use the name of the topic as follows: ntfy@MY_TOPIC_TITLE
  • For Apprise: please review official documentation. here
  • For Matrix, review these images for how to get userID, roomID, and Access token

Thank you!

If you like my work, you can make a dontation to say thanks! Donate

Primary support on Discord Link to code on GitHub

This application uses semantic versioning. See here for more details.

About

No description, website, or topics provided.

Resources

Stars

202 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Monocker

Monitors Docker (MONitors dOCKER) containers and alerts on 'state' change.

image

Features

  • Monitors 'state' changes for all containers
  • Specific inclusions or exclusions of containers to monitor
  • Optionally, only alert on state changes to (paused, exited, running (unhealthy), or dead)
  • In-built Docker healthcheck

Integration with

  • Telegram
  • Pushbullet
  • Pushover
  • Discord
  • Ntfy
  • Slack
  • Gotify
  • Matrix
  • Apprise

Future Considerations

  • Additional messaging platform support

Installation

services:
monocker:
container_name: monocker
image: petersem/monocker
environment:
#DOCKER_HOST: tcp://docker-socket-proxy:2375
SERVER_LABEL: 'Your server name'
SERVER_AVATAR: 'https://content.invisioncic.com/u329766/monthly_2024_05/monocker.png.ba5ffdb390b627097d2a53645cf87350.png'
MESSAGE_PLATFORM: 'gotify@server@app_token'
ONLY_OFFLINE_STATES: 'false'
EXCLUDE_EXITED: 'false' PERIOD: 30
DISABLE_STARTUP_MSG: 'false'
#CUSTOM_NTFY_SERVER: 'https://custom.ntfy.com' #NTFY_USER: 'user' #NTFY_PASS: 'password' SHA: 'false'
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped

Environment Options

ItemRequiredDescription
DOCKER_HOSTFalseUse a docker interface other than the default. (E.G DOCKER_HOST: tcp://docker-socket-proxy:2375)
  • This can be a UNIX socket (unix://), Windows named pipe (npipe://) or TCP connection (tcp://). If it's a pipe or socket, be sure to mount the connection as a volume. If the connection is proxied, ensure that GET requests are allowed on the /containers endpoint.
  • By default, this value is unset and the connection will use /var/run/docker.sock.
ItemRequiredDescription
SERVER_LABELFalseLabel to preface messages. Handy if you are running multiple versions of Monocker.
SERVER_AVATARFalseAvatar image URL to add to messages. Handy if you are running Monocker on different machines (discord, ntfy mobile, and slack)
ONLY_OFFLINE_STATESFalseWhen true, only notify when a container state changes to paused, exited, running (unhealthy), or dead. Otherwise, all state changes are notified (false)
EXCLUDE_EXITEDFalseRegardless of any other settings, you can ignore or include the status of 'exited'. (false includes exited)
PERIODFalseSet the poll period in seconds. Default/Minimum is 10 seconds, recommended 30 seconds, to minimise messages sent.
DISABLE_STARTUP_MSGFalseSuppresses startup messages from being sent. Default is false
SHAFalseWill include the container SHA ID in sent messages
MESSAGE_PLATFORMTrueSpecify 'ONE' messaging platform.
  • 'pushbullet@your_api_key@your_device_id'
  • 'pushover@your_user_key@your_app_api_token'
  • 'discord@webhook_url'
  • 'ntfy@topic_title'
  • 'slack@bot_user_oauth_token@your_chat_id'
  • 'gotify@server_url@app_token'
  • 'telegram@your_bot_id@your_chat_id'
  • 'apprise@apprise_url@config_id@tag' (Only one tag is supported, and server_avatar is not currently supported)
  • 'matrix@https://matrix.org@user:matrix.org@access-token@room-id:matrix.org' (For Matrix, add the userid 'without' the leading @ sign. Values are server, userid, access-token, room-id)

Advanced NTFY Setting

Use these settings if you host your own Ntfy server, or otherwise require authentication to connect.

ItemRequiredDescription
CUSTOM_NTFY_SERVERFalseThe URL for your self-hosted Ntfy server (Else will use https://nttp.sh)
NTFY_USERFalseThe username to login (on ntfy.sh or your own server. Optional if you have your own server open)
NTFY_PASSFalseThe password to login (on ntfy.sh or your own server)
ItemRequiredDescription
LABEL_ENABLEFalseIncludes or excludes specified containers, if labelled. (defaults to false)

This feature allows you to specify (with labels in your yaml) 'either' to monitor or exclude specific containers.

  • If it is set to false, then all containers will be monitored, except for any containers with the following label:
 labels:
monocker.enable: 'false'
  • If it is set to true, only containers with the following label will be monitored
 labels:
monocker.enable: 'true'
  • If you just want to monitor everything, then set LABEL_ENABLE: 'false' or just leave it out altogether, and dont worry about labelling any other containers.

Help with MESSAGE_PLATFORM values

  • For Telegram: See video and use this link for how to obtain ID values. https://api.telegram.org/bot{bot-id}/getUpdates
  • For Pushbullet: Open Pushbullet in a browser and get device ID from URL Example
  • For Pushover: Login to Pushover in a browser to see details for user key and app token
  • For Discord: See Discord doco for how to create a webhook and get the url
  • For Slack: See documentation for how to obtain ID values.
  • For Ntfy: create a new topic on https://ntfy.sh/app (or your own server), use the name of the topic as follows: ntfy@MY_TOPIC_TITLE
  • For Apprise: please review official documentation. here
  • For Matrix, review these images for how to get userID, roomID, and Access token

Thank you!

If you like my work, you can make a dontation to say thanks! Donate

Primary support on Discord Link to code on GitHub

This application uses semantic versioning. See here for more details.

About

No description, website, or topics provided.

Resources

Stars

202 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Monocker

Monitors Docker (MONitors dOCKER) containers and alerts on 'state' change.

image

Features

  • Monitors 'state' changes for all containers
  • Specific inclusions or exclusions of containers to monitor
  • Optionally, only alert on state changes to (paused, exited, running (unhealthy), or dead)
  • In-built Docker healthcheck

Integration with

  • Telegram
  • Pushbullet
  • Pushover
  • Discord
  • Ntfy
  • Slack
  • Gotify
  • Matrix
  • Apprise

Future Considerations

  • Additional messaging platform support

Installation

services:
monocker:
container_name: monocker
image: petersem/monocker
environment:
#DOCKER_HOST: tcp://docker-socket-proxy:2375
SERVER_LABEL: 'Your server name'
SERVER_AVATAR: 'https://content.invisioncic.com/u329766/monthly_2024_05/monocker.png.ba5ffdb390b627097d2a53645cf87350.png'
MESSAGE_PLATFORM: 'gotify@server@app_token'
ONLY_OFFLINE_STATES: 'false'
EXCLUDE_EXITED: 'false' PERIOD: 30
DISABLE_STARTUP_MSG: 'false'
#CUSTOM_NTFY_SERVER: 'https://custom.ntfy.com' #NTFY_USER: 'user' #NTFY_PASS: 'password' SHA: 'false'
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped

Environment Options

ItemRequiredDescription
DOCKER_HOSTFalseUse a docker interface other than the default. (E.G DOCKER_HOST: tcp://docker-socket-proxy:2375)
  • This can be a UNIX socket (unix://), Windows named pipe (npipe://) or TCP connection (tcp://). If it's a pipe or socket, be sure to mount the connection as a volume. If the connection is proxied, ensure that GET requests are allowed on the /containers endpoint.
  • By default, this value is unset and the connection will use /var/run/docker.sock.
ItemRequiredDescription
SERVER_LABELFalseLabel to preface messages. Handy if you are running multiple versions of Monocker.
SERVER_AVATARFalseAvatar image URL to add to messages. Handy if you are running Monocker on different machines (discord, ntfy mobile, and slack)
ONLY_OFFLINE_STATESFalseWhen true, only notify when a container state changes to paused, exited, running (unhealthy), or dead. Otherwise, all state changes are notified (false)
EXCLUDE_EXITEDFalseRegardless of any other settings, you can ignore or include the status of 'exited'. (false includes exited)
PERIODFalseSet the poll period in seconds. Default/Minimum is 10 seconds, recommended 30 seconds, to minimise messages sent.
DISABLE_STARTUP_MSGFalseSuppresses startup messages from being sent. Default is false
SHAFalseWill include the container SHA ID in sent messages
MESSAGE_PLATFORMTrueSpecify 'ONE' messaging platform.
  • 'pushbullet@your_api_key@your_device_id'
  • 'pushover@your_user_key@your_app_api_token'
  • 'discord@webhook_url'
  • 'ntfy@topic_title'
  • 'slack@bot_user_oauth_token@your_chat_id'
  • 'gotify@server_url@app_token'
  • 'telegram@your_bot_id@your_chat_id'
  • 'apprise@apprise_url@config_id@tag' (Only one tag is supported, and server_avatar is not currently supported)
  • 'matrix@https://matrix.org@user:matrix.org@access-token@room-id:matrix.org' (For Matrix, add the userid 'without' the leading @ sign. Values are server, userid, access-token, room-id)

Advanced NTFY Setting

Use these settings if you host your own Ntfy server, or otherwise require authentication to connect.

ItemRequiredDescription
CUSTOM_NTFY_SERVERFalseThe URL for your self-hosted Ntfy server (Else will use https://nttp.sh)
NTFY_USERFalseThe username to login (on ntfy.sh or your own server. Optional if you have your own server open)
NTFY_PASSFalseThe password to login (on ntfy.sh or your own server)
ItemRequiredDescription
LABEL_ENABLEFalseIncludes or excludes specified containers, if labelled. (defaults to false)

This feature allows you to specify (with labels in your yaml) 'either' to monitor or exclude specific containers.

  • If it is set to false, then all containers will be monitored, except for any containers with the following label:
 labels:
monocker.enable: 'false'
  • If it is set to true, only containers with the following label will be monitored
 labels:
monocker.enable: 'true'
  • If you just want to monitor everything, then set LABEL_ENABLE: 'false' or just leave it out altogether, and dont worry about labelling any other containers.

Help with MESSAGE_PLATFORM values

  • For Telegram: See video and use this link for how to obtain ID values. https://api.telegram.org/bot{bot-id}/getUpdates
  • For Pushbullet: Open Pushbullet in a browser and get device ID from URL Example
  • For Pushover: Login to Pushover in a browser to see details for user key and app token
  • For Discord: See Discord doco for how to create a webhook and get the url
  • For Slack: See documentation for how to obtain ID values.
  • For Ntfy: create a new topic on https://ntfy.sh/app (or your own server), use the name of the topic as follows: ntfy@MY_TOPIC_TITLE
  • For Apprise: please review official documentation. here
  • For Matrix, review these images for how to get userID, roomID, and Access token

Thank you!

If you like my work, you can make a dontation to say thanks! Donate

Primary support on Discord Link to code on GitHub

This application uses semantic versioning. See here for more details.

About

No description, website, or topics provided.

Resources

Stars

202 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Monocker

Monitors Docker (MONitors dOCKER) containers and alerts on 'state' change.

image

Features

  • Monitors 'state' changes for all containers
  • Specific inclusions or exclusions of containers to monitor
  • Optionally, only alert on state changes to (paused, exited, running (unhealthy), or dead)
  • In-built Docker healthcheck

Integration with

  • Telegram
  • Pushbullet
  • Pushover
  • Discord
  • Ntfy
  • Slack
  • Gotify
  • Matrix
  • Apprise

Future Considerations

  • Additional messaging platform support

Installation

services:
monocker:
container_name: monocker
image: petersem/monocker
environment:
#DOCKER_HOST: tcp://docker-socket-proxy:2375
SERVER_LABEL: 'Your server name'
SERVER_AVATAR: 'https://content.invisioncic.com/u329766/monthly_2024_05/monocker.png.ba5ffdb390b627097d2a53645cf87350.png'
MESSAGE_PLATFORM: 'gotify@server@app_token'
ONLY_OFFLINE_STATES: 'false'
EXCLUDE_EXITED: 'false' PERIOD: 30
DISABLE_STARTUP_MSG: 'false'
#CUSTOM_NTFY_SERVER: 'https://custom.ntfy.com' #NTFY_USER: 'user' #NTFY_PASS: 'password' SHA: 'false'
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped

Environment Options

ItemRequiredDescription
DOCKER_HOSTFalseUse a docker interface other than the default. (E.G DOCKER_HOST: tcp://docker-socket-proxy:2375)
  • This can be a UNIX socket (unix://), Windows named pipe (npipe://) or TCP connection (tcp://). If it's a pipe or socket, be sure to mount the connection as a volume. If the connection is proxied, ensure that GET requests are allowed on the /containers endpoint.
  • By default, this value is unset and the connection will use /var/run/docker.sock.
ItemRequiredDescription
SERVER_LABELFalseLabel to preface messages. Handy if you are running multiple versions of Monocker.
SERVER_AVATARFalseAvatar image URL to add to messages. Handy if you are running Monocker on different machines (discord, ntfy mobile, and slack)
ONLY_OFFLINE_STATESFalseWhen true, only notify when a container state changes to paused, exited, running (unhealthy), or dead. Otherwise, all state changes are notified (false)
EXCLUDE_EXITEDFalseRegardless of any other settings, you can ignore or include the status of 'exited'. (false includes exited)
PERIODFalseSet the poll period in seconds. Default/Minimum is 10 seconds, recommended 30 seconds, to minimise messages sent.
DISABLE_STARTUP_MSGFalseSuppresses startup messages from being sent. Default is false
SHAFalseWill include the container SHA ID in sent messages
MESSAGE_PLATFORMTrueSpecify 'ONE' messaging platform.
  • 'pushbullet@your_api_key@your_device_id'
  • 'pushover@your_user_key@your_app_api_token'
  • 'discord@webhook_url'
  • 'ntfy@topic_title'
  • 'slack@bot_user_oauth_token@your_chat_id'
  • 'gotify@server_url@app_token'
  • 'telegram@your_bot_id@your_chat_id'
  • 'apprise@apprise_url@config_id@tag' (Only one tag is supported, and server_avatar is not currently supported)
  • 'matrix@https://matrix.org@user:matrix.org@access-token@room-id:matrix.org' (For Matrix, add the userid 'without' the leading @ sign. Values are server, userid, access-token, room-id)

Advanced NTFY Setting

Use these settings if you host your own Ntfy server, or otherwise require authentication to connect.

ItemRequiredDescription
CUSTOM_NTFY_SERVERFalseThe URL for your self-hosted Ntfy server (Else will use https://nttp.sh)
NTFY_USERFalseThe username to login (on ntfy.sh or your own server. Optional if you have your own server open)
NTFY_PASSFalseThe password to login (on ntfy.sh or your own server)
ItemRequiredDescription
LABEL_ENABLEFalseIncludes or excludes specified containers, if labelled. (defaults to false)

This feature allows you to specify (with labels in your yaml) 'either' to monitor or exclude specific containers.

  • If it is set to false, then all containers will be monitored, except for any containers with the following label:
 labels:
monocker.enable: 'false'
  • If it is set to true, only containers with the following label will be monitored
 labels:
monocker.enable: 'true'
  • If you just want to monitor everything, then set LABEL_ENABLE: 'false' or just leave it out altogether, and dont worry about labelling any other containers.

Help with MESSAGE_PLATFORM values

  • For Telegram: See video and use this link for how to obtain ID values. https://api.telegram.org/bot{bot-id}/getUpdates
  • For Pushbullet: Open Pushbullet in a browser and get device ID from URL Example
  • For Pushover: Login to Pushover in a browser to see details for user key and app token
  • For Discord: See Discord doco for how to create a webhook and get the url
  • For Slack: See documentation for how to obtain ID values.
  • For Ntfy: create a new topic on https://ntfy.sh/app (or your own server), use the name of the topic as follows: ntfy@MY_TOPIC_TITLE
  • For Apprise: please review official documentation. here
  • For Matrix, review these images for how to get userID, roomID, and Access token

Thank you!

If you like my work, you can make a dontation to say thanks! Donate

Primary support on Discord Link to code on GitHub

This application uses semantic versioning. See here for more details.

About

No description, website, or topics provided.

Resources

Stars

202 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Monocker

Monitors Docker (MONitors dOCKER) containers and alerts on 'state' change.

image

Features

  • Monitors 'state' changes for all containers
  • Specific inclusions or exclusions of containers to monitor
  • Optionally, only alert on state changes to (paused, exited, running (unhealthy), or dead)
  • In-built Docker healthcheck

Integration with

  • Telegram
  • Pushbullet
  • Pushover
  • Discord
  • Ntfy
  • Slack
  • Gotify
  • Matrix
  • Apprise

Future Considerations

  • Additional messaging platform support

Installation

services:
monocker:
container_name: monocker
image: petersem/monocker
environment:
#DOCKER_HOST: tcp://docker-socket-proxy:2375
SERVER_LABEL: 'Your server name'
SERVER_AVATAR: 'https://content.invisioncic.com/u329766/monthly_2024_05/monocker.png.ba5ffdb390b627097d2a53645cf87350.png'
MESSAGE_PLATFORM: 'gotify@server@app_token'
ONLY_OFFLINE_STATES: 'false'
EXCLUDE_EXITED: 'false' PERIOD: 30
DISABLE_STARTUP_MSG: 'false'
#CUSTOM_NTFY_SERVER: 'https://custom.ntfy.com' #NTFY_USER: 'user' #NTFY_PASS: 'password' SHA: 'false'
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped

Environment Options

ItemRequiredDescription
DOCKER_HOSTFalseUse a docker interface other than the default. (E.G DOCKER_HOST: tcp://docker-socket-proxy:2375)
  • This can be a UNIX socket (unix://), Windows named pipe (npipe://) or TCP connection (tcp://). If it's a pipe or socket, be sure to mount the connection as a volume. If the connection is proxied, ensure that GET requests are allowed on the /containers endpoint.
  • By default, this value is unset and the connection will use /var/run/docker.sock.
ItemRequiredDescription
SERVER_LABELFalseLabel to preface messages. Handy if you are running multiple versions of Monocker.
SERVER_AVATARFalseAvatar image URL to add to messages. Handy if you are running Monocker on different machines (discord, ntfy mobile, and slack)
ONLY_OFFLINE_STATESFalseWhen true, only notify when a container state changes to paused, exited, running (unhealthy), or dead. Otherwise, all state changes are notified (false)
EXCLUDE_EXITEDFalseRegardless of any other settings, you can ignore or include the status of 'exited'. (false includes exited)
PERIODFalseSet the poll period in seconds. Default/Minimum is 10 seconds, recommended 30 seconds, to minimise messages sent.
DISABLE_STARTUP_MSGFalseSuppresses startup messages from being sent. Default is false
SHAFalseWill include the container SHA ID in sent messages
MESSAGE_PLATFORMTrueSpecify 'ONE' messaging platform.
  • 'pushbullet@your_api_key@your_device_id'
  • 'pushover@your_user_key@your_app_api_token'
  • 'discord@webhook_url'
  • 'ntfy@topic_title'
  • 'slack@bot_user_oauth_token@your_chat_id'
  • 'gotify@server_url@app_token'
  • 'telegram@your_bot_id@your_chat_id'
  • 'apprise@apprise_url@config_id@tag' (Only one tag is supported, and server_avatar is not currently supported)
  • 'matrix@https://matrix.org@user:matrix.org@access-token@room-id:matrix.org' (For Matrix, add the userid 'without' the leading @ sign. Values are server, userid, access-token, room-id)

Advanced NTFY Setting

Use these settings if you host your own Ntfy server, or otherwise require authentication to connect.

ItemRequiredDescription
CUSTOM_NTFY_SERVERFalseThe URL for your self-hosted Ntfy server (Else will use https://nttp.sh)
NTFY_USERFalseThe username to login (on ntfy.sh or your own server. Optional if you have your own server open)
NTFY_PASSFalseThe password to login (on ntfy.sh or your own server)
ItemRequiredDescription
LABEL_ENABLEFalseIncludes or excludes specified containers, if labelled. (defaults to false)

This feature allows you to specify (with labels in your yaml) 'either' to monitor or exclude specific containers.

  • If it is set to false, then all containers will be monitored, except for any containers with the following label:
 labels:
monocker.enable: 'false'
  • If it is set to true, only containers with the following label will be monitored
 labels:
monocker.enable: 'true'
  • If you just want to monitor everything, then set LABEL_ENABLE: 'false' or just leave it out altogether, and dont worry about labelling any other containers.

Help with MESSAGE_PLATFORM values

  • For Telegram: See video and use this link for how to obtain ID values. https://api.telegram.org/bot{bot-id}/getUpdates
  • For Pushbullet: Open Pushbullet in a browser and get device ID from URL Example
  • For Pushover: Login to Pushover in a browser to see details for user key and app token
  • For Discord: See Discord doco for how to create a webhook and get the url
  • For Slack: See documentation for how to obtain ID values.
  • For Ntfy: create a new topic on https://ntfy.sh/app (or your own server), use the name of the topic as follows: ntfy@MY_TOPIC_TITLE
  • For Apprise: please review official documentation. here
  • For Matrix, review these images for how to get userID, roomID, and Access token

Thank you!

If you like my work, you can make a dontation to say thanks! Donate

Primary support on Discord Link to code on GitHub

This application uses semantic versioning. See here for more details.

About

No description, website, or topics provided.

Resources

Stars

202 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Monocker

Monitors Docker (MONitors dOCKER) containers and alerts on 'state' change.

image

Features

  • Monitors 'state' changes for all containers
  • Specific inclusions or exclusions of containers to monitor
  • Optionally, only alert on state changes to (paused, exited, running (unhealthy), or dead)
  • In-built Docker healthcheck

Integration with

  • Telegram
  • Pushbullet
  • Pushover
  • Discord
  • Ntfy
  • Slack
  • Gotify
  • Matrix
  • Apprise

Future Considerations

  • Additional messaging platform support

Installation

services:
monocker:
container_name: monocker
image: petersem/monocker
environment:
#DOCKER_HOST: tcp://docker-socket-proxy:2375
SERVER_LABEL: 'Your server name'
SERVER_AVATAR: 'https://content.invisioncic.com/u329766/monthly_2024_05/monocker.png.ba5ffdb390b627097d2a53645cf87350.png'
MESSAGE_PLATFORM: 'gotify@server@app_token'
ONLY_OFFLINE_STATES: 'false'
EXCLUDE_EXITED: 'false' PERIOD: 30
DISABLE_STARTUP_MSG: 'false'
#CUSTOM_NTFY_SERVER: 'https://custom.ntfy.com' #NTFY_USER: 'user' #NTFY_PASS: 'password' SHA: 'false'
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped

Environment Options

ItemRequiredDescription
DOCKER_HOSTFalseUse a docker interface other than the default. (E.G DOCKER_HOST: tcp://docker-socket-proxy:2375)
  • This can be a UNIX socket (unix://), Windows named pipe (npipe://) or TCP connection (tcp://). If it's a pipe or socket, be sure to mount the connection as a volume. If the connection is proxied, ensure that GET requests are allowed on the /containers endpoint.
  • By default, this value is unset and the connection will use /var/run/docker.sock.
ItemRequiredDescription
SERVER_LABELFalseLabel to preface messages. Handy if you are running multiple versions of Monocker.
SERVER_AVATARFalseAvatar image URL to add to messages. Handy if you are running Monocker on different machines (discord, ntfy mobile, and slack)
ONLY_OFFLINE_STATESFalseWhen true, only notify when a container state changes to paused, exited, running (unhealthy), or dead. Otherwise, all state changes are notified (false)
EXCLUDE_EXITEDFalseRegardless of any other settings, you can ignore or include the status of 'exited'. (false includes exited)
PERIODFalseSet the poll period in seconds. Default/Minimum is 10 seconds, recommended 30 seconds, to minimise messages sent.
DISABLE_STARTUP_MSGFalseSuppresses startup messages from being sent. Default is false
SHAFalseWill include the container SHA ID in sent messages
MESSAGE_PLATFORMTrueSpecify 'ONE' messaging platform.
  • 'pushbullet@your_api_key@your_device_id'
  • 'pushover@your_user_key@your_app_api_token'
  • 'discord@webhook_url'
  • 'ntfy@topic_title'
  • 'slack@bot_user_oauth_token@your_chat_id'
  • 'gotify@server_url@app_token'
  • 'telegram@your_bot_id@your_chat_id'
  • 'apprise@apprise_url@config_id@tag' (Only one tag is supported, and server_avatar is not currently supported)
  • 'matrix@https://matrix.org@user:matrix.org@access-token@room-id:matrix.org' (For Matrix, add the userid 'without' the leading @ sign. Values are server, userid, access-token, room-id)

Advanced NTFY Setting

Use these settings if you host your own Ntfy server, or otherwise require authentication to connect.

ItemRequiredDescription
CUSTOM_NTFY_SERVERFalseThe URL for your self-hosted Ntfy server (Else will use https://nttp.sh)
NTFY_USERFalseThe username to login (on ntfy.sh or your own server. Optional if you have your own server open)
NTFY_PASSFalseThe password to login (on ntfy.sh or your own server)
ItemRequiredDescription
LABEL_ENABLEFalseIncludes or excludes specified containers, if labelled. (defaults to false)

This feature allows you to specify (with labels in your yaml) 'either' to monitor or exclude specific containers.

  • If it is set to false, then all containers will be monitored, except for any containers with the following label:
 labels:
monocker.enable: 'false'
  • If it is set to true, only containers with the following label will be monitored
 labels:
monocker.enable: 'true'
  • If you just want to monitor everything, then set LABEL_ENABLE: 'false' or just leave it out altogether, and dont worry about labelling any other containers.

Help with MESSAGE_PLATFORM values

  • For Telegram: See video and use this link for how to obtain ID values. https://api.telegram.org/bot{bot-id}/getUpdates
  • For Pushbullet: Open Pushbullet in a browser and get device ID from URL Example
  • For Pushover: Login to Pushover in a browser to see details for user key and app token
  • For Discord: See Discord doco for how to create a webhook and get the url
  • For Slack: See documentation for how to obtain ID values.
  • For Ntfy: create a new topic on https://ntfy.sh/app (or your own server), use the name of the topic as follows: ntfy@MY_TOPIC_TITLE
  • For Apprise: please review official documentation. here
  • For Matrix, review these images for how to get userID, roomID, and Access token

Thank you!

If you like my work, you can make a dontation to say thanks! Donate

Primary support on Discord Link to code on GitHub

This application uses semantic versioning. See here for more details.

About

No description, website, or topics provided.

Resources

Stars

202 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages