Making your own storage server with cheap hardware

Yesterday I started working on a cheap storage server. I had the following requirements:

  1. I needed a versioning file system (so every document I store is versioned)
  2. I needed access via Webdav, also for this versioning
  3. It should have easy install
  4. I wanted to use cheap hardware (my 400 mhz system I have gathering dust in my cupboard should do nicely)
  5. I wanted to user friendly tools to support the system (under both Windows and Linux)
  6. It had to be secure (SSL enabled on all levels)
  7. It must be searchable, whatever document I throw in (doc, xls, odt, wpd, txt, xml, html, mp3 etc)

After a bit of searching, it became clear I would use Apache 2 and Subversion under Linux to achieve my goal.

The steps I took to install it all where;

  1. Install Fedora Core 3, server install with all installation options marked off and SELinux off (!)
  2. Get the network verified and working
  3. Import the GPG key:
    rpm --import http://www.fedora.us/FEDORA-GPG-KEY
  4. Install Apache: yum install httpd
  5. Install mod_ssl: yum install mod_ssl
  6. Install Subversion: yum install subversion
  7. Install mod_dav_svn: yum install mod_dav_svn

Now your FC installation is ready to go; it already fixed a key for you so the SSL installation is ready.

Make the repository directory:

mkdir /home/svn

chown -R apache.apache /home/svn

Make the directory for your security:

mkdir /home/secvsn

chgrp -R apache /home/secsvn
chmod -R 750 /home/secsvn

You have to change the configuration of Subversion under Apache; it is stored here;

/etc/httpd/conf.d/subversion.conf

Add the following:

<Location /svn>
DAV svn
SVNPath /home/svn
SVNAutoversioning on
AuthType Basic
AuthName “My SVN Repository”
AuthUserFile /home/secsvn/passwd
AuthzSVNAccessFile /home/secsvn/access
Require valid-user
</Location>

Make the password file:

htpasswd -cm /home/secvwn/passwd john

and type a password.

Then make the access file:

cat > /home/secsvn/access
[/]
john = rw

Meaning that john can read and write the entire repository so far. You can add more users if you want ofcourse; read the SVN book to see the syntax.

Start Apache:

/etc/init.d/httpd start

To make sure it starts at the start of the OS:

chkconfig httpd on

Now it should work; make sure you have the firewall open for Apache port 80, if you do not know or have this yet, type;

system-config-securitylevel

and set Apache to the list of allowed services.

From another computer, try;

http://your.ip/svn/

This should ask your for a name and password; this is the aforementioned and created user ‘john’.

If you enter the user and it does not work, look in the /var/log/httpd/error.log file for clues. If there is something wrong with permissions, you problably mounted the repository on another drive and have SELinux security on. To fix this, either turn SELinux off or give the repository the right credentials (Google this).

[TODO: howto switch on SSL for this service]

How I made the search I will put somewhere here later, because it appeared my network card was broken and network switched off automatically after 30 minutes of use on the system.

Be the first to leave a comment. Don’t be shy.

Join the Discussion

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>