How to use a Raspberry Pi for your Time Machine backups

by Jannik Arndt

Apples Time Machine is a great backup solution, you only have to do one thing: Connect your disk from time to time.

Since that is way harder than it sounds, there’s a second option: Buy a 329€ Time Capsule and do backups over wifi!

That’s too expensive? Here’s how to build your own Time Capsule with a Raspberry Pi 3 and an external hard drive.

This guide is based on, but tries to be more comprehensive and also includes a few workarounds for problems I encountered.

On the pi

1. Connect USB drive to pi

2. Find drive

sda       disk 465.8G MK5065GSXF      <= probably that one
mmcblk0   disk  14.9G
mmcblk0p1 part  41.5M
mmcblk0p2 part  14.9G

3. Format drive

➜  ~ sudo mkfs.ext4 /dev/sda

4. Install netatalk

➜  ~ sudo apt-get update
➜  ~ sudo apt-get upgrade
➜  ~ sudo apt-get install netatalk

5. Create a mount point

➜  ~ sudo mkdir /mnt/TimeMachine

6. Add mount to file system table (fstab)

➜  ~ sudo nano /etc/fstab

Insert the mount post at the end of the file: /dev/sda /mnt/TimeMachine auto defaults 0 2 and exit with ctrl + x, y, enter.

7. Mount device

➜  ~ sudo mount /dev/sda

8. Make it accessible

➜  ~ sudo chmod 777 /mnt/TimeMachine

9. Make the drive known to netatalk

➜  ~ sudo nano /etc/netatalk/AppleVolumes.default

Add /mnt/TimeMachine "Time Machine" options:tm at the end, then exit with ctrl + x, y, enter

10. Restart netatalk

➜  ~ sudo service netatalk restart

11. Restart the pi

➜  ~ sudo reboot

On the Mac

1. Allow unsupported devices

In Terminal, make Time Machine show unsupported devices with

➜  ~ defaults write TMShowUnsupportedNetworkVolumes 1

2. Find the remote disk

Open the Finder and click on raspberrypi in the network interfaces

Connect as pi and your password. Then double click the Time Machine disk:

3. Add the disk to Time Machine

Head to the Time Machine Preferences and add the new disk:


While the Akka documentation is incredibly well written, it has surprisingly few images. Since I visualize concepts to remember them, here is my take on how Event Sourcing in Akka Persistence works:

Changing the password for a PostgreSQL database user involves two steps: The change in the database and the change in the application code. This blog post describes how to do this without any downtime or failed authentication tries.

The PostgreSQL installation comes with a great tool, psql, to administer and inspect the database. pgcli extends this with syntax highlighting and autocompletion.