What We're Going to Accomplish

Install a Subversion server, so that you can use version control for your projects.

Add a system management application, more popularly known as Webmin, so that you can keep track of your server's status
and get real-time updates.

A Quick Note

These steps can be accomplished while sitting at the computer and typing into the console, or for those who
like to run a headless server, you may use SSH. I covered it in my previous guide, so if you're unfamiliar with
the technology, head over there to get started using it. Now, without further ado, let's get started!

Download Subversion

While there are many version control systems, Subversion is one of the most popular. Subversion allows you to keep multiple versions of your code, allowing you to always revert back if you need a previous version.
Let's download it!

First, you need to login to your server; I'm doing it over SSH, so my screenshots will show my terminal:

Now, type this in and hit enter:

sudo aptitude install subversion

It will ask you for your password; type it in and press enter. Also, it may ask you if you want to continue, press "y" and hit enter.
Your server will now download and install the subversion server:

Once that's done, we need to set it up.

Setting Up Subversion

This next part can be kind of confusing. What we're going to do is create a new group, called "subversion" that will allow the Subversion server to
securely write to your repositories in your web server, but nothing else. To do this, enter the following commands, replacing USERNAME with your actual username.

So far, we've created the subversion group, created a place for our repositories, created a new repository called "project," and given the web server access to this project.
The last thing we need to do is allow Apache to serve the repositories. To do this, we need to install a new Apache library, called libapache2-svn. By now, you should know how to
do this:

Save the file (Control-O and then enter) and close it (Control-X). (note for Mac and Linux users: regardless of your OS settings, it's still control, not command or super.)

Basically, what happened there was you told Apache that when the URL ends with "/svn", serve up
a list of your subversion repositories which are located in "/var/svn". You then told it that you only
want people listed in "/etc/subversion/passwd" to be able to see these repositories.

Now, to put these changes into effect, reload Apache's configuration:

sudo /etc/init.d/apache2 force-reload

After you've done that, open up your favorite web browser and browse to http://yourserveraddress/svn. It will ask you to login, but no matter what you put, you will get
an internal server error:

Don't worry! This is because we haven't defined any users yet in /etc/subversion/passwd. Let's do that now:

sudo htpasswd -c /etc/subversion/passwd USERNAME

This will create a new entry for USERNAME with the password you specify. PLEASE do NOT use your normal account password as this password is sent insecurely, and in the odd event someone
intercepts it, you don't want them to have root access to your machine. After you've done this, go back to that page (http://yourserveraddress/svn) and refresh it. It should now ask for your username
and password again:

Put them in, and voila! You can now see all of your repositories (in this case, just project) and you're ready to use it for version control!

To add more users, run this command, replacing USERNAME with the new user's username.

sudo htpasswd /etc/subversion/passwd USERNAME

Setting Up Webmin for Server Management

Now that you have this fancy server doing all these different things, wouldn't it be nice to be able to manage it easily? Say hello to Webmin, an awesome web-based front-end for
system configuration, monitoring, etc. It does some pretty sweet things, like sending a text message to your phone if your server goes down. The best part: It's completely free. So, let's install it!

First off, we need to download the latest Webmin debian package off their site. At the time this article was written, the current version is 1.450. So, run this command to download the file:

wget http://prdownloads.sourceforge.net/webadmin/webmin_1.450_all.deb

However, before we can install it, we need to satisfy some dependencies (we need to install programs that Webmin uses):

After that has finished, install Webmin using the file we just downloaded:

sudo dpkg -i webmin_1.450_all.deb

Now, let that finish, and once it's done, Webmin has been installed! Open up your favorite web browser, and browse to https://yourserveraddress:10000/ (notice that it's https). You should see the following page: (If it doesn't work, keep reading)

Log in using your normal details; the same details you use to login to the server.

For those of you who can't connect, (likely most of you), read the next section. For those who can, skip the next section.

Hold Up; I Can't Connect!

For those that can't connect, good. It means your firewall is doing it's job. However, in this case, we want access to port 10000, so we need to add a new firewall rule. These directions are explicitly for those who followed my previous guide. Open up your Shorewall rules file:

sudo nano /etc/shorewall/rules

Add this line right above where it says #LAST LINE:

ACCEPT net $FW tcp 10000

Save the file (Control-O and then enter) and close it (Control-X).

For comparison, here is AlexVillmann.com's firewall rules: (I have more rules than the one we're adding, but you get the picture)

Now, restart Shorewall:

sudo /etc/init.d/shorewall restart

Finally, go back to your web browser and browse back to Webmin (https://yourserveraddress:10000/) and it should work this time.

Congratulations! You've got Webmin all set up! There are a million things you can do with it, but all are outside of the scope of this article. Personally, I would just play around with it until it does the things you want it too. It's pretty self-explanitory, and for everything else, there is the Webmin Documentation. Have fun!

Wrapping Up

By following this guide, you've setup version control and a sweet web management application. I wish I could go into detail about Webmin, but that is an article all by itself. Anyway, I hope this helps you move forward in your linux server adventure!

For those who seek more information on the topics I've covered, here are some great links: