Redmine (with Subversion) on Dreamhost

I absolutely love Redmine. I’m not sure if it’s a textbook case of Stockholm syndrome, since it took it’s fair share of cursing and bellyaching before I got it running for a company I’m currently contracting for, but since I’ve been using it, it’s got every feature that I’ve needed in small projects to keep myself organized, and my team connected.

It’s got a Wiki, Task Management (to track both Bugs and Tasks), Time Management, Repository Integration, and strong Access Control, all of which are compartmentalized by Project (of which you can have an infinite amount). That’s just scratching the surface of the features, there’s so much more available if the team were to grow larger.

Dreamhost is a pretty good host too, for many reasons, (price, featureset. The speed hit from page loads is a bit frustrating at times, but I’ve yet to find someone on the east coast that can beat them out, feature for feature, so I continue to stay a customer of theirs. (Something like 6 years and counting…)

Now, it’s really best if you start this setup with a brand new account (with SSH enabled), or you’re prepared to move a bunch of files.

First, go through the Unix account setup. I’ve done it on a few of my more used accounts, and it’s a really good suggested organization of everything.

Then, if you plan to use Subversion as your SCM, I would suggest installing the latest version of subversion in your directory, especially if you plan on connecting via SSL. Dreamhost’s currently got Subversion 1.5.x installed on their systems, and I needed a switch that is only available in 1.6.x. Note: While the wiki points to tigris.org, you’ll need to use the links available at subversion.apache.org, since they’ve taken over the project now.

Now, on to installing Redmine! Everything here was pretty self explanatory, except when I went to execute:

rake generate_session_store

I was asked to install the latest version of Rails 2.3.11, and I was able to enter the following in the redmine directory:

gem install -v=2.3.11

After that, BAM! I was able to jump into Redmine, login as admin, change my usernames and get a bunch of my projects setup!

Fixing Subversion SSL connections

Subversion was still broken though. Whenever I would try to visit the repository page, I would get the error: “The entry or revision was not found in the repository.”

So there was a bit more work to be done.

Now, I pay the extra $4 a month for a Static IP, and just use their SSL certificate that they give me. Because it’s not by a verified certificate authority, Redmine will fail silently whenever it tries to connect to your server via SSL. This is a pain in the ass to figure out, but if you’ve done everything up to this point, you’re almost there!

The first thing you want to do, is go to your Redmine configuration (which you created to get sendmail working, right?)

Open up <redmine_dir>/config/configuration.yml in your favorite editor:

You want the following line to have the path to your Subversion 1.6 install:

scm_subversion_command: /home/<user>/run/bin/svn

Then, you want to navigate to <redmine_dir>/lib/redmine/scm/adapters/

Open up subversion_adapter.rb , and change the following line (263 for me) from:

str << " --no-auth-cache --non-interactive"

to:

str << " --no-auth-cache --trust-server-cert --non-interactive"

This will allow your subversion client to connect to servers, and just trust their certificate. Another way to do this is to login as the webserver and have it list the contents of the repository, to get it to accept the certificate. Since this is a shared host, I don’t think you’ll be able to do that here. :)

Finally, restart your Redmine install by running the following from the Redmine directory:

touch tmp/restart.txt

The next time you visit your repository within the Redmine install, you should be able to connect to your Repository without issues!

Forcing HTTPS, and getting a bonus speedup!

In order to avoid users mistakenly visiting the HTTP version of the redmine install, I wanted to force them to always visit and view the site via HTTPS.

So, I headed over to <redmine_dir>\public, and completely replaced the .htaccess file with the following contents:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URL}

Now, to be honest, I had mistakenly overwrote the other file that already existed there. However, after doing so, Redmine was perceptibly snappier. I have no idea what the previous .htaccess file was doing to cause the issue, (and honestly, I haven’t cared enough to replace it with the old file and do a line-by-line removal to find out) but I have actually seen a few other people suggesting to get rid of the file to deal with some other issues.

Either way, congratulations! You now have a speedy, secured install of Redmine on your shared Dreamhost account, with access to a Subversion repository over SSL!