forked from davestephens/ansible-nas
- Any number of Samba shares for you to store your stuff
- A BitTorrent client
- Various media management tools - Sonarr, Sickrage, CouchPotato, Radarr
- A Docker host with Portainer for image and container management
- Various ways to see stats about your NAS - Glances, dashboards in Grafana
- A backup tool - allows scheduled backups to Amazon S3, OneDrive, Dropbox etc
- CouchPotato for downloading and managing movies
- Duplicati for backing up your stuff
- Glances for seeing the state of your system via a web browser
- Grafana - Dashboarding tool
- InfluxDB - Time series database used for stats collection
- Nextcloud - A self-hosted Dropbox alternative
- Portainer for managing Docker and running custom images
- Radarr for organising and downloading movies
- Sickrage for managing TV episodes
- Sonarr for downloading and managing TV episodes
- Telegraf - Metrics collection agent
- Transmission BitTorrent client (with OpenVPN if you have a supported VPN provider)
- ZNC - IRC bouncer to stay connected to favourite IRC networks and channels
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 doesn't set up your disk partitions, primarily because getting it wrong can be incredibly destructive. That aside, configuring partitions is usually a one-time (or very infrequent) event, so there's not much to be gained by automating it.
I recommend setting up ZFS
Ansible NAS should work on any recent Ubuntu box. Development is done on Ubuntu Server 18.04.1 LTS.
- Enable the Ubuntu Universe repository:
sudo add-apt-repository universe - Install Ansible:
sudo apt install ansible git clone https://github.com/davestephens/ansible-nas.git && cd ansible-nas- Copy
group_vars/all.yml.disttogroup_vars/all.yml. - Open up
group_vars/all.ymland follow the instructions there for configuring your Ansible NAS. - If you plan to use Transmission with OpenVPN, also copy
group_vars/vpn_credentials.yml.disttogroup_vars/vpn_credentials.ymland fill in your settings. - Modify
inventoryand update it with the hostname of your NAS box, or uselocalhost ansible_connection=localif you want to run the playbook on the same box you want to use as your ansible-nas. - Install the dependent roles:
ansible-galaxy install -r requirements.yml(you might need sudo to install Ansible roles) - Run the playbook - something like
ansible-playbook -i inventory nas.yml -b -Kshould do you nicely.
Assuming that your Ubuntu system disk is separate from your storage (it should be!):
- Disconnect your drives.
- Run Ansible NAS against your server.
- Reconnect your drives.
- SSH to the server and run
zpool listto determine available ZFS pools. zpool import <pool_name>against the pools you want to attach.chown -R root:root /mnt/<pool_name>to fix the ownership of the data.
- Get the tests working on Docker
- Create useful Grafana dashboards
- Handle Docker containers being enabled then subsequently disabled (i.e clean up afterwards)
- SMART disk monitoring
Contributions welcome, please feel free to raise a PR! Please restrict pull requests to one piece of functionality or bugfix at a time, thanks! 👍