diff --git a/README.md b/README.md index e57f4362..66dea8c9 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,10 @@ # Ansible NAS -[![Build Status](https://img.shields.io/travis/com/davestephens/ansible-nas.svg?logo=travis&style=flat-square)](https://travis-ci.com/davestephens/ansible-nas) [![Gitter chat](https://img.shields.io/gitter/room/ansible-nas/chat.svg?logo=gitter&style=flat-square)](https://gitter.im/Ansible-NAS/Chat) [![license](https://img.shields.io/github/license/DAVFoundation/api_doc.svg?style=flat-square)](https://github.com/davestephens/ansible-nas/blob/master/LICENSE) +[![Build Status](https://img.shields.io/travis/com/davestephens/ansible-nas.svg?logo=travis&style=flat-square)](https://travis-ci.com/davestephens/ansible-nas) [![Gitter chat](https://img.shields.io/gitter/room/ansible-nas/chat.svg?logo=gitter&style=flat-square)](https://gitter.im/Ansible-NAS/Chat) [![license](https://img.shields.io/github/license/DAVFoundation/api_doc.svg?style=flat-square)](https://github.com/davestephens/ansible-nas/blob/master/LICENSE) [![Beerpay](https://beerpay.io/davestephens/ansible-nas/badge.svg?style=flat-square)](https://beerpay.io/davestephens/ansible-nas) -After getting burned by broken FreeNAS updates one too many times, I figured I could do a much better job myself using -just a stock Ubuntu install, some clever Ansible config and a bunch of Docker containers. +After getting burned by broken FreeNAS updates one too many times, I figured I +could do a much better job myself using just a stock Ubuntu install, some clever +Ansible config and a bunch of Docker containers. ## What Ansible-NAS Can Set Up @@ -62,9 +63,13 @@ just a stock Ubuntu install, some clever Ansible config and a bunch of Docker co ## What This Could Do -Ansible-NAS can run anything that's in a Docker image, which is why Portainer is included. A NAS configuration is a pretty personal thing based on what you download, what media you view, how many photos you take...so it's difficult to please everyone. +Ansible-NAS can run anything that's in a Docker image, which is why Portainer is +included. A NAS configuration is a pretty personal thing based on what you +download, what media you view, how many photos you take...so it's difficult to +please everyone. -That said, if specific functionality you want isn't included and you think others could benefit, add it and raise a PR! +That said, if specific functionality you want isn't included and you think +others could benefit, add it and raise a PR! ## What This Doesn't Do @@ -74,7 +79,10 @@ gained by automating it. Check out the [docs](https://davestephens.github.io/ans ## Quick Start -: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 download code from the internet and trust that it's going to work as you expect. :skull: +: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 +download code from the internet and trust that it's going to work as you expect. +:skull: 1. Enable the Ubuntu Universe repository: `sudo add-apt-repository universe` 2. Install Ansible: `sudo apt install ansible` @@ -89,7 +97,8 @@ gained by automating it. Check out the [docs](https://davestephens.github.io/ans ## Documentation -You can read the docs [here](https://davestephens.github.io/ansible-nas). PRs for more documentation always welcome! +You can read the docs [here](https://davestephens.github.io/ansible-nas). PRs +for more documentation always welcome! ## Migrating from FreeNAS @@ -104,8 +113,10 @@ Assuming that your Ubuntu system disk is separate from your storage (it should b ## Requirements -* Ansible NAS targets the latest Ubuntu LTS release, which is currently Ubuntu Server 18.04.2 LTS. -* You can run Ansible-NAS on whatever you like, read the docs for more info. I use an HP Microserver. +* Ansible NAS targets the latest Ubuntu LTS release, which is currently Ubuntu + Server 18.04.2 LTS. +* You can run Ansible-NAS on whatever you like, read the docs for more info. I + use an HP Microserver. ## Getting Help diff --git a/docs/hardware.md b/docs/hardware.md new file mode 100644 index 00000000..54066e11 --- /dev/null +++ b/docs/hardware.md @@ -0,0 +1,21 @@ +# Hardware + +Ansible-NAS will run against any x64 Ubuntu box (i.e. not a Raspberry Pi or other ARM hardware), or even a VM if you're just testing things out. The hardware you pick for Ansible-NAS depends largely on what you intend to do with your server - and is very much a "how long is a piece of string" type question. + +The [homeserver Reddit](https://www.reddit.com/r/HomeServer/) has lots of good information. [ServerBuilds.net](https://www.serverbuilds.net/) is also kept up to date with cheap and decent quality builds known as "NAS Killers". + +## Questions To Think About + +1. What will be taxing the CPU(s) on your Ansible-NAS box? Are you intending to transcode video? How many users will be hitting it? + +2. How many applications do you intend to run in parallel? How much memory do these applications require? + +3. Are you going to run the [ZFS](zfs/zfs_overview/) file system? (you should!) + +4. What are you intending to store on your Ansible-NAS? Is it data you can download again, or is it important to you that you don't lose it? Do you need mirrored disks? + +## HP Microserver + +Ansible-NAS development is tested against an HP Microserver N54L, with 16GB of memory, a 60gb SSD for the OS and 4x2TB WD Red NAS drives for storage. It works great :-) + +This is obviously not the only solution but a reasonable one if you just want a single box to buy, and many different models are available on eBay for varying costs. \ No newline at end of file diff --git a/docs/index.md b/docs/index.md index c8f9310f..bb9c232a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -28,4 +28,4 @@ you're done, check out the [post-installation](post_installation.md) steps. If this is all very confusing, there is also an [overview](overview.md) of the project and what is required for complete beginners. If you're only confused -abot ZFS, we'll help you [get started](zfs_overview.md) as well. +abot ZFS, we'll help you [get started](zfs/zfs_overview.md) as well. diff --git a/docs/zfs/zfs_configuration.md b/docs/zfs/zfs_configuration.md index 8260257f..7f36f2f3 100644 --- a/docs/zfs/zfs_configuration.md +++ b/docs/zfs/zfs_configuration.md @@ -1,3 +1,5 @@ +# ZFS Configuration + This text deals with specific ZFS configuration questions for Ansible-NAS. If you are new to ZFS and are looking for the big picture, please read the [ZFS overview](zfs_overview.md) introduction first. diff --git a/docs/zfs/zfs_overview.md b/docs/zfs/zfs_overview.md index 0bc65672..9bc9b012 100644 --- a/docs/zfs/zfs_overview.md +++ b/docs/zfs/zfs_overview.md @@ -1,3 +1,5 @@ +# ZFS Overview + This is a general overview of the ZFS file system for people who are new to it. If you have some experience and are actually looking for specific information about how to configure ZFS for Ansible-NAS, check out the [ZFS example diff --git a/group_vars/all.yml.dist b/group_vars/all.yml.dist index 26c8abb6..f873a03c 100644 --- a/group_vars/all.yml.dist +++ b/group_vars/all.yml.dist @@ -290,20 +290,28 @@ transmission_local_network: "192.168.1.0/24" ### ### Plex ### +# If you're paranoid, set permissions to "ro" so Plex won't ever be able to +# delete your files plex_available_externally: "false" plex_config_directory: "{{ docker_home }}/plex/config" plex_movies_directory: "{{ movies_root }}" +plex_movies_permissions: "rw" plex_tv_directory: "{{ tv_root }}" +plex_tv_permissions: "rw" plex_user_id: 0 plex_group_id: 0 ### ### Emby ### +# If you're paranoid, set permissions to "ro" so Emby won't ever be able to +# delete your files emby_available_externally: "false" emby_config_directory: "{{ docker_home }}/emby/config" emby_movies_directory: "{{ movies_root }}" +emby_movies_permissions: "rw" emby_tv_directory: "{{ tv_root }}" +emby_tv_permissions: "rw" emby_user_id: 0 emby_group_id: 0 diff --git a/tasks/emby.yml b/tasks/emby.yml index eb31130e..fdded57c 100644 --- a/tasks/emby.yml +++ b/tasks/emby.yml @@ -12,8 +12,8 @@ pull: true volumes: - "{{ emby_config_directory }}:/config:rw" - - "{{ emby_movies_directory }}:/movies:rw" - - "{{ emby_tv_directory }}:/tv:rw" + - "{{ emby_movies_directory }}:/movies:{{ emby_movies_permissions }}" + - "{{ emby_tv_directory }}:/tv:{{ emby_tv_permissions }}" ports: - "8096:8096" # HTTP port - "8920:8920" # HTTPS port diff --git a/tasks/plex.yml b/tasks/plex.yml index b43c2631..0e84bbf9 100644 --- a/tasks/plex.yml +++ b/tasks/plex.yml @@ -13,8 +13,8 @@ pull: true volumes: - "{{ plex_config_directory }}:/config:rw" - - "{{ plex_movies_directory }}:/movies:rw" - - "{{ plex_tv_directory }}:/tv:rw" + - "{{ plex_movies_directory }}:/movies:{{ plex_movies_permissions }}" + - "{{ plex_tv_directory }}:/tv:{{ plex_tv_permissions }}" network_mode: "host" env: TZ: "{{ ansible_nas_timezone }}"