<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rich Buggy &#187; small business server</title>
	<atom:link href="http://buggy.id.au/tag/small-business-server/feed/" rel="self" type="application/rss+xml" />
	<link>http://buggy.id.au</link>
	<description>Developer, CTO, Entrepreneur</description>
	<lastBuildDate>Mon, 04 Apr 2011 23:24:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Ubuntu SBS: MySQL Database Server</title>
		<link>http://buggy.id.au/2007/02/19/ubuntu-sbs-mysql-database-server/</link>
		<comments>http://buggy.id.au/2007/02/19/ubuntu-sbs-mysql-database-server/#comments</comments>
		<pubDate>Mon, 19 Feb 2007 02:00:13 +0000</pubDate>
		<dc:creator>Rich</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[small business server]]></category>

		<guid isPermaLink="false">http://www.buggy.id.au/2007/02/19/ubuntu-sbs-mysql-database-server/</guid>
		<description><![CDATA[I&#8217;ll be using MySQL to store user information for the small business server. This could be done with an LDAP server and many people will tell you that it should be. I chose MySQL over LDAP because it&#8217;s easier to understand, easier to use and you&#8217;ll probably require it anyway. Installing MySQL Once more apt-get [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be using MySQL to store user information for the small business server. This could be done with an LDAP server and many people will tell you that it should be. I chose MySQL over LDAP because it&#8217;s easier to understand, easier to use and you&#8217;ll probably require it anyway.</p>
<h3>Installing MySQL</h3>
<p>Once more apt-get makes installing services trivial</p>
<pre>sudo apt-get install mysql-client-5.0 mysql-server-5.0 mysql-common</pre>
<p>That&#8217;s it!! You don&#8217;t need to do anything else in this post. I&#8217;ll cover creating a schema for users and adding a few in my next post.</p>
]]></content:encoded>
			<wfw:commentRss>http://buggy.id.au/2007/02/19/ubuntu-sbs-mysql-database-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu SBS: Reverse DNS</title>
		<link>http://buggy.id.au/2007/02/18/ubuntu-sbs-reverse-dns/</link>
		<comments>http://buggy.id.au/2007/02/18/ubuntu-sbs-reverse-dns/#comments</comments>
		<pubDate>Sun, 18 Feb 2007 10:08:23 +0000</pubDate>
		<dc:creator>Rich</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[small business server]]></category>

		<guid isPermaLink="false">http://www.buggy.id.au/2007/02/18/ubuntu-sbs-reverse-dns/</guid>
		<description><![CDATA[In the last post I explained how to configure forward DNS (turning the name into an IP address). In this post I&#8217;ll tell you how to configure BIND so that it turns an IP address into a name. I&#8217;ll also explain the SOA information at the top of the zone files. Reverse DNS We&#8217;re using [...]]]></description>
			<content:encoded><![CDATA[<p>In the last post I explained how to configure forward DNS (turning the name into an IP address). In this post I&#8217;ll tell you how to configure BIND so that it turns an IP address into a name. I&#8217;ll also explain the SOA information at the top of the zone files.</p>
<h3>Reverse DNS</h3>
<p>We&#8217;re using the 192.168.x.x network so I&#8217;ll use the file /etc/bind/db.192.168. Change the name of the file as appropriate for your network. Copy the following into your file</p>
<pre>;
; BIND reverse data file for local network
;
$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.</pre>
<p>You now need to add entries for each IP address in the form</p>
<pre>xxx.yyy      IN   PTR    sbs.example.com.</pre>
<p>This turns the IP number 192.168.yyy.xxx into the name sbs.example.com.</p>
<p>Once you have created the zone file you need to add it to /etc/bind/bind.conf.local</p>
<pre>    zone "168.192.in-addr.arpa" in{
      type master;
      file "/etc/bind/db.192.168";
      allow-update{none;};
    };</pre>
<p>To hide this from people outside of the network I included it in the &#8220;external&#8221; view created in the previous post. Restart bind and you should now be able to resolve IP numbers into names.</p>
<h3>Start of Authority &#8211; SOA</h3>
<p>The SOA record is the first thing that appears in the zone file. The format is</p>
<pre>&lt;domain.name.&gt;   IN  SOA  &lt;hostname.domain.name.&gt;  &lt;mailbox.domain.name&gt;
        &lt;serial-number&gt;
        &lt;refresh&gt;
        &lt;retry&gt;
        &lt;expire&gt;
        &lt;minimum-ttl&gt;</pre>
<p>Serial-number is the serial number for this version of the file. You need to increment this each time you make a change to the zone file. A good idea is to use the current date and a number in the format YYYYMMDDnn where nn is a unique number for that day. So the first zone file for today would have 2007021801.</p>
<p>Refresh is how many seconds to wait before polling the primary name server to see if the serial number has changed.</p>
<p>Retry is how many seconds to wait if a refresh fails before trying again.</p>
<p>Expire is the number of seconds after both a refresh and retry fail before the domain name server stops serving the domain.</p>
<p>Minimum-TTL is the minimum time for an entry to live.</p>
<p>Next time I&#8217;ll cover setting up MySQL.</p>
]]></content:encoded>
			<wfw:commentRss>http://buggy.id.au/2007/02/18/ubuntu-sbs-reverse-dns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu SBS: Domain Name Server</title>
		<link>http://buggy.id.au/2007/02/10/ubuntu-sbs-domain-name-server/</link>
		<comments>http://buggy.id.au/2007/02/10/ubuntu-sbs-domain-name-server/#comments</comments>
		<pubDate>Fri, 09 Feb 2007 21:45:41 +0000</pubDate>
		<dc:creator>Rich</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[small business server]]></category>

		<guid isPermaLink="false">http://www.buggy.id.au/2007/02/10/ubuntu-sbs-domain-name-server/</guid>
		<description><![CDATA[The domain name server is an important part of the small business server allowing us to connect to other computers using friendly names instead of IP addresses. Because my client has a static IP address and an ISP willing to operate the slave domain name server I configured their domain name server as the master [...]]]></description>
			<content:encoded><![CDATA[<p>The domain name server is an important part of the small business server allowing us to connect to other computers using friendly names instead of IP addresses. Because my client has a static IP address and an ISP willing to operate the slave domain name server I configured their domain name server as the master DNS for their domain. If your ISP isn&#8217;t willing to do this then you can use a service like no-ip.com or easyDNS.</p>
<h3>Installing the domain name server</h3>
<p>Installing the domain name server is a simple process thanks to apt-get. Simply log into the server and type in the following command.</p>
<pre>% sudo apt-get install bind9</pre>
<h3>Configuring DNS</h3>
<p>Because of our network setup the domain name server needs to resolve names to IP addresses differently for internal and external clients. To do this we use &#8220;views&#8221; so that internally names resolve directly to the servers IP address while externally they resolve to the routers IP address which will port forward to the server. We will also use views so some names resolve internally but not externally.</p>
<p>Start by creating a new file called /etc/bind/db.example.com-external (using your domain instead of example.com) and copy the following into it.</p>
<pre>;
; BIND data file for example.com
;
$ORIGIN example.com.
$TTL    604800
example.com.            IN      SOA     example.com. root.example.com. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
                IN      NS      xxx.xxx.xxx.xxx.
                IN      NS      ns1.my-isp.com.
                IN      NS      ns2.my-isp.com.
;
example.com.    IN      A       xxx.xxx.xxx.xxx
;
@               IN      MX      10      sbs.example.com.
;
;
localhost               IN      A       127.0.0.1
sbs                     IN      A       xxx.xxx.xxx.xxx
www                     IN      CNAME   sbs
mail                    IN      CNAME   sbs</pre>
<p>This zone file will be used when resolving names for requests from outside of our network. It should never return an internal IP address and should only contain entries we want visible externally. Make the following changes to suite your environment.</p>
<ul>
<li>Change root.example.com to the email address of the person responsible for your DNS replacing the @ with . (hence root@example.com becomes root.example.com)</li>
<li>Change example.com to your domain</li>
<li>Change sbs to the name of your small business server</li>
<li>Change xxx.xxx.xxx.xxx to the public IP address of your router</li>
<li>Change ns1.my-isp.com and ns2.my-isp.com to the names of the slave name servers</li>
</ul>
<p>Now copy that file to /etc/bind/db.example.com-internal (remember to use your domain instead of example.com).</p>
<pre>% sudo cp /etc/bind/db.example.com-external /etc/bind/db.example.com-internal</pre>
<p>This zone file will be used when clients inside our network make DNS queries. You&#8217;ll need to change all of the external IP adresses to internal IP addresses. You may also want to add entires for internal devices such as other computers, network printers and your gateway. It&#8217;s safe to put these here because they won&#8217;t be visible from outside of your network. These entries will look something like:</p>
<pre>pc1                     IN      A       xxx.xxx.xxx.xxx
pc2                     IN      A       xxx.xxx.xxx.xxx
printer                 IN      A       xxx.xxx.xxx.xxx
gateway                 IN      A       xxx.xxx.xxx.xxx</pre>
<p>Now edit /etc/bind/named.conf.local and copy the following into it.</p>
<pre>view "internal" {
    match-clients { 192.168.1.0/8; };

    zone "example.com" {
            type master;
            file "/etc/bind/db.example.com-internal";
    };
};

view "external" {
    match-clients { any; };

    zone "example.com" {
            type master;
            file "/etc/bind/db.example.com-external";
            allow-transfer {
                    xxx.xxx.xxx.xxx;
            };
    };
};</pre>
<p>Then make a couple of changes to suite your environment:</p>
<ul>
<li>example.com should be changed for your domain name</li>
<li>Replace xxx.xxx.xxx.xxx with the IP address for the server acting as the slave for your domain. You can add multiple lines here.</li>
<li>Change 192.168.1.0/8 to suite your subnet</li>
</ul>
<p>Finally restart the domain name server</p>
<pre>% sudo /etc/init.d/bind9 restart</pre>
<h3>Port forwarding</h3>
<p>To make your domain name server visible from outside of the network configure your router to forward UDP/TCP port 53 to the server.</p>
<h3>Testing the domain name server</h3>
<p>You should now test your DNS is configured properly by using the dig command. This needs to be done both inside and outside your network so you know each location is getting the correct result. Example queries are:</p>
<pre>% dig @localhost example.com.au ns
% dig @localhost example.com.au a
% dig @localhost example.com.au mx
% dig @localhost sbs.example.com.au a
% dig @localhost www.example.com.au a
% dig @localhost www.example.com.au mx
% dig @localhost mail.example.com.au a
% dig @localhost mail.example.com.au mx</pre>
<p>From outside your network simple change locahost for your routers IP address. This will also tell you if port forwarding is working correctly.</p>
<p><strong>Tip:</strong> If your queries timeout then check /var/log/syslog for the error messages.</p>
<h3>Making it live</h3>
<p>When you&#8217;re ready to make the your DNS server live it&#8217;s a fairly simple process.</p>
<ol>
<li>Configure your slave domain name servers to use your master. Your ISP or DNS hosting company can help you with this.</li>
<li>Get your domain registrar to change your primary, secondary and (optionally) other DNS servers.</li>
</ol>
<p>As you can use any of the domain name servers as the primary and secondary servers it might make sense to use your ISP/DNS hosting company&#8217;s server for this as they&#8217;ll have a faster connection.</p>
<p>I&#8217;ll finish the domain name server in the next post when I cover the reverse lookup.</p>
]]></content:encoded>
			<wfw:commentRss>http://buggy.id.au/2007/02/10/ubuntu-sbs-domain-name-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu SBS: Static IP address</title>
		<link>http://buggy.id.au/2007/02/09/ubuntu-sbs-static-ip-address/</link>
		<comments>http://buggy.id.au/2007/02/09/ubuntu-sbs-static-ip-address/#comments</comments>
		<pubDate>Fri, 09 Feb 2007 02:34:08 +0000</pubDate>
		<dc:creator>Rich</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[small business server]]></category>

		<guid isPermaLink="false">http://www.buggy.id.au/2007/02/09/ubuntu-sbs-static-ip-address/</guid>
		<description><![CDATA[This is just a quick post before the one about configuring the DNS server. On my clients network the server gets it&#8217;s IP address from the DHCP server. If you&#8217;re doing this then it&#8217;s important that your DHCP server always issues the same address to the server. How you do this will depend on your [...]]]></description>
			<content:encoded><![CDATA[<p>This is just a quick post before the one about configuring the DNS server. On my clients network the server gets it&#8217;s IP address from the DHCP server. If you&#8217;re doing this then it&#8217;s important that your DHCP server always issues the same address to the server. How you do this will depend on your router.</p>
<p>Another option is to configure your server with a static IP address. To do this edit the /etc/network/interfaces file. You will be looking for a line like</p>
<pre>iface eth0 inet dhcp</pre>
<p>Once you have found that line replace it with the following (remember to change the IP address, subnet mask and gateway so they&#8217;re right for your network).</p>
<pre>iface eth0 inet static
    address 192.168.1.2
    netmask 255.255.255.0
    gateway 192.168.1.1</pre>
<p>You should now restart the network interface</p>
<pre>sudo ifdown eth0
sudo ifup eth0</pre>
<p>If your network stops working then make sure you put in the right values. Oh, and remember to use an IP address that your DHCP server won&#8217;t try giving to another computer.</p>
<p>Setting up the domain name server will be out later today <img src='http://buggy.id.au/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://buggy.id.au/2007/02/09/ubuntu-sbs-static-ip-address/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu Small Business Server</title>
		<link>http://buggy.id.au/2007/01/30/ubuntu-small-business-server/</link>
		<comments>http://buggy.id.au/2007/01/30/ubuntu-small-business-server/#comments</comments>
		<pubDate>Tue, 30 Jan 2007 12:45:22 +0000</pubDate>
		<dc:creator>Rich</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[small business server]]></category>

		<guid isPermaLink="false">http://www.buggy.id.au/2007/01/30/ubuntu-small-business-server/</guid>
		<description><![CDATA[Recently a client asked me to install a server at their small business. The server will perform a number of functions including file server, domain name server, email server and web server. In this series of posts I&#8217;ll cover setting up a Linux small business server (SBS) using the Ubuntu 6.10 Server. Before continuing I [...]]]></description>
			<content:encoded><![CDATA[<p>Recently a client asked me to install a server at their small business. The server will perform a number of functions including file server, domain name server, email server and web server. In this series of posts I&#8217;ll cover setting up a Linux small business server (SBS) using the Ubuntu 6.10 Server.</p>
<p>Before continuing I should explain the network setup. The network consists of a couple of PC&#8217;s connected using multi-port ADSL router. I don&#8217;t want to change the network configuration so I&#8217;m going to leave the router handling Internet sharing (NAT), network firewall and DHCP. I will need to tweak the DHCP settings so that computers on the clients network use an internal domain name server (DNS) instead of using the router as their domain name server. I&#8217;ll explain why in my post on setting up a domain name server.</p>
<h3>Choosing a Linux Distribution</h3>
<p>The first think I needed to do was choose a Linux distribution to use as the base from my small business server. In the past I&#8217;ve used a number of distributions but I&#8217;ve never been really happy with using these as a server. Most want to install a GUI and you find your server running a lot of processes that really aren&#8217;t required. By contrast the Ubuntu server installs so few processes that you can&#8217;t even access it remotely until you install the ssh server.</p>
<h3>Installing the Ubuntu server</h3>
<p>I&#8217;m not going to talk too much about installing the base Ubuntu server. What I will say is that I choose to not do a LAMP or DNS server installation. This left me with the cleanest possible server to which I will add services as I need them.</p>
<h3>Allowing remote access</h3>
<p>Once the server has been installed the first thing you&#8217;ll want to do is enable remote access. This will allow you to install the other services over the network and administer the server without needing to go to the console. Installing the ssh server is as easy as logging into the server console and typing</p>
<p><code>% sudo apt-get install ssh-server</code></p>
<p>You will now be able to access the server from computers inside the business using ssh. As I want to be able to access the server from outside the clients network I need port forward TCP and UDP port 22 from the ADSL router to the server. With port forwarding enabled I can ssh to the server from outside the clients network by using the public IP address of the ADSL router. The router will then forward the packets to/from the server. How you setup port forwarding is beyond the scope of this post because it will vary from one router to another.</p>
<p><strong>Warning: Don&#8217;t enable port forwarding if you don&#8217;t need it.</strong> The more ports you forward to your server the more exposed your server is and the easier it will be for someone to hack into it.</p>
<p>In the next post I will cover installing the domain name server.</p>
]]></content:encoded>
			<wfw:commentRss>http://buggy.id.au/2007/01/30/ubuntu-small-business-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

