{"id":13548993,"url":"https://github.com/Notifiarr/notifiarr","last_synced_at":"2025-04-02T22:31:14.633Z","repository":{"id":36968942,"uuid":"321199887","full_name":"Notifiarr/notifiarr","owner":"Notifiarr","description":"Client for Notifiarr.com","archived":false,"fork":false,"pushed_at":"2024-05-22T15:05:48.000Z","size":31435,"stargazers_count":434,"open_issues_count":25,"forks_count":28,"subscribers_count":10,"default_branch":"main","last_synced_at":"2024-05-22T16:29:23.879Z","etag":null,"topics":["deluge-plugin","discord","discordnotifier","docker","lidarr","monitoring","notifications","plex","qbittorrent-plugin","radarr","readarr","sonarr"],"latest_commit_sha":null,"homepage":"https://notifiarr.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Notifiarr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","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},"funding":{"github":["Notifiarr"]}},"created_at":"2020-12-14T01:28:35.000Z","updated_at":"2024-05-22T16:29:38.167Z","dependencies_parsed_at":"2023-02-16T04:46:04.961Z","dependency_job_id":"28b46b65-afc0-4d8a-9a7a-7704b1be9e9c","html_url":"https://github.com/Notifiarr/notifiarr","commit_stats":{"total_commits":1302,"total_committers":5,"mean_commits":260.4,"dds":0.08602150537634412,"last_synced_commit":"b6bd577004695eb22343be367b83ad0742e06c12"},"previous_names":["go-lift-tv/notifiarr","go-lift-tv/discordnotifier-client"],"tags_count":57,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Notifiarr%2Fnotifiarr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Notifiarr%2Fnotifiarr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Notifiarr%2Fnotifiarr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Notifiarr%2Fnotifiarr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Notifiarr","download_url":"https://codeload.github.com/Notifiarr/notifiarr/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246905099,"owners_count":20852810,"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":["deluge-plugin","discord","discordnotifier","docker","lidarr","monitoring","notifications","plex","qbittorrent-plugin","radarr","readarr","sonarr"],"created_at":"2024-08-01T12:01:16.969Z","updated_at":"2025-04-02T22:31:14.614Z","avatar_url":"https://github.com/Notifiarr.png","language":"Go","funding_links":["https://github.com/sponsors/Notifiarr"],"categories":["Go","HarmonyOS"],"sub_categories":["Windows Manager"],"readme":"\u003cimg src=\"https://gh.notifiarr.com/img/repo-logo.png\"\u003e\n\nThis is the unified client for [Notifiarr.com](https://notifiarr.com).\nThe client enables content requests from Media Bot in your Discord Server and also provides reports for Plex usage and system health among many other features.\n\n## Installation\n\n### Linux\n\nLinux repository hosting provided by\n[![packagecloud](https://docs.golift.io/integrations/packagecloud-full.png \"PackageCloud.io\")](http://packagecloud.io)\n\nThis works on any system with apt or yum. If your system does not use APT or YUM, then download a binary from the [Releases](https://github.com/Notifiarr/notifiarr/releases/latest) page.\n\nOn Linux, Notifiarr runs as `user:group` of `notifiarr:notifiarr`.\n\nInstall the Go Lift package repo and Notifiarr with this command:\n\n```bash\ncurl -s https://golift.io/repo.sh | sudo bash -s - notifiarr\n```\n\nAfter install, edit the config and start the service:\n\n```bash\nsudo nano /etc/notifiarr/notifiarr.conf\nsudo systemctl restart notifiarr\n```\n\n#### Arch Linux\n\n- Download a `zst` package from the\n  [Releases](https://github.com/Notifiarr/notifiarr/releases/latest) page.\n- Install it:  `pacman -U *.zst`\n- Edit config: `nano /etc/notifiarr/notifiarr.conf`\n- Restart it:  `systemctl start notifiarr`\n\nExample of the above in shell form:\n\n```shell\ncurl https://raw.githubusercontent.com/Notifiarr/notifiarr/main/userscripts/install.sh | sudo bash\n\nnano /etc/notifiarr/notifiarr.conf\nsystemctl start notifiarr\n```\n\n### FreeBSD\n\n- Download a `txz` package from the [Releases](https://github.com/Notifiarr/notifiarr/releases/latest) page.\n- Install it, edit config, start it.\n\nExample of the above in shell form:\n\n```shell\nwget -qO- https://raw.githubusercontent.com/Notifiarr/notifiarr/main/userscripts/install.sh | sudo bash\n\nvi /usr/local/etc/notifiarr/notifiarr.conf\nservice notifiarr start\n```\n\nOn FreeBSD, Notifiarr runs as `user:group` of `notifiarr:notifiarr`.\n\n### macOS Install\n\n#### Homebrew\n\nHomebrew is no longer a supported installation method.\n[Download the DMG](https://github.com/Notifiarr/notifiarr/releases/latest)\nand put `Notifiarr.app` in `/Applications` instead.\n\n#### macOS App\n\n- You can use the Apple-signed app on the Releases page.\n- When you open it for the first time it will create a config file and log file:\n    - `~/.notifiarr/notifiarr.conf`\n    - `~/.notifiarr/notifiarr.log`\n- Edit the config file and reload or restart the app.\n\n### Windows\n\n- Extract a `.exe.zip` file from [the Releases page](https://github.com/Notifiarr/notifiarr/releases).\n- Run the `notifiarr.amd64.exe` binary. This starts the app in the system tray.\n- When you open it for the first time it will create a config file and log file:\n    - `C:\\ProgramData\\notifiarr\\notifiarr.conf`\n    - `\u003cyour home folder\u003e\\.notifiarr\\notifiarr.log`\n- Edit the new config file suit your environment then reload or restart the app.\n\n### Docker\n\nThis project builds automatically in [Docker Cloud](https://hub.docker.com/r/golift/notifiarr)\nand creates [ready-to-use multi-architecture images](https://hub.docker.com/r/golift/notifiarr/tags).\nThe `latest` tag is always a tagged release in GitHub. The `main` tag corresponds\nto the `main` branch in GitHub and may be broken.\n\nA sample docker compose file is [found in Examples](https://github.com/Notifiarr/notifiarr/blob/main/examples/compose.yml) in this repo.\n\n**Unraid Users** - You must configure a Notifiarr API Key in the Unraid Template. If you wish to use Plex then you'll also need to set the Plex Token and Plex URL in the template as well.\n\n**Docker Users** - Note that Docker Environmental Variables - and thus the Unraid Template - override the Config file.\n\n#### Docker Config File\n\n- Copy the [example config file](https://github.com/Notifiarr/notifiarr/blob/main/examples/notifiarr.conf.example) from this repo.\n- Then grab the image from docker hub and run it using an overlay for the config file.\n- You must set `privileged` to use `smartctl` (`monitor_drives`) and/or `MegaCli` (`monitor_raid`).\n- Map the `/var/run/utmp` volume if you want to count users.\n- Mount any volumes you want to report storage space for. Where does not matter, \"where\" is the \"name\".\n- You MUST set a static hostname. Each client is identified by hostname.\n- You should mount `/config` - notifiarr will create the config file on first run.\n\n```shell\ndocker pull golift/notifiarr\ndocker run --hostname=$(hostname) -d \\\n-v /your/appdata/notifiarr/:/config \\\n-v /var/run/utmp:/var/run/utmp \\\ngolift/notifiarr\ndocker logs \u003ccontainer id from docker run\u003e\n```\n\n#### Docker Environment Variables\n\nSee below for a list of which environment variables are available.\nYou must set `--privileged` when `monitor drives` is enabled on the website.\n\n```shell\ndocker pull golift/notifiarr\ndocker run --hostname $(hostname) -d --privileged \\\n  -v /var/run/utmp:/var/run/utmp \\\n  -e \"DN_API_KEY=abcdef-12345-bcfead-43312-bbbaaa-123\" \\\n  -e \"DN_SONARR_0_URL=http://localhost:8989\" \\\n  -e \"DN_SONARR_0_API_KEY=kjsdkasjdaksdj\" \\\n  golift/notifiarr\ndocker logs \u003ccontainer id from docker run\u003e\n```\n\n## Configuration Information\n\n### WebUI\n\nTo enable the webui, add this parameter to your config file, toward the top next to `quiet`, and restart the client:\n\n```yaml\nui_password = \"username:9CharacterPassword\"\n```\n\nUse a password that is at least 9 characters long.\nOnce you log into the web interface, you can change the password and it will be saved encrypted (so no one can snoop it).\n\nYou may also set `ui_password` to the value of `\"webauth\"` to enable proxy authentication support.\nYou must also add your auth proxy IP or CIDR to the `upstreams` setting for this to work.\nThe proxy must pass `x-webauth-user: username` as a header, and you will be automatically logged in.\n\n### Config Settings\n\n- Instead of, or in addition to a config file, you may configure a docker container with environment variables.\n- Any variable not provided takes the default.\n- Must provide an API key from notifiarr.com.\n    - **The Notifiarr application uses the API key for bi-directional authorization.**\n- You may provide multiple sonarr, radarr or readarr instances using `DN_SONARR_1_URL`, `DN_SONARR_2_URL`, etc or by duplicating the starr block in the conf file.\n\n| Config Name   | Variable Name      | Default / Note                                                               |\n| ------------- | ------------------ | ---------------------------------------------------------------------------- |\n| api_key       | `DN_API_KEY`       | **Required** / API Key from Notifiarr.com                                    |\n| auto_update   | `DN_AUTO_UPDATE`   | `off` / Set to `daily` to turn on automatic updates (windows only)           |\n| bind_addr     | `DN_BIND_ADDR`     | `0.0.0.0:5454` / The IP and port to listen on                                |\n| quiet         | `DN_QUIET`         | `false` / Turns off output. Set a log_file if this is true                   |\n| ui_password   | `DN_UI_PASSWORD`   | None by default. Set a username:password \u0026 change the password to encrypt it |\n| urlbase       | `DN_URLBASE`       | default: `/` Change the web root with this setting                           |\n| upstreams     | `DN_UPSTREAMS_0`   | List of upstream networks that can set X-Forwarded-For                       |\n| ssl_key_file  | `DN_SSL_KEY_FILE`  | Providing SSL files turns on the SSL listener                                |\n| ssl_cert_file | `DN_SSL_CERT_FILE` | Providing SSL files turns on the SSL listener                                |\n| log_file      | `DN_LOG_FILE`      | None by default. Optionally provide a file path to save app logs             |\n| http_log      | `DN_HTTP_LOG`      | None by default. Provide a file path to save HTTP request logs               |\n| log_file_mb   | `DN_LOG_FILE_MB`   | `100` / Max size of log files in megabytes                                   |\n| log_files     | `DN_LOG_FILES`     | `10` / Log files to keep after rotating. `0` disables rotation               |\n| file_mode     | `DN_FILE_MODE`     | `\"0600\"` / Unix octal filemode for new log files                             |\n| timeout       | `DN_TIMEOUT`       | `60s` / Global API Timeouts (all apps default)                               |\n\nAll applications below (starr, downloaders, tautulli, plex) have a `timeout` setting.\nIf the configuration for an application is missing the timeout, the global timeout (above) is used.\n\n### Secret Settings\n\nRecommend not messing with these unless instructed to do so.\n\n| Config Name | Variable Name     | Default / Note                                                                                    |\n| ----------- | ----------------- | ------------------------------------------------------------------------------------------------- |\n| extra_keys  | `DN_EXTRA_KEYS_0` | `[]` (empty list) / Add keys to allow API requests from places besides notifiarr.com              |\n| mode        | `DN_MODE`         | `production` / Change application mode: `development` or `production`                             |\n| debug       | `DN_DEBUG`        | `false` / Adds payloads and other stuff to the log output; very verbose/noisy                     |\n| debug_log   | `DN_DEBUG_LOG`    | `\"\"` / Set a file system path to write debug logs to a dedicated file                             |\n| max_body    | `DN_MAX_BODY`     | Unlimited, `0` / Maximum debug-log body size (integer) for all debug payloads                     |\n|             | `TMPDIR`          | `%TMP%` on Windows. Varies depending on system; must be writable if using Backup Corruption Check |\n\n_Note: You may disable the GUI (menu item) on Windows by setting the env variable `USEGUI` to `false`._\n\n### System Snapshot\n\nThis application can take a snapshot of your system at an interval and send\nyou a notification. Snapshot means system health like cpu, memory, disk, raid, users, etc.\nOther data available in the snapshot: mysql health, `iotop`, `iostat` and `top` data.\nSome of this may only be available on Linux, but other platforms have similar abilities.\n\nIf you monitor drive health you must have smartmontools (`smartctl`) installed.\nIf you use smartctl on Linux, you must enable sudo. Add the sudoers entry below to\n`/etc/sudoers` and fix the path to `smartctl` if yours differs. If you monitor\nraid and use MegaCli (LSI card), add the appropriate sudoers entry for that too.\n\nUsage of smartctl on Windows requires running this application as an administrator.\nNot entirely sure why, but the elevated privileges allow smartctl to gather drive data.\n\nTo monitor application disk I/O you may install `iotop` and add the sudoers entry\nfor it, shown below. This feature is enabled on the website.\n\n#### Snapshot Sudoers\n\nThe following sudoers entries are used by various snapshot features. Add them if you use the respective feature.\nYou can usually just put the following content into `/etc/sudoers` or `/etc/sudoers.d/00-notifiarr`.\n\n```yml\n# Allows drive health monitoring on macOS, Linux/Docker and FreeBSD.\nnotifiarr ALL=(root) NOPASSWD:/usr/sbin/smartctl *\n\n# Allows disk utilization monitoring on Linux (non-Docker).\nnotifiarr ALL=(root) NOPASSWD:/usr/sbin/iotop *\n\n# Allows monitoring megaraid volumes on macOS, Linux/Docker and FreeBSD.\n# Rarely needed, and you'll know if you need this.\nnotifiarr ALL=(root) NOPASSWD:/usr/sbin/MegaCli64 -LDInfo -Lall -aALL\n```\n\nThese paths may not be the same on all systems. Adjust the username for macOS.\n\n#### Snapshot Packages\n\n- **Windows**:  `smartmontools` - get it here \u003chttps://sourceforge.net/projects/smartmontools/\u003e\n- **macOS**:    `brew install smartmontools`\n- **Linux**:\n    - Debian/Ubuntu: `apt install smartmontools`\n    - RedHat/CentOS: `yum install smartmontools`\n- **Docker**:    It's already in the container. Lucky you! Just run the container in `--privileged` mode.\n- **Synology**: `opkg install smartmontools`, but first get Entware:\n    - Entware (synology):  \u003chttps://github.com/Entware/Entware-ng/wiki/Install-on-Synology-NAS\u003e\n    - Entware Package List:  \u003chttps://github.com/Entware/Entware-ng/wiki/Install-on-Synology-NAS\u003e\n\n#### Snapshot Configuration\n\nThere is no client configuration for snapshots (except Nvidia and MySQL, below).\nSnapshot configuration is found on the [website](https://notifiarr.com).\n\n#### MySQL Snapshots\n\nYou may add mysql credentials to your notifiarr configuration to snapshot mysql\nservice health. This feature snapshots `SHOW PROCESSLIST` and `SHOW STATUS` data.\n\nAccess to a database is not required. Example Grant:\n\n```mysql\nGRANT PROCESS ON *.* to 'notifiarr'@'localhost'\n```\n\n| Config Name         | Variable Name            | Note                                           |\n| ------------------- | ------------------------ | ---------------------------------------------- |\n| snapshot.mysql.name | `DN_SNAPSHOT_MYSQL_NAME` | Setting a name enables service checks of MySQL |\n| snapshot.mysql.host | `DN_SNAPSHOT_MYSQL_HOST` | Something like: `localhost:3306`               |\n| snapshot.mysql.user | `DN_SNAPSHOT_MYSQL_USER` | Username in the GRANT statement                |\n| snapshot.mysql.pass | `DN_SNAPSHOT_MYSQL_PASS` | Password for the user in the GRANT statement   |\n\n#### Nvidia Snapshots\n\nYou may report your GPU and memory Utilization for Nvidia cards. Automatic if `nvidia-smi` is found in `PATH`.\n\n| Config Name              | Variable Name                 | Note                                               |\n| ------------------------ | ----------------------------- | -------------------------------------------------- |\n| snapshot.nvidia.disabled | `DN_SNAPSHOT_NVIDIA_DISABLED` | Set to `true` to disable Nvidia data collection    |\n| snapshot.nvidia.smi_path | `DN_SNAPSHOT_NVIDIA_SMI_PATH` | Optional path to `nvidia-smi`, or `nvidia-smi.exe` |\n| snapshot.nvidia.bus_ids  | `DN_SNAPSHOT_NVIDIA_BUS_ID_0` | List of Bus IDs to restrict data collection to     |\n\n### Lidarr\n\n| Config Name      | Variable Name           | Note                                                                  |\n| ---------------- | ----------------------- | --------------------------------------------------------------------- |\n| lidarr.name      | `DN_LIDARR_0_NAME`      | No Default. Setting a name enables service checks                     |\n| lidarr.url       | `DN_LIDARR_0_URL`       | No Default. Something like: `http://lidarr:8686`                      |\n| lidarr.api_key   | `DN_LIDARR_0_API_KEY`   | No Default. Provide URL and API key if you use Readarr                |\n| lidarr.username  | `DN_LIDARR_0_USERNAME`  | Provide username if using backup corruption check and auth is enabled |\n| lidarr.password  | `DN_LIDARR_0_PASSWORD`  | Provide password if using backup corruption check and auth is enabled |\n| lidarr.http_user | `DN_LIDARR_0_HTTP_USER` | Provide username if Lidarr uses basic auth (uncommon) and BCC enabled |\n| lidarr.http_pass | `DN_LIDARR_0_HTTP_PASS` | Provide password if Lidarr uses basic auth (uncommon) and BCC enabled |\n\n- **BCC = Backup Corruption Check**\n\n### Prowlarr\n\n| Config Name        | Variable Name             | Note                                                                    |\n| ------------------ | ------------------------- | ----------------------------------------------------------------------- |\n| prowlarr.name      | `DN_PROWLARR_0_NAME`      | No Default. Setting a name enables service checks                       |\n| prowlarr.url       | `DN_PROWLARR_0_URL`       | No Default. Something like: `http://prowlarr:9696`                      |\n| prowlarr.api_key   | `DN_PROWLARR_0_API_KEY`   | No Default. Provide URL and API key if you use Prowlarr                  |\n| prowlarr.username  | `DN_PROWLARR_0_USERNAME`  | Provide username if using backup corruption check and auth is enabled   |\n| prowlarr.password  | `DN_PROWLARR_0_PASSWORD`  | Provide password if using backup corruption check and auth is enabled   |\n| prowlarr.http_user | `DN_PROWLARR_0_HTTP_USER` | Provide username if Prowlarr uses basic auth (uncommon) and BCC enabled |\n| prowlarr.http_pass | `DN_PROWLARR_0_HTTP_PASS` | Provide password if Prowlarr uses basic auth (uncommon) and BCC enabled |\n\n### Radarr\n\n| Config Name      | Variable Name           | Note                                                                  |\n| ---------------- | ----------------------- | --------------------------------------------------------------------- |\n| radarr.name      | `DN_RADARR_0_NAME`      | No Default. Setting a name enables service checks.                    |\n| radarr.url       | `DN_RADARR_0_URL`       | No Default. Something like: `http://localhost:7878`                   |\n| radarr.api_key   | `DN_RADARR_0_API_KEY`   | No Default. Provide URL and API key if you use Radarr                 |\n| radarr.username  | `DN_RADARR_0_USERNAME`  | Provide username if using backup corruption check and auth is enabled |\n| radarr.password  | `DN_RADARR_0_PASSWORD`  | Provide password if using backup corruption check and auth is enabled |\n| radarr.http_user | `DN_RADARR_0_HTTP_USER` | Provide username if Radarr uses basic auth (uncommon) and BCC enabled |\n| radarr.http_pass | `DN_RADARR_0_HTTP_PASS` | Provide password if Radarr uses basic auth (uncommon) and BCC enabled |\n\n### Readarr\n\n| Config Name       | Variable Name            | Note                                                                   |\n| ----------------- | ------------------------ | ---------------------------------------------------------------------- |\n| readarr.name      | `DN_READARR_0_NAME`      | No Default. Setting a name enables service checks                      |\n| readarr.url       | `DN_READARR_0_URL`       | No Default. Something like: `http://localhost:8787`                    |\n| readarr.api_key   | `DN_READARR_0_API_KEY`   | No Default. Provide URL and API key if you use Readarr                 |\n| readarr.username  | `DN_READARR_0_USERNAME`  | Provide username if using backup corruption check and auth is enabled  |\n| readarr.password  | `DN_READARR_0_PASSWORD`  | Provide password if using backup corruption check and auth is enabled  |\n| readarr.http_user | `DN_READARR_0_HTTP_USER` | Provide username if Readarr uses basic auth (uncommon) and BCC enabled |\n| readarr.http_pass | `DN_READARR_0_HTTP_PASS` | Provide password if Readarr uses basic auth (uncommon) and BCC enabled |\n\n### Sonarr\n\n| Config Name      | Variable Name           | Note                                                                  |\n| ---------------- | ----------------------- | --------------------------------------------------------------------- |\n| sonarr.name      | `DN_SONARR_0_NAME`      | No Default. Setting a name enables service checks                     |\n| sonarr.url       | `DN_SONARR_0_URL`       | No Default. Something like: `http://localhost:8989`                   |\n| sonarr.api_key   | `DN_SONARR_0_API_KEY`   | No Default. Provide URL and API key if you use Sonarr                 |\n| sonarr.username  | `DN_SONARR_0_USERNAME`  | Provide username if using backup corruption check and auth is enabled |\n| sonarr.password  | `DN_SONARR_0_PASSWORD`  | Provide password if using backup corruption check and auth is enabled |\n| sonarr.http_user | `DN_SONARR_0_HTTP_USER` | Provide username if Sonarr uses basic auth (uncommon) and BCC enabled |\n| sonarr.http_pass | `DN_SONARR_0_HTTP_PASS` | Provide password if Sonarr uses basic auth (uncommon) and BCC enabled |\n\n### Downloaders\n\nYou can add supported downloaders so they show up on the dashboard integration.\nYou may easily add service checks to these downloaders by adding a name.\nAny number of downloaders of any type may be configured.\n\nAll application instances also have `interval` and `timeout` inputs represented as a Go Duration.\nSetting `interval` to `-1s` disables service checks for that application.\nSetting `timeout` to `-1s` disables that instance entirely. Useful if an instacne is down temporarily.\nExample Go Durations: `1m`, `1m30s`, `3m15s`, 1h5m`. Valid units are `s`, `m`, and `h`. Combining units is additive.\n\n#### QbitTorrent\n\n| Config Name    | Variable Name         | Note                                                          |\n| -------------- | --------------------- | ------------------------------------------------------------- |\n| qbit.name      | `DN_QBIT_0_NAME`      | No Default. Setting a name enables service checks             |\n| qbit.url       | `DN_QBIT_0_URL`       | No Default. Something like: `http://localhost:8080`           |\n| qbit.user      | `DN_QBIT_0_USER`      | No Default. Provide URL, user and pass if you use Qbit        |\n| qbit.pass      | `DN_QBIT_0_PASS`      | No Default. Provide URL, user and pass if you use Qbit        |\n| qbit.http_user | `DN_QBIT_0_HTTP_USER` | Provide this username if Qbit is behind basic auth (uncommon) |\n| qbit.http_pass | `DN_QBIT_0_HTTP_PASS` | Provide this password if Qbit is behind basic auth (uncommon) |\n\n#### rTorrent\n\n| Config Name    | Variable Name         | Note                                                       |\n| -------------- | --------------------- | ---------------------------------------------------------- |\n| rtorrent.name  | `DN_RTORRENT_0_NAME`  | No Default. Setting a name enables service checks          |\n| rtorrent.url   | `DN_RTORRENT_0_URL`   | No Default. Something like: `http://localhost:5000`        |\n| rtorrent.user  | `DN_RTORRENT_0_USER`  | No Default. Provide URL, user and pass if you use rTorrent |\n| rtorrent.pass  | `DN_RTORRENT_0_PASS`  | No Default. Provide URL, user and pass if you use rTorrent |\n\n#### SABnzbd\n\n| Config Name     | Variable Name          | Note                                                        |\n| --------------- | ---------------------- | ----------------------------------------------------------- |\n| sabnzbd.name    | `DN_SABNZBD_0_NAME`    | No Default. Setting a name enables service checks           |\n| sabnzbd.url     | `DN_SABNZBD_0_URL`     | No Default. Something like: `http://localhost:8080/sabnzbd` |\n| sabnzbd.api_key | `DN_SABNZBD_0_API_KEY` | No Default. Provide URL and API key if you use SABnzbd      |\n\n#### Deluge\n\n| Config Name      | Variable Name           | Note                                                            |\n| ---------------- | ----------------------- | --------------------------------------------------------------- |\n| deluge.name      | `DN_DELUGE_0_NAME`      | No Default. Setting a name enables service checks               |\n| deluge.url       | `DN_DELUGE_0_URL`       | No Default. Something like: `http://localhost:8080`             |\n| deluge.password  | `DN_DELUGE_0_PASSWORD`  | No Default. Provide URL and password key if you use Deluge      |\n| deluge.http_user | `DN_DELUGE_0_HTTP_USER` | Provide this username if Deluge is behind basic auth (uncommon) |\n| deluge.http_pass | `DN_DELUGE_0_HTTP_PASS` | Provide this password if Deluge is behind basic auth (uncommon) |\n\n#### NZBGet\n\n| Config Name      | Variable Name           | Note                                                            |\n| ---------------- | ----------------------- | --------------------------------------------------------------- |\n| nzbget.name      | `DN_NZBGET_0_NAME`      | No Default. Setting a name enables service checks               |\n| nzbget.url       | `DN_NZBGET_0_URL`       | No Default. Something like: `http://localhost:6789`             |\n| nzbget.user      | `DN_NZBGET_0_USER`      | No Default. Provide URL username and password if you use NZBGet |\n| nzbget.pass      | `DN_NZBGET_0_PASS`      | No Default. Provide URL username and password if you use NZBGet |\n\n\n### Plex\n\nThis application can also send Plex sessions to Notifiarr so you can receive notifications when users interact with your server.\nThis has three different features:\n\n- Notify all sessions on a longer interval (30+ minutes).\n- Notify on session nearing completion (percent complete).\n- Notify on session change (Plex Webhook) ie. pause/resume.\n\nYou [must provide Plex Token](https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/) for this to work.\nYou may also need to add a webhook to Plex so it sends notices to this application.\n\n- In Plex Media Server, add this URL to webhooks:\n    - `http://localhost:5454/plex?token=plex-token-here`\n- Replace `localhost` with the IP or host of the notifiarr application.\n- Replace `plex-token-here` with your plex token.\n- **The Notifiarr application uses the Plex token to authorize incoming webhooks.**\n\n| Config Name | Variable Name   | Note                                                     |\n| ----------- | --------------- | -------------------------------------------------------  |\n| plex.url    | `DN_PLEX_URL`   | `http://localhost:32400` / local URL to your plex server |\n| plex.token  | `DN_PLEX_TOKEN` | Required. [Must provide Plex Token](https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/) for this to work. |\n\n### Tautulli\n\nOnly 1 Tautulli instance may be configured per client.\nProviding Tautulli allows Notifiarr to use the \"Friendly Name\" for your Plex users and it allows you to easily enable a service check.\n\n| Config Name      | Variable Name         | Note                                                                    |\n| ---------------- | --------------------- | ----------------------------------------------------------------------- |\n| tautulli.name    | `DN_TAUTULLI_NAME`    | No Default. Setting a name enables service checks of Tautulli           |\n| tautulli.url     | `DN_TAUTULLI_URL`     | No Default. Something like: `http://localhost:8181`                     |\n| tautulli.api_key | `DN_TAUTULLI_API_KEY` | No Default. Provide URL and API key if you want name maps from Tautulli |\n\n### Service Checks\n\nThe Notifiarr client can also check URLs for health. If you set names on your Starr apps they will be automatically checked and reports sent to Notifiarr.\nIf you provide a log file for service checks, those logs will no longer write to the app log nor to console stdout.\n\n| Config Name       | Variable Name          | Note                                                                |\n| ----------------- | ---------------------- | ------------------------------------------------------------------- |\n| services.log_file | `DN_SERVICES_LOG_FILE` | If a file path is provided, service check logs write there          |\n| services.interval | `DN_SERVICES_INTERVAL` | `10m`, How often to send service states to Notifiarr; minimum: `5m` |\n| services.parallel | `DN_SERVICES_PARALLEL` | `1`, How many services can be checked at once; 1 is plenty          |\n\nYou can also create ad-hoc service checks for things like Bazarr.\n\n| Config Name      | Variable Name           | Note                                                         |\n| ---------------- | ----------------------- | -----------------------------------------------------------  |\n| service.name     | `DN_SERVICE_0_NAME`     | Services must have a unique name                             |\n| service.type     | `DN_SERVICE_0_TYPE`     | Type must be one of `http`, `tcp`, `process`, `ping`, `icmp` |\n| service.check    | `DN_SERVICE_0_CHECK`    | The `URL`, `ip`, `host`, or `host/ip:port` to check          |\n| service.expect   | `DN_SERVICE_0_EXPECT`   | `200`, For HTTP, the return code to expect                   |\n| service.timeout  | `DN_SERVICE_0_TIMEOUT`  | `15s`, How long to wait for service response                 |\n| service.interval | `DN_SERVICE_0_INTERVAL` | `5m`, How often to check the service                         |\n\n#### Ping and ICMP Service Checks\n\nWhen `type` is set to `ping` a UDP ping check is performed, and when type is `icmp` an ICMP ping check is performed.\nWith both settings, the `expect` parameter must be three integers separated by colons. ie. `3:2:500`.\nThis example means send 3 packets every 500 milliseconds, and expect at least 2 in return.\n\nTo enable unprivileged UDP pings on Linux you must run this command:\n```bash\nsudo sysctl -w net.ipv4.ping_group_range=\"0 2147483647\"\n```\n\nTo give the notifiarr binary access to send ICMP pings on Linux, run this command:\n```\nsudo setcap cap_net_raw=+ep /usr/bin/notifiarr\n```\n\n#### Process Service Checks\n\nWhen `type` is set to `process`, the `expect` parameter becomes a special variable.\nYou may set it to `restart` to send a notification when the process restarts.\nYou may set it to `running` to alert if the process is found running (negative check).\nYou may set it to `count:min:max`. ie `count:1:2` means alert if process count is below 1 or above 2.\nYou may combine these with commas. ie `restart,count:1:3`.\n\nBy default `check` is the value to find in the process list. It uses a simple string match.\nUnless you wrap the value in slashes, then it becomes a regex.\nie. use this `expect = \"/^/usr/bin/smtpd$/\"` to match an exact string.\n\nRun `notifiarr --ps` to view the process list from Notifiarr's point of view.\n\n## Reverse Proxy\n\nIt is **not required nor recommend** to expose this application to the Internet. While you can certainly poke a hole your firewall\nand send the traffic directly to expose the app if you truly need to do so, it is recommended that you put it\nbehind a reverse proxy or use a VPN - such as Tailscale - to connect to your device securely. For a Reverse Porxy - it's pretty easy.\n\nYou'll want to tune the `upstreams` and `urlbase` settings for your environment.\nIf your reverse proxy IP is `192.168.3.45` then set `upstreams = [\"192.168.3.45/32\"]`.\nThe `urlbase` can be left at `/`, but change it if you serve this app from a\nsubfolder. We'll assume you want to serve the app from `/notifiarr/` and\nit's running on `192.168.3.33` - here's a sample nginx config to do that:\n\n```nginx\nlocation /notifiarr {\n  proxy_set_header X-Forwarded-For $remote_addr;\n  set $notifiarr http://192.168.3.33:5454;\n  proxy_pass $notifiarr$request_uri;\n}\n```\n\nMake sure the Nginx `location` path matches the `urlbase` Notifiarr setting.\nThat's all there is to it.\n\nUsing an auth proxy? Be sure to set `ui_password` to the string `\"webauth\"`.\nAlso see the [WebUI](#WebUI) section above. The Nginx config looks more like this:\n\n```nginx\nlocation /notifiarr/api {\n  proxy_set_header X-Forwarded-For $remote_addr;\n  set $notifiarr http://192.168.3.33:5454;\n  proxy_pass $notifiarr$request_uri;\n}\n\nlocation /notifiarr {\n  proxy_set_header X-Forwarded-For $remote_addr;\n  proxy_set_header X-WebAuth-User $_username;\n  set $notifiarr http://192.168.3.33:5454;\n  proxy_pass $notifiarr$request_uri;\n}\n```\n\nHere are two more example Nginx configs:\n\n- [TRaSH-'s Swag](https://gist.github.com/TRaSH-/037235b0440b38c8964a2cbb64179cf3) - A drop-in for Swag users.\n- [Captain's Custom](https://github.com/Go-Lift-TV/organizr-nginx/blob/master/golift/notifiarr.conf) - Fits into Captain's Go Lift setup. Not for everyone.\n\n## Troubleshooting\n\n- Find help on [Notifiarr's Discord](https://notifiarr.com/discord).\n- And/or on the [GoLift Discord](https://golift.io/discord).\n\n### Log files\n\nYou can set a log file in the config. You should do that. Otherwise, find your logs here:\n\n- Linux: `/var/log/notifiarr/app.log` (daemon), or `~/.notifiarr/Notifiarr.log` (desktop)\n- FreeBSD: `/usr/local/var/log/notifiarr/app.log` (service), or `~/.notifiarr/Notifiarr.log` (desktop)\n- macOS: `~/.notifiarr/Notifiarr.log`\n- Windows: `C:\\Users\\YOURNAME\\.notifiarr\\Notifiarr.log`\n\nStill having problems?\n[Let us know!](https://github.com/Notifiarr/notifiarr/issues/new)\n\n## Integrations\n\nThe following fine folks are providing their services, completely free! These service\nintegrations are used for things like storage, building, compiling, distribution and\ndocumentation support. This project succeeds because of them. Thank you!\n\n\u003cp style=\"text-align: center;\"\u003e\n\u003ca title=\"PackageCloud\" alt=\"PackageCloud\" href=\"https://packagecloud.io\"\u003e\u003cimg src=\"https://docs.golift.io/integrations/packagecloud.png\"/\u003e\u003c/a\u003e\n\u003ca title=\"GitHub\" alt=\"GitHub\" href=\"https://GitHub.com\"\u003e\u003cimg src=\"https://docs.golift.io/integrations/octocat.png\"/\u003e\u003c/a\u003e\n\u003ca title=\"Docker Cloud\" alt=\"Docker\" href=\"https://cloud.docker.com\"\u003e\u003cimg src=\"https://docs.golift.io/integrations/docker.png\"/\u003e\u003c/a\u003e\n\u003ca title=\"Homebrew\" alt=\"Homebrew\" href=\"https://brew.sh\"\u003e\u003cimg src=\"https://docs.golift.io/integrations/homebrew.png\"/\u003e\u003c/a\u003e\n\u003ca title=\"Go Lift\" alt=\"Go Lift\" href=\"https://golift.io\"\u003e\u003cimg src=\"https://docs.golift.io/integrations/golift.png\"/\u003e\u003c/a\u003e\n\u003ca title=\"Better Uptime\" alt=\"Go Lift\" href=\"https://betteruptime.com\"\u003e\u003cimg src=\"https://docs.golift.io/integrations/betteruptime.png\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Contributing\n\nJoin us on Discord and we can discuss.\n\n## License\n\n[MIT](https://github.com/Notifiarr/notifiarr/blob/main/LICENSE) - Copyright (c) 2020-2024 Go Lift\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNotifiarr%2Fnotifiarr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FNotifiarr%2Fnotifiarr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNotifiarr%2Fnotifiarr/lists"}