Where communities thrive

  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
and less power pain
guess you'd want a cluster of Pi3/4 though
yeah idk, i was thinking of only running the adminy stuff on the pi's and having a vm for all the actual containers
so shouldn't need much grunt
with that hat you can also boot from usb (aka not have microsd cards in the PiZeros
I didn't do that because single point of failure :P
hah yeah that's why i haven't looked too hard at it either
this is the brother https://www.tindie.com/products/8086net/cluster-triple-for-raspberry-pi-compute-modules/ the compute modules are pi3 hardware too
David Stephens
@animeai @Malpractis davestephens thought otherwise because pihole/adguard/an other network ad blocker require ports 80 and 443. Ads are blocked then empty content is served by your pihole so that your browser doesn't sit there forever trying to load something.
eg when your browser requests ad.doubleclick.net, pihole returns the ip of your pi-hole, pi-hole returns nothing. browser is happy as it gets its request served, user is happy as they get no ads.
it's why pi-hole needs to manage DNS on your network too
this is also why i requested that the traefik internal ports could be configurable in #188, so users can move traefik elsewhere in favour of running what they want on 80/443 (eg, pihole)
@davestephens Now that begins to make sense :) I'll try my plan of a random internal port for traefik mapped to port 80/433 on the external IP in VM
David Stephens
you can run traefik on whatever ports you like - ie 880/8443, then your router should forward 80->ansible-nas:880, 443->ansible-nas:8443
...which then frees up 80/443 for some pi-holing
this is all depending on time though, of which i have very little at the moment!

@animeai I ran all steps again: plexname@plexserver:~/ansible-nas$ sudo ansible-galaxy install -r requirements.yml

  • geerlingguy.docker (2.5.2) is already installed, skipping.
  • bertvv.samba (v2.7.0) is already installed, skipping.
  • geerlingguy.nfs (1.5.0) is already installed, skipping.
    plexname@plexserver:~/ansible-nas$ ansible-playbook -i inventories/my-ansible-nas/inventory nas.yml -b -K
    [WARNING]: Unable to set correct type for configuration entry: DEFAULT_LOCAL_TMP
    SUDO password:
    ERROR! the role 'bertvv.samba' was not found in /home/plexname/ansible-nas/roles:/home/plexname/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles:/home/plexname/ansible-nas
    still get same error, and a new WARNING,
    Tried also sudo ansible-playbook............
    I get
    PLAY [all] **

TASK [Gathering Facts] **
fatal: [ansible-nas]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname ansible-nas: Name or service not known\r\n", "unreachable": true}

ansible-nas : ok=0 changed=0 unreachable=1 failed=0

David Stephens
so you're running ansible-nas from the box you expect it to install to?
what's the contents of your inventory file?
all done on a clean Ubuntu 18.04 + ZFS on data drives not OS, amd a pool on those drives
My only deviation was I needed to install Git, second time I had VM with 2 drives Main OS + Data similar mount paths
David Stephens
what's your inventory look like
David Stephens
and do you see the role installed to any of that list of directories it mentions in the error message?
@davestephens Yes I am runnung from the box that will be the server, my inventory can i attach a file or post all of it here?
David Stephens
paste it in here within triple backticks
Did you change the overlay to zfs?
Your inventory is also wrong. Uncomment the local host line instead of the one with the ip address
@chuy the overlay option is a setting you'll need to make in your nas.yml

Yes overlay is ZFS, changed lines have JGB on the comment
```## ._. .__

_ _|_ | | | _ __

_ \ / \ / __/ || | | _/ \ __ / \ \ / _/

/ | | \_ | || _\ \ |\ __/ /_/ | | \/ __ \

(_ /| /__ >||_ /__/_ > |_| ( / >

\/ \/ \/ \/ \/ \/ \/ \/

a n s i b l e - n a s https://github.com/davestephens/ansible-nas

Add your all.yml config overrides to this file. See group_vars/all.yml for all possible settings.


-----COPY FROM nas.yml --------



transmission_with_openvpn_enabled: false # Please see docs about how to set VPN credentials
transmission_enabled: true # jgb false
nzbget_enabled: false
pyload_enabled: false

Media Serving

plex_enabled: true #jgb false # Media server
tautulli_enabled: false # Application that you can run alongside your Plex Media Server to monitor activity and track various statistics.

Media Sourcing

sonarr_enabled: false # tv-Sonarr is a multi-platform app to search, download, and manage TV shows. It uses the torrent network as the source.
sickchill_enabled: false # Downloads your TV shows, processes and stores them in your library. All fully automated! new episodes released get downloaded.
couchpotato_enabled: false # Downloads movies automatically, easily and in the best quality as soon as they are available
radarr_enabled: false # Independent fork of Sonarr to automatically download movies via Usenet & BitTorrent. inspired by movie downloaders like CouchPotato
get_iplayer_enabled: false
jackett_enabled: false # works as a proxy server translates queries from (Sonarr, Radarr, SickRage, ...) to tracker-site-specific queries, & sends results back
minidlna_enabled: false # MiniDLNA is server software with the aim of being fully compliant with DLNA/UPnP clients. serves media files on a network
jellyfin_enabled: false # alternative to the proprietary Emby and Plex, to provide media from a dedicated server to end-user devices via multiple apps
emby_enabled: false # is a mostly open-source media server with a client-server model, similar to PLEX
bazarr_enabled: false # Bazarr is a companion application to Sonarr and Radarr. It manages and downloads subtitles based on your requirements
ombi_enabled: false # is a self-hosted web application that automatically gives your shared Plex or Emby users the ability to request content by themselves
lidarr_enabled: false # is a music collection manager for Usenet & BitTorrent users, monitors RSS feeds for new tracks artists & will grab, sort & rename them


airsonic_enabled: false # web-based media streamer, providing ubiquitous access to your music
mymediaforalexa_enabled: false # lets you stream your music collection to your Amazon Echo or Amazon Dot without having to upload all your music collection to the Cloud


miniflux_enabled: false # Miniflux is a minimalist and opinionated feed reader

System Management

heimdall_enabled: true #jgb false # An Application dashboard and launcher
portainer_enabled: true #jgb false # Making Docker Management Easy
glances_enabled: true #jgb false # cross-platform monitoring tool shows a large amount of info through a curses or Web interface. dynamically adapts on UI size
stats_enabled: false
guacamole_enabled: false # clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH
netdata_enabled: false
watchtower_enabled: false # update the running version of your containerized app simply by pushing a new image to the Docker Hub or your own image registry
cloudflare_ddns_enabled: false
cloudcmd_enabled: false

Backup & Restore

duplicati_enabled: false
nextcloud_enabled: false

```# Backup & Restore
duplicati_enabled: false
nextcloud_enabled: false
timemachine_enabled: true #jgb false

Software build and CI

gitea_enabled: false


znc_enabled: false
thelounge_enabled: false # Modern, responsive, cross-platform, self-hosted web IRC client

Password Management

bitwarden_enabled: false


firefly_enabled: false


wallabag_enabled: false # is a self-hostable PHP application allowing you to not miss any content anymore. Click, save and read it when you can

Home Automation

homeassistant_enabled: false
mosquitto_enabled: false # Efficient Usenet Downloader
homebridge_enabled: false
openhab_enabled: false


calibre_enabled: true #jgb false


ubooquity_enabled: false # small content server that you can use on any device on which Java is installed


joomla_enabled: false

External Access

Traefik will allow access to certain applications externally. To enable this you'll either; a domain name that points to your

home static IP address, the cloudflare with the cloudflare_ddns dynamic DNS container enabled, or use a dynamic DNS provider like no-ip.

You'll also need to map ports 80 and 443 from your router to your ansible-nas server, then enable the per-app "available_externally"


traefik_enabled: false
traefik_port_http: "80"
traefik_port_https: "443"
traefik_port_ui: "8083"




Sets the hostname of your Ansible NAS

ansible_nas_hostname: ansible-nas

Sets the timezone for your Ansible NAS

You can find a list here https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

ansible_nas_timezone: America/Monterrey # jgb Etc/UTC

Update all apt packages when playbook is run

keep_packages_updated: true #jgb false

Will be added to the docker group to give user command line access to docker

ansible_nas_user: plexname #jgb david

Your email and domain, used for Let's Encrypt SSL certs

ansible_nas_email: chuy@mac.com #jgb

Applications will have subdomain SSL certificates created if Traefik is enabled, e.g. ansible-nas.<your-domain>, nextcloud.<your-domain>

ansible_nas_domain: example.com




Where you want Docker to store images

docker_image_directory: "{{ docker_home }}/data"

Where you want Docker to store its container data.

docker_home: /mnt/plexpoolm/docker #jgb /mnt/Volume2/docker

mediajgb_home: /mnt/plexpoolm/mediajgb #new

Docker storage driver, see https://docs.docker.com/storage/storagedriver/select-storage-driver/#supported-backing-filesystems

You might want to change this to ZFS, depending on your underlying filesystem.

docker_storage_driver: ZFS #overlay2




The location where all shares will be created by default. Can be overridden on a per-share basis.

This path will be mounted to backup containers, Duplicati

samba_shares_root: /mnt/DiskB/sambaroot #jgb /mnt/Volume3

Where stuff downloaded will be stored

downloads_root: "{{ samba_shares_root }}/downloads"

Where your movies are stored

movies_root: "{{ mediajgb_home }}/plx_movies" #jgb "{{ samba_shares_root }}/movies"

Where your TV episodes are stored

tv_root: "{{ mediajgb_home }}/plx_tv" #jgb "{{ samba_shares_root }}/tv"

Where torrent files are stored (picked up by Transmission for downloading)

torrents_root: "{{ samba_shares_root }}/torrents"

Where music is stored

music_root: "{{ mediajgb_home }}/plx_music" #jgb "{{ samba_shares_root }}/music"

Where podcasts are stored

podcasts_root: "{{ sambajgb_shares_root }}/podcasts"

Where your books are stored

books_root: "{{ mediajgb_home }}/books"

Where your books are stored

comics_root: "{{ mediajgb_home }}/comics"

Where photos are stored

photos_root: "{{ mediajgb_home }}/plx_photos" #jgb "{{ samba_shares_root }}/photos"

The description that'll appear next to your Ansible-NAS box when browsing your network

samba_server_string: Chuy Ansible NAS

Shares you want published over Samba.


  • name: downloads
    comment: 'Stuff downloaded'
    guest_ok: yes
    public: yes

i have thw line unchanged, my server is not registered on any doman/subdomain Traefik not enabled

Sets the hostname of your Ansible NAS

ansible_nas_hostname: ansible-nas

Docker storage driver, see https://docs.docker.com/storage/storagedriver/select-storage-driver/#supported-backing-filesystems

You might want to change this to ZFS, depending on your underlying filesystem.

docker_storage_driver: ZFS #jgb overlay2


@chuy As I said, your problem is in the inventory file. The overlay2->zfs was just a reminder ;)

"TASK [Gathering Facts] **
fatal: [ansible-nas]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname ansible-nas: Name or service not known\r\n", "unreachable": true}"

You inventory file is not modified correctly. You should have this line uncommented in inventory:
ansible-nas ansible_connection=local ansible_host=localhost

David Stephens
Please paste files in triple backticks as requested, or use something sensible like pastebin
` <- backtick
this is in three backticks

testing Changed ZFS tu lowercase
```# Docker storage driver, see https://docs.docker.com/storage/storagedriver/select-storage-driver/#supported-backing-filesystems

You might want to change this to ZFS, depending on your underlying filesystem.

docker_storage_driver: zfs #jgb overlay2

David Stephens
please put code in triple backticks.
@chuy as I said in my last message:
You inventory file is not modified correctly. You should have this line uncommented in inventory:
ansible-nas ansible_connection=local ansible_host=localhost
David Stephens
(and comment out the other one)

@animeai , thank you, I understand now, there is a file called 'inventory' and a Folder called 'inventories' that has deeper inside my configuration (sorry English is not my first language), I did not edit the file just the nas.yml file
here i show my inventory file (now edited)
```## Example when running from a remote workstation

```# ansible-nas ansible_host=

```## Example when running directly on your Ansible-NAS server

```ansible-nas ansible_connection=local ansible_host=localhost



```docker_storage_driver: zfs (lowercase) is it correct?
also my ZFS config is in lowercase
```docker_storage_driver: zfs
is it correct?

it now runs for a while and stops on
TASK [geerlingguy.docker : Add Docker repository.] *************************************************************************************************** fatal: [ansible-nas]: FAILED! => {"changed": false, "msg": "E:The repository 'cdrom://Ubuntu 18.04.1 LTS _Bionic Beaver_ - Release amd64 (20180725) bionic Release' does not have a Release file., W:Updating from such a repository can't be done securely, and is therefore disabled by default., W:See apt-secure(8) manpage for repository creation and user configuration details., W:Target Packages (restricted/binary-amd64/Packages) is configured mult

continues for some more steps
```RUNNING HANDLER [bertvv.samba : Restart Samba services] **

RUNNING HANDLER [geerlingguy.nfs : reload nfs] *

ansible-nas : ok=20 changed=8 unreachable=0 failed=1

David Stephens
I really think you need to read all of the docs again
you don't put customisations (eg docker_Storage_driver) into your inventory file. They go into your nas.yml.
@davestephens (sorry i did not explain) my docker_Storage_driver is on the nas.yml, my inventory file has only the original files as shown above
David Stephens
@chuy was this a fresh install of ubuntu? Google is your friend. For some reason you're using an old version of ubuntu and you have the cdrom in your apt sources. https://askubuntu.com/questions/1067573/ubuntu-18-04-1-lts-update-does-not-work-no-release-file-gpg-errors

@chuy 18.04.1 LTS is not the current version of ubuntu. Your best bet is to download and install a fresh copy of 18.04.03 and perform a fresh installation on your server. If for whatever reason you can't do this, you'll need to run:
sudo apt update && sudo apt dist-upgrade

You'll need to make sure the server has an IP address on your local network and that apt is updating from the internet. Nobody should be using cdrom as the apt repository.

Take a look at https://www.fosslinux.com/6406/how-to-install-ubuntu-server-18-04-lts.htm

If you think you can follow some complex instructions, you might also want to take a look at https://github.com/zfsonlinux/zfs/wiki/Ubuntu-18.04-Root-on-ZFS but I would suggest against this given your lack of linux experience.

If you don't want to install ubuntu onto zfs (second link) make sure you don't try and install it onto your existing zfs drives by mistake - unplug these before the install to avoid losing any data. YOu also won't be able to have zfs as your root filesystem if you already have data on the zfs drives you don't want to lose.

If you want something easier to install (since you only seem to want to have plex on your NAS) you might want to take a look at FreeNAS as you manage this through a web based GUI. It has a plex plugin that is dead easy to install. Once installed though, don't upgrade to a new version - this tend to break stuff and is the whole reason a lot of us moved to ansible-nas or other alternatives! If you want simple, almost plug and play, FreeNAS is your friend. If you want to learn linux and are prepared to google to troubleshoot problems, then Ansible-NAS is a much more powerful system.

FreeNAS: https://www.freenas.org/
Install Plex on FreeNAS: https://www.ceos3c.com/freenas/how-to-install-plex-on-freenas-11-1/