Jarvis is a simple and easy to setup media stack that can be deployed on any unix based system that has Docker installed within a few minutes and offer a near feature complete self-hosted media system:
- Cadvisor - Docker metrics
- Grafana - Monitoring Dashboard
- Homer - Home dashboard
- Node Exporter - System metrics
- Overseerr - Content requesting
- Plex - Content streaming
- Prometheus - Metrics Database
- Tautulli - Plex Metrics
These are the required libraries/packages to run this stack:
curl -sSL https://jarvis.nuro.dev | sh
For the most part, once the stack has been setup and deployed there are 2 key configuration steps that needs to be done.
🏡 Homer
The first step is to modify the Homer config file. This can be found under config/homer/config.yml
.
In here you can modify your home dashboard with whatever links or customization you like. A number of service links have already been provided, however there is one key configration requirement and that is to modify the URL's set for each service to be the domain of your choice.
📫 Email (Optional)
To generate a certificate from Let's Encrypt, an email address is required. As such in the Caddyfile
a placeholder email
global variable has been provided but commented out. Uncomment the variable by removing the #
and entering your email address.
You can also optionally modify the acme_ca
URL, which specifies the URL to the ACME CA's directory. However it is recommended to leave this to the default Let's Encrypt production endpoint unless you require the use of the Let's Encrypt staging or development endpoints.
Container | Description | URL |
---|---|---|
Cadvisor | Docker Metrics | cadvisor.ip_address |
Grafana | Monitoring Dashboard | monitoring.ip_address |
Homer | Home Dashboard | ip_address |
Node Exporter | System Metrics | node_exporter.ip_address |
Overseerr | Content Requesting | request.ip_address |
Plex | Content Streaming | watch.ip_address |
Prometheus | Metrics Database | prometheus.ip_address |
Tautulli | Plex Metrics | tautulli.ip_address |
There are some work-in-progress optional branches that trade some services for alternatives.
The most recent of such branches has been the jellyfin
branch which replaces the plex
and tautulli
services with Jellyfin which is a completely self-hosted media server, compared to Plex which still requires on services hosted by Plex themselves.
To get started using the jellyfin
branch, use the following command in place of the one above:
curl -sSL https://jarvis.nuro.dev/jellyfin | sh
Or check the jellyfin
branch for more details.
- Add GitHub Actions CI for testing.
- Fix Homer service URL's so they're based on the
DOMAIN
environment vairable. - Add
basicauth
to some metric endpoints via the Caddy Module. - Add Caddy prometheus metrics using Caddy module (Requires custom Caddy image build).
- Provide custom pre-made Grafana dashboard.
- Add Varken data aggregator container.