How to use git-annex on a Synology NAS
This is known to work with DSM 4.3-3810 Update 1 and git-annex standalone version 5.20131224-g6ca5271.
Installation Steps
(1) In the DSM Package Center, install Git, which is available from Synology (no third-party repository needed).
(2) Download the latest standalone git-annex build for Linux on armel.
(3) Extract it somewhere sensible (eg: a bin/ directory your users home directory)
(4) Go into the git-annex.linux directory and ./runshell. You can now run git-annex as you normally would.
How to sync with the Synology NAS
On the Synology
(1) Setup port forwarding and associated dynamic dns, if applicable. Many good guides online for this.
(2) Setup ssh key based authentication with the Synology for each computer you want to sync with it. You want a specific key that is used only by git-annex, for each computer. Again, many good guides online.
(3) In the Synology .ssh/authorized_keys file for your account, add (substituing your username) [[!format sh """ command="/home/$yourusername/.ssh/git-annex-shell" """]] to the beginning of the line. Eg, it would look like this: [[!format sh """ command="/home/greg/.ssh/git-annex-shell" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDT1yE96E/JQNPt0ziiNYJRvndCvLK4uG5h/SNYoAIBF1uH6L7VYAt3HWVqSyi3BcV70WDZ/yWgtNzbrcir46JpvEHMcvYaXLbANwoDGNjG/gsz7kP/8VUxZ6hG3P3ICuwnqVum5+rYXm6oj3xzWPfTRhhRoDZLOQdevSNpdGNaa/lSg8Vuq2suHwjQlQb8AIUuCZmS5cm6XwoUq/jJtN4LTuTPqMjzA6NkdhWM2Kigi9jPQBFborkYBPMphmZwBZiVnhsH1XpaOff+mP03D2gF/huC+b1vbWQstjuehUbY59rvJ4ijb3810Uq2ep7dwLagmILtX5GbL+GS64pAn9sIP annex-othercomputer """]]
(4) the git-annex-shell script in your .ssh should be created for you aftering your initial ./runshell
(5) Double check that the script points to the correct directory of where your extracted git-annex.linux lives.
On the other computers - the manual way
(1) See step 2 above about creating the specific git-annex ssh keys.
(2) In your .ssh/config, create an alias for your Synology that includes specifying the right sshkey. For example, mine looks like: [[!format sh """ Host synologyhost HostName mydynamicdomain.no-ip.org IdentityFile /home/greg/.ssh/annex_rsa """]]
(3) Now when you clone the git repo from the Synology, or add it as a remote, do the following: [[!format sh """ git clone greg@synologyhost:/absolute/path/to/annexname annexname """]] or
[[!format sh """ git remote add synology greg@synologyhost:/absolute/path/to/annexname """]]
(4) Run git-annex sync
On the other computers - Using the assistant
(1) Use the webapp to add the remote. I'm not sure if there are any gotchas here as I have not done it this way yet.
There is a new website with documentation to create App for new synology dsm 5.0 here : http://www.synology.com/en-us/support/developer A good way to distribute git annex to lot of people ? :)
I am not able to get full syncing working. It says "syncing enabled (metadata only)". When I click on Actions -> Edit it says:
Just a git repository.
This repository is not currently set up as a git annex; only git metadata is synced with this repository.
If this repository's ssh server has git-annex installed, you can upgrade this repository to a full git annex, which will store the contents of your files, not only their metadata.
When I try to upgrade the repository it does not work. The log says:
sh: git-annex-shell: not found
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: remote command not found (code 127) at io.c(226) [sender=3.1.1]
I'm using Version: 5.20140717 on the Linux Ubuntu 14.10.
Ssh'ing from Ubuntu to gituser@synology works fine and shows the git-annex-shell options
Any ideas?
Pieter, I suspect you didn't follow the part of the instructions where it says to run "./runshell" on the NAS. If you didn't do that, there will be no ~/.ssh/git-annex-shell script set up.
You have put git-annex-shell in your PATH somehow, but you probably did it by editing a bash dotfile. Those files are used for interactive login shells, but not when git-annex is sshing noninteractively into the NAS to run git-annex-shell.