mirror of
https://github.com/davestephens/ansible-nas
synced 2024-12-26 03:23:11 +00:00
Merge branch 'samba-timemachine' of git://github.com/ryanolf/ansible-nas into ryanolf-samba-timemachine
* 'samba-timemachine' of git://github.com/ryanolf/ansible-nas: Fixed typo in time machine doc and added more detail Updated time machine documentation Changed timemachine data directory to be consistent with old AFP-based timemachine task Reverted unrelated change to tasks/users.yml Changed timemachine to use samba instead of netatalk, consistent with current standard Changed ansible-nas user to nologin shell
This commit is contained in:
commit
c3a27b0122
7 changed files with 68 additions and 24 deletions
|
@ -67,7 +67,7 @@ Ansible config and a bunch of Docker containers.
|
||||||
* [Tautulli](http://tautulli.com/) - Monitor Your Plex Media Server
|
* [Tautulli](http://tautulli.com/) - Monitor Your Plex Media Server
|
||||||
* [Telegraf](https://github.com/influxdata/telegraf) - Metrics collection agent
|
* [Telegraf](https://github.com/influxdata/telegraf) - Metrics collection agent
|
||||||
* [The Lounge](https://thelounge.chat) - Web based always-on IRC client
|
* [The Lounge](https://thelounge.chat) - Web based always-on IRC client
|
||||||
* [TimeMachine](https://github.com/mbentley/docker-timemachine) - Mac backup server
|
* [TimeMachine](https://github.com/awlx/samba-timemachine) - Samba-based mac backup server (see [upgrade note](https://davidstephens.uk/ansible-nas/upgrading/))
|
||||||
* [Traefik](https://traefik.io/) - Web proxy and SSL certificate manager
|
* [Traefik](https://traefik.io/) - Web proxy and SSL certificate manager
|
||||||
* [Transmission](https://transmissionbt.com/) - BitTorrent client (with OpenVPN if you have a supported VPN provider)
|
* [Transmission](https://transmissionbt.com/) - BitTorrent client (with OpenVPN if you have a supported VPN provider)
|
||||||
* [Wallabag](https://wallabag.org/) - Save and classify articles. Read them later.
|
* [Wallabag](https://wallabag.org/) - Save and classify articles. Read them later.
|
||||||
|
|
|
@ -1,14 +1,20 @@
|
||||||
# Time Machine
|
# Time Machine
|
||||||
|
|
||||||
Apple docs: [https://support.apple.com/en-us/HT201250](https://support.apple.com/en-us/HT201250)
|
Apple docs: [https://support.apple.com/en-us/HT201250](https://support.apple.com/en-us/HT201250)
|
||||||
Docker image: [https://github.com/mbentley/docker-timemachine](https://github.com/mbentley/docker-timemachine)
|
Docker image: [https://github.com/awlx/samba-timemachine](https://github.com/awlx/samba-timemachine)
|
||||||
|
|
||||||
Time Machine is an application that allows you to backup files from your Mac.
|
Time Machine is an application that allows you to backup files from your Mac.
|
||||||
|
|
||||||
|
Older versions of Time Machine relied on AFP (netatalk) shares. Apple has deprecated Time Machine over AFP in favor of SMB (Samba), and current versions of Ansible-NAS use a Samba-based Time Machine share. If you are upgrading from an older version of Ansible-NAS, you will need to re-select your Time Machine back up disk by opening Time Machine Preferences and Selecting your backup disk via the "Select Disk..." option. Your Mac will find the old backups on the share and use them.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Set `timemachine_enabled: true` in your `group_vars/all.yml` file.
|
Set `timemachine_enabled: true` in your `group_vars/all.yml` file.
|
||||||
|
|
||||||
|
Enabling Time Machine will result in the installation of Avahi on the NAS system (if it is not already installed) and a Time Machine service configuration file for Avahi will be added to the system (at `/etc/avahi/services/timemachine.service`) to allow for Time Machine discovery by Macs on the local network. Avahi runs on the system, rather than in a container, as the same Avahi instance can be used to announce any number of services.
|
||||||
|
|
||||||
|
The Samba server included in the Time Machine docker container logs to `STDOUT` and is compatible with [Docker's built-in logging infrastructure.](https://docs.docker.com/config/containers/logging/)
|
||||||
|
|
||||||
## Specific Configuration
|
## Specific Configuration
|
||||||
|
|
||||||
<dl>
|
<dl>
|
||||||
|
@ -17,8 +23,7 @@ Set `timemachine_enabled: true` in your `group_vars/all.yml` file.
|
||||||
<dt><strong>timemachine_volume_size_limit</strong></dt>
|
<dt><strong>timemachine_volume_size_limit</strong></dt>
|
||||||
<dd>The maximum amount of space Time Machine can use for the backups in units of MiB. Set it to 0 for no limit.</dd>
|
<dd>The maximum amount of space Time Machine can use for the backups in units of MiB. Set it to 0 for no limit.</dd>
|
||||||
<dt><strong>timemachine_share_name</strong></dt>
|
<dt><strong>timemachine_share_name</strong></dt>
|
||||||
<dd>The name of the share as it will appear in the Time Machine application. Default is 'TimeMachine'</dd>
|
<dd>The name of the share as it will appear in the Time Machine application. Default is 'Data'</dd>
|
||||||
<dt><strong>timemachine_password</strong></dt>
|
<dt><strong>timemachine_password</strong></dt>
|
||||||
<dd>The password used to access the share. Default is 'timemachine'</dd>
|
<dd>The password used to access the share. Default is 'timemachine'</dd>
|
||||||
<dt><strong>timemachine_log_level</strong></dt>
|
<dl>
|
||||||
<dd>The verbosity of the logs. 'Error' is the default.</dd>
|
|
|
@ -43,6 +43,7 @@ By default, applications can be found on the ports listed below.
|
||||||
| Sonarr | 8989 | |
|
| Sonarr | 8989 | |
|
||||||
| Tautulli | 8181 | |
|
| Tautulli | 8181 | |
|
||||||
| The Lounge | 9000 | |
|
| The Lounge | 9000 | |
|
||||||
|
| Time Machine | 10445 | SMB |
|
||||||
| Traefik | 8083 | |
|
| Traefik | 8083 | |
|
||||||
| Transmission | 9091 | with VPN |
|
| Transmission | 9091 | with VPN |
|
||||||
| Transmission | 9092 | |
|
| Transmission | 9092 | |
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
# Upgrading
|
# Upgrading
|
||||||
|
|
||||||
Pull the latest Ansible-NAS repo, merge any new config sections from `group_vars/all.yml.dist` into your `group_vars/all.yml`, then run the playbook.
|
Pull the latest Ansible-NAS repo, merge any new config sections from `group_vars/all.yml.dist` into your `group_vars/all.yml`, then run the playbook.
|
||||||
|
|
||||||
|
Older versions of Time Machine included in Ansible-NAS relied on AFP (netatalk) shares. Apple has deprecated Time Machine over AFP in favor of SMB (Samba), and current versions of Ansible-NAS use a Samba-based Time Machine share. If you are upgrading from an older version of Ansible-NAS with the AFP-based Time Machine, you will need to re-select your Time Machine back up disk by opening Time Machine Preferences and Selecting your backup disk via the "Select Disk..." option. Your Mac will find the old backups on the share and use them.
|
|
@ -286,6 +286,8 @@ ansible_python_interpreter: /usr/bin/python3
|
||||||
###
|
###
|
||||||
# Seems to break browsing of the \\server-name shares root when enabled
|
# Seems to break browsing of the \\server-name shares root when enabled
|
||||||
samba_mitigate_cve_2017_7494: false
|
samba_mitigate_cve_2017_7494: false
|
||||||
|
# Enable apple exentensions for compatibility with apple clients
|
||||||
|
samba_apple_extensions: yes
|
||||||
|
|
||||||
# The account used when Samba shares are accessed. Shouldn't need to change this unless you want to
|
# The account used when Samba shares are accessed. Shouldn't need to change this unless you want to
|
||||||
# mess with Samba user permissions.
|
# mess with Samba user permissions.
|
||||||
|
@ -544,8 +546,9 @@ watchtower_command: "--schedule '{{ watchtower_cron_schedule }}' --debug"
|
||||||
timemachine_data_directory: "{{ docker_home }}/timemachine"
|
timemachine_data_directory: "{{ docker_home }}/timemachine"
|
||||||
timemachine_volume_size_limit: 0
|
timemachine_volume_size_limit: 0
|
||||||
timemachine_password: timemachine
|
timemachine_password: timemachine
|
||||||
timemachine_share_name: TimeMachine
|
timemachine_share_name: Data
|
||||||
timemachine_log_level: error
|
timemachine_log_level: error
|
||||||
|
timemachine_port: 10445
|
||||||
|
|
||||||
###
|
###
|
||||||
### minidlna
|
### minidlna
|
||||||
|
|
|
@ -6,20 +6,34 @@
|
||||||
|
|
||||||
- name: Time Machine Docker Container
|
- name: Time Machine Docker Container
|
||||||
docker_container:
|
docker_container:
|
||||||
name: timemachine
|
name: timemachine
|
||||||
image: mbentley/timemachine:latest
|
image: awlnx/samba-timemachine:latest
|
||||||
pull: true
|
pull: true
|
||||||
ports:
|
ports:
|
||||||
- "548:548"
|
- "{{ timemachine_port }}:445"
|
||||||
env:
|
env:
|
||||||
VOLUME_SIZE_LIMIT: "{{ timemachine_volume_size_limit }}"
|
TMSIZE: "{{ timemachine_volume_size_limit }}"
|
||||||
PASSWORD: "{{ timemachine_password }}"
|
PASS: "{{ timemachine_password }}"
|
||||||
SHARE_NAME: "{{ timemachine_share_name }}"
|
SHARENAME: "{{ timemachine_share_name }}"
|
||||||
LOG_LEVEL: "{{ timemachine_log_level }}"
|
volumes:
|
||||||
volumes:
|
- "{{ timemachine_data_directory }}/data:/backups"
|
||||||
- "{{ timemachine_data_directory }}/data:/opt/timemachine"
|
network_mode: bridge
|
||||||
- "{{ timemachine_data_directory }}/logs:/var/log/supervisor"
|
restart_policy: unless-stopped
|
||||||
- "/var/run/dbus:/var/run/dbus"
|
memory: 1g
|
||||||
network_mode: host
|
|
||||||
restart_policy: unless-stopped
|
- name: Install avahi
|
||||||
memory: 1g
|
apt:
|
||||||
|
name: "avahi-daemon"
|
||||||
|
state: present
|
||||||
|
register: result
|
||||||
|
until: result is succeeded
|
||||||
|
|
||||||
|
- name: Setup timemachine service for avahi
|
||||||
|
template:
|
||||||
|
src: timemachine/timemachine.service
|
||||||
|
dest: "/etc/avahi/services/timemachine.service"
|
||||||
|
|
||||||
|
- name: Reload avahi configuration
|
||||||
|
service:
|
||||||
|
name: avahi-daemon
|
||||||
|
state: reloaded
|
||||||
|
|
19
templates/timemachine/timemachine.service
Normal file
19
templates/timemachine/timemachine.service
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
<?xml version="1.0" standalone='no'?>
|
||||||
|
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
|
||||||
|
<service-group>
|
||||||
|
<name replace-wildcards="yes">Time Capsule on %h</name>
|
||||||
|
<service>
|
||||||
|
<type>_adisk._tcp</type>
|
||||||
|
<txt-record>sys=waMa=0,adVF=0x100</txt-record>
|
||||||
|
<txt-record>dk0=adVN=Data,adVF=0x82</txt-record>
|
||||||
|
</service>
|
||||||
|
<service>
|
||||||
|
<type>_smb._tcp</type>
|
||||||
|
<port>{{ timemachine_port }}</port>
|
||||||
|
</service>
|
||||||
|
<service>
|
||||||
|
<type>_device-info._tcp</type>
|
||||||
|
<port>0</port>
|
||||||
|
<txt-record>model=TimeCapsule6</txt-record>
|
||||||
|
</service>
|
||||||
|
</service-group>
|
Loading…
Reference in a new issue