This tutorial assumes that you have a machine with Ubuntu (Server) installed. I prefer the LTS version, as it is for 12.04 in this case.
	On your fresh Ubuntu server machine all the further steps are made as root-user. I prefer the root-user flavor instead of typing sudo before every statement though someone may find this a security issue - I don't. If you want to use sudo instead, please "think" yourself a "sudo" before every line of shell code here. Don't use it in editors (the text will say it if you now have to use an editor).
	Notice: the webserver runs without SSL, so if you want to setup SSL on apache refer to the apache manuals.
	First we have to install the required packages from the repos, as we do with:
	apt-get update && apt-get install apache2 apache2-doc mercurial
	After that we prepare some directories for using with Mercurial and Apache webserver:
	cd /var/
	mkdir hg
	mkdir hg/repos
	chown -R www-data:www-data hg/repos
	After that we have to configure some files for the Apache Webserver to be used with the Mercurial binary:
	cd /var/hg
	sudo cp /usr/share/doc/mercurial/examples/hgweb.cgi .
	sudo chmod a+x hgweb.cgi
	The named file does not exist, so we have to create it e.g. with
	nano hgweb.cgi
	and put the following line in it (editor):
	config = "/var/hg/hgweb.config"
	Save and close the file.
	Repeat this with the command
	nano hgweb.config
	and paste these lines into it and save it (editor):
	[collections]
	/var/hg/repos = /var/hg/repos
	The next part is to tell Apache how to handle the URL to your HG script by issuing the following commands:
	cd /etc/apache2/sites-available
	nano default
	Place this into the file right before the line </VirtualHost> and save it (editor):
	ScriptAlias /hg “/var/hg/hgweb.cgi”
	
	<Location /hg>
	AuthType Basic
	AuthName “Mercurial repositories”
	AuthUserFile /var/hg/hgusers
	Require valid-user
	</Location>
	Now the time has come to restart the web server with
	apache2ctl restart
	You may want to create an admin user to manage the repositories. Mercirual got it's own users so we create a new admin user and set a password with:
	cd /var/hg
	htpasswd -mc hgusers admin
	You have to type the new password twice. The "c" is used to inititally create the hgusers file. After that you just have to create other users with the same command line except the "c" switch like that:
	htpasswd -m hgusers oliver
	...
	Open your browser now and navigate to your webserver at http://yourhost/hg. You should be prompted to authenticate. Use the admin user and password you just created before. then you will see the repository startpage of the Mercurial server.
	To allow pushing updates to Mercurial via HTTP (not only HTTPS) open up the file
	/etc/mercurial/hgrc
	in an editor and paste these lines and save it:
	[web]
	allow_push = *
	push_ssl = false
	That's it, you're done!
	Now let's create the first test repository:
	cd /var/hg/repos
	mkdir test
	chown www-data:www-data test -R
	cd test
	hg init
	The hg init command issues all the stuff that has to be done to use that folder as a Mercurial repo. If you refresh your browser to open up the index of your HG-server, you will see that repo instantly. Now you can connect with e.g. SourceTree to manage and control the repo. Remember: issue the commands above to create a new repository as the server is not able to be controlled externally to create them.
	Original footage found on http://phpfour.com/blog/2011/05/setting-up-central-mercurial-server-in-ubuntu/, slightly adapted due errors/missing things.