Apple Time Machine and Netatalk 3: Difference between revisions
Brian Wilson (talk | contribs) |
Brian Wilson (talk | contribs) |
||
Line 9: | Line 9: | ||
Get the image, | Get the image, | ||
docker pull mbentley/timemachine | docker pull mbentley/timemachine | ||
=== Linux === | |||
Do some housekeeping, | Do some housekeeping, | ||
Line 15: | Line 17: | ||
sudo chown -R 1000.1000 /volumes/timemachine | sudo chown -R 1000.1000 /volumes/timemachine | ||
Start the image, | Start the image, Linux version | ||
docker run -d --restart=always \ | docker run -d --restart=always \ | ||
--net=host \ | --net=host \ | ||
Line 24: | Line 26: | ||
mbentley/timemachine:latest | mbentley/timemachine:latest | ||
Any moment now, | === Windows === | ||
Do some housekeeping, | |||
d: | |||
cd / | |||
mkdir timemachine/data timemachine/log | |||
Start the image, Windows version | |||
docker run -d --restart=always --net=host --name timemachine -v d:/timemachine/data:/opt/timemachine -v d:/timemachine/log:/var/log/supervisor -e PASSWORD=''biggerontheinside'' mbentley/timemachine:latest | |||
Any moment now, Murre will show up in servers on my Mac... so cool. So much easier than building from sources... | |||
Now you should be able to open TimeMachine settings on your Mac(s), select your Linux server and enter credentials, | Now you should be able to open TimeMachine settings on your Mac(s), select your Linux server and enter credentials, |
Revision as of 02:21, 26 September 2017
This is really about setting up Time Machine to do OS/X backups. OS/X can't use Samba with Time Machine, so that's not good enough.
Update 2017, it's Docker time!
I am now using docker image now that has netatalk and avahi in it. Much simpler once you find the right image on the Docker Hub. It's on Laysan right now instead of Tern, I did not see a reason right now to run a separate server just to support Timemachine. Laysan is a desktop so it is often sleeping at night but then, so are the Macs. Timemachine is resilient. It turns out Laysan is powered up now more often than Tern was.
Get the image,
docker pull mbentley/timemachine
Linux
Do some housekeeping,
sudo mkdir /var/log/timemachine #Set permissions on the volume you will use for timemachine, so that user 1000 can write there. In my case, sudo chown -R 1000.1000 /volumes/timemachine
Start the image, Linux version
docker run -d --restart=always \ --net=host \ --name timemachine \ -v /volumes/timemachine:/opt/timemachine \ -v /var/log/timemachine:/var/log/supervisor \ -e PASSWORD=mysecretgoeshere \ mbentley/timemachine:latest
Windows
Do some housekeeping,
d: cd / mkdir timemachine/data timemachine/log
Start the image, Windows version
docker run -d --restart=always --net=host --name timemachine -v d:/timemachine/data:/opt/timemachine -v d:/timemachine/log:/var/log/supervisor -e PASSWORD=biggerontheinside mbentley/timemachine:latest
Any moment now, Murre will show up in servers on my Mac... so cool. So much easier than building from sources...
Now you should be able to open TimeMachine settings on your Mac(s), select your Linux server and enter credentials, user "timemachine" and password "mysecretgoeshere" (or whatever you chose above) and you should be able select and start using the TimeMachine share.
Since this is the third iteration I already had backups on the drive so I was able to remove the old entry for Tern and add one for Laysan and Timemachine was able to pick up where it left off.
Explanation: I mount a pair of 3TB drives formatted with btrfs as a single filesystem at /volumes/timemachine. I put the local log file is in /var/log/timemachine. You have to use --net=host so that this docker can use avahi discovery; otherwise your Macs will not be able to find it in Timemachine. I set my own password to override the default "timemachine".
Once it's running you should be able to see the log files showing it's working, look in /var/log/timemachine.
cd /var/log/timemachine cat netatalk.log Apr 26 16:43:33.613717 netatalk[11] {afp_avahi.c:80} (info:AFPDaemon): Registering volume 'TimeMachine' with UUID: '0795EE37-6397-9B09-00DE-5EB14448BE4D' for TimeMachine Apr 26 16:43:33.613763 netatalk[11] {afp_avahi.c:94} (info:AFPDaemon): hostname: laysan Apr 26 16:43:33.613786 netatalk[11] {afp_avahi.c:106} (info:AFPDaemon): Registering server 'laysan' with Bonjour
Since this Docker is built on Debian Jessie you can poke around in it by starting a shell if things don't look right,
docker exec -it timemachine /bin/bash
Update 2016
I used Tern for Timemachine backups for a few months. Go look at the page if you want details.
Update 2014
I built and used Netatalk 3 on Debian 6 but it turns out netatalk 2.2 works (in Debian 7). Since it is available in Debian 7 (aka Wheezy) you should upgrade your server and ignore the rest of this page!
Follow the instructions on this page instead: http://bullcreekstudio.com/uncategorized/debian-wheezy-mavericks-time-machine-server/
The outdated way
Build
Download source from http://sourceforge.net/projects/netatalk and build netatalk. Currently I am using 3.1.0
# install build prerequisites sudo apt-get install build-essential libdb-dev # download and unpack tar ball # cd into source folder ./configure make sudo make install
Configure
Change the volumes to use extended attributes by editing /etc/fstab and add user_xattr to the options
This is my current afp.conf file
I used to start netatalk at boot by putting it in /etc/rc.local but then I installed the standard 2.2 package and removed it, and it left behind nice startup and config scripts that I recycled
apt-get install netatalk apt-get remove netatalk
Edit /etc/init.d/netatalk Edit /etc/default/netatalk
bwilson@bellman:~$ cd /usr/local/etc bwilson@bellman:/usr/local/etc$ cat afp.conf ; ; Netatalk 3.x configuration file ; manual: http://netatalk.sourceforge.net/3.0/htmldocs/ [Global] log level = default:error uam list = uams_guest.so uams_dhx.so hosts allow = 192.168.123.108 192.168.123.109 vol preset = all_volumes guest account = timemachine [all_volumes] file perm = 0664 directory perm = 0775 cnid scheme = dbd valid users = julie bwilson ; [Homes] ; basedir regex = /home [TimeMachine] path = /green/timemachine time machine = yes valid users = timemachine