It is my configurable ansible playbooks. The playbooks are designed to be run on Ubuntu server.
This repository is inspired by and includes code from ansible-nas.
NASsible is using docker compose.
List of applications and features that the script can install.
- Docker (
docker,geerlingguy.docker)
- Calibre
- Jellyfin
- Jackett
- Photoprism
- Radarr
- Sonarr
- Overseerr
- Jellyseerr
- Adguard (⚠ uses ports 80, 443, 53; may conflict with nginx/traefik. Recommended to run on a separate device or VM)
- Duplicati (for backups)
- Transmission
- Traefik (using self-signed cert)
- Tailscale
- Wireguard
- Cloudflare
- DuckDNS
- OpenVPN (planned)
- Prometheus
- Home Assistant
- Nextcloud
- Grafana
- Homepage
- MariaDB
- Nextcloud
You must install the requirements first:
ansible-galaxy install -r requirements.yml
-
Create your own playbook and navigate to there
cp -r playbooks/sample playbooks/YOUR_PLAYBOOK_NAME cd playbooks/YOUR_PLAYBOOK_NAME -
Update inventory and configuration files
- Update the inventory file:
playbooks/YOUR_PLAYBOOK_NAME/inventory - Update the configuration files:
group_vars/all.yml
- Update the inventory file:
-
Create your secrets file Use Ansible Vault to securely store sensitive variables:
ansible-vault create secrets.yml
You must define all possible secrets variables in your
secrets.ymlfile, but you can ansible-vault create secrets.ymlleave them empty if a service does not require them. For example:transmission_passwd: duckdns_token: mariadb_root_password: photoprism_db_user_password: photoprism_admin_password: nextcloud_db_user_password: cloudflare_tunnel_token:
Fill in the values only for the services you enable. Leave the others as empty strings.
-
Run the playbook Apply your configuration to the node(s) with:
ansible-playbook nassible.yml -k -K --ask-vault-pass
-k: ask for SSH password (if needed)-K: ask for privilege escalation password (sudo, if needed)--ask-vault-pass: prompt for your Ansible Vault password
- Prometheus support
- More monitoring/alerting tools
- More media and utility applications
Contributions are welcome! If you have ideas for new features, want to add support for other services, or improve existing roles, please open an issue or submit a pull request.
If you use a service that is not yet supported, feel free to suggest it or contribute a new role for it!
- grafana
- cloudflare
- openvpn
To add support for a new application, use the sample_service role as a starting point:
- Copy the
roles/sample_servicedirectory to a new role directory (e.g.roles/myapp). - Rename all occurrences of
sample_servicein files, variables, and filenames to match your new app/service. - Update the variables, Docker Compose template, and tasks as needed for your application.
- Refer to the
roles/sample_service/README.mdfor further guidance.