Take the 2-minute tour ×

I have a Subversion server set up at home. I can checkout files from a computers both in the same network as the server, and not in the same network using svn:\mydomain.com

The problem comes in when I try to connect from work, they block port 3690, so I cannot checkout files. I can however check out other subversion repositories from port 80 (like codeplex and collab.net).

How do I get my home server to allow me to use http://mydomain.com and checkout files, or even svn.mydomain.com ??

Let me note that this server is also a web server, so IIS is using port 80. And I would prefer an option that does not involve Apache, but if nothing else can be done, I will try it.

share|improve this question

2 Answers 2

up vote 0 down vote accepted

If you want to be able to use http://mydomain.com or svn.mydomain.com to check out files, then you will need to integrate with a web server, which generally involves port 80 (but doesn't have to).

IF you can manage to either run IIS on another port, or access your subversion via web on a port that is not port 80, you might want to check out VisualSVN. It's a free, current, all-in-one SVN solution specifically designed for windows servers. I have been using it a long time, and I love it. It has web access available out of the box. I believe it does use Apache, but they set it up for you.

My svn server is available internally and externally at https://svn.mydomain.com:8443/

Sorry if this doesn't help you under your tight constraints.

If you can get a second IP address, that would help. Or if you could put up an application-aware router in front of your web server, such as ISA server, you can route requests based on the domain name, and have multiple web servers with different internal IPs accessed by the same external IP (I do this).

Update: Alternative

Have you looked at HTTPort or a similar program? I used it when I worked for a big company to allow me to connect to arbitrary internet ports. What you do is this:

  1. Install HTTPort on your work machine.
  2. Map a local port on your work machine to an internet IP address and port. Let's say you point port 5000 to (your home computer)
  3. Point your svn client at work to localhost:5000
  4. HTTPort routes that out to your home computer.
share|improve this answer
I looked at VisualSVN, but that has Apache built-in. If I can't find a non-Apache solution, I will probably try that first. –  user22103 Oct 6 '09 at 15:54
How about HTTPort? I added it to my answer. –  Chris Oct 6 '09 at 17:05
I should have known HTTPort would be blocked at work. I think I might try Visual SVN, or worst case, a USB drive. –  user22103 Oct 9 '09 at 15:04

If you have a firewall at home (I hope you do), you can put a port forwarding rule in to forward a port, that is allowed out of you work network, on the firewall to 3690 on the SVN server.

At my work they block everything but 80 and 443, so I forwarded 443 on my firewall to port 22 (ssh) on my desktop. Now I can ssh to 443 on my home network and it connects to ssh on 22.

Since you're running a webserver, you may already be using 443. However, they may allow 22 or 25 (SMTP) or 110 (pop3). You'll have to figure out what ports are allowed out on your work network and use one of them (that you're not using on your svn/web server) to forward to your SVN port.

Alternatively, if you have access to another machine on the internet, you could put a proxy on that. Then you would connect to that machine on, say, 80 and that machine would forward 80 to 3690 on your home network.

Yet another approach is to install Apache on you SVN server and run it on a different port 9 (say 8080). Then, using URL rewriting rules, make some magic url that forwarded to apache. For example, you might make www.mysite.com/svn re-write to www.mysite.com:8080/svn.

share|improve this answer

Your Answer


