GitBook: [docs] 13 pages and 2 assets modified

This commit is contained in:
JonnyWong16 2021-05-24 06:43:39 +00:00 committed by gitbook-bot
parent e715b0dc5c
commit 3cc28305ad
No known key found for this signature in database
GPG key ID: 07D2180C7B12D0FF
15 changed files with 5608 additions and 144 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

View file

@ -1,163 +1,94 @@
# Tautulli
# Introduction
A python based web application for monitoring, analytics and notifications for
[Plex Media Server](https://plex.tv).
A python based web application for monitoring, analytics and notifications for [Plex Media Server](https://plex.tv).
This project is based on code from [Headphones](https://github.com/rembo10/headphones)
and [PlexWatchWeb](https://github.com/ecleese/plexWatchWeb).
This project is based on code from [Headphones](https://github.com/rembo10/headphones) and [PlexWatchWeb](https://github.com/ecleese/plexWatchWeb).
## Features
- Responsive web design viewable on desktop, tablet and mobile web browsers.
- Themed to complement Plex/Web.
- Easy configuration setup (no separate web server required).
- Monitor current Plex Media Server activity.
- Fully customizable notifications for stream activity and recently added media.
- Top statistics on home page with configurable duration and measurement metric.
- Global watching history with search/filtering & dynamic column sorting.
- Full user list with general information and comparison stats.
- Individual user information including devices IP addresses.
- Complete library statistics and media file information.
- Rich analytics presented using Highcharts graphing.
- Beautiful content information pages.
- Full sync list data on all users syncing items from your library.
- And many more!!
* Responsive web design viewable on desktop, tablet and mobile web browsers.
* Themed to complement Plex/Web.
* Easy configuration setup \(no separate web server required\).
* Monitor current Plex Media Server activity.
* Fully customizable notifications for stream activity and recently added media.
* Top statistics on home page with configurable duration and measurement metric.
* Global watching history with search/filtering & dynamic column sorting.
* Full user list with general information and comparison stats.
* Individual user information including devices IP addresses.
* Complete library statistics and media file information.
* Rich analytics presented using Highcharts graphing.
* Beautiful content information pages.
* Full sync list data on all users syncing items from your library.
* And many more!!
## Preview
[Full preview gallery available on our website][Tautulli]
[Full preview gallery available on our website](http://tautulli.com)
![Tautulli Homepage](https://tautulli.com/images/screenshots/activity-compressed.jpg?v=2)
## Installation
[![Python][badge-python]][Python]
[![Docker Pulls][badge-docker-pulls]][DockerHub]
[![Docker Stars][badge-docker-stars]][DockerHub]
[![Downloads][badge-downloads]][Releases Latest]
[![](https://img.shields.io/badge/python->=3.6-blue?style=flat-square)](https://python.org/downloads) [![](https://img.shields.io/docker/pulls/tautulli/tautulli?style=flat-square)](https://hub.docker.com/r/tautulli/tautulli) [![](https://img.shields.io/docker/stars/tautulli/tautulli?style=flat-square)](https://hub.docker.com/r/tautulli/tautulli) [![ Status \| Branch: \`master\` \| Branch: \`beta\` \| Branch: \`nightly\` ](https://img.shields.io/github/downloads/Tautulli/Tautulli/total?style=flat-square)](https://github.com/Tautulli/Tautulli/releases/latest)
[badge-python]: https://img.shields.io/badge/python->=3.6-blue?style=flat-square
[badge-docker-pulls]: https://img.shields.io/docker/pulls/tautulli/tautulli?style=flat-square
[badge-docker-stars]: https://img.shields.io/docker/stars/tautulli/tautulli?style=flat-square
[badge-downloads]: https://img.shields.io/github/downloads/Tautulli/Tautulli/total?style=flat-square
\| --- \| --- \| --- \| --- \| \| Release \| [![](https://img.shields.io/github/v/release/Tautulli/Tautulli?style=flat-square)](https://github.com/Tautulli/Tautulli/releases/latest)
[![](https://img.shields.io/github/release-date/Tautulli/Tautulli?style=flat-square&color=blue)](https://github.com/Tautulli/Tautulli/releases/latest) \| [![](https://img.shields.io/github/v/release/Tautulli/Tautulli?include_prereleases&style=flat-square)](https://github.com/Tautulli/Tautulli/releases)
[![](https://img.shields.io/github/commits-since/Tautulli/Tautulli/latest/beta?style=flat-square&color=blue)](https://github.com/Tautulli/Tautulli/commits/beta) \| [![](https://img.shields.io/github/last-commit/Tautulli/Tautulli/nightly?style=flat-square&color=blue)](https://github.com/Tautulli/Tautulli/commits/nightly)
[![](https://img.shields.io/github/commits-since/Tautulli/Tautulli/latest/nightly?style=flat-square&color=blue)](https://github.com/Tautulli/Tautulli/commits/nightly) \| \| Docker \| [![](https://img.shields.io/badge/docker-latest-blue?style=flat-square)](https://hub.docker.com/r/tautulli/tautulli)
[![](https://img.shields.io/github/workflow/status/Tautulli/Tautulli/Publish%20Docker/master?style=flat-square)](https://github.com/Tautulli/Tautulli/actions?query=workflow%3A"Publish+Docker"+branch%3Amaster) \| [![](https://img.shields.io/badge/docker-beta-blue?style=flat-square)](https://hub.docker.com/r/tautulli/tautulli)
[![](https://img.shields.io/github/workflow/status/Tautulli/Tautulli/Publish%20Docker/beta?style=flat-square)](https://github.com/Tautulli/Tautulli/actions?query=workflow%3A"Publish+Docker"+branch%3Abeta) \| [![](https://img.shields.io/badge/docker-nightly-blue?style=flat-square)](https://hub.docker.com/r/tautulli/tautulli)
[![](https://img.shields.io/github/workflow/status/Tautulli/Tautulli/Publish%20Docker/nightly?style=flat-square)](https://github.com/Tautulli/Tautulli/actions?query=workflow%3A"Publish+Docker"+branch%3Anightly) \| \| Snap \| [![](https://img.shields.io/badge/snap-stable-blue?style=flat-square)](https://snapcraft.io/tautulli)
[![](https://img.shields.io/github/workflow/status/Tautulli/Tautulli/Publish%20Snap/master?style=flat-square)](https://github.com/Tautulli/Tautulli/actions?query=workflow%3A"Publish+Snap"+branch%3Amaster) \| [![](https://img.shields.io/badge/snap-beta-blue?style=flat-square)](https://snapcraft.io/tautulli)
[![](https://img.shields.io/github/workflow/status/Tautulli/Tautulli/Publish%20Snap/beta?style=flat-square)](https://github.com/Tautulli/Tautulli/actions?query=workflow%3A"Publish+Snap"+branch%3Abeta) \| [![](https://img.shields.io/badge/snap-edge-blue?style=flat-square)](https://snapcraft.io/tautulli)
[![](https://img.shields.io/github/workflow/status/Tautulli/Tautulli/Publish%20Snap/nightly?style=flat-square)](https://github.com/Tautulli/Tautulli/actions?query=workflow%3A"Publish+Snap"+branch%3Anightly) \| \| Installer \| [![](https://img.shields.io/github/v/release/Tautulli/Tautulli?label=windows&style=flat-square)](https://github.com/Tautulli/Tautulli/releases/latest)
[![](https://img.shields.io/github/v/release/Tautulli/Tautulli?label=macos&style=flat-square)](https://github.com/Tautulli/Tautulli/releases/latest)
[![](https://img.shields.io/github/workflow/status/Tautulli/Tautulli/Publish%20Installers/master?style=flat-square)](https://github.com/Tautulli/Tautulli/actions?query=workflow%3A"Publish+Installers"+branch%3Amaster) \| [![](https://img.shields.io/github/v/release/Tautulli/Tautulli?label=windows&include_prereleases&style=flat-square)](https://github.com/Tautulli/Tautulli/releases)
[![](https://img.shields.io/github/v/release/Tautulli/Tautulli?label=macos&include_prereleases&style=flat-square)](https://github.com/Tautulli/Tautulli/releases)
[![](https://img.shields.io/github/workflow/status/Tautulli/Tautulli/Publish%20Installers/beta?style=flat-square)](https://github.com/Tautulli/Tautulli/actions?query=workflow%3A"Publish+Installers"+branch%3Abeta) \| [![](https://img.shields.io/github/workflow/status/Tautulli/Tautulli/Publish%20Installers/nightly?style=flat-square)](https://github.com/Tautulli/Tautulli/actions?query=workflow%3A"Publish+Installers"+branch%3Anightly) \|
| Status | Branch: `master` | Branch: `beta` | Branch: `nightly` |
| --- | --- | --- | --- |
| Release | [![Release@master][badge-release-master]][Releases Latest] <br> [![Release Date@master][badge-release-master-date]][Releases Latest] | [![Release@beta][badge-release-beta]][Releases] <br> [![Commits@beta][badge-release-beta-commits]][Commits Beta] | [![Last Commits@nightly][badge-release-nightly-last-commit]][commits Nightly] <br> [![Commits@nightly][badge-release-nightly-commits]][Commits Nightly] |
| Docker | [![Docker@master][badge-docker-master]][DockerHub] <br> [![Docker Build@master][badge-docker-master-ci]][Publish Docker Master] | [![Docker@beta][badge-docker-beta]][DockerHub] <br> [![Docker Build@beta][badge-docker-beta-ci]][Publish Docker Beta] | [![Docker@nightly][badge-docker-nightly]][DockerHub] <br> [![Docker Build@nightly][badge-docker-nightly-ci]][Publish Docker Nightly] |
| Snap | [![Snap@master][badge-snap-master]][Snapcraft] <br> [![Snap Build@master][badge-snap-master-ci]][Publish Snap Master] | [![Snap@beta][badge-snap-beta]][Snapcraft] <br> [![Snap Build@beta][badge-snap-beta-ci]][Publish Snap Beta] | [![Snap@nightly][badge-snap-nightly]][Snapcraft] <br> [![Snap Build@nightly][badge-snap-nightly-ci]][Publish Snap Nightly] |
| Installer | [![Windows@master][badge-installer-master-win]][Releases Latest] <br> [![MacOS@master][badge-installer-master-macos]][Releases Latest] <br> [![Installer Build@master][badge-installer-master-ci]][Publish Installer Master] | [![Windows@beta][badge-installer-beta-win]][Releases] <br> [![MacOS@beta][badge-installer-beta-macos]][Releases] <br> [![Installer Build@beta][badge-installer-beta-ci]][Publish Installer Beta] | [![Installer Build@nightly][badge-installer-nightly-ci]][Publish Installer Nightly] |
Read the [Installation Guides][Installation] for instructions on how to install Tautulli.
[badge-release-master]: https://img.shields.io/github/v/release/Tautulli/Tautulli?style=flat-square
[badge-release-master-date]: https://img.shields.io/github/release-date/Tautulli/Tautulli?style=flat-square&color=blue
[badge-release-beta]: https://img.shields.io/github/v/release/Tautulli/Tautulli?include_prereleases&style=flat-square
[badge-release-beta-commits]: https://img.shields.io/github/commits-since/Tautulli/Tautulli/latest/beta?style=flat-square&color=blue
[badge-release-nightly-last-commit]: https://img.shields.io/github/last-commit/Tautulli/Tautulli/nightly?style=flat-square&color=blue
[badge-release-nightly-commits]: https://img.shields.io/github/commits-since/Tautulli/Tautulli/latest/nightly?style=flat-square&color=blue
[badge-docker-master]: https://img.shields.io/badge/docker-latest-blue?style=flat-square
[badge-docker-master-ci]: https://img.shields.io/github/workflow/status/Tautulli/Tautulli/Publish%20Docker/master?style=flat-square
[badge-docker-beta]: https://img.shields.io/badge/docker-beta-blue?style=flat-square
[badge-docker-beta-ci]: https://img.shields.io/github/workflow/status/Tautulli/Tautulli/Publish%20Docker/beta?style=flat-square
[badge-docker-nightly]: https://img.shields.io/badge/docker-nightly-blue?style=flat-square
[badge-docker-nightly-ci]: https://img.shields.io/github/workflow/status/Tautulli/Tautulli/Publish%20Docker/nightly?style=flat-square
[badge-snap-master]: https://img.shields.io/badge/snap-stable-blue?style=flat-square
[badge-snap-master-ci]: https://img.shields.io/github/workflow/status/Tautulli/Tautulli/Publish%20Snap/master?style=flat-square
[badge-snap-beta]: https://img.shields.io/badge/snap-beta-blue?style=flat-square
[badge-snap-beta-ci]: https://img.shields.io/github/workflow/status/Tautulli/Tautulli/Publish%20Snap/beta?style=flat-square
[badge-snap-nightly]: https://img.shields.io/badge/snap-edge-blue?style=flat-square
[badge-snap-nightly-ci]: https://img.shields.io/github/workflow/status/Tautulli/Tautulli/Publish%20Snap/nightly?style=flat-square
[badge-installer-master-win]: https://img.shields.io/github/v/release/Tautulli/Tautulli?label=windows&style=flat-square
[badge-installer-master-macos]: https://img.shields.io/github/v/release/Tautulli/Tautulli?label=macos&style=flat-square
[badge-installer-master-ci]: https://img.shields.io/github/workflow/status/Tautulli/Tautulli/Publish%20Installers/master?style=flat-square
[badge-installer-beta-win]: https://img.shields.io/github/v/release/Tautulli/Tautulli?label=windows&include_prereleases&style=flat-square
[badge-installer-beta-macos]: https://img.shields.io/github/v/release/Tautulli/Tautulli?label=macos&include_prereleases&style=flat-square
[badge-installer-beta-ci]: https://img.shields.io/github/workflow/status/Tautulli/Tautulli/Publish%20Installers/beta?style=flat-square
[badge-installer-nightly-ci]: https://img.shields.io/github/workflow/status/Tautulli/Tautulli/Publish%20Installers/nightly?style=flat-square
Read the [Installation Guides](https://github.com/Tautulli/Tautulli/wiki/Installation) for instructions on how to install Tautulli.
## Support
[![Wiki][badge-wiki]][Wiki]
[![Discord][badge-discord]][Discord]
[![Reddit][badge-reddit]][Reddit]
[![Plex Forums][badge-forums]][Plex Forums]
[![Issues][badge-issues]][Issues]
[![](https://img.shields.io/badge/github-wiki-black?style=flat-square)](https://github.com/Tautulli/Tautulli/wiki) [![](https://img.shields.io/discord/183396325142822912?label=discord&style=flat-square&color=7289DA)](https://tautulli.com/discord) [![](https://img.shields.io/reddit/subreddit-subscribers/tautulli?label=reddit&style=flat-square&color=FF5700)](https://reddit.com/r/Tautulli) [![](https://img.shields.io/badge/plex%20forums-discussion-E5A00D?style=flat-square)](https://forums.plex.tv/t/tautulli-monitor-your-plex-media-server/225242) [![](https://img.shields.io/badge/github-issues-black?style=flat-square)](https://github.com/Tautulli/Tautulli/issues)
[badge-wiki]: https://img.shields.io/badge/github-wiki-black?style=flat-square
[badge-discord]: https://img.shields.io/discord/183396325142822912?label=discord&style=flat-square&color=7289DA
[badge-reddit]: https://img.shields.io/reddit/subreddit-subscribers/tautulli?label=reddit&style=flat-square&color=FF5700
[badge-forums]: https://img.shields.io/badge/plex%20forums-discussion-E5A00D?style=flat-square
[badge-issues]: https://img.shields.io/badge/github-issues-black?style=flat-square
If you think you've found a bug in Tautulli make sure you have read the [FAQ](https://github.com/Tautulli/Tautulli/wiki/Frequently-Asked-Questions) first to make sure it hasn't been covered by one of the questions there. If your problem isn't answered in the FAQ try the following first:
If you think you've found a bug in Tautulli make sure you have read the [FAQ][]
first to make sure it hasn't been covered by one of the questions there. If your
problem isn't answered in the FAQ try the following first:
* Update to the latest version of Tautulli.
* Turning your device off and on again.
* Analyzing your logs, you just might find the solution yourself!
* Using the **search** function to see if this issue has already been reported/solved.
* Checking the [Wiki](https://github.com/Tautulli/Tautulli/wiki) for [Installation](https://github.com/Tautulli/Tautulli/wiki/Installation) instructions and reading the [FAQs](https://github.com/Tautulli/Tautulli/wiki/Frequently-Asked-Questions).
* For basic questions try asking on [Discord](https://tautulli.com/discord), [Reddit](https://reddit.com/r/Tautulli),
- Update to the latest version of Tautulli.
- Turning your device off and on again.
- Analyzing your logs, you just might find the solution yourself!
- Using the **search** function to see if this issue has already been reported/solved.
- Checking the [Wiki][] for [Installation][] instructions and reading the [FAQs][FAQ].
- For basic questions try asking on [Discord][], [Reddit][],
or the [Plex Forums][] first before opening an issue.
or the [Plex Forums](https://forums.plex.tv/t/tautulli-monitor-your-plex-media-server/225242) first before opening an issue.
##### If nothing has worked:
### If nothing has worked:
1. Please check the [issues tracker][Issues] to see if someone else has already reported the bug.
2. If this is a new bug, open a [bug report][Issue New] on the issues tracker.
1. Please check the [issues tracker](https://github.com/Tautulli/Tautulli/issues) to see if someone else has already reported the bug.
2. If this is a new bug, open a [bug report](https://github.com/Tautulli/Tautulli/issues/new/choose) on the issues tracker.
3. Provide a clear title to easily help identify your problem.
4. Use proper [Markdown syntax][] to structure your post (i.e. code/log in code blocks).
4. Use proper [Markdown syntax](https://help.github.com/articles/github-flavored-markdown) to structure your post \(i.e. code/log in code blocks\).
5. Make sure to fill out the required information on the issue template.
6. Close your issue when it's solved! If you found the solution yourself please
comment so that others benefit from it.
## Feature Requests
1. Pleases check the [issues tracker][Issues] to see if someone else has already requested the feature.
If a similar idea has already been requested, _give it a thumbs up_. **Do not comment
with `+1` or something similar as it creates unnecessary spam.**
2. If this is a new feature request, open a [feature request][Issue New] on the issues tracker.
1. Pleases check the [issues tracker](https://github.com/Tautulli/Tautulli/issues) to see if someone else has already requested the feature.
If a similar idea has already been requested, _give it a thumbs up_. \*\*Do not comment
with `+1` or something similar as it creates unnecessary spam.\*\*
2. If this is a new feature request, open a [feature request](https://github.com/Tautulli/Tautulli/issues/new/choose) on the issues tracker.
## License
[![License][badge-license]][License]
[![](https://img.shields.io/github/license/Tautulli/Tautulli?style=flat-square)](https://github.com/Tautulli/Tautulli/blob/master/LICENSE)
[badge-license]: https://img.shields.io/github/license/Tautulli/Tautulli?style=flat-square
This is free software under the GPL v3 open source license. Feel free to do with it what you wish, but any modification must be open sourced. A copy of the license is included.
This is free software under the GPL v3 open source license. Feel free to do with it what you wish,
but any modification must be open sourced. A copy of the license is included.
This software includes Highsoft software libraries which you may freely distribute for non-commercial use. Commerical users must licence this software, for more information visit [https://shop.highsoft.com/faq/non-commercial\#non-commercial-redistribution](https://shop.highsoft.com/faq/non-commercial#non-commercial-redistribution).
This software includes Highsoft software libraries which you may freely distribute for
non-commercial use. Commerical users must licence this software, for more information visit
https://shop.highsoft.com/faq/non-commercial#non-commercial-redistribution.
[Python]: https://python.org/downloads
[DockerHub]: https://hub.docker.com/r/tautulli/tautulli
[Releases]: https://github.com/Tautulli/Tautulli/releases
[Releases Latest]: https://github.com/Tautulli/Tautulli/releases/latest
[License]: https://github.com/Tautulli/Tautulli/blob/master/LICENSE
[FAQ]: https://github.com/Tautulli/Tautulli/wiki/Frequently-Asked-Questions
[Installation]: https://github.com/Tautulli/Tautulli/wiki/Installation
[Issues]: https://github.com/Tautulli/Tautulli/issues
[Issue New]: https://github.com/Tautulli/Tautulli/issues/new/choose
[Markdown syntax]: https://help.github.com/articles/github-flavored-markdown
[Tautulli]: http://tautulli.com
[Wiki]: https://github.com/Tautulli/Tautulli/wiki
[Discord]: https://tautulli.com/discord
[Reddit]: https://reddit.com/r/Tautulli
[Plex Forums]: https://forums.plex.tv/t/tautulli-monitor-your-plex-media-server/225242
[Snapcraft]: https://snapcraft.io/tautulli
[Commits Beta]: https://github.com/Tautulli/Tautulli/commits/beta
[Commits Nightly]: https://github.com/Tautulli/Tautulli/commits/nightly
[Publish Docker Master]: https://github.com/Tautulli/Tautulli/actions?query=workflow%3A"Publish+Docker"+branch%3Amaster
[Publish Docker Beta]: https://github.com/Tautulli/Tautulli/actions?query=workflow%3A"Publish+Docker"+branch%3Abeta
[Publish Docker Nightly]: https://github.com/Tautulli/Tautulli/actions?query=workflow%3A"Publish+Docker"+branch%3Anightly
[Publish Snap Master]: https://github.com/Tautulli/Tautulli/actions?query=workflow%3A"Publish+Snap"+branch%3Amaster
[Publish Snap Beta]: https://github.com/Tautulli/Tautulli/actions?query=workflow%3A"Publish+Snap"+branch%3Abeta
[Publish Snap Nightly]: https://github.com/Tautulli/Tautulli/actions?query=workflow%3A"Publish+Snap"+branch%3Anightly
[Publish Installer Master]: https://github.com/Tautulli/Tautulli/actions?query=workflow%3A"Publish+Installers"+branch%3Amaster
[Publish Installer Beta]: https://github.com/Tautulli/Tautulli/actions?query=workflow%3A"Publish+Installers"+branch%3Abeta
[Publish Installer Nightly]: https://github.com/Tautulli/Tautulli/actions?query=workflow%3A"Publish+Installers"+branch%3Anightly

View file

@ -1,26 +1,27 @@
# Table of Contents
# Table of contents
- [Introduction](README.md)
* [Introduction](README.md)
## Getting Started
- [Installation](Installation.md)
- [Upgrading to Python 3](Upgrading-to-Python-3.md)
* [Installation](getting-started/installation.md)
* [Upgrading to Python 3](getting-started/upgrading-to-python-3.md)
## Using Tautulli
- [Notifications Agents Guide](Notification-Agents-Guide.md)
- [Custom Notification Conditions](Custom-Notification-Conditions.md)
- [Exporter Guide](Exporter-Guide.md)
- [3rd Party APIs Guide](3rd-Party-APIs-Guide.md)
* [Notifications Agents Guide](using-tautulli/notification-agents-guide.md)
* [Custom Notification Conditions](using-tautulli/custom-notification-conditions.md)
* [Exporter Guide](using-tautulli/exporter-guide.md)
* [3rd Party APIs Guide](using-tautulli/3rd-party-apis-guide.md)
## Support
- [Asking for Support](Asking-for-Support.md)
- [Frequently Asked Questions (FAQ)](Frequently-Asked-Questions.md)
- [Debugging Tautulli](Debugging.md)
* [Asking for Support](support/asking-for-support.md)
* [Frequently Asked Questions \(FAQ\)](support/frequently-asked-questions.md)
* [Debugging Tautulli](support/debugging.md)
## Extending Tautulli
- [Custom Scripts](Custom-Scripts.md)
- [API Reference](API-Reference.md)
* [Custom Scripts](extending-tautulli/custom-scripts.md)
* [API Reference](extending-tautulli/api-reference.md)

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,81 @@
# Custom Scripts
## How to Use Custom Scripts
1. Go to Settings &gt; Notification Agents &gt; Add new notification agent &gt; Script. ![](https://i.imgur.com/Z0LdmwF.png) ![](https://i.imgur.com/iHj7kBN.png) ![](https://i.imgur.com/4eK8P8I.png) &lt;/p&gt; ![](https://i.imgur.com/nHka1EM.png)
2. Set a "Script Folder" and a "Script File"
![](https://i.imgur.com/pKPObA8.png)
3. Select the triggers that will be used to run the script. \(e.g. Playback Start, Playback Stop\).
![](https://i.imgur.com/JSqYyjX.png)
4. If you want to limit when the script runs, add \[\[custom conditions\|Custom Notification Conditions\]\] to the agent.
![](https://i.imgur.com/rXwP3ot.png)
5. Set the arguments that should be passed to the script
![](https://i.imgur.com/OkBKMR3.png)
6. Save. Voila, all done!
## Environment Variables
| Variable | Description |
| :--- | :--- |
| `PLEX_URL` | The URL used to connect to the Plex server \(e.g. `http://127.0.0.1:32400`\). |
| `PLEX_TOKEN` | The admin's Plex token. |
| `PLEX_USER_TOKEN` | The user's Plex token only available for notifications with a user context \(i.e. Playback triggers\). |
| `TAUTULLI_URL` | The URL used to connect to the Tautulli server \(e.g. `http://127.0.0.1:8181`\). |
| `TAUTULLI_PUBLIC_URL` | The Public Tautulli Domain only if set in the Tautulli settings. |
| `TAUTULLI_APIKEY` | The Tautulli API key. |
## List of User Created Scripts
### Visit the [JBOPS GitHub Repository](https://github.com/blacktwin/JBOPS) for more up-to-date scripts created by @Blacktwin.
#### Tautulli Scripts:
| Description | Language | Author |
| :--- | :--- | :--- |
| [Kill streams](https://github.com/blacktwin/JBOPS/blob/master/killstream/) | Python | [blacktwin](https://github.com/blacktwin) |
| [Throttle nzb client](https://gist.github.com/Hellowlol/a5d0cab4bde185b38404) | Python | [Hellowlol](https://gist.github.com/Hellowlol) |
| [Send an Email notification to users when a new episode to their "favorite" show have been added to Plex](https://github.com/blacktwin/JBOPS/blob/master/notify/notify_user_favorites.py) | Python | [blacktwin](https://gist.github.com/blacktwin) |
| [Send a Tautulli notification with the movie directors' IMDB page](https://gist.github.com/JonnyWong16/d508d8d5d1fcb336efc1a3d167eb7b1a) | Python | [JonnyWong16](https://gist.github.com/JonnyWong16) |
| [Send a random Chuck Norris joke when a movie starring Chuck Norris is played](https://gist.github.com/JonnyWong16/6e3b07bbc99eeb15183ba86be5bdf9a7) | Python | [JonnyWong16](https://gist.github.com/JonnyWong16) |
| [Send a Tautulli notification with geolocation data](https://gist.github.com/JonnyWong16/48d6362884b5edbf5e6d78859035183a) | Python | [JonnyWong16](https://gist.github.com/JonnyWong16) |
| [Get notified when Plex disk usage exceeds a certain threshold](https://gist.github.com/JonnyWong16/f561f06a6266db66dad9) | Python | [JonnyWong16](https://gist.github.com/JonnyWong16) |
| [Delete Tautulli history older than "X" days](https://gist.github.com/JonnyWong16/cb1b53e71b89d2159313) | Python | [JonnyWong16](https://gist.github.com/JonnyWong16) |
| [Restart Plex](https://gist.github.com/Hellowlol/daaa7aa4c5f8bd54033895df5a5fb2d2) | bat | [Hellowlol](https://gist.github.com/Hellowlol) |
| [Plex Docker Container Restart with Rancher](https://gist.github.com/JigSawFr/70d7f95f16f1f6f27528a18e183ee67c) | Bash | [JigSawFr](https://gist.github.com/JigSawFr) |
| [Tautulli - Quiet hours and smart batching for Pushbullet notifications](https://gist.github.com/JimboMonkey1234/1c27897c3204c6b72a05fea64f0a9f02) | Python | [JimboMonkey1234](https://gist.github.com/JimboMonkey1234) |
| [Generate map from user geolocation data](https://github.com/blacktwin/JBOPS/tree/master/maps) | Python | [blacktwin](https://gist.github.com/blacktwin) |
| [Get notified when new IP address accesses Plex](https://github.com/blacktwin/JBOPS/blob/master/notify/notify_newip.py) | Python | [blacktwin](https://gist.github.com/blacktwin) |
| [Run a SSH command using Python](https://gist.github.com/JonnyWong16/e140f546b09950829685f000b7cf98bc) | Python | [JonnyWong16](https://gist.github.com/JonnyWong16) |
| [Automatically add a label to recently added items](https://gist.github.com/JonnyWong16/4cfcf8ea50dab1b720b4d30e9a01835c) | Python | [JonnyWong16](https://gist.github.com/JonnyWong16) |
| [Automatically mark a multi-episode file as watched in Plex](https://gist.github.com/JonnyWong16/7708c5e755c74e169c115490b0749279) | Python | [JonnyWong16](https://gist.github.com/JonnyWong16) |
| [Automatically change episode artwork in Plex to hide spoilers](https://gist.github.com/JonnyWong16/ea8f51f674fdb4ebf4e47e53cd1a10e5) | Python | [JonnyWong16](https://gist.github.com/JonnyWong16) |
| [Updates all metadata in the Tautulli database after moving Plex libraries](https://gist.github.com/JonnyWong16/f554f407832076919dc6864a78432db2) | Python | [JonnyWong16](https://gist.github.com/JonnyWong16) |
| [Send recently added through native iOS push \(OneSignal\)](https://gist.github.com/LuisNunezC/64a3e677887c8ffb76e0f0de1c43311b) | Python | [LuisNunezC](https://github.com/LuisNunezC) |
| [Notify Sonarr that a plexDVR recording has been added to the library](https://gist.github.com/metaMMA/4ecd6579476fce7e93b6c8a5271c12ae) | Bash | [metaMMA](https://github.com/metaMMA) |
| [Notification script for Facebook Groups](https://gist.github.com/spuniun/56624e1464c621c91e52f88e03321582) | Python | [spuniun](https://github.com/spuniun) |
#### Other Plex Scripts:
| Description | Language | Author |
| :--- | :--- | :--- |
| [Automatically share and unshare libraries for Plex users](https://gist.github.com/JonnyWong16/f8139216e2748cb367558070c1448636) | Python | [JonnyWong16](https://gist.github.com/JonnyWong16) |
| [Execute a command when no Plex sessions are active](https://gist.github.com/JonnyWong16/bc50c882985cc495e629f41c12bc7590) | Python | [JonnyWong16](https://gist.github.com/JonnyWong16) |
| [Create a Plex collection from a text file list of rating keys](https://gist.github.com/JonnyWong16/148b5a5dc39211bd6a871cb8f9df8c48) | Python | [JonnyWong16](https://gist.github.com/JonnyWong16) |
| [Sync Plex playlists to shared users](https://gist.github.com/JonnyWong16/2607abf0e3431b6f133861bbe1bb694e) | Python | [JonnyWong16](https://gist.github.com/JonnyWong16) |
| [Removes ALL collections from ALL movies](https://gist.github.com/JonnyWong16/34878448ab45dfffffa930f5cf8c252a) | Python | [JonnyWong16](https://gist.github.com/JonnyWong16) |
| [Saves artist.jpg to the Artist folder.](https://gist.github.com/JonnyWong16/8ede4aabce105217a70cc2386ce673f7) | Python | [JonnyWong16](https://gist.github.com/JonnyWong16) |
| [Randomly create haiku based on Plex libraries content.](https://github.com/blacktwin/JBOPS/blob/master/fun/plexapi_haiku.py) | Python | [Blacktwin](https://gist.github.com/Blacktwin) |
| [Create a Plex Playlist with what was aired today in history.](https://github.com/blacktwin/JBOPS/blob/master/fun/aired_today_playlist.py) | Python | [Blacktwin](https://gist.github.com/Blacktwin) |
| [Pull Movie and TV Show poster images from Plex.](https://github.com/blacktwin/JBOPS/blob/master/utility/plex_api_poster_pull.py) | Python | [Blacktwin](https://gist.github.com/Blacktwin) |
| [Download theme songs from Plex TV Shows.](https://github.com/blacktwin/JBOPS/blob/master/utility/plex_theme_songs.py) | Python | [Blacktwin](https://gist.github.com/Blacktwin) |
| [Delete shows that a list of users have watched.](https://github.com/blacktwin/JBOPS/blob/master/utility/delete_watched_TV.py) | Python | [Blacktwin](https://gist.github.com/Blacktwin) |
| [Delete movies that a list of users have watched.](https://github.com/blacktwin/JBOPS/blob/master/utility/remove_watched_movies.py) | Python | [Blacktwin](https://gist.github.com/Blacktwin) |

View file

@ -0,0 +1,528 @@
# Installation
## Windows
{% tabs %}
{% tab title="Recommended Method" %}
Download and run the latest Windows `.exe` installer from the [GitHub Releases page](https://github.com/Tautulli/Tautulli/releases/latest).
{% endtab %}
{% tab title="Alternative 1" %}
{% hint style="danger" %}
The following installation method is _not recommended_.
{% endhint %}
1. Download the latest version of [Python](https://www.python.org/downloads/) and complete the installation with all the default options.
2. Download Tautulli from GitHub: [https://github.com/Tautulli/Tautulli/zipball/master](https://github.com/Tautulli/Tautulli/zipball/master)
3. Extract the ZIP file.
4. Double click `start.bat` to run Tautulli.
5. Tautulli will be loaded in your browser or listening on [http://localhost:8181](http://localhost:8181).
{% endtab %}
{% tab title="Alternative 2" %}
{% hint style="danger" %}
The following installation method is _not recommended_.
{% endhint %}
{% hint style="warning" %}
This will install extra shell extensions and make adjustments to your path environment.
{% endhint %}
1. Go to [https://gitforwindows.org/](https://gitforwindows.org/) and download `git`.
2. Run the installer, select all the defaults except for the section called "Adjusting your PATH environment" - here select **"Git from the command line and also from 3rd-party software"**.
3. Complete the rest of the installation with the default options.
4. Right click on your desktop and select "Git Gui".
5. Select "Clone Existing Repository".
6. In the "Source Location" enter: `https://github.com/Tautulli/Tautulli.git`
7. In the "Target Directory" enter a new folder where you want to install Tautulli to \(e.g. `C:\Tautulli`\).
8. Click "Clone".
9. When it's finished a Git Gui windows will appear, just close this Window.
10. Browse to where you cloned the Tautulli repository \(e.g. `C:\Tautulli`\) in Windows Explorer.
11. Double click `start.bat` to run Tautulli.
12. Tautulli will be loaded in your browser or listening on [http://localhost:8181](http://localhost:8181).
{% endtab %}
{% endtabs %}
## macOS
{% tabs %}
{% tab title="Recommended Method" %}
Download and run the latest macOS `.pkg` installer from the [GitHub Releases page](https://github.com/Tautulli/Tautulli/releases/latest).
{% hint style="info" %}
Note: The `.pkg` installer requires macOS 10.14 \(Mojave\) or newer.
{% endhint %}
{% endtab %}
{% tab title="Alternative 1" %}
{% hint style="danger" %}
The following installation method is _not recommended_.
{% endhint %}
Tautulli will be installed to `/Applications/Tautulli`
1. Download Tautulli from GitHub: [https://github.com/Tautulli/Tautulli/zipball/master](https://github.com/Tautulli/Tautulli/zipball/master)
2. Extract the zip to `/Applications/Tautulli`. Make sure you extract the files directly in the root.
3. Open a terminal.
4. Change directory:
```bash
cd /Applications/Tautulli
```
5. Start Tautulli:
```bash
./start.sh
```
6. Tautulli will be loaded in your browser or listening on [http://localhost:8181](http://localhost:8181).
{% endtab %}
{% tab title="Alternative 2" %}
{% hint style="danger" %}
The following installation method is _not recommended_.
{% endhint %}
Tautulli will be installed to `/Applications/Tautulli`.
1. Open a terminal
2. Install Git:
```bash
xcode-select --install
```
3. Change directory:
```bash
cd /Applications/
```
4. Clone Tautulli:
```bash
git clone https://github.com/Tautulli/Tautulli.git
```
5. Change directory:
```bash
cd Tautulli
```
6. Start Tautulli:
```bash
./start.sh
```
7. Tautulli will be loaded in your browser or listening on [http://localhost:8181](http://localhost:8181).
{% endtab %}
{% endtabs %}
## Linux
{% tabs %}
{% tab title="Recommended Method" %}
Tautulli can be installed on most Linux distribution using a Snap package.
1. Select your Linux distribution at the bottom of the [Tautulli Snapcraft page](https://snapcraft.io/tautulli) to install `snapd`.
* If your Linux distribution is not listed, additional instructions can be found [here](https://snapcraft.io/docs/installing-snapd).
2. Install Tautulli:
```bash
sudo snap install tautulli
```
3. Tautulli will be loaded in your browser or listening on [http://localhost:8181](http://localhost:8181/).
{% endtab %}
{% tab title="Alternative" %}
{% hint style="danger" %}
The following installation method is _not recommended_.
{% endhint %}
Tautulli will be installed to `/opt/Tautulli`.
1. Open a terminal.
2. Install prerequisites:
* Ubuntu/Debian:
```bash
sudo apt-get install git python3.7 python3-setuptools
```
* Fedora:
```bash
sudo yum install git python3 python3-setuptools
```
3. Change directory:
```bash
cd /opt
```
4. Clone Tautulli:
```bash
sudo git clone https://github.com/Tautulli/Tautulli.git
```
5. Add the Tautulli user:
* Ubuntu/Debian:
```bash
sudo addgroup tautulli && sudo adduser --system --no-create-home tautulli --ingroup tautulli
```
* CentOS/Fedora:
```bash
sudo adduser --system --no-create-home tautulli
```
6. Change ownership:
```bash
sudo chown -R tautulli:tautulli /opt/Tautulli
```
7. Copy the service script:
```bash
sudo cp /opt/Tautulli/init-scripts/init.systemd /lib/systemd/system/tautulli.service
```
8. Enable the service:
```bash
sudo systemctl daemon-reload && sudo systemctl enable tautulli.service
```
9. Start Tautulli:
```bash
sudo systemctl start tautulli.service
```
10. Tautulli will be loaded in your browser or listening on [http://localhost:8181](http://localhost:8181).
{% hint style="info" %}
Refer to the instructions in the [service file](https://github.com/Tautulli/Tautulli/blob/master/init-scripts/init.systemd) to run Tautulli using a different user or move your Tautulli data to a different location.
{% endhint %}
{% endtab %}
{% endtabs %}
## FreeBSD / FreeNAS
{% tabs %}
{% tab title="Recommended Method" %}
Tautulli will be installed to `/usr/local/share/Tautulli`.
1. Create a new jail for Tautulli and open a shell for the jail.
2. Install prerequisites:
```bash
pkg install python py37-setuptools py37-sqlite3 py37-openssl py37-pycryptodomex security/ca_root_nss git-lite
```
3. Change directory:
```bash
cd /usr/local/share
```
4. Clone Tautulli:
```bash
git clone https://github.com/Tautulli/Tautulli.git
```
5. Add the Tautulli user:
```bash
pw useradd -n tautulli -c "Tautulli" -s /sbin/nologin -w no
```
6. Change ownership:
```bash
chown -R tautulli:tautulli Tautulli
```
7. Copy the service script:
```bash
mkdir -p /usr/local/etc/rc.d && cp /usr/local/share/Tautulli/init-scripts/init.freenas /usr/local/etc/rc.d/tautulli
```
8. Enable the service:
```bash
sysrc -f /etc/rc.conf tautulli_user="tautulli" && sysrc -f /etc/rc.conf tautulli_enable="YES"
```
9. Start Tautulli:
```bash
service tautulli start
```
10. Tautulli will be loaded in your browser or listening on [http://localhost:8181](http://localhost:8181).
{% hint style="info" %}
Refer to the instructions in the [service file](https://github.com/Tautulli/Tautulli/blob/master/init-scripts/init.freebsd) to run Tautulli using a different user or move your Tautulli data to a different location.
{% endhint %}
{% endtab %}
{% endtabs %}
## Docker
{% tabs %}
{% tab title="Basic" %}
Create and run the container \(substitute your `<values>`\):
```bash
docker run -d \
--name=tautulli \
--restart=unless-stopped
-v <path to data>:/config \
-e PUID=<uid> \
-e PGID=<gid> \
-e TZ=<timezone> \
-p 8181:8181 \
tautulli/tautulli
```
To update the container it must be removed and recreated:
```bash
# Stop the Tautulli container
docker stop tautulli
# Remove the Tautulli container
docker rm tautulli
# Pull the latest update
docker pull tautulli/tautulli
# Run the Tautulli container with the same parameters as before
docker run -d ...
```
{% endtab %}
{% tab title="Compose" %}
Create a `docker-compose.yml` file with the following contents \(substitute your `<values>`\):
{% code title="docker-compose.yml" %}
```yaml
version: '3'
services:
tautulli:
image: tautulli/tautulli
container_name: tautulli
restart: unless-stopped
volumes:
- <path to data>:/config
environment:
- PUID=<uid>
- PGID=<gid>
- TZ=<timezone>
ports:
- 8181:8181
```
{% endcode %}
Create and start the container \(run the command from the same folder as your `docker-compose.yml` file\):
```bash
docker-compose up -d
```
To update the container:
```bash
# Pull the latest update
docker-compose pull
# Update and restart the container
docker-compose up -d
```
{% endtab %}
{% endtabs %}
### Parameters
You _must_ substitute the `<values>` with your own settings.
Parameters are split into two halves separated by a colon. The left side represents the host and the right side the container.
**Example**: `-p external:internal` - This shows the port mapping from internal to external of the container. So `-p 8181:8181` would expose port `8181` from inside the container to be accessible from the host's IP on port `8181` \(e.g. `http://<host_ip>:8181`\). The internal port _must be_ `8181`, but the external port may be changed \(e.g. `-p 8080:8181`\).
| Parameter | Function | Required / Optional |
| :---: | :--- | :---: |
| `-p 8181:8181` | Port for web UI | Required |
| `-v <path to data>:/config` | Contains Tautulli config and database | Required |
| `-e PUID=<uid>` | User ID \(see below\) | Optional |
| `-e PGID=<gid>` | Group ID \(see below\) | Optional |
| `-e TZ=<timezone>` | Lookup `TZ` value [here](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) \(e.g. America/Toronto\) | Required |
### User / Group Identifiers:
When using data volumes \(`-v` flags\) permissions issues can arise between the host OS and the container. To avoid this issue you can specify the user `PUID` and group `PGID`. Ensure the data volume directory on the host is owned by the same user you specify.
In this instance `PUID=1001` and `PGID=1001`. To find yours use `id user` as below:
```bash
$ id dockeruser
uid=1001(dockeruser) gid=1001(dockergroup) groups=1001(dockergroup)
```
## Synology
You can easily install _Tautulli_ on Synology devices using [Docker](installation.md#docker). Depending on your Synology device you may or may not have Docker pre-installed. If your device is 'unsupported' \(i.e. Docker is not pre-installed or downloadable through the Synology _Package Center_\), follow the guide [here](https://web.archive.org/web/20190730155552/https://tylermade.net/2017/09/28/how-to-install-docker-on-an-unsupported-synology-nas/) and newer versions of the Docker spk found [here](https://archive.synology.com/download/Package/Docker) to install it.
Once you have Docker on your Synology, add the [official image](https://hub.docker.com/r/tautulli/tautulli/) for Tautulli. This is done by opening the Docker program and searching the **Registry** tab for Tautulli. At the time of this write-up, the interface looked like [this](https://imgur.com/EqxJT91). The official image is named `tautulli/tautulli` and it may not be the first option listed. Double-click the image entry to download it. Once downloaded you will see the image show up under your **Image** tab. Before installing the image you will need some additional user information.
Depending on your preference, you can create a unique user on your system for Tautulli, or you can use the default admin user created during your first start-up. You will need the UID and GID of whatever user you have chosen. The steps to obtain these are as follows:
1. SSH into your system using [PuTTy](https://www.putty.org/) \(if on Windows\) or through Terminal \(if on Linux or Mac\). Be sure to use the appropriate username when logging in.
* If you're having trouble with this, make sure that [SSH is enabled](http://richardsumilang.com/server/synology/diskstation/enable-ssh-access-to-synology-diskstation/) in your _Terminal and SNMP_ settings in your Synology _Control Panel_.
2. Type `id`
3. This will return a line with the `uid` of that user and their primary group `gid`.
```text
[user@nas ~]$ id
uid=1001(user) gid=1001(user) groups=1001(user)
```
Next, you will want to make sure that you have the prerequisite folders for Tautulli to save config files to. Here's an example general/simplified setup:
```text
/root
└──/docker
└──/tautulli
└──/config
```
Obviously, the important folder here is `/root/docker/tautulli/config`. You should ensure that the permissions on this folder allows the user you picked earlier, and will set later, has _full_ rights to the folder. You can fix the permissions by right-clicking on your folders and going to `Properties` and then the `Permission` tab. Assign the appropriate user/group Full Control and if necessary Enable the option _Apply to this folder, sub-folders and files_.
You may need to restart your DiskStation for the change to take effect.
Next, back in the Docker window, double click your `tautulli/tautulli:latest` image to open the _Create Container_ window. On the first menu, name your container whatever you want as long as it is identifiable to you. Next, click _Advanced Settings_ to open a new window. Next, follow the instructions for the following tabs:
* **Advanced Settings**:
* Enable _Enable auto-restart_
* If you wish, create a shortcut on the desktop
* **Volume**:
* Click _Add Folder_ and add the following paths and corresponding Mount Paths.
| File/Folder | Mount Path |
| :--- | :--- |
| `docker/tautulli/config` | `/config` |
* **Port Settings**:
* Change the _Local Port_ to `8181` to match the _Container Port_. For some reason the default vale of `Auto` almost never works.
* You may choose a different _Local Port_ if port `8181` is already in use, but you cannot change the _Container Port_.
| Local Port | Container Port | Type |
| :--- | :--- | :--- |
| `8181` | `8181` | `TCP` |
* **Environment**:
* Add the following _variables_ and their respective _value_
| variable | value |
| :--- | :--- |
| `PUID` | `uid` from your ssh session, eg. `1001` |
| `PGID` | `gid` from your ssh session, eg. `1001` |
| `TZ` | Lookup `TZ` value [here](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) \(eg. `America/Los_Angeles`\) |
Finalize the container by applying the _advanced settings_ and then following the remaining prompts.
If your container doesn't immediately run, launch it from the Docker window and give it a few dozen seconds to start completely. Your _Tautulli_ installation should now be accessible via port `8181` \(or your other _Local Port_\) on your DiskStation's local IP address. You can find this under Control Panel -&gt; Network -&gt; Network Interface under `LAN1` or `LAN2`. For example if it shows `192.168.0.5`, then Tautulli can be found at `http://192.168.0.5:8181/`.
### How to update the container
* See [here](https://mendesconsulting.net/2018/03/26/updating-docker-containers-on-synology/) for instructions on updating a Docker container on Synology.
## Western Digital
{% tabs %}
{% tab title="Docker" %}
Installing using [Docker](installation.md#docker) is recommended if it is supported by your NAS.
{% endtab %}
{% tab title="Package" %}
{% hint style="warning" %}
The package is created and maintained by a third party. For support, please contact the creator
{% endhint %}
You can install Tautulli on Western Digital devices using the [WD package by Tfl](https://community.wd.com/t/package-tautulli-plexpy-adds-monitoring-analytics-and-notifications-for-your-plex-server/217773).
{% endtab %}
{% endtabs %}
## QNAP
{% tabs %}
{% tab title="Docker" %}
Installing using [Docker](installation.md#docker) is recommended if it is supported by your NAS.
{% endtab %}
{% tab title="Package" %}
{% hint style="warning" %}
The package is created and maintained by a third party. For support, please contact the creator
{% endhint %}
You can install Tautulli on QNAP devices using the `.qpkg` by QNAP\_Stephane:
* [QNAP Club](https://qnapclub.eu/en/qpkg/557)
* [QNAP forum thread](https://forum.qnap.com/viewtopic.php?f=320&t=139879)
{% endtab %}
{% endtabs %}
## ReadyNAS
{% tabs %}
{% tab title="Docker" %}
Installing using [Docker](installation.md#docker) is recommended if it is supported by your NAS.
{% endtab %}
{% tab title="Package" %}
{% hint style="warning" %}
The package is created and maintained by a third party. For support, please contact the creator
{% endhint %}
You can install Tautulli on ReadyNAS devices using the [ReadyNAS app by Mhynlo](http://apps.readynas.com/pages/?page_id=9).
{% endtab %}
{% endtabs %}
## Thecus NAS
{% tabs %}
{% tab title="Docker" %}
Installing using [Docker](installation.md#docker) is recommended if it is supported by your NAS.
{% endtab %}
{% tab title="Package" %}
{% hint style="warning" %}
The package is created and maintained by a third party. For support, please contact the creator
{% endhint %}
You can install Tautulli on Thecus devices using the [Thecus app by outkastm](https://forum.thecus.com/showthread.php?tid=12768&pid=70628#pid70628).
{% endtab %}
{% endtabs %}
## ArchLinux
{% tabs %}
{% tab title="Docker" %}
Installing using [Docker](installation.md#docker) is recommended if it is supported by your machine.
{% endtab %}
{% tab title="Package" %}
{% hint style="warning" %}
The package is created and maintained by a third party. For support, please contact the creator
{% endhint %}
You can install Tautulli on ArchLinux using the [AUR package by fryfrog/Sonic-Y3k](https://aur.archlinux.org/packages/tautulli/).
{% endtab %}
{% endtabs %}

View file

@ -0,0 +1,112 @@
# Upgrading to Python 3
## Windows / macOS
### Important changes
Running Tautulli in the background on startup can be enabled by checking Tautulli Settings &gt; Web Interface &gt; Launch at System Startup.
* **Warning**: Make sure to remove any previous Tautulli shortcut from your startup folder or task in Windows Task Scheduler on Windows, or `.plist` files in your `LaunchAgents` folder on macOS, to prevent conflicts with the Tautulli setting! Refer to the deprecated instructions in the \[\[Install as a Daemon\]\] page.
### Reinstalling Tautulli using the app installer \(recommended\)
* Tautulli v2.5 and above can be installed on Windows or macOS \(10.14 or newer\) _without_ needing to install Python. You can download the new Windows `.exe` or macOS `.pkg` installer from the [GitHub Releases page](https://github.com/Tautulli/Tautulli/releases/latest).
#### Instructions:
1. Go to the Tautulli Settings &gt; Help & Info page.
2. Click on the "Database File" link to download a copy of your Tautulli database.
3. Click on the "Configuration File" link to download a copy of your Tautulli configuration.
4. Shutdown Tautulli.
5. Install Tautulli using the Windows `.exe` or macOS `.pkg` installer.
6. Start Tautulli and complete the setup wizard.
7. Go to the Tautulli Settings &gt; Import & Backup page and re-import the database file \(using the "Overwrite" method\) and configuration file that you saved in the steps above.
8. Once you have the database imported and Tautulli successfully configured, you may uninstall the previous version of Tautulli by deleting the old folder \(Windows: `C:\Tautulli` or macOS: `/Applications/Tautulli`\).
#### Notes:
* Python still needs to be installed if you are running Python script notifications.
* To update Tautulli using the app installer, just download and run the new installer when a new update is available.
## Linux
### Reinstalling Tautulli using the Snap package \(recommended\)
* Tautulli v2.6.3 and above can be installed on most Linux distributions using the Snap package _without_ needing to install Python.
#### Instructions:
1. Go to the Tautulli Settings &gt; Help & Info page.
2. Click on the "Database File" link to download a copy of your Tautulli database.
3. Click on the "Configuration File" link to download a copy of your Tautulli configuration.
4. Shutdown Tautulli.
5. Install Tautulli using `snap` by following the \[\[Installation \| Installation\#linux\]\] instructions.
6. Start Tautulli and complete the setup wizard.
7. Go to the Tautulli Settings &gt; Import & Backup page and re-import the database file \(using the "Overwrite" method\) and configuration file that you saved in the steps above.
8. Once you have the database imported and Tautulli successfully configured, you may uninstall the previous version of Tautulli by deleting the old folder \(`/opt/Tautulli`\) and the old service file \(`/lib/systemd/system/tautulli.service`\).
#### Notes:
* Python still needs to be installed if you are running Python script notifications.
* Snap packages update automatically outside of Tautulli.
### Modifying an existing Tautulli install \(alternative\)
* This will update an existing Tautulli systemd service script that is using Python 2 to Python 3.
#### Instructions:
1. Make sure Tautulli is shutdown or run `sudo systemctl stop tautulli.service`.
2. Get the path to your `python3` interpreter using `command -v python3`.
* Note: You may need to replace `python3` with the correct value for your system \(e.g. `python3.7`\).
3. Edit `/lib/systemd/system/tautulli.service`.
4. Add the path to your `python3` interpreter from step 1 to the start of the `ExecStart=` command \(e.g. `/usr/bin/python3`\).
* Example:
```text
ExecStart=/usr/bin/python3 /opt/Tautulli/Tautulli.py --config /opt/Tautulli/config.ini --datadir /opt/Tautulli --quiet --daemon --nolaunch
```
5. Start Tautulli with `sudo systemctl daemon-reload && sudo systemctl start tautulli.service`.
#### Notes:
* If Tautulli will not start with the error `ImportError: bad magic number in 'pkg_resources'`, run the `clean_pyc.sh` file inside the Tautulli `contrib` folder.
```text
cd /opt/Tautulli/contrib
./clean_pyc.sh
```
## FreeBSD / FreeNAS
### Modifying an existing Tautulli install
* This will update an existing Tautulli service script that is using Python 2 to Python 3.
#### Instructions:
1. Make sure Tautulli is shutdown or run `service tautulli stop`.
2. Install all the prerequisites from the \[\[Installation \| Installation\#freebsd--freenas\]\] instructions.
3. Remove the old symbolic link to Python 2 with `rm /usr/local/bin/python`.
4. Create a new symbolic link to Python 3 with `ln -s /usr/local/bin/python3 /usr/local/bin/python`.
5. Check the python version with `python -V` and it should say Python 3.7.x.
6. Edit `/usr/local/etc/rc.d/tautulli`.
7. Add `command_interpreter="python"` above the `command` line \(line 41\).
* Example:
```text
command_interpreter="python"
command="${tautulli_dir}/Tautulli.py"
command_args="--daemon --pidfile ${tautulli_pid} --quiet --nolaunch ${tautulli_flags}"
```
8. Start Tautulli with `service tautulli start`.
#### Notes:
* If Tautulli will not start with the error `ImportError: bad magic number in 'pkg_resources'`, run the `clean_pyc.sh` file inside the Tautulli `contrib` folder.
```text
cd /usr/local/share/Tautulli/contrib
./clean_pyc.sh
```

View file

@ -0,0 +1,95 @@
# Asking for Support
## Before asking for support, make sure you try these things first
* Make sure you have updated to the latest version.
* ["Have you tried turning it off and on again?"](https://www.youtube.com/watch?v=nn2FB1P_Mn8)
* Analyzing your logs, you just might find the solution yourself!
* **Search** the \[\[Wiki\|Home\]\],
\[\[Installation Guides\|Installation\]\], and
\[\[FAQs\|Frequently Asked Questions\]\].
* If you have questions, feel free to ask them on [Discord](https://tautulli.com/discord) or [Reddit](https://www.reddit.com/r/Tautulli). Please include a link to your logs. See [How can I share my logs?](asking-for-support.md#how-can-i-share-my-logs) for more details.
## What should I include when asking for support?
When you contact support saying something like "it doesn't work" leaves little to go on to figure out what is wrong for you. When contacting support try to include information such as the following:
* What did you try to do? When you describe what you did to reach the state you are in we may notice something you did different from the instructions, or something that your unique setup requires in addition. Some examples of what to provide here:
* What command did you enter?
* What did you click on?
* What settings did you change?
* Provide a step-by-step list of what you tried.
* What do you see? We cannot see your screen so some of the following is necessary for us to know what is going on:
* Did something happen?
* Did something not happen?
* Are there any error messages showing?
* Screenshots can help us see what you are seeing
* The Tautulli logs show exactly what happened and are often critical for identifying issues \(see [How can I share my logs?](asking-for-support.md#how-can-i-share-my-logs) below\).
When you only provide something like "it doesn't work" think of it like going to the doctor and only telling them "I'm sick." Without you telling them things like what symptoms are you experiencing, whether you are feeling pain somewhere, or whether you are taking any medication. Just like the doctor in that situation, if you don't tell us what is wrong we have to ask you questions until we can get the basic information in place so we can start figuring out how to help you fix the issue.
## How can I share my logs?
First you will need to download your logs by opening the web interface.
1. Go to the **Settings menu** \(Gear Icon, top right\) and click **View Logs**.
2. Click the Download Logs button on the _Tautulli Logs_ tab to save a copy of the `tautulli.log` file.
3. Open the log file and **upload the text** by going to [gist.github.com](https://gist.github.com/) and creating a new secret Gist of the contents.
4. **Share the link** with support \([Discord](https://tautulli.com/discord), [Reddit](https://www.reddit.com/r/Tautulli)\) by copying the URL of the page.
If Tautulli is unable to start, then the log file is located in the following locations:
* Git or zip based installation: `<Tautulli-install-directory>/logs/tautulli.log`
* Windows exe installation: `%LOCALAPPDATA%\Tautulli\logs\tautulli.log`
* macOS pkg installation: `~/Library/Application Support/Tautulli/logs/tautulli.log`
* Snap package installation: `/root/snap/tautulli/common/logs/tautulli.log`
### Notes:
* Upload the **entire** log file. Only uploading what you think is important just makes the process of figuring out what is wrong take longer.
* Not seeing any errors is just as useful as seeing errors. It could indicate that something _isn't_ happening, that should be happening.
* Do not clear your logs unless asked to.
* _Notification Logs_ and _Newsletter Logs_ provide no information for support. These logs are only used to keep a history of what has been sent.
## What is in my logs?
### Tautulli Logs
_Filename: `tautulli.log`_
Tautulli already sanitizes tokens from this log, leaving the following potentially sensitive information in there:
* Usernames
* Especially if your users leave them as email addresses
* Media titles
* For example `Session 771 started by user 18140375 (username) with ratingKey 364356 (Solo: A Star Wars Story).`
* Times that things were played
If you want to keep this private feel free to replace the usernames before uploading the logs as long as you do so consistently! For example replacing `alice` with `user1` and `bob` with `user2` is fine, but don't replace one instance of `alice` with `user1`, and another with `user2` or replacing both `alice` and `bob` with `user`.
Information that _isn't_ sensitive:
* Many identifiers aren't sensitive, such as:
* Session IDs
* Session keys
* Rating keys
* User ID numbers
* Etc.
These numbers are unique to your specific Plex and Tautulli installation, but have no meaning outside of them so sharing them isn't an issue.
### Tautulli API Logs
_Filename: `tautulli_api.log`_
This log contains information about calls made to Tautulli's own API and is usually not needed for support issues.
### Plex Websocket Logs
_Filename: `plex_websocket.log`_
This is a log of the raw events that Plex sends to Tautulli as your users play media and you add new files. This log shouldn't contain any information more sensitive than the Tautulli Log itself, but is rarely required to diagnose issues.

42
docs/support/debugging.md Normal file
View file

@ -0,0 +1,42 @@
# Debugging Tautulli
This page guides you through some common debugging steps to verify the information in Tautulli.
## Activity
_Triple_ clicking on the word `ACTIVITY` at the top of the Tautulli page will open up the raw XML file on your Plex server that Tautulli is parsing in order to show you the current activity on the server.
![2018-06-20\_12-50-14](https://user-images.githubusercontent.com/427137/41681142-948d507e-7488-11e8-977f-e51cdbd8658e.gif)
If you are accessing Tautulli from outside your network and the address that Tautulli uses to connect to Plex isn't available you will need to fix the location in the address bar. If you find yourself using this XML shortcut often you can have Tautulli automatically override the link for you by shutting down Tautulli, editing `config.ini`, and editing the `pms_url_override` value to the public location of your Plex server.
_Note:_ Your browser will likely block this at first since it is a pop-up! You'll need to allow pop-ups in your browser for your Tautulli domain, instructions for the Chrome browser can be found [here](https://support.google.com/chrome/answer/95472?co=GENIE.Platform%3DDesktop&hl=en).
## Stream Info
You can view the information that Tautulli has parsed from the raw XML data for a particular stream by _single_ clicking on the `STREAM` word in an activity card:
![2018-06-20\_12-54-58](https://user-images.githubusercontent.com/427137/41681340-2f75a0f0-7489-11e8-9cae-70672318e6f8.gif)
This information can be handy to check against when using text parameters or conditions in a Notification Agent.
## More XML Shortcuts
Similar to triple clicking on the word `ACTIVITY` on the home page, if you _triple_ click on one of the following you will be brought to the XML that the data is being generated from:
* "All Libraries" on the Libraries page
* "All Users" on the Users page
* "Synced Items" on the Synced Items page
* "PLEX MEDIA SERVER" under Settings -&gt; Plex Media Server
* The [last breadcrumb](https://i.imgur.com/rkxFUxm.png) on any media info page
* "RECENTLY ADDED" on the home page
## Scheduled Tasks
Under Settings -&gt; Help & Info Tautulli shows you a listing of the scheduled tasks currently active on your system. You can click on the following tasks to get a pop-up with a detailed listing of their relevant information:
* _Check for active sessions_
* Click for a listing of currently active sessions and when they will be flushed to the database if Plex fails to send a stop event for them
* _Check for recently added items_
* Click for a listing of items that Tautulli has recently seen get added to Plex, and when they are scheduled to be announced

View file

@ -0,0 +1,755 @@
# Frequently Asked Questions \(FAQ\)
**If you can't find a solution here, please ask on** [**Discord**](https://discord.gg/tQcWEUp)**,** [**Reddit**](https://www.reddit.com/r/Tautulli) **or the** [**Plex Forums**](https://forums.plex.tv/discussion/307821/tautulli-monitor-your-plex-media-server)**. Don't post questions on the GitHub issues tracker.**
## General
* [I am receiving some weird datatable warnings.](frequently-asked-questions.md#general-q2)
* [I forgot my username and/or password!](frequently-asked-questions.md#general-q3)
* [I can't reach the web interface!](frequently-asked-questions.md#general-q4)
* [Tautulli is not updating, it just goes back to the homepage without updating.](frequently-asked-questions.md#general-q5)
* [When I try to update Tautulli, it keeps telling me "Please commit your changes or stash them before you can merge."](frequently-asked-questions.md#general-q6)
* [What does the warning "Unable to retrieve data" mean? Is this a problem?](frequently-asked-questions.md#general-q7)
* [My libraries are duplicated! How do I remove them?](frequently-asked-questions.md#general-q8)
* [How can I access Tautulli outside my home network?](frequently-asked-questions.md#general-q9)
* [Why does Tautulli not work with my reverse proxy setup?](frequently-asked-questions.md#general-q10)
* [I need to move/reinstall Tautulli. Can I keep my history and statistics?](frequently-asked-questions.md#general-q11)
* [Help! I accidentally deleted a user/library! How can I add it back?](frequently-asked-questions.md#general-q12)
* [Can I import my history from PlexWatch/Plexivity?](frequently-asked-questions.md#general-q13)
* [Where can I find my Tautulli logs?](frequently-asked-questions.md#general-q14)
* [Tautulli says "There was an error communicating with your Plex Server", and the logs say "Status code 401".](frequently-asked-questions.md#general-q16)
* [I can't connect to my Plex server with "Use SSL" checked.](frequently-asked-questions.md#general-q17)
* [My Tautulli database got corrupted: "DatabaseError: database disk image is malformed" or "sqlite3.OperationalError".](frequently-asked-questions.md#general-q18)
* [Tautulli cannot read my Plex log file.](frequently-asked-questions.md#general-q19)
* [Tautulli won't start due to a corrupted config file.](frequently-asked-questions.md#general-q20)
* [What data is being collected using Google Analytics?](frequently-asked-questions.md#general-q21)
* [I'm seeing an "Unable to connect to remote host because of a SSL error." message when trying to update.](frequently-asked-questions.md#ssl-update)
* [Does Tautulli have to be installed on the same machine as my Plex Server?](frequently-asked-questions.md#install-same-machine-plex)
* [Recently added items are not showing up on the homepage.](frequently-asked-questions.md#recently-added-homepage)
* [My users list is not updating and I am seeing "Status code 404" in the logs.](frequently-asked-questions.md#users-list-not-updating)
* [My media info table is not loading.](frequently-asked-questions.md#media-info-table-not-loading)
## Activity and History Logging
* [What is the grey progress bar under the current activity?](frequently-asked-questions.md#history-q2)
* [I can see the streams on the homepage, but nothing is being logged.](frequently-asked-questions.md#history-q3)
* [Do I need to keep Tautulli running to record history?](frequently-asked-questions.md#history-q4)
* [Can Tautulli import history from before it was installed?](frequently-asked-questions.md#history-q5)
* [Watch history isn't showing up under "Recently Watched" on the homepage.](frequently-asked-questions.md#history-q6)
* [After resuming a media item, it shows up as two plays in Tautulli.](frequently-asked-questions.md#history-q7)
* [The logs keep telling me "Failed to write sessionKey XX ratingKey YY to the database. Will try again on the next pass."](frequently-asked-questions.md#history-q8)
* [Can I see which items in my libraries are the _least watched_?](frequently-asked-questions.md#history-q9)
* [My concurrent streams statistic is showing an insane number!](frequently-asked-questions.md#history-q10)
* [I am seeing history entries with very long duration times.](frequently-asked-questions.md#history-q11)
* [Why does the bandwidth show as higher than the quality?](frequently-asked-questions.md#history-q12)
* [I moved media in Plex, now Tautulli is linking to the wrong item/showing up twice!](frequently-asked-questions.md#move-media)
* [I'm seeing the same artist twice on the homepage!](frequently-asked-questions.md#homepage-duplicate-artist)
* [Why are items showing up as 127.0.0.1 for the IP address?](frequently-asked-questions.md#plex-relay)
* [Can I disable history logging for a specific user/library?](frequently-asked-questions.md#disable-logging)
## Live TV
* [Why do I suddenly have a "Live TV" library?](frequently-asked-questions.md#livetv-library)
* [Why don't I see the "Live TV" library?](frequently-asked-questions.md#livetv-library-missing)
* [I played multiple shows on Live TV but Tautulli says I only watched one show the entire time.](frequently-asked-questions.md#livetv-rollover)
* [How do I disable history logging for Live TV?](frequently-asked-questions.md#livetv-disable-logging)
* [Can I view the history for an entire TV show I watched on Live TV similar to TV shows in my own library?](frequently-asked-questions.md#livetv-show-history)
* [How do I hide Live TV on the Graphs page?](frequently-asked-questions.md#livetv-hide-graphs)
## Notifications
* [I can't get Notifications working! Is there a magic trick?](frequently-asked-questions.md#notifications-q1)
* [My tests say they are successful, but the notification isn't sent and there's nothing in the logs.](frequently-asked-questions.md#notifications-q2)
* [Can I disable notifications for a specific user/library?](frequently-asked-questions.md#notifications-q3)
* [Can I disable recently added notifications for TV Shows/Movies?](frequently-asked-questions.md#notifications-q4)
* [All my recently added notifications are showing `S00E01`.](frequently-asked-questions.md#notifications-q5)
* [Why are posters not showing up in my notifications?](frequently-asked-questions.md#notifications-q7)
* [How do I set up Imgur for notification posters?](frequently-asked-questions.md#imgur)
* [Facebook notifications are telling me "Insufficient permission to post to target on behalf of the viewer".](frequently-asked-questions.md#notifications-q9)
* [Facebook notifications are telling me "Some of the aliases you requested do not exist".](frequently-asked-questions.md#notifications-q10)
* [I'm seeing a "The PyCryptodome library is missing." message!](frequently-asked-questions.md#notifications-pycryptodome)
* [Notifications are sending the wrong text/sending the default text.](frequently-asked-questions.md#notifications-text-ignored)
* [How do I override the Python version in a script?](frequently-asked-questions.md#notifications-override-python)
* [My recently added notifications are not sending and the logs say "Not notifying again".](frequently-asked-questions.md#notifications-not-notifying-again)
* [My playback stop notifications are not working.](frequently-asked-questions.md#stop-notifications)
## Newsletters
* [I enabled a library but it's not showing in the newsletter!](frequently-asked-questions.md#newsletter-recently-added-library)
* [Gmail is giving me a "Message clipped" message!](frequently-asked-questions.md#message-clipped)
* [How do I edit the date format?](frequently-asked-questions.md#newsletter-date-format)
* [Images are not showing up in my newsletter emails.](frequently-asked-questions.md#newsletter-missing-images)
* [I want to customize the newsletter.](frequently-asked-questions.md#newsletter-custom-template)
## Windows
* [I enabled HTTPS but received a warning that the pyOpenSSL module is missing. How do I fix this?](frequently-asked-questions.md#windows-q1)
* [Tautulli keeps telling me "You're running an unknown version of Tautulli."](frequently-asked-questions.md#windows-q2)
* [When trying to update, the logs say "Invalid update data, update failed."](frequently-asked-questions.md#windows-q3)
* [I am getting a "DatabaseError: file is encrypted or is not a database"!](frequently-asked-questions.md#windows-q4)
* [How can I run Tautulli without the command prompt staying open?](frequently-asked-questions.md#windows-q5)
* [The command prompt just flashes open then closes immediately when starting Tautulli.](frequently-asked-questions.md#windows-q6)
## OSX
* [When trying to update, the logs say "Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo."](frequently-asked-questions.md#osx-q1)
* [I'm getting a `ValueError: unknown locale: UTF-8` message](frequently-asked-questions.md#osx-unknown-locale)
* [How do I get rid of the Python rocket icon in my dock?](frequently-asked-questions.md#osx-python-dock)
## QNAP
* [How do I set the Plex Logs Folder on QNAP?](frequently-asked-questions.md#qnap-q1)
### General
#### [Q:](frequently-asked-questions.md) I am receiving some weird datatable warnings. <a id="general-q2"></a>
**A:** Most datatable warnings can be solved by doing a force refresh in your browser \(CTRL+F5 or OPTION+Reload on Mac/Safari\). If that doesn't work, try clearing your browser's cache.
#### [Q:](frequently-asked-questions.md) I forgot my username and/or password! <a id="general-q3"></a>
**A:** Follow these steps to get back in: 1. **Shut down** Tautulli so your changes will apply. 2. Open the Tautulli `config.ini` file with your preferred text editor. 3. Search for `http_username` and `http_password` and the values after the equal signs are the username and password. You can also delete both lines from the file to disable authentication.
_Note: If your password is encrypted in the config file, you will have to delete the entire line to disable authentication and reset your password in the Tautulli settings._
#### [Q:](frequently-asked-questions.md) I can't reach the web interface! <a id="general-q4"></a>
**A:** Shut down Tautulli and open the Tautulli `config.ini` file with your preferred text editor, search for the lines that begin with `http_host`, `http_port`, and `http_root` and remove the entire line. You should also remove the line for `enable_https` from the file. After you have removed these lines from `config.ini`, go ahead and start Tautulli. It will listen on the default IP address and port \(`http://localhost:8181`\).
#### [Q:](frequently-asked-questions.md) Tautulli is not updating, it just goes back to the homepage without updating. <a id="general-q5"></a>
**A:** When you try you Tautulli and you get the message "A newer version \(vX.Y.ZZ\) is available", but updating doesn't actually update Tautulli there are two ways you can solve the problem, depending on how you installed Tautulli.
**Git based installation**
If you installed Tautulli by cloning the `git` repository, it's possible your local `git` repository has gotten out of sync in a manner that Tautulli can't automatically update from.
If you are running Tautulli v2.2.0 or newer you can have Tautulli attempt to fix this itself by going to Settings -&gt; General -&gt; \[Show Advanced\] -&gt; Repair Git Install -&gt; Reset. This will attempt to automatically run the commands described below for you, cleaning up some common issues.
If you are running an older version of Tautulli, or the above didn't work, you will need to manually fix this. First **Shutdown Tautulli**, then run the following commands from the command line/shell in the Tautulli folder.
```bash
git remote set-url origin https://github.com/Tautulli/Tautulli.git
git fetch origin
git checkout master
git branch -u origin/master
git reset --hard origin/master
git pull
```
If you are running Tautulli as a dedicated user as is recommended in the [Daemon instructions](https://github.com/Tautulli/Tautulli/tree/e715b0dc5c802c5223a5b103b25d2f3517ffab9b/docs/Install-as-a-daemon/README.md), it's likely the permissions on files will need to be fixed after running the above commands:
```bash
sudo chown -R tautulli:tautulli /path/to/Tautulli
```
**ZIP install**
If you instead installed Tautulli by simply downloading the current release archive, the steps are simpler: 1. Download the [current release](https://github.com/Tautulli/Tautulli/zipball/master) 2. Shut down Tautulli 3. Extract the current release to the same location where you previously extracted it
* Note: You should be _replacing_ the existing files, if you are prompted about this please select to replace the files!
1. If needed, ensure the permissions are correct
* For example: `sudo chown -R tautulli:tautulli /path/to/Tautulli`
1. Start Tautulli
#### [Q:](frequently-asked-questions.md) When I try to update Tautulli, it keeps telling me "Please commit your changes or stash them before you can merge." <a id="general-q6"></a>
**A:** See the answer to the previous question.
#### [Q:](frequently-asked-questions.md) What does the warning "Unable to retrieve data" mean? Is this a problem? <a id="general-q7"></a>
**A:** No, not necessarily. It means that you requested data that is not available, for example when you view the profile of a user who hasn't watched anything yet or view synced items when there is nothing synced.
#### [Q:](frequently-asked-questions.md) My libraries are duplicated! How do I remove them? <a id="general-q8"></a>
**A:** This usually happens when you try to reinstall or switch your Plex Media Server. You can visit the following URL to remove all libraries not associated with the current Plex server connected to Tautulli.
```text
http://localhost:8181/delete_duplicate_libraries
```
If the libraries are duplicated on the homepage, toggle the Library Statistic cards under Settings &gt; Homepage and click Save.
#### [Q:](frequently-asked-questions.md) How can I access Tautulli outside my home network? <a id="general-q9"></a>
**A:** **WARNING:** Before you follow any of these methods make sure you have enabled authentication in Tautulli under Settings -&gt; Web Interface by setting a HTTP Username and Password. If you load Tautulli in an Incognito window you should get a login prompt!
The easy and least secure method is to forward an external port \(`8181`\) on your router to the internal port used by Tautulli \(default is TCP `8181`\). Visit [Port Forward](http://portforward.com/) for instructions for your particular router. You will then be able to access Tautulli via `http://EXTERNAL-IP-ADDRESS:8181`.
The more advanced and most preferred method \(and more secure if you use SSL\) is to set up a web server with NGINX/Apache, and use a reverse proxy to access Tautulli. You can lookup many guides on the internet to find out how to do this.
The most secure method, but also the most inconvenient, is to set up a VPN tunnel to your home server, then you can access Tautulli as if it is on a local network via `http://LOCAL-IP-ADDRESS:8181`.
#### [Q:](frequently-asked-questions.md) Why does Tautulli not work with my reverse proxy setup? <a id="general-q10"></a>
**A:** Tautulli uses CherryPy as it's web server, and it includes support for reverse proxies. You must ensure that your proxy web server \(e.g. NGINX or Apache\) is sending the standard `X-` headers to CherryPy. For **NGINX**, the configuration would look like this:
```text
# Standard proxying headers
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
```
If you have SSL enabled on your webserver \(e.g. `Internet --> https://nginx --> http://tautulli`\), make sure HTTP Proxy is checked under Settings &gt; Show Advanced button &gt; Web Interface. Then ensure that your proxy web server is also including these two SSL specific `X-` headers:
```text
# SSL proxying headers
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Ssl on;
```
As an alternative, the following configuration will automatically work for both HTTP and HTTPS.
```text
location /tautulli/ {
proxy_pass http://127.0.0.1:8181;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 90;
proxy_set_header X-Forwarded-Proto $scheme;
set $xforwardedssl "off";
if ($scheme = https) {
set $xforwardedssl "on";
}
proxy_set_header X-Forwarded-Ssl $xforwardedssl;
proxy_redirect ~^(http(?:s)?://)([^:/]+)(?::\d+)?(/.*)?$ $1$2:$server_port$3;
}
```
Don't forget to clear your web browser's cache _every_ time you update your web server configuration.
#### [Q:](frequently-asked-questions.md) I need to move/reinstall Tautulli. Can I keep my history and statistics? <a id="general-q11"></a>
**A:** Yes, all you need to do is download a copy your `tautulli.db` database file and `config.ini` configuration file by clicking on the "Database File" and "Configuration File" links on the Settings &gt; Help & Info page. Then after reinstalling and completing the setup wizard, go to the Settings &gt; Import & Backup page to import the old `tautulli.db` database and `config.ini` configuration files. This will work between any OS.
**WARNING**: If you are re-installing Plex as well please follow [their guide to Move an Install to Another System](https://support.plex.tv/articles/201370363-move-an-install-to-another-system/). If you are starting from scratch again with Plex, or forgot to do this step, then you **MUST** run the script from [this FAQ entry](frequently-asked-questions.md#move-media), or your Tautulli database will link to the wrong items!
#### [Q:](frequently-asked-questions.md) Help! I accidentally deleted a user/library! How can I add it back? <a id="general-q12"></a>
**A:** If you have deleted a user or library in Tautulli and would like to bring them back the best method is to immediately restore a backup as the related history for these are removed when they are deleted. If you no longer have a backup containing the history, or don't want to bother with recovering it, you can simply tell Tautulli to allow them back in by "undeleting" them with the following instructions.
**Undeleting a user**
If you are trying to undelete a user first you will need to find their `user_id`. You can get this by following the "More XML Shortcuts" instructions [here](https://github.com/Tautulli/Tautulli/tree/e715b0dc5c802c5223a5b103b25d2f3517ffab9b/docs/Debugging/README.md#more-xml-shortcuts) for "All Users".
You will see a list of items, find the entry that corresponds to the user you want to undelete, the `user_id` is in the `id="12345"` part. So for example in this entry the `user_id` would be `8367478`:
```markup
<User id="8367478" title="exampleuser" username="exampleuser" email="example@domain.com" ...>
<Server id="1234567" name="Server Name" ... />
</User>
```
Once you have the ID you need to go to `/undelete_user?user_id=<user_id>` on your Tautulli instance. For example for the above ID on a Tautulli instance on the same machine you would go to:
```text
http://localhost:8181/undelete_user?user_id=8367478
```
If you are unable to find the `user_id`, you may try using the username \(`/undelete_user?username=<username>`\) or their email address \(`/undelete_user?username=<user's Plex email address>`\), but these are less accurate and may not work. Example usage of these for a Tautulli instance running on the same computer would be:
```text
http://localhost:8181/undelete_user?username=exampleuser
http://localhost:8181/undelete_user?username=example@domain.com
```
**Undeleting a library**
If you are trying to undelete a library you will need to find the `section_id`. You can get this by following the "More XML Shortcuts" instructions [here](https://github.com/Tautulli/Tautulli/tree/e715b0dc5c802c5223a5b103b25d2f3517ffab9b/docs/Debugging/README.md#more-xml-shortcuts) for "All Libraries".
You will see a list of items, find the entry that corresponds to the library you want to undelete, the `section_id` is in the `key="2"` part. So for example in this entry the `section_id` would be `3`:
```markup
<Directory ... key="3" type="show" title="TV Shows" ...>
<Location id="7" path="/mnt/TV Shows"/>
</Directory>
```
Once you have the section ID you need to go to `/undelete_library?section_id=<section_id>` on your Tautulli instance. For example for the above ID on a Tautulli instance on the same machine you would go to:
```text
http://localhost:8181/undelete_library?section_id=3
```
If you are unable to find the `section_id`, you may try using the library name \(`/undelete_library?section_name=<section_name>`\), but this is less accurate and may not work. Example usage for a Tautulli instance running on the same computer would be:
```text
http://localhost:8181/undelete_library?section_name=Anime
```
#### [Q:](frequently-asked-questions.md) Can I import my history from PlexWatch/Plexivity? <a id="general-q13"></a>
**A:** You can import your PlexWatch/Plexivity history into Tautulli by going to Settings &gt; Import & Backups.
#### [Q:](frequently-asked-questions.md) Where can I find my Tautulli logs? <a id="general-q14"></a>
**A:** You can view the Tautulli logs from the web interface by clicking on "View Logs" in the settings menu. Clicking on the "Download logs" button on this page will allow you to save a copy of the log file. The location of the log file is also listed on the Settings &gt; Help & Info page.
If Tautulli is unable to start, then the log file is located in the following locations:
* Git or zip based installation: `<Tautulli-install-directory>/logs/tautulli.log`
* Windows exe installation: `%LOCALAPPDATA%\Tautulli\logs\tautulli.log`
* macOS pkg installations: `~/Library/Application Support/Tautulli/logs/tautulli.log`
When reporting an issue, please provide a link to this log file by pasting it on [Gist](http://gist.github.com), _do not_ upload the file as an attachment.
#### [Q:](frequently-asked-questions.md) Tautulli says "There was an error communicating with your Plex Server", and the logs say "Status code 401". <a id="general-q16"></a>
**A:** Go into the Tautulli Settings &gt; Plex Media Server and fetch a new Plex.tv token.
#### [Q:](frequently-asked-questions.md) Tautulli can't connect to my Plex server locally with "Use SSL" checked. <a id="general-q17"></a>
**A:** First check that you can access your server locally with SSL. Open your Tautulli settings, go to the Plex Media Server section and copy the "Plex Server URL" URL into a new browser tab to attempt to load your server's interface directly.
If you cannot load the Plex Web interface, then you may have a DNS rebinding issue for `*.plex.direct` addresses. Try changing your system to use a public DNS server, such as [Cloudflare DNS](https://developers.cloudflare.com/1.1.1.1/setting-up-1.1.1.1/) or [Google Public DNS](https://developers.google.com/speed/public-dns/docs/using). If you are using a custom DNS server such as on a pfSense firewall, see the "DNS Rebinding" section of this Plex support article on [How to use Secure Server Connections](https://support.plex.tv/articles/206225077-how-to-use-secure-server-connections/).
Otherwise, you may have to set secure connections to "Preferred" in your Plex server settings and uncheck the "Use SSL" box in the Tautulli settings. Tautulli will then connect to your Plex server directly without SSL using the address `http://LOCAL-IP-ADDRESS:32400`.
#### [Q:](frequently-asked-questions.md) My Tautulli database got corrupted: "DatabaseError: database disk image is malformed" or "sqlite3.OperationalError". <a id="general-q18"></a>
**A:** There are two ways to fix Tautulli when you get this message:
**The Easy Way**
The easiest way to fix this is to just restore an older version of the database from the backup directory. To do this:
1. Shutdown Tautulli if it is running.
2. Move or rename the current `tautulli.db`.
3. Copy the latest `backups/tautulli.backup-YYYYMMDDHHMMSS.sched.db` file to the main folder as `tautulli.db`.
4. Start Tautulli back up.
**The Long Way**
If restoring a backup won't work for you, or you want to retain as much history from your current database as possible, then the other alternative is to attempt to repair the database that you currently have. If you are using Windows or Mac OS, then you can try the steps below. Alternatively, you can try using the [SQLite command line instructions here](http://froebe.net/blog/2015/05/27/error-sqlite-database-is-malformed-solved/).
1. Backup your Tautulli database \(`tautulli.db`\) by making a copy and saving it somewhere safe.
2. Open your database with [DB Browser for SQLite](http://sqlitebrowser.org/).
3. Go to "Tools &gt; Integrity Check", then click "OK" to run `PRAGMA pragma integrity_check;` \([screenshot](https://github.com/Tautulli/Tautulli/tree/e715b0dc5c802c5223a5b103b25d2f3517ffab9b/docs/images/pragma_integrity_check.png)\). If it does not say "ok" then you need to repair your database.
4. Go to "File &gt; Export &gt; Database to SQL file..."
5. Make sure the box that says "Multiple rows \(VALUES\) per INSERT statement" is checked \([screenshot](https://github.com/Tautulli/Tautulli/tree/e715b0dc5c802c5223a5b103b25d2f3517ffab9b/docs/images/multiple_rows_per_insert.png)\).
6. Click "OK" and save the `.sql` file on your computer.
7. Go to "File &gt; Close Database".
8. Go to "File &gt; Import &gt; Database from SQL file..."
9. Select the `.sql` file you saved from step 4, and save the new file as `tautulli.db`. Do not overwrite your original file!
* If you run into an error during the above step see the note below!
10. Save the changes to the database when prompted
11. _\(Optional\)_ Go to the "Execute SQL" tab and run `pragma integrity_check;` and it should say "ok".
12. Go to "File &gt; Close Database".
13. Replace your Tautulli database \(`tautulli.db`\) file with this new one.
_Note:_ If you run into issues during step 9 above when building a new database from your exported SQL file the first thing to try would be a minimal export that _only_ saves your history and settings. To do this: 1. Follow the steps above, however during step 5 instead of selecting all tables you will want to change that to only export the following tables:
* mobile\_devices
* newsletters
* notifiers
* session\_history
* session\_history\_media\_info
* session\_history\_metadata
1. Continue running through the steps above. If you run into issues again with the minimal table list it's still possible to recover data, but the process is very involved so we ask that you contact [support in Discord](https://tautulli.com/discord) in order to proceed.
#### [Q:](frequently-asked-questions.md) Tautulli cannot read my Plex log file. <a id="general-q19"></a>
**A:** Tautulli does not require your Plex logs to function. You can add your Plex logs folder to Tautulli in order to use it as a convenient log viewer. If you are installing Tautulli in a Docker container or jail, then you will need to mount/share the Plex log folder into the Tautulli container. You must also specify the full path to the Plex logs folder \(shortcuts will not work\).
#### [Q:](frequently-asked-questions.md) Tautulli won't start due to a corrupted config file <a id="general-q20"></a>
**A:** Your `config.ini` file is corrupted. Either delete the file \(you will have to reconfigure your Tautulli settings\) or try restoring a config file from the backups folder.
#### [Q:](frequently-asked-questions.md) What data is being collected using Google Analytics? <a id="general-q21"></a>
**A:** Only basic data is being collected, and it is not user identifiable. Here is a sample of the data being collected:
```text
Data Source: server
App Name: Tautulli
App Version: v2.0.22
Install Method: git
Git Branch: master
Platform: Windows 10
Language: en-US
Encoding: UTF-8
Country: Canada # Collected by Google Analytics by default
City: Vancouver # Collected by Google Analytics by default
```
If you would like to opt-out of data collection, you can set `system_analytics = 0` in the `config.ini` file. Tautulli must be shut down when editing the file.
#### [Q:](frequently-asked-questions.md) I'm seeing an "Unable to connect to remote host because of a SSL error." message when trying to update. <a id="ssl-update"></a>
**A:** This is being caused by a combination of several different things. The initial cause is that GitHub has [disabled weak cryptographic standards](https://githubengineering.com/crypto-deprecation-notice/), preventing clients using these standards from accessing their site. This has caused many different aspects of older systems to run into issues when working on updates.
If you are on macOS, first try updating to at least 10.13.4.
The solution to most of these problems is to simply ensure you are on the latest v3 release of [Python](https://www.python.org/downloads/). If that doesn't work for you, the next thing to try is installing the latest version of [`pyOpenSSL`](https://pypi.python.org/pypi/pyOpenSSL), instructions for Windows can be found [here](frequently-asked-questions.md#windows-q1). That should allow Tautulli to talk to GitHub again and check for updates.
If you are on a `git` based installation and `git` itself runs into problems when trying to download the updates, you should make sure you are on the current version of `git` for your platform.
If after performing all of the above steps have not solved your issue please join the `#support` channel of our [Discord server](https://discord.gg/tQcWEUp) as there can be _many_ platform specific issues related to this.
#### [Q:](frequently-asked-questions.md) Does Tautulli have to be installed on the same machine as my Plex Server? <a id="install-same-machine-plex"></a>
**A:** No, Tautulli can be installed anywhere as long as it has network access to the Plex server whether that be on a local network or even a remote network.
#### [Q:](frequently-asked-questions.md) Recently added items are not showing up on the homepage. <a id="recently-added-homepage"></a>
**A:** The recently added section on the homepage is pulled directly from your Plex dashboard. The [Edit Library &gt; Advanced &gt; Include in dashboard](https://i.imgur.com/wiyT30F.png) setting must be enabled for the libraries on your Plex server.
#### [Q:](frequently-asked-questions.md) My users list is not updating and I am seeing "Status code 404" in the logs. <a id="users-list-not-updating"></a>
**A:** Your Plex Server Identifier in the Tautulli settings is mismatched with your Plex server. Please verify your server in the settings and make sure the identifier matches with the one shown by visiting `http://SERVER-IP:32400/identity`.
#### [Q:](frequently-asked-questions.md) My media info table is not loading. <a id="media-info-table-not-loading"></a>
**A:** Clear the media info table cache by going to the following URL, where `XX` is the ID number for the library.
```text
http://localhost:8181/delete_media_info_cache?section_id=XX
```
### Activity and History Logging
#### [Q:](frequently-asked-questions.md) What is the grey progress bar under the current activity? <a id="history-q2"></a>
**A:** The yellow progress bar is the current stream progress, and the grey bar is the current transcoder progress \(not the available buffer on the client device\).
#### [Q:](frequently-asked-questions.md) I can see the streams on the homepage, but nothing is being logged. <a id="history-q3"></a>
**A:** History is only logged if all those following conditions are satisfied:
* After the stream is stopped.
* If the total stream duration is longer than the "Ignore interval" you set \(Settings &gt; General &gt; Show Advanced\).
* If "Keep History" for the user is enabled \(Users &gt; Edit Mode &gt; Toggle Keep History\).
* If "Keep History" for the library is enabled \(Libraries &gt; Edit Mode &gt; Toggle History\).
If you have satisfied all the above requirements, but nothing is still being logged, then the sessions might be stuck inside the database. Go to Settings &gt; General &gt; Show Advanced button at the top &gt; Flush Temporary Sessions &gt; Flush to flush the database, and history logging should be working again.
_Note:_ If you are experiencing errors in the log, such as the [`DatabaseError: database disk image is malformed`](frequently-asked-questions.md#general-q18) error, you should fix those first _before_ attempting to flush sessions above.
#### [Q:](frequently-asked-questions.md) Do I need to keep Tautulli running to record history? <a id="history-q4"></a>
**A:** Yes. Tautulli cannot "see" your Plex activity if it isn't running, or retroactively import old history.
#### [Q:](frequently-asked-questions.md) Can Tautulli import history from before it was installed? <a id="history-q5"></a>
**A:** No, unless you had PlexWatch or Plexivity installed previously and import the database, Tautulli can only start logging history after it is installed.
Although Plex _does_ keep some information in their database, it is nowhere near detailed enough to build the level of history that Tautulli keeps, the above tools keep enough information to build partial records from.
#### [Q:](frequently-asked-questions.md) Watch history isn't showing up under "Recently Watched" on the homepage. <a id="history-q6"></a>
**A:** "Recently Watched" only shows history that is considered as "watched" \(exceed the watched percent that you specify in the settings\).
#### [Q:](frequently-asked-questions.md) After resuming a media item, it shows up as two plays in Tautulli. <a id="history-q7"></a>
**A:** Re-Enable "Group Successive Play History" in Settings &gt; General &gt; Show Advanced button.
#### [Q:](frequently-asked-questions.md) The logs keep telling me "Failed to write sessionKey XX ratingKey YY to the database. Will try again on the next pass." <a id="history-q8"></a>
**A:** Tautulli can't find your library item `YY`. You can double check if that item exists by using Tautulli and going to
```text
http://localhost:8181/info?rating_key=YY
```
If the item can't be found then you can flush the temporary sessions database in Settings &gt; General &gt; Show Advanced button at the top &gt; Flush Temporary Sessions &gt; Flush.
#### [Q:](frequently-asked-questions.md) Can I see which items in my libraries are the _least watched_? <a id="history-q9"></a>
**A:** You can find out which items have not been watched by viewing the Media Info table for the library.
#### [Q:](frequently-asked-questions.md) My concurrent streams statistic is showing an insane number! <a id="history-q10"></a>
**A:** You can try fixing your database by following the steps below:
1. Create a backup of your Tautulli database \(`tautulli.db`\) by going to Settings &gt; Import & Backups &gt; Backup Database
2. Shutdown Tautulli.
3. Open your database with [DB Browser for SQLite](http://sqlitebrowser.org/).
4. Go to the "Execute SQL" tab and run the following SQL:
```text
DELETE FROM session_history WHERE id NOT IN (SELECT id FROM session_history_metadata);
DELETE FROM session_history_media_info WHERE id NOT IN (SELECT id FROM session_history_metadata);
```
5. Go to "File &gt; Write Changes" and "File &gt; Close Database".
6. Restart Tautulli.
#### [Q:](frequently-asked-questions.md) I am seeing history entries with very long duration times. <a id="history-q11"></a>
**A:** There's a websocket bug in the recent PMS versions where streams don't send a "stop" event. Once you restart Tautulli, a stop event is triggered, and the duration is calculated from when the stream started to when Tautulli was restarted.
The only solution at the moment is to manually delete those history entries from the History tab.
#### [Q:](frequently-asked-questions.md) Why does the bandwidth show as higher than the quality? <a id="history-q12"></a>
**A:** The bandwidth shown at the bottom of an activity item is Plex's Streaming Brain _estimate_ of required bandwidth to stream the item. This is not necessarily the same as how much bandwidth will actually be _used_, but instead is the maximum required at the user's chosen bitrate. This can get quite a bit higher than the average bandwidth of the entire item due to the way that video compression works. You can read more detail on the subject and how Plex handles it in the _Bitrates and How They Matter_ section of [this support article](https://support.plex.tv/articles/227715247-server-settings-bandwidth-and-transcoding-limits/).
#### [Q:](frequently-asked-questions.md) I moved media in Plex, now Tautulli is linking to the wrong item/showing up twice! <a id="move-media"></a>
**A:** When you remove something from Plex and then later re-add it, including when you move it between libraries or recreate an entire library it can start showing up multiple times in Tautulli. This is because Tautulli bases it's history recording on the `ratingKey` provided by Plex, a unique identifier for each item in the library. When you recreate items Plex generates a new `ratingKey` for the new item... but Tautulli is still referencing the old `ratingKey` for the history it has recorded!
_Okay, so how do I fix it?_
This depends on how many items in your history you need to update to their new `ratingKey`. If you've just moved a single movie, or re-added a TV show then the simplest method is to search Tautulli's history for the old item \(either the movie, or an episode from the show\). Once you've found the item, open up the `/info` page for it and hit the Fix Match button. This will bring up a screen allowing you to search your Plex library for where the item is currently. Once you find it's new location and tell Tautulli about it, it will update all history items to the new `ratingKey`. For TV shows it will update _all_ episodes, so you just need to fix one.
If you instead recreated an entire library, you might find it easier to setup and use the [update\_all\_metadata.py](https://gist.github.com/JonnyWong16/f554f407832076919dc6864a78432db2) script, which will automate the above task for everything in your library. Note that you will likely need to manually fix some items using the above method after running this, it will print warnings about the items it was unable to match automatically.
#### [Q:](frequently-asked-questions.md) I'm seeing the same artist twice on the homepage! <a id="homepage-duplicate-artist"></a>
**A:** This is happening because the lists on the homepage display the _Track_ Artist, but uses the _Album_ Artist for grouping. Plex doesn't provide a linking between track artists and the "real" artist for Tautulli to follow to merge these entries. This means that if you have an artist individually in your library, _and_ they show up in an album of various artists, they will show twice if both are played.
#### [Q:](frequently-asked-questions.md) Why are items showing up as 127.0.0.1 for the IP address? <a id="plex-relay"></a>
**A:** If a user is unable to get a direct connection to your Plex server for whatever reason, Plex has a component called "Plex Relay" that will relay their traffic through Plex's servers, allowing them to still connect to your server. Unfortunately since they are not connecting directly, the "address" they are connecting from is the local \(`127.0.0.1`\) connection of the Plex Relay service.
For more information on this, and several potential solutions to fixing the connection issues and enabling direct access to your server, please refer to the [Accessing a Server through Relay](https://support.plex.tv/articles/216766168-accessing-a-server-through-relay/) support article from Plex.
#### [Q:](frequently-asked-questions.md) My playback stop notifications are not working. <a id="stop-notifications"></a>
**A:** By default Tautulli filters out playback stop notifications after the watched percentage is exceeded. This is to prevent double notifications \(both watched and stopped\) when a stream finishes. To disable this filtering, allowing all events to always go through, you need to enable the _Notifications & Newsletters -&gt; Show Advanced -&gt; Allow Playback Stop Notifications Exceeding Watched Percent_ setting.
#### [Q:](frequently-asked-questions.md) Can I disable history logging for a specific user/library? <a id="disable-logging"></a>
**A:** You can control which users/libraries will get logged by going to the Users or Libraries page, going into "Edit mode" and clicking on the "Toggle History" icon beside each user or library you want to enable or disable.
### Live TV
#### [Q:](frequently-asked-questions.md) Why do I suddenly have a "Live TV" library? <a id="livetv-library"></a>
**A:** This "fake" library is used to collect all the Live TV history together. If you don't want to see this then you can go to the Libraries page, click on the "Edit Mode" button, delete the library, and it will not reappear again. If in the future you want to re-enable the library, then you will need to [undelete](frequently-asked-questions.md#general-q12) the library \(`section_id=999999`\). Note that, just like any other library, deleting the Live TV library will prevent history from being recorded while it is deleted.
#### [Q:](frequently-asked-questions.md) Why don't I see the "Live TV" library? <a id="livetv-library-missing"></a>
**A:** The "Live TV" library will only show up the first time you play Live TV in Plex. If you deleted the library, then see the previous answer to add it back.
#### [Q:](frequently-asked-questions.md) I played multiple shows on Live TV but Tautulli says I only watched one show the entire time. <a id="livetv-rollover"></a>
**A:** This depends on the client you were using to watch Live TV. Some Plex clients \(e.g. Plex Web\) will update your Plex Media Server's API when Live TV rolls over into the next show. In this case Tautulli will correctly split the history into separate shows. However, some Plex clients \(e.g. Apple TV\) do not update your Plex Media Server's API so there is no way for Tautulli to know the show changed. Once this is fixed by Plex, it will automatically work correctly in Tautulli.
#### [Q:](frequently-asked-questions.md) How do I disable history logging for Live TV? <a id="livetv-disable-logging"></a>
**A:** History logging can be disabled like any other library. Go to the Libraries page, click on the "Edit Mode" button, and click on the "Toggle History" icon for the libraries you wish to disable history logging.
#### [Q:](frequently-asked-questions.md) Can I view the history for an entire TV show I watched on Live TV similar to TV shows in my own library? <a id="livetv-show-history"></a>
**A:** No, this is currently not possible. You can only view history for a single episode at a time on the info pages.
#### [Q:](frequently-asked-questions.md) How do I hide Live TV on the Graphs page? <a id="livetv-hide-graphs"></a>
**A:** Click on the graph legends to hide the series from the graphs. The graph series visibility is stored in your browser so this will need to be done for each browser that you use.
### Notifications
#### [Q:](frequently-asked-questions.md) I can't get Notifications working! Is there a magic trick? <a id="notifications-q1"></a>
**A:** To be honest: Yes. To be very honest: No. You probably forgot to enable any triggers for your notification agents. If they show with a gray bell in the list then they have no active triggers. Click on the gray bell icon next to the Notification Agent, go to the Triggers tab, and enable any desired triggers for that agent. After you checked at least one trigger and clicked on Save the bell turns satisfying orange-ish.
#### [Q:](frequently-asked-questions.md) My tests say they are successful, but the notification isn't sent and there's nothing in the logs. <a id="notifications-q2"></a>
**A:** Sometimes the browser cache will cause problems with the test notifications. Do a force refresh on the settings page \(CTRL+F5 or OPTION+Reload on Mac/Safari\), then try sending a test notification again.
#### [Q:](frequently-asked-questions.md) Can I disable notifications for a specific user/library? <a id="notifications-q3"></a>
**A:** You can control which users/libraries will send a notification by setting up a \[\[custom condition\|Custom Notification Conditions\]\] in your notification agent settings.
#### [Q:](frequently-asked-questions.md) Can I disable recently added notifications for TV Shows/Movies? <a id="notifications-q4"></a>
**A:** See previous answer.
#### [Q:](frequently-asked-questions.md) All my recently added notifications are showing `S00E01`. <a id="notifications-q5"></a>
**A:** You probably have "Group notifications for recently added TV Shows or Music" checked in the notification settings. No Season/Episode or Album/Track metadata will be available with this setting enabled.
#### [Q:](frequently-asked-questions.md) Why are posters not showing up in my notifications? <a id="notifications-q7"></a>
**A:** Posters are only available for notification agents which have the "[Include Poster Image](https://github.com/Tautulli/Tautulli/tree/e715b0dc5c802c5223a5b103b25d2f3517ffab9b/docs/images/include_poster_image.png)" or "[Include Rich Metadata Info](https://github.com/Tautulli/Tautulli/tree/e715b0dc5c802c5223a5b103b25d2f3517ffab9b/docs/images/include_rich_metadata_info.png)" options in the settings, with the exception of Email. If you are using any of those agents, make sure you have Imgur upload setup \(see the next question\), and the poster will automatically be included with notification. For Email, make sure you have "[Enable HTML Support](https://github.com/Tautulli/Tautulli/tree/e715b0dc5c802c5223a5b103b25d2f3517ffab9b/docs/images/enable_html_support.png)" checked in the Email settings, then you may use an HTML image tag to add the poster to body of your notification, for example: `<img src="{poster_url}" height="225" width="150">`
#### [Q:](frequently-asked-questions.md) How do I set up Imgur for notification posters? <a id="imgur"></a>
**A:** First you must create an [Imgur account](https://imgur.com/register), then register a new application [here](https://api.imgur.com/oauth2/addclient). Enter an Application Name, Email, and Description, and select the option "OAuth 2 authorization without a callback URL". You will receive a new `client_id` for your application. Enter this value for the "Imgur Client ID" in the Tautulli settings.
#### [Q:](frequently-asked-questions.md) Facebook notifications are telling me "Insufficient permission to post to target on behalf of the viewer". <a id="notifications-q9"></a>
**A:** When allowing Tautulli to access your Facebook account, you must select `Public` or `Friends` for the app visibility permissions. Selecting `Only Me` will not work.
#### [Q:](frequently-asked-questions.md) Facebook notifications are telling me "Some of the aliases you requested do not exist". <a id="notifications-q10"></a>
**A:** Your Facebook Group ID is incorrect. If your group has a named URL, you'll need to find the ID number using a tool like [lookup-id.com](https://lookup-id.com). Your group will need to be open in order for that tool to work. You can change the group back to closed/secret once you have the group ID number.
#### [Q:](frequently-asked-questions.md) I'm seeing a "The PyCryptodome library is missing." message! <a id="notifications-pycryptodome"></a>
**A:** The PyCryptodome library is required to encrypt notifications sent to your Remote Android App. Installation instructions can be found in [their documentation](http://pycryptodome.readthedocs.io/en/latest/src/installation.html#installation).
#### [Q:](frequently-asked-questions.md) Notifications are sending the wrong text/sending the default text. <a id="notifications-text-ignored"></a>
**A:** When Tautulli encounters custom notification text that it fails to parse, it will fall back to the default text so the notification can still be sent out. Generally this is due to using an invalid `{parameter}` in the text that doesn't exist in Tautulli, or doesn't exist for the specific media item. The error logs will tell you the exact reason your custom text failed to parse, allowing you to correct the mistake.
For example:
```text
Tautulli NotificationHandler :: Unable to parse parameter u'foobar' in notification body. Using fallback.
```
#### [Q:](frequently-asked-questions.md) How do I override the Python version in a script? <a id="notifications-override-python"></a>
**A:** There are two aspects you might want to change: 1. The `PYTHONPATH` environment variable
* Tautulli will enhance the `PYTHONPATH` variable with the path of its own bundled libraries, allowing scripts to use any of the bundled libraries without the user needing to have installed them system wide. However, this means that the bundled versions take priority. If you want to disable this feature simply prepend `nopythonpath` to the script arguments.
1. The `python` interpreter used.
* Normally scripts ending in `.py` are executed with `python`. If you want to change this you can prepend the interpreter in front of the script arguments. Currently allowed overrides: `python2`, `python3`, `python`, `pythonw`, `php`, `ruby`, `perl`.
Examples:
* If you wanted to run a Python 3 script, _without_ the `PYTHONPATH` changes from Tautulli you would set the arguments to `nopythonpath python3 the other arguments`.
* If you wanted to run a Python 2 script with python2 instead of python and _use_ the bundled libraries from Tautulli, you would set the arguments to `python2 the other arguments`.
#### [Q:](frequently-asked-questions.md) My recently added notifications are not sending and the logs say "Not notifying again". <a id="notifications-not-notifying-again"></a>
**A:** Same as the FAQ answer [here](frequently-asked-questions.md#move-media).
### Newsletters
#### [Q:](frequently-asked-questions.md) I enabled a library but it's not showing in the newsletter! <a id="newsletter-recently-added-library"></a>
**A:** Newsletters use Plex's Recently Added list in order to generate the content for the Newsletter, as such if you have unchecked ["Include in dashboard"](https://github.com/Tautulli/Tautulli/tree/e715b0dc5c802c5223a5b103b25d2f3517ffab9b/docs/images/include_in_dashboard.png) in the libraries Advanced settings _in Plex_, then it won't show in the Newsletter.
#### [Q:](frequently-asked-questions.md) Gmail is giving me a "Message clipped" message! <a id="message-clipped"></a>
**A:** When an email message exceeds a certain size in Gmail it is automatically clipped, requiring you to click a "View entire message" link in order to see the full contents. In order to get the Newsletters to render properly in mail clients they have to be rather complex, leading to this check triggering. Unfortunately there is nothing that can be done about this as reducing the complexity leads to issues with mail clients breaking the rendering of the Newsletter. If you have enabled Self Hosted newsletters a link to view the full message is always the first thing in the message and should be visible no matter what.
#### [Q:](frequently-asked-questions.md) How do I edit the date format? <a id="newsletter-date-format"></a>
**A:** Newsletters follow the date format specified under Settings -&gt; General -&gt; Date Format.
#### [Q:](frequently-asked-questions.md) Images are not showing up in my newsletter emails. <a id="newsletter-missing-images"></a>
**A:** The first thing to check is that your image hosting settings are correct. There should be **no** orange warning text under any of the related settings.
If you have enabled self hosted newsletters, or are using self-hosted images, ensure that your Public Tautulli Domain setting under Web Interface is correct.
If you are using Imgur as your image hosting you will likely run into API limits and some images may be missing. It is recommended to use Cloudinary if you are using an external image hosting service.
If you have checked the above and images in the newsletter are working for some users but not others, we have found that some email clients are buggy and do not display the images in the newsletter. Tautulli doesn't support clients that exhibit these issues, if you are interested in supporting these clients please use the [Custom Template](frequently-asked-questions.md#newsletter-custom-template) functionality. Known problematic clients are the default Mail.app on iOS and some Microsoft Outlook versions.
#### [Q:](frequently-asked-questions.md) I want to customize the newsletter. <a id="newsletter-custom-template"></a>
**A:** If you want to change something about how the Newsletters look, such as a custom logo, or changing the text, you need to create a folder containing your templates and point Tautulli at it.
It's recommended to copy the current template to start off with. Download [recently\_added.html](https://github.com/Tautulli/Tautulli/raw/master/data/interfaces/newsletters/recently_added.html) to a folder of your choice. You can then edit the `recently_added.html` file to match what you would like the newsletters to look like. The templating language in use here is [Mako](http://www.makotemplates.org/).
_Note: Your folder can be located anywhere Tautulli has access to, but the file **must** be named `recently_added.html`._
After you have that set up, you need to tell Tautulli to use the new template. Do this by filling in the **full** path to the folder you created above in the Settings &gt; Notifications & Newsletters &gt; Show Advanced button &gt; [Custom Newsletter Template Folder](https://github.com/Tautulli/Tautulli/tree/e715b0dc5c802c5223a5b103b25d2f3517ffab9b/docs/images/newsletter_custom_template_folder.png) option.
You can view all the raw JSON data available to be used in the newsletter template by adding `&raw=true` to the newsletter preview URL. For example:
```text
http://localhost:8181/newsletter_preview?newsletter_id=1&raw=true
```
### Windows
#### [Q:](frequently-asked-questions.md) I enabled HTTPS but received a warning that the pyOpenSSL module is missing. How do I fix this? <a id="windows-q1"></a>
**A:** The pyOpenSSL module is not bundled with Python. Run the following in the command line to install it.
```text
python -m pip install pyopenssl
```
If that doesn't work:
1. Download the latest version of pyOpenSSL [here](https://pypi.python.org/pypi/pyOpenSSL#downloads) \(the source `.tar.gz` file\) and save it to `C:\`.
2. Run `python -m pip install C:\pyOpenSSL-17.5.0.tar.gz`
If you have installed Python into a different directory or saved pyOpenSSL to somewhere else, you have to modify the above command in step 2 accordingly.
#### [Q:](frequently-asked-questions.md) Tautulli keeps telling me "You're running an unknown version of Tautulli." <a id="windows-q2"></a>
**A:** You most likely forgot the following step when installing Git for Windows. Run the Git installer again, making sure you include the step below.
> Run the installer, select all the defaults except for the section called "Adjusting your PATH environment" - here select **"Git from the command line and also from 3rd-party software"**.
_Note: If you are seeing this and aren't running Windows, it's likely you are hitting the_ [_SSL error_](frequently-asked-questions.md#ssl-update) _FAQ entry!_
#### [Q:](frequently-asked-questions.md) When trying to update, the logs say "Invalid update data, update failed." <a id="windows-q3"></a>
**A:** Delete the `update` folder inside the Tautulli directory and try updating again.
#### [Q:](frequently-asked-questions.md) I am getting a "DatabaseError: file is encrypted or is not a database"! <a id="windows-q4"></a>
**A:** This seems to be a version mismatch with the packaged Python sqlite3 libraries. Download the latest "Precompiled Binaries for Windows" from [here](https://www.sqlite.org/download.html) and place the extracted `sqlite3.dll`s file in `C:\Python27\DLLs`.
#### [Q:](frequently-asked-questions.md) How can I run Tautulli without the command prompt staying open? <a id="windows-q5"></a>
**A:** Please refer to the instructions under the [Install as a daemon](https://github.com/Tautulli/Tautulli/tree/e715b0dc5c802c5223a5b103b25d2f3517ffab9b/docs/Install-as-a-daemon/README.md#windows) wiki.
#### [Q:](frequently-asked-questions.md) The command prompt just flashes open then closes immediately when starting Tautulli. <a id="windows-q6"></a>
**A:** Start Tautulli manually from the command prompt to view the error. Open the Windows command prompt then running the following command. Fill in `C:\path\to\tautulli` to match the path where Tautulli is installed.
```text
& 'C:\Program Files\Python38\python.exe' "C:\path\to\tautulli\Tautulli.py"
```
Then refer to [this FAQ](frequently-asked-questions.md#general-q1) above.
### OSX
#### [Q:](frequently-asked-questions.md) When trying to update, the logs say "Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo." <a id="osx-q1"></a>
**A:** Run the following command in the terminal \(according to this [Stackoverflow answer](http://stackoverflow.com/a/26772631)\):
```text
sudo xcode-select --install
```
#### [Q:](frequently-asked-questions.md) I'm getting a `ValueError: unknown locale: UTF-8` message <a id="osx-unknown-locale"></a>
**A:** If you are seeing this error when trying to start Tautulli the simple fix is to add these lines to your `~/.bash_profile` file:
```bash
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
```
To make this change active you can either restart Terminal, or run the following:
```bash
source ~/.bash_profile
```
#### [Q:](frequently-asked-questions.md) How do I get rid of the Python rocket icon in my dock? <a id="osx-python-dock"></a>
**A:** Unfortunately, the Python dock icon is required when the menu bar icon is enabled and you are running Tautulli using Python directly. You can either disable the menu bar icon, or reinstall Tautulli using the macOS pkg instead \(refer to this \[\[wiki page\|Upgrading to Python 3 \(Tautulli v2.5\)\#windows--macos\]\] for details\). The pkg install will not show any dock icons regardless if the menu bar icon is enabled or disabled.
### QNAP
#### [Q:](frequently-asked-questions.md) How do I set the Plex Logs Folder on QNAP? <a id="qnap-q1"></a>
**A:** When running a Plex Media Server on a QNAP, Plex writes logs into a non-shared location with the `/share/.qpkg` path. Tautulli cannot be pointed to this location and you need to create a symbolic link.
1. SSH into your QNAP device.
2. Create a directory in a shared folder that will be accessible:
```text
mkdir /share/MD0_DATA/PATH/TO/VALID/SHARE/FOLDER/PlexLogs
```
3. Create symbolic link between unshared log folder and new shared folder:
```text
ln -s "/share/MD0_DATA/.qpkg/PlexMediaServer/Library/Plex Media Server/Logs/" "/share/MD0_DATA/PATH/TO/VALID/SHARE/FOLDER/PlexLogs"
```
4. Your new location is now usable in Settings &gt; Plex Media Server &gt; Show Advanced button &gt; Logs Folder:
```text
\\<ipaddress>\PATH\TO\VALID\SHARE\FOLDER\PlexLogs
```

View file

@ -0,0 +1,26 @@
# 3rd Party APIs Guide
## 3rd Party APIs:
* [Imgur](3rd-party-apis-guide.md#imgur)
* [Cloudinary](3rd-party-apis-guide.md#cloudinary)
* [MaxMind](3rd-party-apis-guide.md#maxmind)
## [Imgur](3rd-party-apis-guide.md) <a id="imgur"></a>
1. Sign up for an [Imgur account](https://imgur.com/register). Make sure to verify the account.
2. Register a [new application](https://api.imgur.com/oauth2/addclient).
3. Enter an **Application Name**, **Email**, **Description**, and select the option "_OAuth 2 authorization without a callback URL_", then click "_Submit_".
4. Copy the **Client ID** and fill in the Tautulli setting.
## [Cloudinary](3rd-party-apis-guide.md) <a id="cloudinary"></a>
1. Sign up for a [Cloudinary account](https://cloudinary.com/users/register/free). Make sure to verify the account.
2. From the Cloudinary dashboard, copy the **Cloud Name**, **API Key**, and **API Secret** and fill in the Tautulli settings.
## [MaxMind](3rd-party-apis-guide.md) <a id="MaxMind"></a>
Note: The GeoLite2 database is not required for Tautulli v2.2.3 and above. Geolocation lookup is done via Plex.tv.
Legacy instructions for pre-v2.2.3 1. Sign up for a \[MaxMind account\]\(https://www.maxmind.com/en/geolite2/signup\). Make sure to verify the account. 1. Go to your \*Account\*, then \*Services\* &gt; \*My License Key\* in the side menu, then click "\*Generate New License Key\*". 1. Enter a \*\*License key description\*\*, and select "\*No\*" for "\*Will this key be used for GeoIP Update?\*", then click "\*Confirm\*". 1. Copy the \*License Key\* and fill in the Tautulli setting.

View file

@ -0,0 +1,63 @@
# Custom Notification Conditions
## Overview
Tautulli allows you to define conditions that determine whether or not your Notifications will actually be sent.
The conditions are used to _**allow**_ notifications through. For example:
* Allow notifications through if the `Username` `is` `alice`.
* Allow notifications through if the `Library Name` `is not` `4K Movies`
## Single conditions
The simplest use case is a single condition, allowing you to do things like not show Recently Added notifications for a specific library, or watched notifications for a specific user.
### Excluding a specific user
![image](../.gitbook/assets/excluding_specific_user.png)
### Excluding a specific Library
![image](../.gitbook/assets/excluding_specific_library.png)
### Custom Condition Logic
By default Tautulli uses `AND` to combine multiple conditions together, meaning that all conditions must evaluate to true in order for the notification to send. If you need more complex logic than that you can customize this in the _Condition Logic_ setting.
### Warning on `is not`
Don't try to use multiple `is not` clauses for the same parameter and join them together with an `OR`! This will simply end up with the combination evaluating to `True` every single time.
For example let's say you have this setup: ![image](https://user-images.githubusercontent.com/427137/41248058-a358bde4-6d64-11e8-8c5f-d2153bdf4998.png)
* Play a song from `Music A`:
```text
{1} Library Name is not Music A = False
{2} Library Name is not Music B = True
Condition Logic = {False} or {True} = True = Notification is sent
```
* Play a song from `Music B`:
```text
{1} Library Name is not Music A = True
{2} Library Name is not Music B = False
Condition Logic = {True} or {False} = True = Notification is sent
```
If you want to use `is not` for multiple values simply put both values in the same value list within Tautulli: ![image](https://user-images.githubusercontent.com/427137/41247785-fa722e4a-6d63-11e8-9eae-cc0d07e6b2ad.png)
## Conditions and Triggers
Conditions apply to the entire notification agent, this means that if you want to have some Triggers have one condition \(Recently Added limited by library\) and other Triggers limited by a different condition \(Watched wasn't a specific user\) you need to add different Notification Agents for the different triggers. Tautulli makes this simple to setup by providing a Duplicate button on each Notification Agent's dialog.
### ⚠️ Available properties
Note: Not all properties apply to all triggers!
If you open the list of parameter descriptions the sections will tell you when the properties are available for conditions, but there is nothing in the interface that will prevent you from setting things up incorrectly!
For example, the `{username}` property is only available for things related to a Stream such as the Watched or Playback triggers. It is _not_ available for things that have no stream details, such as the Recently Added trigger. If you set up a condition using a property that isn't available it's likely your notifications won't ever send!

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,256 @@
# Notifications Agents Guide
## Notification Agents:
* [Boxcar](notification-agents-guide.md#boxcar)
* [Browser](notification-agents-guide.md#browser)
* [Discord](notification-agents-guide.md#discord)
* [Email](notification-agents-guide.md#email)
* [Facebook](notification-agents-guide.md#facebook)
* [GroupMe](notification-agents-guide.md#groupme)
* [Growl](notification-agents-guide.md#growl)
* [Hipchat](notification-agents-guide.md#hipchat)
* [IFTTT](notification-agents-guide.md#ifttt)
* [Join](notification-agents-guide.md#join)
* [Kodi](notification-agents-guide.md#xbmc)
* [macOS Notification Center](notification-agents-guide.md#osx)
* [MQTT](notification-agents-guide.md#mqtt)
* [Notify My Android](notification-agents-guide.md#nma)
* [Plex Home Theater](notification-agents-guide.md#plex)
* [Plex Android / iOS App](notification-agents-guide.md#plexmobileapp)
* [Prowl](notification-agents-guide.md#prowl)
* [Pushbullet](notification-agents-guide.md#pushbullet)
* [Pushover](notification-agents-guide.md#pushover)
* [Script](notification-agents-guide.md#scripts)
* [Slack](notification-agents-guide.md#slack)
* [Tautulli Remote Android App](notification-agents-guide.md#androidapp)
* [Telegram](notification-agents-guide.md#telegram)
* [Twitter](notification-agents-guide.md#twitter)
* [Webhook](notification-agents-guide.md#webhook)
* [Zapier](notification-agents-guide.md#zapier)
## [Browser](notification-agents-guide.md) <a id="browser"></a>
1. Click on `Allow Notifications` and give permission for Tautulli to send notifications through your browser.
## [Boxcar](notification-agents-guide.md) <a id="boxcar"></a>
1. Go to the Settings page in your Boxcar app.
2. Copy the **Access Token** and fill in the Tautulli setting.
## [Discord](notification-agents-guide.md) <a id="discord"></a>
1. Go to Discord, and click on **Edit Channel** for the channel where you want the notifications to be sent.
2. Go to the **Webhooks** tab and click on **Create Webhook**.
3. Give your webhook bot a **Name** and **Icon**. This can be changed in the Tautulli settings instead if you wish.
4. Copy the **Webhook URL** and fill in the Tautulli setting.
## [Email](notification-agents-guide.md) <a id="email"></a>
* **Note:** Some anti-virus software have "Email protection" which may prevent sending emails via SMTP from a script. This will either need to be disabled or add an exception for Tautulli to send emails.
### Gmail
* **Note:** If you use 2-factor authentication, then you will need to generate an app password [here](https://security.google.com/settings/security/apppasswords).
* **Note:** If you don't use 2-factor authentication, you may need to allow less secure apps to access your account. See Option 2 [here](https://support.google.com/accounts/answer/6010255?hl=en&ref_topic=2401957).
```text
SMTP Server: smtp.gmail.com
SMTP Port: 587 or 465
SMTP User: YourEmail@gmail.com or Username
SMTP Password: Your Gmail password or app password
Encryption: TLS/STARTTLS (587) or SSL/TLS (465)
```
### Outlook.com
* **Note:** If you use 2-factor authentication, then you will need to generate an app password [here](https://account.live.com/proofs/AppPassword).
```text
SMTP Server: smtp.office365.com
SMTP Port: 587
SMTP User: YourEmail@outlook.com
SMTP Password: Your Outlook password or app password
Encryption: TLS/STARTTLS (587)
```
## [Facebook](notification-agents-guide.md) <a id="facebook"></a>
Facebook has blocked all non-approved applications from posting to a group programmatically. Although Tautulli shouldn't be against their terms, they are refusing to approve any app that can do this.
There only currently known workaround is that Zapier also allows posting to Facebook, see [their agent guide](https://github.com/Tautulli/Tautulli/tree/e715b0dc5c802c5223a5b103b25d2f3517ffab9b/docs/Notification-Agents-Guide/README.md#zapier) for how to set this up. See [here](https://i.imgur.com/rcWtoZk.png) for an example Facebook configuration within Zapier.
Old, non-working instructions \[This script\]\(https://gist.github.com/spuniun/56624e1464c621c91e52f88e03321582\) by \[@spuniun\]\(https://github.com/spuniun\) could be used to post directly, however, Facebook has started banning accounts using it so it has been removed from the recommended methods. See the \[Custom Scripts\]\(Custom-Scripts\) page for help setting it up. \*\*Note:\*\* Facebook has \[redone their app approval process\]\(https://developers.facebook.com/blog/post/2018/05/01/enhanced-developer-app-review-and-graph-api-3.0-now-live/\), as such \*\*all\*\* apps \_must\_ go through the approval process fully before they will work again. To work around this you can send notifications via email to the group's secret email address from an account that is in the group. \*\*Note:\*\* As of March 2018, all new Facebook apps require HTTPS for authorization. If Tautulli is not running with HTTPS, the easiest method would be to check "Enable HTTPS" under the Web Interface tab \(show advanced\). This can be disabled after authorizing with Facebook. 1. Go to \[Facebook Developers\]\(https://developers.facebook.com/apps\) and click \`Add a New App\`. 1. Click Add Product on the left, then click \`Set Up\` for Facebook Login. 1. Skip the Quickstart and go to Facebook Login &gt; Settings on the left, and fill in the \*\*Valid OAuth redirect URIs\*\* with the one provided by Tautulli. 1. Go to Settings &gt; Basic on the left, and fill in a \*\*Privacy Policy URL\*\*. 1. On the same page, get your \*\*App ID\*\* and \*\*App Secret\*\* and fill in the respective Tautulli settings. 1. Go to App Review on the left, and toggle your app to toggle "Make Public" to \`Yes\`. 1. Click the \`Request Authorization\` button in Tautulli to allow it to access your Facebook account. Make sure the app visibility is set to \`Public\` or \`Friends\` \(\`Only Me\` will not work\). 1. Copy the \*\*Access Token\*\* and fill in the Tautulli setting if it is not filled in automatically. 1. Get your \*\*Group ID\*\* from the URL of your group page \(e.g. \`https://www.facebook.com/groups/\`\) and fill in the Tautulli setting. If you have customized the URL and no longer have easy access to the Group ID, see \[this answer\]\(https://stackoverflow.com/questions/8957340/how-do-i-find-my-facebook-group-id\) for how to obtain it. \_Note:\_ You should \_only\_ put the ID in the setting for Tautulli, not the full URL.
## [GroupMe](notification-agents-guide.md) <a id="groupme"></a>
1. Go to [GroupMe Developers](https://dev.groupme.com) and click **Access Token** at the top. Copy the token and fill in the Tautulli setting.
2. Go to the **Bots** tab at the top and click **Create Bot**.
3. Select the group chat where you want the notifications to be sent, give your bot a **Name** and **Avatar**, and click `Submit`. All other fields can be left at their default values.
4. Copy the **Bot ID** and fill in the Tautulli setting.
## [Growl](notification-agents-guide.md) <a id="growl"></a>
1. Open Growl and go to the General tab to make sure Growl is turned `On` and running.
2. Optional: Go to the Security tab to set up a **Password**. Check "Allow network notifications" if Growl is running on a separate machine than Tautulli.
3. Fill in the **Host** for the machine running Growl \(e.g. `localhost` or `192.168.0.100`\) in the Tautulli settings.
4. Fill in the **Password**, if required, in the Tautulli settings.
## [Hipchat](notification-agents-guide.md) <a id="hipchat"></a>
1. Go to [Hipchat Integrations](https://www.hipchat.com/addons/), select the room where you want the notifications to be sent, and click **Build your own integration**.
2. Give your integration a **Name** and click `Create`.
3. Copy the **Integration URL** and fill in the Tautulli setting.
## [IFTTT](notification-agents-guide.md) <a id="ifttt"></a>
1. Go to IFTTT and set up your [Webhooks](https://ifttt.com/maker_webhooks) service.
2. Click on **Documentation** to get your **Webhook Key** and fill in the Tautulli setting.
3. Create a [New Applet](https://ifttt.com/create), with "this" as "Webhooks", and the trigger "Receive a web request".
4. Fill in the **Event Name** with the one that matches the Tautulli setting.
* **Tip:** You can create different IFTTT events \(e.g. `tautulli_play`, `tautulli_stop`, `tautulli_created`, etc.\) by adding `{action}` to the Event Name in Tautulli \(e.g. `tautulli_{action}`\).
5. Select "that" as whichever service you want.
6. Fill in the settings of your service by adding the ingredients `Value1`, `Value2`, and `Value3`.
* `Value1` will be the subject line in your notification text settings.
* `Value2` will be the body text in your notification text settings.
* \(Optional\) `Value3` can be anything you select \(e.g. Poster URL\).
## [Join](notification-agents-guide.md) <a id="join"></a>
1. Go to [Join App](https://joinjoaomgcd.appspot.com), and click on `Join API`, then `Show`.
2. Copy the **API Key** and fill in the Tautulli setting.
## [Kodi](notification-agents-guide.md) <a id="xbmc"></a>
1. From within Kodi, go to Settings &gt; Service settings &gt; Control, and make sure "Allow remote control via HTTP" is checked.
2. Optional: Set the **Port**, **Username**, and **Password** for the Kodi Webserver. The default port is `8080`.
3. Enter in the **Host Address** for the machine running Kodi \(e.g. `http://localhost:8080`\) in the Tautulli settings.
4. Fill in the **Username** and **Password**, if required, in the Tautulli settings.
## [macOS Notification Center](notification-agents-guide.md) <a id="osx"></a>
**Note:** macOS Notification Center notifications will only work on the machine where Tautulli is installed.
1. Fill in the path to your Tautulli application. The default is `/Applications/Tautulli`.
2. Click the `Register App` button to register Tautulli with the Notification Center.
## [MQTT](notification-agents-guide.md) <a id="mqtt"></a>
1. Fill in the settings from your MQTT broker.
## [Notify My Android](notification-agents-guide.md) <a id="nma"></a>
1. Go to [Notify My Android](https://notifymyandroid.appspot.com/account.jsp) and click `Generate New Key`.
2. Copy the **API Key** and fill in the Tautulli setting.
## [Plex Home Theater](notification-agents-guide.md) <a id="plex"></a>
**Note:** Plex Home Theater notifications only work with [OpenPHT](https://forums.plex.tv/discussion/264209/release-openpht-1-8-0/p1) or [RasPlex](https://forums.plex.tv/discussion/264208/release-rasplex-1-8-0/p1).
1. From within OpenPHT/RasPlex, go to Preferences &gt; System &gt; Services, and make sure "Allow remote control via HTTP" is checked.
2. Enter in the **Host Address** for the machine running OpenPHT or RasPlex with the port `3005` \(e.g. `http://localhost:3005`\).
3. Fill in the **Username** and **Password**, if required, in the Tautulli settings.
## [Plex Android / iOS App](notification-agents-guide.md) <a id="plexmobileapp"></a>
**Note:** Plex Pass is required to send notifications to the Plex mobile apps.
1. Open the Plex Android or iOS app, go to Settings &gt; Notifications and enable the following notifications matching the triggers in the Tautulli notification agent:
1. **New Content Added to Library** - Tautulli trigger: Recently Added
* Note: Make sure to _uncheck_ all libraries for the server connected to Tautulli.
2. **Playback Started** - Tautulli trigger: Playback Start
* Note: Make sure to _uncheck_ the server and all users connected to Tautulli.
3. **New Devices** - Tautulli trigger: User New Device
* Note: Make sure to _uncheck_ the server connected to Tautulli.
2. Send a Test Notification from Tautulli and you should receive one test notification _for each notification_ you have enabled in the Plex App.
**Note:** The user\(s\) receiving the notifications must have notifications enabled for the matching Tautulli triggers in their Plex mobile app.
**Note:** The user\(s\) must _uncheck_ all the servers, libraries, and users connected to Tautulli in the Plex mobile app settings otherwise they may receive duplicate notifications from Plex and Tautulli. Use the [custom notification agent conditions](https://github.com/Tautulli/Tautulli/tree/e715b0dc5c802c5223a5b103b25d2f3517ffab9b/docs/Custom-Notification-Conditions/README.md) in Tautulli to filter the notifications instead.
**Note:** Push notifications do not need to be enabled in your Plex server Settings &gt; General page. However, you may leave it enabled to receive the other notifications types from Plex \(new server shared with you, new item on deck, database corruption detected, database backed up, etc.\).
## [Prowl](notification-agents-guide.md) <a id="prowl"></a>
1. Go to [Prowl](https://www.prowlapp.com/api_settings.php), and generate a new API key by clicking `Generate Key`.
2. Copy the **API Key** and fill in the Tautulli Setting.
## [Pushbullet](notification-agents-guide.md) <a id="pushbullet"></a>
1. Go to [Pushbullet Account Settings](https://www.pushbullet.com/#settings/account), and click `Create Access Token`.
2. Copy the **Access Token** and fill in the Tautulli Setting.
## [Pushover](notification-agents-guide.md) <a id="pushover"></a>
1. Go to Pushover, and [Create a New Application](https://pushover.net/apps/build).
2. Give your application a **Name** and **Icon**, and click `Create Application`.
3. Copy the **API Token** and fill in the Tautulli Setting.
4. Go back to the [Pushover homepage](https://pushover.net).
* If you want to send notifications to yourself, copy your **User Key** and fill in the Tautulli setting.
* If you want to send notifications to a group, go to [Create a New Group](https://pushover.net/groups/build). Copy the **Group Key** and fill in the Tautulli setting.
## [Script](notification-agents-guide.md) <a id="scripts"></a>
* Please see the \[\[Custom Scripts Wiki Page\|Custom Scripts\]\].
## [Slack](notification-agents-guide.md) <a id="slack"></a>
1. Go to Slack, and create a new [Incoming Webhook](https://my.slack.com/services/new/incoming-webhook).
2. Select the slack channel where you want the notifications to be sent, and click \`Add Incoming Webhooks integration.
3. Copy your **Webhook URL** and fill in the Tautulli setting.
4. Scroll down to Integration Settings, and give your integration a **Name** and **Icon**. This can be changed in the Tautulli settings instead if you wish.
## [Tautulli Remote Android App](notification-agents-guide.md) <a id="androidapp"></a>
* Please see the [Tautulli Remote Wiki](https://github.com/Tautulli/Tautulli-Remote/wiki/Registering-a-Tautulli-server) on how to register your [Tautulli Remote Android App](https://play.google.com/store/apps/details?id=com.tautulli.tautulli_remote).
## [Telegram](notification-agents-guide.md) <a id="telegram"></a>
1. Message [`@BotFather`](https://telegram.me/BotFather) on Telegram with the command `/newbot` to create a new bot.
2. Follow the instructions to give your bot a display name and a bot username.
3. Copy the **Bot Token** and fill in the Tautulli setting.
**Sending Messages to Yourself**
1. Create a new chat with your bot.
2. Message [`@IDBot`](https://telegram.me/myidbot) on Telegram with the command `/getid` to get your **Chat ID**.
3. Copy the **Chat ID** and fill in the Tautulli setting.
**Sending Messages to a Group**
1. Create a new group chat with your bot and [`@IDBot`](https://telegram.me/myidbot).
2. Message [`@IDBot`](https://telegram.me/myidbot) in the group with the command `/getgroupid` to get your **Group ID**.
3. Copy the **Group ID** and fill in the Tautulli setting. Don't forget the hyphen \(`-`\) in the Group ID.
**Sending Messages to a Channel**
1. Create a new Public Channel in Telegram.
2. Go to Manage Channel and add your bot to the Administrators.
3. Add a "Link" to your channel. This is your channel username \(e.g. `t.me/<CHANNEL_USERNAME>`\).
4. Copy the **Channel Username** and fill in the Tautulli setting. Don't forget the at sign \(`@<CHANNEL_USERNAME>`\) in the Channel Username.
## [Twitter](notification-agents-guide.md) <a id="twitter"></a>
1. Go to [Twitter Apps](https://apps.twitter.com) and click `Create New App`.
2. Give your app a **Name**, **Description**, and **Website**. A valid website is not required.
3. Go to the "Keys and Access Tokens" tab to get your **Consumer Key** and **Consumer Secret**, and fill in the respective Tautulli settings.
4. Click on `Create my access token` to get your **Access Token** and **Access Token Secret**, and fill in the respective Tautulli settings.
## [Webhook](notification-agents-guide.md) <a id="webhook"></a>
1. Find the **Webhook URL** for the service you are going to be using and fill in the Tautulli setting. Some examples:
* Discord: [Intro to Webhooks](https://support.discordapp.com/hc/en-us/articles/228383668-Intro-to-Webhooks)
* Slack: [Incoming Webhooks](https://api.slack.com/incoming-webhooks)
2. Pick the appropriate HTTP request method for your **Webhook Method**. Generally, you want to select `POST` here.
3. Customize the raw **JSON Data** sent to the webhook on the **Data** tab.
## [Zapier](notification-agents-guide.md) <a id="zapier"></a>
1. Go to Zapier and [`Make a Zap`](https://zapier.com/app/editor).
2. For "When this happens...", Choose App as "Webhooks by Zapier", and Choose Trigger as "Catch Hook", then click `Continue`.
3. Copy the **Custom Webhook URL** and fill in the Tautulli setting, then click `Continue` in Zapier.
4. Click `Test & Review` in Zapier, then click the `Send Test Data` button in Tautulli. A new hook will show up in Zapier with test data from Tautulli. Once everything is okay, click `Done Editing`.
5. For "Do this...", Choose App as whichever service you want, and follow the instructions to connect the service.
6. Set Up Template using the values `Body`, `Subject`, `Action`, `Provider Name`, `Provider Link`, `Plex URL`, and `Poster URL`. These values will all be filled in by Tatutulli.
7. Make sure your Zap is turned `on` in the top right.