mirror of
https://github.com/davestephens/ansible-nas
synced 2024-12-25 19:13:08 +00:00
Fix merge conflict
This commit is contained in:
commit
30b20768fe
7 changed files with 129 additions and 4 deletions
|
@ -13,7 +13,7 @@ Ansible config and a bunch of Docker containers.
|
||||||
* A BitTorrent client
|
* A BitTorrent client
|
||||||
* A Usenet downloader
|
* A Usenet downloader
|
||||||
* Various media management tools - Sonarr, Sickchill, CouchPotato, Radarr, Bazarr
|
* Various media management tools - Sonarr, Sickchill, CouchPotato, Radarr, Bazarr
|
||||||
* Media streaming via Plex or Emby
|
* Media streaming via Plex, Emby or Jellyfin
|
||||||
* Music streaming with Airsonic
|
* Music streaming with Airsonic
|
||||||
* An RSS newsfeed reader - Miniflux
|
* An RSS newsfeed reader - Miniflux
|
||||||
* A Dropbox replacement via Nextcloud
|
* A Dropbox replacement via Nextcloud
|
||||||
|
@ -47,6 +47,7 @@ Ansible config and a bunch of Docker containers.
|
||||||
* [Home Assistant](https://www.home-assistant.io) - Open source home automation
|
* [Home Assistant](https://www.home-assistant.io) - Open source home automation
|
||||||
* [InfluxDB](https://github.com/influxdata/influxdb) - Time series database used for stats collection
|
* [InfluxDB](https://github.com/influxdata/influxdb) - Time series database used for stats collection
|
||||||
* [Jackett](https://github.com/Jackett/Jackett) - API Support for your favorite torrent trackers
|
* [Jackett](https://github.com/Jackett/Jackett) - API Support for your favorite torrent trackers
|
||||||
|
* [Jellyfin](https://jellyfin.github.io) - The Free Software Media System
|
||||||
* [MiniDlna](https://sourceforge.net/projects/minidlna/) - simple media server which is fully compliant with DLNA/UPnP-AV clients
|
* [MiniDlna](https://sourceforge.net/projects/minidlna/) - simple media server which is fully compliant with DLNA/UPnP-AV clients
|
||||||
* [Miniflux](https://miniflux.app/) - An RSS news reader
|
* [Miniflux](https://miniflux.app/) - An RSS news reader
|
||||||
* [Mosquitto](https://mosquitto.org) - An open source MQTT broker
|
* [Mosquitto](https://mosquitto.org) - An open source MQTT broker
|
||||||
|
@ -92,7 +93,7 @@ gained by automating it. Check out the [docs](https://davestephens.github.io/ans
|
||||||
:skull: Before running anything, check out the playbook and understand what it
|
:skull: Before running anything, check out the playbook and understand what it
|
||||||
does. Run it against a VM and make sure you're happy. ***Do not*** blindly
|
does. Run it against a VM and make sure you're happy. ***Do not*** blindly
|
||||||
download code from the internet and trust that it's going to work as you expect.
|
download code from the internet and trust that it's going to work as you expect.
|
||||||
:skull:
|
:skull:
|
||||||
|
|
||||||
1. Enable the Ubuntu Universe repository: `sudo add-apt-repository universe`
|
1. Enable the Ubuntu Universe repository: `sudo add-apt-repository universe`
|
||||||
2. Install Ansible: `sudo apt install ansible`
|
2. Install Ansible: `sudo apt install ansible`
|
||||||
|
@ -124,7 +125,7 @@ Assuming that your Ubuntu system disk is separate from your storage (it should b
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
* Ansible NAS targets the latest Ubuntu LTS release, which is currently Ubuntu
|
* Ansible NAS targets the latest Ubuntu LTS release, which is currently Ubuntu
|
||||||
Server 18.04.2 LTS.
|
Server 18.04.2 LTS.
|
||||||
* You can run Ansible-NAS on whatever you like, read the docs for more info. I
|
* You can run Ansible-NAS on whatever you like, read the docs for more info. I
|
||||||
use an HP Microserver.
|
use an HP Microserver.
|
||||||
|
|
||||||
|
|
71
docs/applications/jellyfin.md
Normal file
71
docs/applications/jellyfin.md
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
# Jellyfin
|
||||||
|
|
||||||
|
Homepage: [https://jellyfin.github.io/](https://jellyfin.github.io/)
|
||||||
|
|
||||||
|
Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media. It is an alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps. Jellyfin is descended from Emby's 3.5.2 release and ported to the .NET Core framework to enable full cross-platform support. There are no strings attached, no premium licenses or features, and no hidden agendas: just a team who want to build something better and work together to achieve it. We welcome anyone who is interested in joining us in our quest!
|
||||||
|
|
||||||
|
Note that [Plex](https://www.plex.tv/), also included in Ansible-NAS, has a very
|
||||||
|
similar functionality.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Set `jellyfin_enabled: true` in your `group_vars/all.yml` file. There are further
|
||||||
|
parameters you can edit such as `movies_root` and `tv_root` lower down.
|
||||||
|
|
||||||
|
## Specific Configuration
|
||||||
|
|
||||||
|
The jellyfin web interface can be found at port 8896 (http) or 8928 (https, if
|
||||||
|
configured) of your NAS.
|
||||||
|
|
||||||
|
By default, Ansible-NAS gives jellyfin read/write access to the folders where your
|
||||||
|
movies and TV shows are stored. To change this to read-only, edit the following
|
||||||
|
lines in `all.yml`:
|
||||||
|
|
||||||
|
```
|
||||||
|
jellyfin_movies_permissions: "rw"
|
||||||
|
jellyfin_tv_permissions: "rw"
|
||||||
|
```
|
||||||
|
|
||||||
|
so that they end in `ro` instead of `rw`. Note that jellyfin will not be able to
|
||||||
|
delete files then, which might be exactly what you want. However, you will not
|
||||||
|
have the option to store cover art in the related folders. Always leave the
|
||||||
|
configuration directory read/write.
|
||||||
|
|
||||||
|
## File system considerations
|
||||||
|
|
||||||
|
Movie and TV show files are almost alway very large and pre-compressed. If you
|
||||||
|
are using a specialized filesystem such as ZFS for bulk storage, you'll want to
|
||||||
|
set the parameters accordingly. The [ZFS configuration
|
||||||
|
documentation](../zfs/zfc_configuration.md) has an example of this.
|
||||||
|
|
||||||
|
|
||||||
|
## Naming movies and TV shows
|
||||||
|
|
||||||
|
jellyfin is very fussy about how movies and TV shows must be named to enable
|
||||||
|
automatic downloads of cover art and metadata. In short, movie files should
|
||||||
|
follow how movies are listed in the [IMDb](https://www.imdb.com/), including the
|
||||||
|
year of publication:
|
||||||
|
|
||||||
|
```
|
||||||
|
movies/Bride of Frankenstein (1935).mp4
|
||||||
|
```
|
||||||
|
|
||||||
|
Note the spaces. You should probably remove colons and other special characters.
|
||||||
|
|
||||||
|
TV shows require a folder structure with the name of the series - again if
|
||||||
|
possible with the year of publication - followed by sub-folders for the
|
||||||
|
individual seasons. For example, the first episode of the first season of
|
||||||
|
the original "Doctor Who" could be stored as:
|
||||||
|
|
||||||
|
```
|
||||||
|
tv/Doctor Who (1963)/Season 1/Doctor Who - s01e01.mp4
|
||||||
|
```
|
||||||
|
|
||||||
|
The [TVDB](https://www.thetvdb.com/) is one source for the exact names of TV
|
||||||
|
shows.
|
||||||
|
|
||||||
|
Unfortunately, there are number of special cases, especially related to split
|
||||||
|
movies and older series. See the [movie
|
||||||
|
naming](https://github.com/MediaBrowser/Wiki/wiki/Movie%20naming) and [TV
|
||||||
|
naming](https://github.com/MediaBrowser/Wiki/wiki/TV-naming) guides for further
|
||||||
|
information.
|
|
@ -23,6 +23,8 @@ By default, applications can be found on the ports listed below.
|
||||||
| Heimdall | 10080 | |
|
| Heimdall | 10080 | |
|
||||||
| Home Assistant | 8123 | |
|
| Home Assistant | 8123 | |
|
||||||
| Jackett | 9117 | |
|
| Jackett | 9117 | |
|
||||||
|
| Jellyfin | 8896 | HTTP |
|
||||||
|
| Jellyfin | 8928 | HTTPS |
|
||||||
| MiniDLNA | 8201 | |
|
| MiniDLNA | 8201 | |
|
||||||
| Miniflux | 8070 | |
|
| Miniflux | 8070 | |
|
||||||
| Mosquitto | 1883 | MQTT |
|
| Mosquitto | 1883 | MQTT |
|
||||||
|
|
|
@ -27,6 +27,9 @@ tautulli_enabled: false
|
||||||
# Emby
|
# Emby
|
||||||
emby_enabled: false
|
emby_enabled: false
|
||||||
|
|
||||||
|
# Jellyfin
|
||||||
|
jellyfin_enabled: false
|
||||||
|
|
||||||
# minidlna
|
# minidlna
|
||||||
minidlna_enabled: false
|
minidlna_enabled: false
|
||||||
|
|
||||||
|
@ -629,3 +632,17 @@ homeassistant_data_directory: "{{ docker_home }}/homeassistant"
|
||||||
openhab_available_externally: "false"
|
openhab_available_externally: "false"
|
||||||
openhab_docker_image: openhab/openhab:latest
|
openhab_docker_image: openhab/openhab:latest
|
||||||
openhab_data_directory: "{{ docker_home }}/openhab"
|
openhab_data_directory: "{{ docker_home }}/openhab"
|
||||||
|
|
||||||
|
###
|
||||||
|
### Jellyfin
|
||||||
|
###
|
||||||
|
# If you're paranoid, set permissions to "ro" so jellyfin won't ever be able to
|
||||||
|
# delete your files
|
||||||
|
jellyfin_available_externally: "false"
|
||||||
|
jellyfin_config_directory: "{{ docker_home }}/jellyfin/config"
|
||||||
|
jellyfin_movies_directory: "{{ movies_root }}"
|
||||||
|
jellyfin_movies_permissions: "rw"
|
||||||
|
jellyfin_tv_directory: "{{ tv_root }}"
|
||||||
|
jellyfin_tv_permissions: "rw"
|
||||||
|
jellyfin_user_id: 0
|
||||||
|
jellyfin_group_id: 0
|
||||||
|
|
4
nas.yml
4
nas.yml
|
@ -188,4 +188,6 @@
|
||||||
when: (openhab_enabled | default(False))
|
when: (openhab_enabled | default(False))
|
||||||
tags: openhab
|
tags: openhab
|
||||||
|
|
||||||
|
- import_tasks: tasks/jellyfin.yml
|
||||||
|
when: (jellyfin_enabled | default(False))
|
||||||
|
tags: jellyfin
|
||||||
|
|
31
tasks/jellyfin.yml
Normal file
31
tasks/jellyfin.yml
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
- name: Create Jellyfin Directories
|
||||||
|
file:
|
||||||
|
path: "{{ item }}"
|
||||||
|
state: directory
|
||||||
|
with_items:
|
||||||
|
- "{{ jellyfin_config_directory }}"
|
||||||
|
|
||||||
|
- name: Jellyfin Docker Container
|
||||||
|
docker_container:
|
||||||
|
name: jellyfin
|
||||||
|
image: linuxserver/jellyfin
|
||||||
|
pull: true
|
||||||
|
volumes:
|
||||||
|
- "{{ jellyfin_config_directory }}:/config:rw"
|
||||||
|
- "{{ jellyfin_movies_directory }}:/movies:{{ jellyfin_movies_permissions }}"
|
||||||
|
- "{{ jellyfin_tv_directory }}:/tv:{{ jellyfin_tv_permissions }}"
|
||||||
|
ports:
|
||||||
|
- "8896:8096" # HTTP port
|
||||||
|
- "8928:8920" # HTTPS port
|
||||||
|
network_mode: host
|
||||||
|
env:
|
||||||
|
TZ: "{{ ansible_nas_timezone }}"
|
||||||
|
PUID: "{{ jellyfin_user_id }}"
|
||||||
|
PGID: "{{ jellyfin_group_id }}"
|
||||||
|
restart_policy: unless-stopped
|
||||||
|
memory: 1g
|
||||||
|
labels:
|
||||||
|
traefik.backend: "jellyfin"
|
||||||
|
traefik.frontend.rule: "Host:jellyfin.{{ ansible_nas_domain }}"
|
||||||
|
traefik.enable: "{{ jellyfin_available_externally }}"
|
||||||
|
traefik.port: "8896"
|
|
@ -194,6 +194,7 @@ onDemand = false # create certificate when container is created
|
||||||
"heimdall.{{ ansible_nas_domain }}",
|
"heimdall.{{ ansible_nas_domain }}",
|
||||||
"homeassistant.{{ ansible_nas_domain }}",
|
"homeassistant.{{ ansible_nas_domain }}",
|
||||||
"jackett.{{ ansible_nas_domain }}",
|
"jackett.{{ ansible_nas_domain }}",
|
||||||
|
"jellyfin.{{ ansible_nas_domain }}",
|
||||||
"miniflux.{{ ansible_nas_domain }}",
|
"miniflux.{{ ansible_nas_domain }}",
|
||||||
"netdata.{{ ansible_nas_domain }}",
|
"netdata.{{ ansible_nas_domain }}",
|
||||||
"nextcloud.{{ ansible_nas_domain }}",
|
"nextcloud.{{ ansible_nas_domain }}",
|
||||||
|
|
Loading…
Reference in a new issue