{"id":15306682,"url":"https://github.com/t0mer/certi","last_synced_at":"2025-04-15T00:54:11.363Z","repository":{"id":101736778,"uuid":"522328615","full_name":"t0mer/certi","owner":"t0mer","description":"Certi is a python based SSL Transparency log monitoring tool that helps you keep tracking your issued certificates.","archived":false,"fork":false,"pushed_at":"2025-01-26T22:30:31.000Z","size":199,"stargazers_count":10,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-15T00:54:06.280Z","etag":null,"topics":["apprise","docker","monitoring","python","security-tools","ssl-certificates"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/t0mer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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,"publiccode":null,"codemeta":null}},"created_at":"2022-08-07T21:28:57.000Z","updated_at":"2025-04-03T14:31:10.000Z","dependencies_parsed_at":"2023-12-27T21:08:07.423Z","dependency_job_id":"f9321e37-d5b6-4f00-a3d4-5dae20952819","html_url":"https://github.com/t0mer/certi","commit_stats":{"total_commits":33,"total_committers":1,"mean_commits":33.0,"dds":0.0,"last_synced_commit":"c941b4a19cf3abffc2af91d5f6efde6396d96046"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t0mer%2Fcerti","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t0mer%2Fcerti/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t0mer%2Fcerti/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/t0mer%2Fcerti/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/t0mer","download_url":"https://codeload.github.com/t0mer/certi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248986279,"owners_count":21194025,"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":["apprise","docker","monitoring","python","security-tools","ssl-certificates"],"created_at":"2024-10-01T08:06:50.874Z","updated_at":"2025-04-15T00:54:11.341Z","avatar_url":"https://github.com/t0mer.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Certi\nCerti is a python based SSL Transparency log monitoring tool that helps you keep tracking your issued certificates.\n\n## What are Certificate logs\nCertificate logs are append-only ledgers of certificates. Because they're distributed and independent, anyone can query them to see what certificates have been included and when. Because they're append-only, they are verifiable by Monitors. Organisations and individuals with the technical skills and capacity can run a log.\n\nThanks to CT, domain owners, browsers, academics, and other interested people can analyse and monitor logs. They’re able to see which CAs have issued which certificates, when, and for which domains.\n\n\n## Features\n- Monitor all your domains for certificate.\n- Get alerts in many multiple communication channels thanks to [apprise](https://github.com/caronc/apprise)\n- Manage your domains using REST API (swagger documentation included).\n\n\n## Components and Frameworks used in Certi\n* [Loguru](https://pypi.org/project/loguru/) For logging.\n* [FastAPI](https://github.com/tiangolo/fastapi) For REST API.\n* [Apprise](https://github.com/caronc/apprise) For notifications.\n\n\n## Limitations\nCerti is using sslmate search API.\nThe free API account has the following limitations:\n* 100 single-hostname queries / hour.\n* 10 full-domain queries / hour.\n* 75 queries / minute.\n* 5 queries / second.\n\nA \u003cb\u003esingle-hostname query\u003c/b\u003e is a query which returns certificates for a single specific hostname. (The include_subdomains parameter is false.)\n\nA \u003cb\u003efull-domain query\u003cb\u003e is a query which returns certificates for all descendant sub-domains of the queried domain. (The include_subdomains parameter is true.)\n\n## Supported Notifications\nThe section identifies all of the services supported by this library. [Check out the wiki for more information on the supported modules here](https://github.com/caronc/apprise/wiki).\n\n### Popular Notification Services\nThe 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.\n\n| Notification Service | Service ID | Default Port | Example Syntax |\n| -------------------- | ---------- | ------------ | -------------- |\n| [Apprise API](https://github.com/caronc/apprise/wiki/Notify_apprise_api)  | apprise:// or apprises:// | (TCP) 80 or 443 | apprise://hostname/Token\n| [AWS SES](https://github.com/caronc/apprise/wiki/Notify_ses)  | ses://   | (TCP) 443   | ses://user@domain/AccessKeyID/AccessSecretKey/RegionName\u003cbr/\u003eses://user@domain/AccessKeyID/AccessSecretKey/RegionName/email1/email2/emailN\n| [Boxcar](https://github.com/caronc/apprise/wiki/Notify_boxcar)  | boxcar://   | (TCP) 443   | boxcar://hostname\u003cbr /\u003eboxcar://hostname/@tag\u003cbr/\u003eboxcar://hostname/device_token\u003cbr /\u003eboxcar://hostname/device_token1/device_token2/device_tokenN\u003cbr /\u003eboxcar://hostname/@tag/@tag2/device_token\n| [Discord](https://github.com/caronc/apprise/wiki/Notify_discord)  | discord://   | (TCP) 443   | discord://webhook_id/webhook_token\u003cbr /\u003ediscord://avatar@webhook_id/webhook_token\n| [Emby](https://github.com/caronc/apprise/wiki/Notify_emby)  | emby:// or embys:// | (TCP) 8096 | emby://user@hostname/\u003cbr /\u003eemby://user:password@hostname\n| [Enigma2](https://github.com/caronc/apprise/wiki/Notify_enigma2)  | enigma2:// or enigma2s:// | (TCP) 80 or 443 | enigma2://hostname\n| [Faast](https://github.com/caronc/apprise/wiki/Notify_faast) | faast://    | (TCP) 443    | faast://authorizationtoken\n| [FCM](https://github.com/caronc/apprise/wiki/Notify_fcm) | fcm://    | (TCP) 443    | fcm://project@apikey/DEVICE_ID\u003cbr /\u003efcm://project@apikey/#TOPIC\u003cbr/\u003efcm://project@apikey/DEVICE_ID1/#topic1/#topic2/DEVICE_ID2/\n| [Flock](https://github.com/caronc/apprise/wiki/Notify_flock) | flock://    | (TCP) 443    | flock://token\u003cbr/\u003eflock://botname@token\u003cbr/\u003eflock://app_token/u:userid\u003cbr/\u003eflock://app_token/g:channel_id\u003cbr/\u003eflock://app_token/u:userid/g:channel_id\n| [Gitter](https://github.com/caronc/apprise/wiki/Notify_gitter) | gitter://    | (TCP) 443    | gitter://token/room\u003cbr/\u003egitter://token/room1/room2/roomN\n| [Google Chat](https://github.com/caronc/apprise/wiki/Notify_googlechat) | gchat://    | (TCP) 443    | gchat://workspace/key/token\n| [Gotify](https://github.com/caronc/apprise/wiki/Notify_gotify) | gotify:// or gotifys://   | (TCP) 80 or 443    | gotify://hostname/token\u003cbr /\u003egotifys://hostname/token?priority=high\n| [Growl](https://github.com/caronc/apprise/wiki/Notify_growl)  | growl://   | (UDP) 23053   | growl://hostname\u003cbr /\u003egrowl://hostname:portno\u003cbr /\u003egrowl://password@hostname\u003cbr /\u003egrowl://password@hostname:port\u003c/br\u003e**Note**: 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\n| [Home Assistant](https://github.com/caronc/apprise/wiki/Notify_homeassistant)       | hassio:// or hassios://   | (TCP) 8123 or 443 | hassio://hostname/accesstoken\u003cbr /\u003ehassio://user@hostname/accesstoken\u003cbr /\u003ehassio://user:password@hostname:port/accesstoken\u003cbr /\u003ehassio://hostname/optional/path/accesstoken\n| [IFTTT](https://github.com/caronc/apprise/wiki/Notify_ifttt) | ifttt://    | (TCP) 443    | ifttt://webhooksID/Event\u003cbr /\u003eifttt://webhooksID/Event1/Event2/EventN\u003cbr/\u003eifttt://webhooksID/Event1/?+Key=Value\u003cbr/\u003eifttt://webhooksID/Event1/?-Key=value1\n| [Join](https://github.com/caronc/apprise/wiki/Notify_join) | join://   | (TCP) 443    | join://apikey/device\u003cbr /\u003ejoin://apikey/device1/device2/deviceN/\u003cbr /\u003ejoin://apikey/group\u003cbr /\u003ejoin://apikey/groupA/groupB/groupN\u003cbr /\u003ejoin://apikey/DeviceA/groupA/groupN/DeviceN/\n| [KODI](https://github.com/caronc/apprise/wiki/Notify_kodi) | kodi:// or kodis://    | (TCP) 8080 or 443   | kodi://hostname\u003cbr /\u003ekodi://user@hostname\u003cbr /\u003ekodi://user:password@hostname:port\n| [Kumulos](https://github.com/caronc/apprise/wiki/Notify_kumulos) | kumulos:// | (TCP) 443 | kumulos://apikey/serverkey\n| [LaMetric Time](https://github.com/caronc/apprise/wiki/Notify_lametric) | lametric:// | (TCP) 443 | lametric://apikey@device_ipaddr\u003cbr/\u003elametric://apikey@hostname:port\u003cbr/\u003elametric://client_id@client_secret\n| [Mailgun](https://github.com/caronc/apprise/wiki/Notify_mailgun) | mailgun:// | (TCP) 443 | mailgun://user@hostname/apikey\u003cbr /\u003emailgun://user@hostname/apikey/email\u003cbr /\u003emailgun://user@hostname/apikey/email1/email2/emailN\u003cbr /\u003emailgun://user@hostname/apikey/?name=\"From%20User\"\n| [Matrix](https://github.com/caronc/apprise/wiki/Notify_matrix) | matrix:// or matrixs://  | (TCP) 80 or 443 | matrix://hostname\u003cbr /\u003ematrix://user@hostname\u003cbr /\u003ematrixs://user:pass@hostname:port/#room_alias\u003cbr /\u003ematrixs://user:pass@hostname:port/!room_id\u003cbr /\u003ematrixs://user:pass@hostname:port/#room_alias/!room_id/#room2\u003cbr /\u003ematrixs://token@hostname:port/?webhook=matrix\u003cbr /\u003ematrix://user:token@hostname/?webhook=slack\u0026format=markdown\n| [Mattermost](https://github.com/caronc/apprise/wiki/Notify_mattermost) | mmost:// or mmosts:// | (TCP) 8065 | mmost://hostname/authkey\u003cbr /\u003emmost://hostname:80/authkey\u003cbr /\u003emmost://user@hostname:80/authkey\u003cbr /\u003emmost://hostname/authkey?channel=channel\u003cbr /\u003emmosts://hostname/authkey\u003cbr /\u003emmosts://user@hostname/authkey\u003cbr /\u003e\n| [Microsoft Teams](https://github.com/caronc/apprise/wiki/Notify_msteams) | msteams://  | (TCP) 443   | msteams://TokenA/TokenB/TokenC/\n| [MQTT](https://github.com/caronc/apprise/wiki/Notify_mqtt) | mqtt://  or mqtts:// | (TCP) 1883 or 8883   | mqtt://hostname/topic\u003cbr /\u003emqtt://user@hostname/topic\u003cbr /\u003emqtts://user:pass@hostname:9883/topic\n| [Nextcloud](https://github.com/caronc/apprise/wiki/Notify_nextcloud) | ncloud:// or nclouds:// | (TCP) 80 or 443 | ncloud://adminuser:pass@host/User\u003cbr/\u003enclouds://adminuser:pass@host/User1/User2/UserN\n| [NextcloudTalk](https://github.com/caronc/apprise/wiki/Notify_nextcloudtalk) | nctalk:// or nctalks:// | (TCP) 80 or 443 | nctalk://user:pass@host/RoomId\u003cbr/\u003enctalks://user:pass@host/RoomId1/RoomId2/RoomIdN\n| [Notica](https://github.com/caronc/apprise/wiki/Notify_notica) | notica://  | (TCP) 443   | notica://Token/\n| [Notifico](https://github.com/caronc/apprise/wiki/Notify_notifico) | notifico://  | (TCP) 443   | notifico://ProjectID/MessageHook/\n| [Office 365](https://github.com/caronc/apprise/wiki/Notify_office365) | o365://  | (TCP) 443   | o365://TenantID:AccountEmail/ClientID/ClientSecret\u003cbr /\u003eo365://TenantID:AccountEmail/ClientID/ClientSecret/TargetEmail\u003cbr /\u003eo365://TenantID:AccountEmail/ClientID/ClientSecret/TargetEmail1/TargetEmail2/TargetEmailN\n| [OneSignal](https://github.com/caronc/apprise/wiki/Notify_onesignal) | onesignal:// | (TCP) 443 | onesignal://AppID@APIKey/PlayerID\u003cbr/\u003eonesignal://TemplateID:AppID@APIKey/UserID\u003cbr/\u003eonesignal://AppID@APIKey/#IncludeSegment\u003cbr/\u003eonesignal://AppID@APIKey/Email\n| [Opsgenie](https://github.com/caronc/apprise/wiki/Notify_opsgenie) | opsgenie:// | (TCP) 443 | opsgenie://APIKey\u003cbr/\u003eopsgenie://APIKey/UserID\u003cbr/\u003eopsgenie://APIKey/#Team\u003cbr/\u003eopsgenie://APIKey/\\*Schedule\u003cbr/\u003eopsgenie://APIKey/^Escalation\n| [ParsePlatform](https://github.com/caronc/apprise/wiki/Notify_parseplatform) | parsep:// or parseps:// | (TCP) 80 or 443 | parsep://AppID:MasterKey@Hostname\u003cbr/\u003eparseps://AppID:MasterKey@Hostname\n| [PopcornNotify](https://github.com/caronc/apprise/wiki/Notify_popcornnotify) | popcorn://  | (TCP) 443   | popcorn://ApiKey/ToPhoneNo\u003cbr/\u003epopcorn://ApiKey/ToPhoneNo1/ToPhoneNo2/ToPhoneNoN/\u003cbr/\u003epopcorn://ApiKey/ToEmail\u003cbr/\u003epopcorn://ApiKey/ToEmail1/ToEmail2/ToEmailN/\u003cbr/\u003epopcorn://ApiKey/ToPhoneNo1/ToEmail1/ToPhoneNoN/ToEmailN\n| [Prowl](https://github.com/caronc/apprise/wiki/Notify_prowl) | prowl://   | (TCP) 443    | prowl://apikey\u003cbr /\u003eprowl://apikey/providerkey\n| [PushBullet](https://github.com/caronc/apprise/wiki/Notify_pushbullet) | pbul://    | (TCP) 443    | pbul://accesstoken\u003cbr /\u003epbul://accesstoken/#channel\u003cbr/\u003epbul://accesstoken/A_DEVICE_ID\u003cbr /\u003epbul://accesstoken/email@address.com\u003cbr /\u003epbul://accesstoken/#channel/#channel2/email@address.net/DEVICE\n| [Pushjet](https://github.com/caronc/apprise/wiki/Notify_pushjet) | pjet:// or pjets:// | (TCP) 80 or 443 | pjet://hostname/secret\u003cbr /\u003epjet://hostname:port/secret\u003cbr /\u003epjets://secret@hostname/secret\u003cbr /\u003epjets://hostname:port/secret\n| [Push (Techulus)](https://github.com/caronc/apprise/wiki/Notify_techulus) | push://    | (TCP) 443    | push://apikey/\n| [Pushed](https://github.com/caronc/apprise/wiki/Notify_pushed) | pushed://    | (TCP) 443    | pushed://appkey/appsecret/\u003cbr/\u003epushed://appkey/appsecret/#ChannelAlias\u003cbr/\u003epushed://appkey/appsecret/#ChannelAlias1/#ChannelAlias2/#ChannelAliasN\u003cbr/\u003epushed://appkey/appsecret/@UserPushedID\u003cbr/\u003epushed://appkey/appsecret/@UserPushedID1/@UserPushedID2/@UserPushedIDN\n| [Pushover](https://github.com/caronc/apprise/wiki/Notify_pushover)  | pover://   | (TCP) 443   | pover://user@token\u003cbr /\u003epover://user@token/DEVICE\u003cbr /\u003epover://user@token/DEVICE1/DEVICE2/DEVICEN\u003cbr /\u003e**Note**: you must specify both your user_id and token\n| [PushSafer](https://github.com/caronc/apprise/wiki/Notify_pushsafer)  | psafer:// or psafers://  | (TCP) 80 or 443  | psafer://privatekey\u003cbr /\u003epsafers://privatekey/DEVICE\u003cbr /\u003epsafer://privatekey/DEVICE1/DEVICE2/DEVICEN\n| [Reddit](https://github.com/caronc/apprise/wiki/Notify_reddit) | reddit:// | (TCP) 443   | reddit://user:password@app_id/app_secret/subreddit\u003cbr /\u003ereddit://user:password@app_id/app_secret/sub1/sub2/subN\n| [Rocket.Chat](https://github.com/caronc/apprise/wiki/Notify_rocketchat) | rocket:// or rockets://  | (TCP) 80 or 443   | rocket://user:password@hostname/RoomID/Channel\u003cbr /\u003erockets://user:password@hostname:443/#Channel1/#Channel1/RoomID\u003cbr /\u003erocket://user:password@hostname/#Channel\u003cbr /\u003erocket://webhook@hostname\u003cbr /\u003erockets://webhook@hostname/@User/#Channel\n| [Ryver](https://github.com/caronc/apprise/wiki/Notify_ryver) | ryver://  | (TCP) 443   | ryver://Organization/Token\u003cbr /\u003eryver://botname@Organization/Token\n| [SendGrid](https://github.com/caronc/apprise/wiki/Notify_sendgrid) | sendgrid://  | (TCP) 443   | sendgrid://APIToken:FromEmail/\u003cbr /\u003esendgrid://APIToken:FromEmail/ToEmail\u003cbr /\u003esendgrid://APIToken:FromEmail/ToEmail1/ToEmail2/ToEmailN/\n| [ServerChan](https://github.com/caronc/apprise/wiki/Notify_serverchan) | serverchan://   | (TCP) 443    | serverchan://token/\n| [SimplePush](https://github.com/caronc/apprise/wiki/Notify_simplepush) | spush://   | (TCP) 443    | spush://apikey\u003cbr /\u003espush://salt:password@apikey\u003cbr /\u003espush://apikey?event=Apprise\n| [Slack](https://github.com/caronc/apprise/wiki/Notify_slack) | slack://  | (TCP) 443   | slack://TokenA/TokenB/TokenC/\u003cbr /\u003eslack://TokenA/TokenB/TokenC/Channel\u003cbr /\u003eslack://botname@TokenA/TokenB/TokenC/Channel\u003cbr /\u003eslack://user@TokenA/TokenB/TokenC/Channel1/Channel2/ChannelN\n| [SMTP2Go](https://github.com/caronc/apprise/wiki/Notify_smtp2go) | smtp2go:// | (TCP) 443 | smtp2go://user@hostname/apikey\u003cbr /\u003esmtp2go://user@hostname/apikey/email\u003cbr /\u003esmtp2go://user@hostname/apikey/email1/email2/emailN\u003cbr /\u003esmtp2go://user@hostname/apikey/?name=\"From%20User\"\n| [Streamlabs](https://github.com/caronc/apprise/wiki/Notify_streamlabs) | strmlabs:// | (TCP) 443 | strmlabs://AccessToken/\u003cbr/\u003estrmlabs://AccessToken/?name=name\u0026identifier=identifier\u0026amount=0\u0026currency=USD\n| [SparkPost](https://github.com/caronc/apprise/wiki/Notify_sparkpost) | sparkpost:// | (TCP) 443 | sparkpost://user@hostname/apikey\u003cbr /\u003esparkpost://user@hostname/apikey/email\u003cbr /\u003esparkpost://user@hostname/apikey/email1/email2/emailN\u003cbr /\u003esparkpost://user@hostname/apikey/?name=\"From%20User\"\n| [Spontit](https://github.com/caronc/apprise/wiki/Notify_spontit) | spontit://  | (TCP) 443   | spontit://UserID@APIKey/\u003cbr /\u003espontit://UserID@APIKey/Channel\u003cbr /\u003espontit://UserID@APIKey/Channel1/Channel2/ChannelN\n| [Syslog](https://github.com/caronc/apprise/wiki/Notify_syslog) | syslog://  | (UDP) 514 (_if hostname specified_) | syslog://\u003cbr /\u003esyslog://Facility\u003cbr /\u003esyslog://hostname\u003cbr /\u003esyslog://hostname/Facility\n| [Telegram](https://github.com/caronc/apprise/wiki/Notify_telegram) | tgram://  | (TCP) 443   | tgram://bottoken/ChatID\u003cbr /\u003etgram://bottoken/ChatID1/ChatID2/ChatIDN\n| [Twitter](https://github.com/caronc/apprise/wiki/Notify_twitter) | twitter://  | (TCP) 443   | twitter://CKey/CSecret/AKey/ASecret\u003cbr/\u003etwitter://user@CKey/CSecret/AKey/ASecret\u003cbr/\u003etwitter://CKey/CSecret/AKey/ASecret/User1/User2/User2\u003cbr/\u003etwitter://CKey/CSecret/AKey/ASecret?mode=tweet\n| [Twist](https://github.com/caronc/apprise/wiki/Notify_twist) | twist://  | (TCP) 443   | twist://pasword:login\u003cbr/\u003etwist://password:login/#channel\u003cbr/\u003etwist://password:login/#team:channel\u003cbr/\u003etwist://password:login/#team:channel1/channel2/#team3:channel\n| [XBMC](https://github.com/caronc/apprise/wiki/Notify_xbmc) | xbmc:// or xbmcs://    | (TCP) 8080 or 443   | xbmc://hostname\u003cbr /\u003exbmc://user@hostname\u003cbr /\u003exbmc://user:password@hostname:port\n| [XMPP](https://github.com/caronc/apprise/wiki/Notify_xmpp) | xmpp:// or xmpps://    | (TCP) 5222 or 5223   | xmpp://user:password@hostname\u003cbr /\u003exmpps://user:password@hostname:port?jid=user@hostname/resource\u003cbr/\u003exmpps://user:password@hostname/target@myhost, target2@myhost/resource\n| [Webex Teams (Cisco)](https://github.com/caronc/apprise/wiki/Notify_wxteams) | wxteams://  | (TCP) 443   | wxteams://Token\n| [Zulip Chat](https://github.com/caronc/apprise/wiki/Notify_zulip) | zulip://  | (TCP) 443   | zulip://botname@Organization/Token\u003cbr /\u003ezulip://botname@Organization/Token/Stream\u003cbr /\u003ezulip://botname@Organization/Token/Email\n\n## Installation\nCerti is a docker based application that can be installed using docker compose:\n```\nversion: \"3.6\"\nservices:\n  certi:\n    image: techblog/certi\n    container_name: certi\n    restart: always\n    ports:\n      - \"8081:8081\"\n    environment:\n      - API_KEY=\n      - SLEEP_TIME=\n      - NOTIFIERS=\n      - LOG_LEVEL= \n    volumes:\n      - ./data:/opt/certi/db\n```\n\n### Environment\n* API_KEY - API key for [sslmate](https://sslmate.com/) search API.\n* SLEEP_TIME - Time between scans (Default is 7200, which is 2 hours) - To prevent exceeding the search API limits.\n* NOTIFIERS - List of [Supported Notifications](#Supported-Notifications)\n* LOG_LEVEL - Optional valuse are: DEBUG (default), INFO, ERROR\n\n### Volumes\nIn order to prevent data loss, it's recomended to mount a volume for the application Database.\n\"/opt/certi/db\" is the path inside the container where the sqlite db is located. it will be created automatically upon application startup. \n\n### Ports\nCerti has a managment api for the domains and certificates. by default the port is set to 8081.\n\n\n## Managing the application\nCerti has a small REST API endpoint created for easy managment. by default the port is set to to 8081. Swagger documentation can be accessed by adding \"/docs\" to the end of the url [http://docker:8081/docs].\n\nThe api have the following endpoints:\n* domains/get (HTTP GET)- Get list of all monitored domains.\n* domains/add/{DomainName} (HTTP PUT) - Add domain to monitored domains list.\n* domains/delete/{DomainId} (HTTP DELETE) - Delete domain from the monitored domains list.\n* /domains/active/{DomainId}/{state} (HTTP POST) - Set domain status to Active/InActive.\n* /certificates/get (HTTP GET) - Get list off all certicicates that the Certi found.\n\n[![Swagger Documentation](https://github.com/t0mer/certi/blob/main/screenshots/certi-swagger.png?raw=true \"Swagger Documentation\")](https://github.com/t0mer/certi/blob/main/screenshots/certi-swagger.png?raw=true \"Swagger Documentation\")\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ft0mer%2Fcerti","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ft0mer%2Fcerti","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ft0mer%2Fcerti/lists"}