<?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>Branded Clever</title>
	<atom:link href="http://www.brandedclever.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.brandedclever.com</link>
	<description>Perfecting your tech</description>
	<lastBuildDate>Thu, 27 Dec 2012 07:27:37 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The Perfect Rails Install on Ubuntu 11.10</title>
		<link>http://www.brandedclever.com/the-perfect-rails-install-on-ubuntu-11-10/</link>
		<comments>http://www.brandedclever.com/the-perfect-rails-install-on-ubuntu-11-10/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 04:13:53 +0000</pubDate>
		<dc:creator>Damon Morda</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.brandedclever.com/?p=618</guid>
		<description><![CDATA[I&#8217;ll admit, I enjoy programming in Ruby on Rails. It&#8217;s the perfect fit for so many of my smaller projects where I need to build a small application and have it up and running quickly. However, sometimes it can be extremely frustrating to install a new system with the right versions of Rails, Ruby, MySQL, [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ll admit, I enjoy programming in <a href="http://rubyonrails.org/">Ruby on Rails</a>. It&#8217;s the perfect fit for so many of my smaller projects where I need to build a small application and have it up and running quickly. However, sometimes it can be extremely frustrating to install a new system with the right versions of Rails, Ruby, MySQL, etc. Often times the distribution may have older packages or the gems are picky about what version of libraries are installed on the system. Well, if you run Ubuntu 11.10, this post is for you as it will outline a cut and paste set of commands to get you up and running with Ruby 1.92, Rails 3.20, Rubygems 1.8.15, MySQL and SQLite.<span id="more-618"></span></p>
<h2>Introduction</h2>
<p>This guide outlines a procedure for installing the following Rails environment:</p>
<ul>
<li>Ubuntu 11.10</li>
<li>Ruby 1.92</li>
<li>Rails 3.20</li>
<li>Rubygems 1.8.15</li>
<li>MySQL</li>
<li>SQLite</li>
<li>Git</li>
</ul>
<h3>Step 1: Update your operating system packages</h3>
<p>The first thing we are going to do is get the latest updates for Ubuntu. The following two commands will download and install the latest Ubuntu updates.</p>
<pre>sudo apt-get update
sudo apt-get upgrade</pre>
<h3></h3>
<h3></h3>
<h3>Step 2: Install Ruby 1.9.2, build-essential, and git</h3>
<p>Ubuntu provides several versions of Ruby. If you aren&#8217;t careful, you may end up installing older or even multiple versions. We want to install version 1.9.2 so we have the latest and greatest. For this, and other tasks ahead of us, we&#8217;ll also need build-essential as it has the developer tools that will be needed to compile various gems. Git is optional, but it doesn&#8217;t hurt to have a handy version control system at your disposal.</p>
<pre>sudo apt-get install ruby1.9.2-full build-essential git-core</pre>
<h3></h3>
<h3></h3>
<h3>Step 3: Install RubyGems 1.8.15</h3>
<p>Ubuntu is a few versions behind on their offical RubyGems package. So rather than using that we&#8217;ll use the RubyGems installation method here. You&#8217;ll download version 1.8.15 of RubyGems, unzip it, and then run the setup.rb program to install it.</p>
<pre>wget http://production.cf.rubygems.org/rubygems/rubygems-1.8.15.tgz
tar -zxvf rubygems-1.8.15.tgz
cd rubygems-1.8.15
sudo ruby setup.rb</pre>
<h3></h3>
<h3></h3>
<h3>Step 4: Update RubyGems</h3>
<p>Once you have RubyGems installed, you want to double-check to make sure you have the latest version of the RubyGems software and then update all gems, if you have any installed.</p>
<pre>sudo gem update --system
sudo gem install rubygems-update
sudo update_rubygems</pre>
<h3></h3>
<h3></h3>
<h3>Step 5: Install everything else</h3>
<p>Now that you have RubyGems installed, it&#8217;s time to install Rails and the rest of the gang. One of the common issues I&#8217;ve run into when installing Rails is that I&#8217;d get compile errors when installing MySQL or SQLite. We&#8217;ll address that by installing the the right Ubuntu packages. I&#8217;ve also run into the occasional error when running commands to generate new models, controllers, etc. We&#8217;ll fix that by installing node.js as the JavaScript framework.</p>
<pre>sudo gem install rails
sudo apt-get install libsqlite3-dev
sudo gem install sqlite3
sudo apt-get install nodejs
sudo apt-get install mysql-server mysql-client
sudo apt-get install libmysql-ruby libmysqlclient-dev
sudo gem install mysql</pre>
<h3></h3>
<h3></h3>
<h3>Step 6: Test Drive</h3>
<p>You should now have a working Ruby on Rails environment. To test it out, create a Rails application in your home directory as follows:</p>
<pre>cd ~/
rails new app_of_the_century
cd app_of_the_century
rails generate model User</pre>
<p>If you installation worked, Rails should create your application file/folder structure and generate a User model all without a single error.</p>
<h3></h3>
<h3></h3>
<h3>Cut and Paste Version</h3>
<p>Now that I&#8217;ve explained it step-by-step above, here&#8217;s a cut and paste version that should &#8220;just work&#8221; if you were to paste it into a terminal window.</p>
<pre>sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ruby1.9.2-full build-essential git-core
wget http://production.cf.rubygems.org/rubygems/rubygems-1.8.15.tgz
tar -zxvf rubygems-1.8.15.tgz
cd rubygems-1.8.15
sudo ruby setup.rb
sudo gem update --system
sudo gem install rubygems-update
sudo update_rubygems
sudo gem install rails
sudo apt-get install libsqlite3-dev
sudo gem install sqlite3
sudo apt-get install nodejs
sudo apt-get install mysql-server mysql-client
sudo apt-get install libmysql-ruby libmysqlclient-dev
sudo gem install mysql</pre>
<p>I certainly appreciate feedback so if you have other suggestions for a smoother Rails install on Ubuntu 11.10, add a comment to the post so that I can improve this post. Thanks in advance!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brandedclever.com/the-perfect-rails-install-on-ubuntu-11-10/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Five Steps to Configuring Privacy on Google Plus (+)</title>
		<link>http://www.brandedclever.com/five-steps-to-configuring-privacy-on-google-plus/</link>
		<comments>http://www.brandedclever.com/five-steps-to-configuring-privacy-on-google-plus/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 04:34:09 +0000</pubDate>
		<dc:creator>Damon Morda</dc:creator>
				<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Social Networking]]></category>

		<guid isPermaLink="false">http://www.brandedclever.com/?p=459</guid>
		<description><![CDATA[The Google+ Project is a social networking service that allows you to connect with others, define relationships, and share your information on the web similar to how you would in real life. As with any social networking service, it's important to understand the potential risks and be wary of what you share and with whom. In this post, I'll provide some recommendations for how you can take advantage of privacy settings offered by Google to help you better protect your information.]]></description>
				<content:encoded><![CDATA[<p>The <a title="Google+ Project" href="http://www.google.com/intl/en/+/demo/">Google+ Project</a> is a social networking service that allows you to connect with others, define relationships, and share your information on the web similar to how you would in real life. As with any social networking service, it&#8217;s important to understand the potential risks and be wary of what you share and with whom. In this post, I&#8217;ll provide some recommendations for how you can take advantage of privacy settings offered by Google to help you better protect your information.<span id="more-459"></span></p>
<h2>Step 1: Setting Up Circles</h2>
<p>First, you need to understand Google+ Circles. Circles allow you to create and share information with groups of friends just like you have in your real life social circles. For example, my circles include the following:</p>
<ul>
<li><strong>Friends</strong> &#8211; Those I trust with my information and can see the majority of my posts, photos, etc.</li>
<li><strong>Family</strong> &#8211; See some of my posts, mostly about family-related stuff.</li>
<li><strong>Following</strong> &#8211; Don&#8217;t see my posts, but I want to see their posts.</li>
<li><strong>College Friends</strong> &#8211; See some of my posts, mostly those related to my college days.</li>
<li><strong>Work Friends</strong> &#8211; See some of my posts, mostly those related to life at work.</li>
<li><strong>Geeks</strong> &#8211; See some of my posts, mostly those on topics about technology and gadgets.</li>
</ul>
<p>So come up with your list of circles and create them. Once you&#8217;ve created your circles, begin adding your contacts to one or more circles. It&#8217;s perfectly fine to add a contact to more than one circle. For example, some people in my <strong>Friends </strong>circle are also in my <strong>College Friends</strong> circle.</p>
<p><img class="size-medium wp-image-474 alignnone" title="add-friends-to-circles" src="http://www.brandedclever.com/wp-content/media/2011/06/add-friends-to-circles-605x318.jpg" alt="Add friends to Google+ circles" width="605" height="318" /></p>
<h2>Step 2: Lockdown Your Profile</h2>
<p>By default, most of your profile is visible to anyone on the web. Unless you want to share all your information with the world, then you&#8217;ll want to change these settings.</p>
<ol>
<li>Select <strong>Google+ settings</strong> from the configuration menu<a href="http://www.brandedclever.com/wp-content/media/2011/06/google-settings.jpg"><img class="alignnone" title="google-settings" src="http://www.brandedclever.com/wp-content/media/2011/06/google-settings.jpg" alt="Configure your Google+ settings" width="281" height="157" /></a></li>
<li>Click on <strong>Profile and Privacy<br />
</strong><strong><a href="http://www.brandedclever.com/wp-content/media/2011/06/profile-and-privacy.jpg"><img class="alignnone size-full wp-image-484" title="profile-and-privacy" src="http://www.brandedclever.com/wp-content/media/2011/06/profile-and-privacy.jpg" alt="Configure your profile and privacy settings in Google+ " width="195" height="169" /></a><br />
</strong><strong> </strong></li>
<li>Next to the Public profile information section, click<strong> Edit visibility on profile</strong>.<a href="http://www.brandedclever.com/wp-content/media/2011/06/visibility-on-profile.jpg"><img class="alignnone size-full wp-image-485" title="visibility-on-profile" src="http://www.brandedclever.com/wp-content/media/2011/06/visibility-on-profile.jpg" alt="Configure your profile's visibility in Google+" width="505" height="89" /></a><br />
<strong> </strong></li>
<li>There is a globe icon next to each profile item. When you click on it, it allows you to edit the visibility for that information.<a href="http://www.brandedclever.com/wp-content/media/2011/06/limiting-profile-visibility-control.jpg"><img class="alignnone size-full wp-image-487" title="limiting-profile-visibility-control" src="http://www.brandedclever.com/wp-content/media/2011/06/limiting-profile-visibility-control.jpg" alt="Limiting Who Can See Your Google+ Profile Information" width="537" height="301" /></a></li>
<li>When you are done, click the<strong> Done editing</strong> button at the top of the screen.</li>
</ol>
<p>You can configure your profile privacy in a number of ways including selecting <strong>Custom</strong> so that you can select specific circles with whom you want to share profile information. I allow most of my circles to see my profile information with a few exceptions such as my my address and phone number.</p>
<p>Although you have pretty good control over most information, there are a few that you cannot hide from the public.</p>
<ul>
<li>Full Name</li>
<li>Brief Description</li>
<li>Gender</li>
<li>Profile Photo</li>
</ul>
<p>You can also view your profile as another user would see it. Simply visit your profile and enter the name of someone in one of your circles in the textbox that says <strong>View profile as&#8230;</strong></p>
<p><a href="http://www.brandedclever.com/wp-content/media/2011/06/view-as-another-user.jpg"><img class="alignnone size-medium wp-image-491" title="view-as-another-user" src="http://www.brandedclever.com/wp-content/media/2011/06/view-as-another-user-605x95.jpg" alt="View your Google+ Profile as another user" width="605" height="95" /></a></p>
<p>Your profile is now being displayed with only the information that the user you entered can see. If everything looks okay, then no further configuration needed. If not, go back and make the appropriate changes.</p>
<h2>Step 3: Restricting Search Visibility</h2>
<p>By default, your profile will appear in Google search results. You can change your profile settings at any time if you don&#8217;t want Google and other search engines to index your profile. To change your profile settings, do the following:</p>
<ol>
<li>Click <strong>Edit profile </strong>on the <strong>About tab</strong>.</li>
<li>Click the <strong>Search visibility</strong> section.<a href="http://www.brandedclever.com/wp-content/media/2011/06/search-visibility-field.jpg"><img class="alignnone size-full wp-image-495" title="search-visibility-field" src="http://www.brandedclever.com/wp-content/media/2011/06/search-visibility-field.jpg" alt="Click the search visibility field" width="541" height="58" /></a></li>
<li>Uncheck <strong>Help others find my profile in search results</strong>.<a href="http://www.brandedclever.com/wp-content/media/2011/06/limit-search-visibility.jpg"><img class="alignnone size-full wp-image-494" title="limit-search-visibility" src="http://www.brandedclever.com/wp-content/media/2011/06/limit-search-visibility.jpg" alt="Prevent your Google+ Profile from being indexed by search engines" width="494" height="140" /></a></li>
<li>Click the <strong>Save</strong> button.</li>
</ol>
<p>Your profile is now configured to prevent it from being indexed by most search engines.</p>
<h2>Step 4: Locking Down Other Privacy Settings</h2>
<p>There are a variety of other privacy-related settings that aren&#8217;t always obvious at first glance. I&#8217;m going to cover just a few of them here.</p>
<p><strong>Limit who can see other people in your circles</strong></p>
<p>By default, Google allows others to see people in all your circles. In some cases, you may want to restrict who can see people in your circles.</p>
<ol>
<li>Click <strong>Edit profile</strong> on the <strong>About tab</strong>.<strong><br />
</strong></li>
<li>Under your profile image, click on the <strong>In &#8220;your username&#8221; circles</strong>.<br />
<a href="http://www.brandedclever.com/wp-content/media/2011/07/network-visibility.jpg"><img class="alignnone size-full wp-image-497" title="network-visibility" src="http://www.brandedclever.com/wp-content/media/2011/07/network-visibility.jpg" alt="Configure your Google+ network visibility" width="196" height="77" /></a></li>
<li>From here, you can configure circles that can see people in your network. You can also choose whether or not other people can see you in their circles. In my case, I&#8217;ve chosen to limit my network&#8217;s visibility to specific circles and allow friends to show me in their circles.<br />
<a href="http://www.brandedclever.com/wp-content/media/2011/07/show-people-in-circles.jpg"><img class="alignnone size-full wp-image-498" title="show-people-in-circles" src="http://www.brandedclever.com/wp-content/media/2011/07/show-people-in-circles.jpg" alt="Limit your Google+ network's visibility to others" width="196" height="288" /></a></li>
<li>Click the Save button.</li>
</ol>
<p><strong>Limit who can send you email</strong></p>
<p>You can control who can send email to you using your profile information. You can let everyone send you email or limit it to specific circles.</p>
<ol>
<li>Click <strong>Edit profile</strong> on the <strong>About tab</strong>.<strong><br />
</strong></li>
<li>Under your profile image, click on the <strong>Send an email</strong> button.<a href="http://www.brandedclever.com/wp-content/media/2011/07/send-an-email.jpg"><img class="alignnone size-full wp-image-500" style="clear: both;" title="send-an-email" src="http://www.brandedclever.com/wp-content/media/2011/07/send-an-email.jpg" alt="Configure who can send you email in Google+" width="136" height="35" /></a></li>
<li>Select whether or not you want people to be able to email you from a link on your profile. If you want to further restrict access, select specific circles you want to allow to send you email. In my case, I&#8217;m permitting people in my circles to send me email right from my profile.<a href="http://www.brandedclever.com/wp-content/media/2011/07/limit-who-can-send-you-email.jpg"><img class="size-full wp-image-501 alignnone" title="limit-who-can-send-you-email" src="http://www.brandedclever.com/wp-content/media/2011/07/limit-who-can-send-you-email.jpg" alt="Limit the people that can send you email in Google+" width="357" height="170" /></a></li>
<li>Click the Save button.</li>
</ol>
<p><strong>Block A User (with caveats)</strong></p>
<p>You can block someone completely by doing the following:</p>
<div>
<ol>
<li>Go to the user&#8217;s profile.</li>
<li>On the side of the profile, click Block [person's name]<br />
<a href="http://www.brandedclever.com/wp-content/media/2011/07/block_user_link.jpg"><img class="alignnone size-full wp-image-536" title="block_user_link" src="http://www.brandedclever.com/wp-content/media/2011/07/block_user_link.jpg" alt="" width="226" height="206" /></a></li>
<li>Confirm that you want to block that person.<br />
<a href="http://www.brandedclever.com/wp-content/media/2011/07/block_user_on_google_plus.jpg"><img class="alignnone size-medium wp-image-537" title="block_user_on_google_plus" src="http://www.brandedclever.com/wp-content/media/2011/07/block_user_on_google_plus-605x239.jpg" alt="" width="605" height="239" /></a></li>
</ol>
<p>You can also block someone by placing them in your Blocked circle while <a href="http://www.google.com/support/profiles/bin/answer.py?answer=1254208">editing your circles</a>, via the drop-down arrow at the top of one of their posts, or by clicking <strong>Block</strong> in a notification email you received from that person.</p>
</div>
<p>Thanks for the tip on this one <a href="http://twitter.com/#!/KnightNotHorse">@KnightNotHorse</a>.</p>
<h2>Step 5: Streaming to the Appropriate Circles</h2>
<p>When creating a post, you may select the circles with whom you want to share the information.</p>
<ol>
<li>To create a new post, click the <strong>Share what&#8217;s new&#8230;</strong> text box.<a href="http://www.brandedclever.com/wp-content/media/2011/07/enter-a-new-post.jpg"><img class="alignnone size-full wp-image-503" title="enter-a-new-post" src="http://www.brandedclever.com/wp-content/media/2011/07/enter-a-new-post.jpg" alt="Enter a new post on Google+" width="542" height="83" /></a></li>
<li>Enter the information you want to share (text, videos, pictures, etc) and select the circles with whom you want to share the information.<a href="http://www.brandedclever.com/wp-content/media/2011/07/post-to-specific-stream.jpg"><img class="alignnone size-full wp-image-504" title="post-to-specific-stream" src="http://www.brandedclever.com/wp-content/media/2011/07/post-to-specific-stream.jpg" alt="Select the circles you want to share your information with" width="563" height="225" /></a></li>
<li>Select the Share button.</li>
</ol>
<p>In this case, I&#8217;ve chosen to share a message with my <strong>College Friends</strong> circle. By default, Google+ will remember the groups you specified in your most recent post and use those same groups in your next post.</p>
<h2>Other Gotchas</h2>
<ul>
<li><strong>Comments can appear as public</strong> &#8211; As of July 01, 2011, you cannot prevent your comments from becoming public. If you comment on a post, that comment can be seen by anyone that has access to see the post. So if your friend allows <strong>Anyone on the web</strong> to see their posts, then your comments on their posts will appear publicly. This can violate some people&#8217;s privacy expectations, so as a best practice, pretend whatever you say will be seen by everyone on the planet.</li>
<li><strong>All profiles have a public presence</strong> &#8211; There&#8217;s no way to disable your profile from being publicly accessible. The best you can do at this time is limit the amount of information that can be accessed by the public. At the minimum, you profile will show your full name, gender, profile photo, and profile description.</li>
</ul>
<p>I certainly appreciate feedback so if you have other suggestions for improving privacy when using Google+, add a comment to the post so that I can improve this post. Thanks in advance!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brandedclever.com/five-steps-to-configuring-privacy-on-google-plus/feed/</wfw:commentRss>
		<slash:comments>80</slash:comments>
		</item>
		<item>
		<title>How to setup encrypted offsite backups</title>
		<link>http://www.brandedclever.com/how-to-setup-encrypted-offsite-backups/</link>
		<comments>http://www.brandedclever.com/how-to-setup-encrypted-offsite-backups/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 02:11:11 +0000</pubDate>
		<dc:creator>Damon Morda</dc:creator>
				<category><![CDATA[Backups]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.brandedclever.com/?p=352</guid>
		<description><![CDATA[There&#8217;s a variety of strategies for backing up your data and no single solution is perfect for everyone. Some people may use commercial services like Jungle Disk, Mozy, or Carbonite. Other&#8217;s may choose to use services such as Amazon&#8217;s Simple Storage Service (S3) and tools such as Duplicity. Whatever your preference, the ultimate goal is to protect your data against [...]]]></description>
				<content:encoded><![CDATA[<p>There&#8217;s a variety of strategies for backing up your data and no single solution is perfect for everyone. Some people may use commercial services like <a href="https://www.jungledisk.com/">Jungle Disk</a>, <a href="http://www.mozy.com">Mozy</a>, or <a href="http://www.carbonite.com/">Carbonite</a>. Other&#8217;s may choose to use services such as Amazon&#8217;s <a href="http://aws.amazon.com/s3/">Simple Storage Service (S3)</a> and tools such as <a href="http://duplicity.nongnu.org/">Duplicity</a>. Whatever your preference, the ultimate goal is to protect your data against loss, theft, and natural disasters. In this post, we&#8217;ll cover how you can implement encrypted offsite backups using <a href="http://duply.net/">Duply</a>, <a href="http://duplicity.nongnu.org/">Duplicity</a>, <a href="http://fuse.sourceforge.net/sshfs.html">SSHFS</a>, and <a href="http://www.samba.org/ftp/rsync/rsync.html">Rsync</a>.<span id="more-352"></span></p>
<h2>Background</h2>
<p>I&#8217;ve explored a variety of different remote backup strategies and haven&#8217;t found one that&#8217;s a good fit for me. Mostly because I have around 250-300GB of data to backup and the monthly bill for that amount of data is more than I&#8217;m willing to spend. In general, my preference is to use the <strong>3-2-1 strategy</strong> in that you have 3 copies of your data, in 2 different places, of which 1 of them is offsite.</p>
<p>When working on the solution, I had a few requirements including:</p>
<ul>
<li>All data must encrypted in transit and while at rest</li>
<li>Must support full and incremental backups</li>
<li>Must be cost effective and not result in recurring monthly bills</li>
</ul>
<p>So what was the solution? Well, I collaborated with a colleague of mine and we setup remote backups to each others Linux servers using a few basic tools and two external hard drives. It takes a little more elbow grease than commercial solutions, but once you have it up and running it works pretty well and doesn&#8217;t cost an arm and a leg.</p>
<h2>Backup Architecture</h2>
<p>Technically, you could use whatever operating system you wish. I used Ubuntu and he used CentOS because that&#8217;s what we were familiar with. As long as it supports the tools, it should work just fine.</p>
<ul>
<li><strong>Operating System:</strong> Linux-based OS (e.g., Ubuntu, CentOS, etc)</li>
<li><strong>Packages:</strong> openssh, gpg, duply, duplicity, sshfs, and rsync</li>
<li><strong>Hardware:</strong> 2TB Western Digital External Hard Drive</li>
</ul>
<p><a href="http://www.brandedclever.com/wp-content/media/2011/02/Encrypted-Remote-Backups-Diagram.png"><img title="Encrypted Remote Backups Diagram" src="http://www.brandedclever.com/wp-content/media/2011/02/Encrypted-Remote-Backups-Diagram-598x605.png" alt="" width="598" height="605" /></a></p>
<h2>How it works</h2>
<p>First, the client uses duply to backup data to a server on the local network. All data is encrypted in transit and compressed/signed/encrypted on the local server. The initial backup can take some time depending on how much data you have to bakcup, but incremental backups are much quicker.</p>
<p>Then I have a nightly cron job that executes a script that copies the data to my friend&#8217;s remote server. First, it uses SSHFS to create a mount point for the file system on my friend&#8217;s server, then it rsyncs the data over SSHFS, and finally unmounts the directory when complete. For additional security, we&#8217;ve implemented the OpenSSH <a href="http://www.debian-administration.org/articles/590">ChrootDirectory</a> configuration option to limit access.</p>
<p>We had originally attempted to backup without the local server, but found that trying to backup 250GB to a remote server over our internet connection was slow and often resulted in having to pause/cancel the transfer half way through. Not only that, but sometimes canceling the transfer resulted in corrupting the backup. Having the local server made things quicker and less prone to corruption issues.</p>
<h2>The Guide</h2>
<p>Here&#8217;s the basic set of steps to get this solution up and running for you. It assumes the use of Ubuntu, so you will need to tweak it according to your environment.</p>
<h3>Step 1</h3>
<p>Install and configure your server operating system to automatically mount your external hard drive. This hard drive will be used to store the local backups, or if you have the disk space, you don&#8217;t even need an external hard drive.</p>
<ul>
<li>Partition your external hard drive as needed</li>
<li>Format it with ext4</li>
<li>Configure /etc/fstab to automatically mount it as /data/</li>
</ul>
<h3>Step 2</h3>
<p>Now let&#8217;s install and configure OpenSSH on the server.</p>
<pre>sudo apt-get install openssh</pre>
<p>In /etc/ssh/sshd_config:</p>
<p>Configure OpenSSH to use its internal SFTP subsystem.</p>
<pre>Subsystem sftp internal-sftp</pre>
<p>Then configure the chroot() matching rule for users in the “sftponly” group.</p>
<pre>Match group sftponly
     ChrootDirectory /data/chroot/%u
     X11Forwarding no
     AllowTcpForwarding no
     ForceCommand internal-sftp</pre>
<p>We created a specific directory for our user so it was obvious. Keep in mind that the directory in which to chroot() must be owned by root.</p>
<pre># chown root.root /data/chroot/your_user
# usermod -d / your_uuser
# adduser your_user sftponly</pre>
<p>Now test to make sure that it all works.</p>
<pre>sftp your_user@host</pre>
<p>You should be able to login and only access the chroot directory. You should not be able to access file system locations outside the chroot directory.</p>
<p>A gotcha that we ran into is that the chroot directory for the user must be owned by root and cannot be writable to the user. So you need to create a directory within the chroot directory to store the backups.</p>
<pre>mkdir backups</pre>
<p>This will effectively create the directory /data/chroot/your_user/backups. Then you can make the directory writable to your user.</p>
<pre># chown your_user:your_user /data/chroot/your_user</pre>
<h3>Step 3</h3>
<p>Install and configure the <a href="https://github.com/dmorda/Sync-Fuse">Fuse Sync</a> script on the server. The script is responsible for mounting the remote filesystem using SSHFS and then syncing the files to the remote system using rsync. There configuration file includes comments for the different configuration parameters, most of which should be self-explanatory. The major features of this script include:</p>
<ul>
<li>Supports for custom sshd configuration files specific to your remote host connection</li>
<li>Sends automatic emails with the results of the script</li>
<li>Records backup logs</li>
<li>Automatically mounts and unmounts SSHFS remote file systems</li>
<li>Detects if the backup is already running and exits accordingly</li>
</ul>
<h3>Step 4</h3>
<p>Install the necessary tools on the server including rsync and sshfs.</p>
<pre>sudo apt-get install rsync fuse-utils sshfs</pre>
<h3>Step 5</h3>
<p>Install the necessary tools on the client including duply, gpg, and duplicity. The process for installing these tools will vary based on operating system. You may use the following on a Ubuntu system:</p>
<pre>sudo apt-get install duplicity duply rsync gpg</pre>
<p>Mac users may wish to consider using <a href="http://www.macports.org/">MacPorts</a> and Windows users may want to give <a href="http://www.cygwin.com/">Cygwin</a> a shot.</p>
<h3>Step 5</h3>
<p>Since backups are encrypted/signed, you will need to generate a GPG key on the client.</p>
<pre>gpg --gen-key</pre>
<p>Remember the Key ID and password.</p>
<h3>Step 6</h3>
<p>Next, create a duply profile on the client and setup the basic configuration parameters.</p>
<pre>duply offsite create</pre>
<p>This will create the following files:</p>
<pre>~/.duply/offsite/conf
~/.duply/offsite/exclude</pre>
<p>The conf file is the configuration file and the exclude file is for specifying files you want to exclude from being backed up.</p>
<p>In ~/.duply/offsite/conf file:</p>
<p>Configure settings according to your environment. Here&#8217;s a sample.</p>
<pre># Your GPG Key ID you just created
GPG_KEY='your GPG Key ID'

# Your GPG password for this key
GPG_PW='your GPG password'

# The local server you are backing your files up to including the path
TARGET='scp://username@your.local.host:22//your/backup/path/'

# Location of files you want to backup
SOURCE='/Users/dgm'

# Refer to duply documentation for these
MAX_AGE=6M
MAX_FULL_BACKUPS=1
VERBOSITY=5
TEMP_DIR=/tmp</pre>
<h3>Step 7</h3>
<p>You should be able to run the sync-fuse.sh script manually and it should work. To automate it, create a cron job on the server for your user.</p>
<pre># m h  dom mon dow   command
00 02 * * * /home/your_user/scripts/sync-fuse.sh &gt;&gt; /dev/null 2&gt;&amp;1</pre>
<p>I&#8217;ve set it to run in the middle of the night so it doesn&#8217;t consume bandwidth during the day when I might be working, Hulu&#8217;ing, or Netflix&#8217;ing.</p>
<h3>Step 8</h3>
<p>Celebrate! You have setup encrypted offsite backups.</p>
<h3>Not Working?</h3>
<p>Let us know. We&#8217;re always looking for feedback that will help us improve the quality of our posts.</p>
<h3>Additional Resources</h3>
<ul>
<li><a href="http://duply.net/">Duply Homepage</a></li>
<li><a href="http://duplicity.nongnu.org/">Duplicity Homepage</a></li>
<li><a href="https://github.com/dmorda/Sync-Fuse">Fuse Sync</a> on Github</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.brandedclever.com/how-to-setup-encrypted-offsite-backups/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Welcoming the New Year</title>
		<link>http://www.brandedclever.com/working-with-page-templates-in-wordpress/</link>
		<comments>http://www.brandedclever.com/working-with-page-templates-in-wordpress/#comments</comments>
		<pubDate>Sat, 01 Jan 2011 00:00:36 +0000</pubDate>
		<dc:creator>Damon Morda</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://www.brandedclever.com/?p=61</guid>
		<description><![CDATA[Introducing the completely re-designed Branded Clever website! Built from the ground up and forged by an army of savvy gnomes over the course of the last few months, we&#8217;ve taken great care in every pixel of the design. Some might say we are obsessed with good design, we just think it&#8217;s built into our DNA. [...]]]></description>
				<content:encoded><![CDATA[<p>Introducing the completely re-designed Branded Clever website! Built from the ground up and forged by an army of savvy gnomes over the course of the last few months, we&#8217;ve taken great care in every pixel of the design. Some might say we are obsessed with good design, we just think it&#8217;s built into our DNA.</p>
<p>When we originally launched the company back in 2008, we put together a one-page website that provided basic information about us. It wasn&#8217;t our best work, but it had to suffice as we began to help our customers. With two successful years under our belt, we decided to take a 2-month break on projects to focus on developing a brand new version of our website.<span id="more-61"></span></p>
<p>The goal with the new design was to improve the interface, better describe our services, provide examples of how we can help, and give the website some more personality. When building the website, we followed the same process we use when working with customers. First we identified our requirements, then we built a sitemap, created a few wireframes, several concept designs, and finally developed a WordPress theme from scratch to meet our exact needs and take advantage of all of the WordPress 3.0 features. Hoo rah!</p>
<ul>
<li><a title="A Rough Cut" href="http://www.brandedclever.com/wp-content/media/2010/12/homepage-v1.jpg">Concept Design #1</a> &#8211; Padiwan</li>
<li><a title="Feeling the Force" href="http://www.brandedclever.com/wp-content/media/2010/12/homepage-v2.jpg">Concept Design #2</a> -The Young Jedi</li>
<li><strong><a href="http://www.brandedclever.com/wp-content/media/2010/12/homepage-v3.jpg">Concept Design #3</a> -Obi-Wan Kenobi (Winner)</strong></li>
</ul>
<p>As you can see, the site evolved tremendously since the original concept design. We received a plethora of design feedback from friends, customers, and family and are grateful for your input. As with any website, we expect their to be a few bugs to work out. As always, we greatly appreciate any feedback on the new website and you can easily reach us through email, on Twitter, or through Facebook.</p>
<p><strong>Have a Happy New Year!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.brandedclever.com/working-with-page-templates-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
