Subversion on FreeNAS
Like several other FreeNAS users I would like to run a Subversion server on my FreeNAS box. Sure, it is discouraged, but the alternative for me is to use an Internet-facing server or to keep a third machine running all the time. The FreeNAS box seems like the best choice.
The installation process is a bit involved as the embedded version of FreeNAS keeps the root file system in RAM. A standard installation will simply disappear after the first reboot.
Create a group and a user named svn through the web interface. Note that if you want to su to svn later on, a real shell is required, nologin will not work. Login to the Unix prompt and su to root. Create a directory on one of the mounted disks (not the root file system, which is a RAM disk!):
mkdir -p /mnt/data/apps/Subversion
Install the subversion package to the proper location:
setenv PKG_TMPDIR /mnt/data/apps/Subversion
pkg_add -r subversion -P /mnt/data/apps/Subversion
Include the dynamic libraries in the search path:
ldconfig -Rm /mnt/data/apps/Subversion/lib
Create a repository. Again the location must be on a mounted disk:
/mnt/data/apps/Subversion/bin/svnadmin create /mnt/data/apps/Subversion/svnrep
Configure the repository.
vi /mnt/data/apps/Subversion/svnrep/conf/svnserve.conf
Apart from comments this is an example:
[general]
anon-access = none
auth-access = write
password-db = passwd
realm = FreeNAS
Edit the password file (vi /mnt/data/apps/Subversion/svnrep/conf/passwd
) and add users:
[users]
userid1 = password1
userid2 = password2
Create a start script for the Subversion daemon:
vi /mnt/data/apps/Subversion/bin/start_svnserve.sh
The start script needs to include the Subversion libraries before it launches svnserve:
#!/bin/bash
ldconfig -Rm /mnt/data/apps/Subversion/lib
su svn -c '/mnt/data/apps/Subversion/bin/svnserve -d
--listen-host=n.n.n.n -r /mnt/data/apps/Subversion/svnrep'
The svnserve command should use a single line, wrapped for readability. Without the listen-host option Subversion may use an IPv6 address. Use the option with your IPv4 address to get around that. Make the script executable:
chmod +x /mnt/data/apps/Subversion/bin/start_svnserve.sh
Change ownership of all files properly:
cd /mnt/data/apps/Subversion
chown -R svn:svn svnrep
Test the script. If it works, add it as a PostInit start script (System/Advanced/Command scripts). Voila, FreeNAS is running Subversion!
Hi Erik.
Quick question: did you install the SVN on an embedded FreeNAS or a full version? I can’t find useful information anywhere only to find that SVN is only possible to install on a full FreeNAS. Your article doesn’t mention this surely but I have a feeling you did run it on an embedded version. A clarification would be appreciated
I used FreeNAS 0.7.1 (revision 5126) amd64-embedded, so yes the embedded version. It should work with the latest 0.7.2 release as well – I have upgraded and everything still works as it should. I haven’t tried FreeNAS 8 due to the significantly increased hardware requirements.
Why is this “discouraged”? I couldn’t find anything, neither official recommendations nor discouragement.
Sure, they recommend against running svn off a network share – meaning the server on one machine, its files on another – due to the file locking semantics – but this doesn’t seem to be the case, you’re running svn on the FreeNAS machine, and it sees its discs directly, without a network layer.
Well, I don’t have the links handy, but when I prepared for the installation I read several posts discouraging using FreeNAS as anything but a NAS. The point was that it might make the NAS less stable and that it would impact performance. Personally I don’t care, for a home or small office it is better to have a single machine that is always on. For a major corporation with money to spare I would use different servers. Still, my own setup has been rock stable since I replaced a broken network card some time ago. No downtime at all.
Interesting. With my 0.7.2 installation, the package installer cannot find SVN, and I haven’t found any way around that. The system is i386-embedded on AMD Athlon(tm) 64 Processor 3500+. Thwarted.
I’m no FreeBSD expert, but you could try PACKAGESITE (point pkg_add to another repository for the installation) or portsnap. Good luck!
Hi Erik,
thanks for your helpfull HowTo.
All going well, but at the i can’t create a svn Projekt.
I try it from an other host with
svn list svn+ssh://svn@192.168.1.250/svnrep
after that i get
bash: svnserve: command not found.
Or with a other question:
How you checkin in SVN.
Check the Subversion documentation at http://svnbook.red-bean.com, it covers everything. As for the svn command I don’t think you can use svn+ssh, at least not without additional configuration. Try regular svn (svn://192.168.1.250/svnrep) and see if that works. If not the online book should tell you what you need to do, though it might not work without additional packages in FreeNAS.