This is a text-only version of the following page on https://raymii.org: --- Title : Build a $35 Time Capsule - Raspberry Pi Time Machine Backup Server Author : Remy van Elst Date : 29-08-2014 URL : https://raymii.org/s/articles/Build_a_35_dollar_Time_Capsule_-_Raspberry_Pi_Time_Machine.html Format : Markdown/HTML --- ![timemachine1][1] This is a simple guide on building a $35 Time Capsule with a Raspberry Pi. A Time Capsule is a network attached storage device from Apple for use with their Time Machine. Time Machine gives users a very easy and userfriendly way to automatically create and restore (encrypted) backups. A Time Capsule is basically an expensive NAS that only talks the AFP/netatalk protocol. The 2 TB version [costs $299 at this time][2], a [Raspberry Pi only $35][3].

Recently I removed all Google Ads from this site due to their invasive tracking, as well as Google Analytics. Please, if you found this content useful, consider a small donation using any of the options below:

I'm developing an open source monitoring app called Leaf Node Monitoring, for windows, linux & android. Go check it out!

Consider sponsoring me on Github. It means the world to me if you show your appreciation and you'll help pay the server costs.

You can also sponsor me by getting a Digital Ocean VPS. With this referral link you'll get $100 credit for 60 days.

You will need the following: * Raspberry Pi, Model B/B+ * USB Hard Disk / Big USB Dick The Raspberry Pi can run either Raspbian or Arch, this guide works on both. The USB storage works best if it is externally powered. I've tested with 2 different Raspberry Pi's, one model B+, raspbian, with a 128GB USB disk (from Sandisk) and on Raspberry Pi Model B with Arch and a 1 TB USB hard drive. I've got some spare disk lying around, if you don't you should buy one. The total cost might be higher than $35 if you need to buy storage or want a nice case and other accessories. ### Preparing the disk Make sure the Pi is installed with your OS of choice (Raspbian or Arch). Plug the USB drive in. We will first format it to a big EXT4 partition. Install `cfdisk` first, or just use parted/fdisk if you know the drill. Debian: apt-get install cfdisk Arch: pacman -Sy cfdisk Issue the `dmesg` command and look at the last few lines. Remove the USB storage and re-attach it. Execute the `dmesg` command again and look for lines like this: [ 7793.698383] usb 1-2.4: USB disconnect, device number 11 [ 7798.233788] usb 1-2.4: new high-speed USB device number 12 using xhci_hcd [ 7798.326648] usb-storage 1-2.4:1.0: USB Mass Storage device detected [ 7799.331790] sd 3:0:0:0: [sdb] Attached SCSI removable disk Here you can see that `/dev/sdb` is our newly attached disk. Change it to your setup. Be carefull with this, any typo's might erase all your OS data. Format it with cfdisk: cfdisk /dev/sdb Delete all partitions on there and create on big Linux (83) one. _Do note that this will remove all data on the disk._ If you have a big disk (> 2 TB) you might need to create a GPT table on it. Use `parted` for that: parted /dev/sdb mklabel gpt unit s mkpart primary 2048s 100% name 1 BFS quit Now create an ext4 filesystem on it: mkfs.ext4 /dev/sdb1 Proceed to mounting the disk. ### Mounting the disk We add the disk to `/etc/fstab` to make sure it will still be mounted after a reboot. Otherwise you might end up with a full Pi and we don't want that. Edit `/etc/fstab`: vim /etc/fstab Add the following to it, change the disk device path if it is different: /dev/sdb1 /mnt/data ext4 noexec,defaults 0 0 Create the actual mount folder: mkdir -p /mnt/data Mount it, via fstab: mount -a Now check the `df -h` command and see if it is actually mounted. ### Installing netatalk `netatalk` is the program that talks the AFP protocol, which is wat Apple uses for Time Machine. Install the daemon, For Debian: apt-get install netatalk For Arch pacman -Sy netatalk Note that on Arch Linux Arm the AUR is included as a repo by default. If you run it on regular arch you need to use `yaourt` to install netatalk or build netatalk from the AUR yourself. Make sure the service starts at boot: Debian: update-rc.d netatalk defaults Arch: systemctl enable netatalk ### Configuring Netatalk Edit the file `/etc/afp.conf`: vim /etc/afp.conf Place the following contents. Edit the path's, user names and IP range: [Global] mimic model = TimeCapsule6,106 log level = default:warn log file = /var/log/afpd.log hosts allow = 196.168.1.0/24 [Homes] basedir regex = /home [TimeMachine] path = /mnt/data/timecapsule/ valid users = tmuser wife remy time machine = yes [Shared Media] path = /mnt/data/torrents/ valid users = wife remy Do not use a symlink as the source of this file. netatalk will not work correctly. I also share a folder with my Transmission Torrents in there, that contains about 400 GB of Linux iso's. The OS X machine is the only machine with a DVD burner in the house, therefore I use that to burn them to disk. The config file itself it pretty self explainatory. Make sure the folders actually exist. Create them with: mkdir -p /mnt/data/{timecapsule,torrents} Restart the `netatalk` service: Debian: service netatalk restart Arch: systemctl restart netatalk On Arch you might need to configure the Avahi service, on Arch Linux Arm it is enabled by default. This provides Bonjour capabilities. You might need to create a user or set the correct permissions on the folder. I'll add the user `wife` to the Pi, put her in the `users` group and give the `users` group write permissions on the folders we share via AFP. Add the user `wife`: useradd wife Set the password for `wife`: passwd wife Create the `users` group: groupadd users Add the user to the `users` group: usermod -aG users wife Set the correct permissions on the time machine folder: chown remy:users /mnt/data/timecapsule chmod 775 /mnt/data/timecapsule That's it. You can now configure Time Machine on OS X. Search for the folder, it should pop up: ![timemachine2][5] Enjoy your $ 35 Time Capsule. Consider making a donation with (a part of) the money you saved. Or if you like this article and want to support me AND get $10 Digital Ocean credit (2 months free), use this link to order: [1]: https://raymii.org/s/inc/img/timemachine1.png [2]: http://store.apple.com/us/product/ME177/airport-time-capsule-2tb [3]: http://www.raspberrypi.org/buy/ [4]: https://www.digitalocean.com/?refcode=7435ae6b8212 [5]: https://raymii.org/s/inc/img/timemachine2.png --- License: All the text on this website is free as in freedom unless stated otherwise. This means you can use it in any way you want, you can copy it, change it the way you like and republish it, as long as you release the (modified) content under the same license to give others the same freedoms you've got and place my name and a link to this site with the article as source. This site uses Google Analytics for statistics and Google Adwords for advertisements. You are tracked and Google knows everything about you. Use an adblocker like ublock-origin if you don't want it. All the code on this website is licensed under the GNU GPL v3 license unless already licensed under a license which does not allows this form of licensing or if another license is stated on that page / in that software: This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Just to be clear, the information on this website is for meant for educational purposes and you use it at your own risk. I do not take responsibility if you screw something up. Use common sense, do not 'rm -rf /' as root for example. If you have any questions then do not hesitate to contact me. See https://raymii.org/s/static/About.html for details.