How to install and use the OpenVPN client exported from pfSense

OpenVPN and pfSenseIn the world of open-source router & firewall software, pfSense is my favorite. It has features that rival some of the best commercial products, and it doesn’t take a rocket scientist to figure out how to use it. pfSense has several options for allowing remote VPN (virtual private network) connections. OpenVPN is one of these. Once the pfSense box is configured to allow connections from OpenVPN clients, the system administrator can add users and export pre-configured installer files to allow those users to connect and work over any Internet connection of reasonable speed. Here are the steps needed to connect to a pfSense-protected network.

1. Install the OpenVPN client
Install the OpenVPN client using the pre-configured installer exported by pfSense and provided to you by your system administrator. Hopefully, this was provided to you on portable media such as a CD or USB thumb drive. Sending the installer by email defeats part of the security benefit of using VPNs because the installer could be intercepted on the way to its destination.

2. Set the client to run as administrator
If you are using Windows XP, you may skip this step. Locate the “OpenVPN GUI” icon on the desktop. Right-click on the icon and click Properties. Click the Compatibility tab, and place a check beside “Run this program as an administrator”.

3. Connect to the remote network
Take note of the icons that appear in the system tray (bottom-right of the screen beside the time display on the Windows taskbar), and then double-click the OpenVPN GUI icon on the desktop. You will see the OpenVPN icon appear in the system tray area. Double-click that icon to connect the VPN. You will be prompted for the username and password provided by your system administrator. Once the connection is established, you’ll see a message show up in the system tray indicating that you are connected.

4. Connect to the remote computer
Now that the VPN connection is established, all you have to do is use the remote desktop software included in Windows to connect to the computer of your choice. That is normally found in the Start menu under Accessories. Look for Remote Desktop Connection. If you wish, you can place this icon on the desktop by right-clicking on it and clicking Send to > Desktop (Create shortcut). When you start Remote Desktop Connection, enter the name of the computer you wish to connect to. You will also be prompted for a username and password to sign into the computer.

In the future, connecting will just be a matter of repeating steps 3 and 4. In the near future, I will be posting some additional tweaks that automate the process even further.

How to install Word and LibreOffice templates with a login script on Windows Server

Document Template ImageAfter some research and experimentation, I finally figured out how to push out Word and LibreOffice templates to client computers on a Windows Domain using a few commands in a login script. In our environment, we have a mix of Microsoft Office 2007, Microsoft Office 2010, and LibreOffice 4.x.x. This method seems to work with all three.

To start with, I placed the template files (.dotx and .ott) in a subfolder named templates and placed that within the netlogon folder on the domain controller. That way they are available for copying by the login script.

Here are the lines I added to the login script:

xcopy "\\server\netlogon\templates\Invoice Template.dotx" "%appdata%\microsoft\Templates\" /y
mkdir "%appdata%\LibreOffice\4\user\template"
xcopy "\\server\netlogon\templates\Invoice Template.ott" "%appdata%\LibreOffice\4\user\template" /y

Both destination folders use the %appdata% variable which should work in all modern versions of Windows. The destination folder referenced in the first line is already created when MS Office is installed, so the script just copies the template. The second two lines are for LibreOffice. Since the user templates folder is not created automatically, we first issue a command to create it (this line will harmlessly error out once the folder is already there) and then copy the template.

I’m still testing this in our environment, but it seems to be working well so far. I’ll update and edit this post if/when I notice any problems.

Asus E35M1-I Motherboard w/ AMD e350 Processor & Proxmox VE 1.9

Here is a video that gives an overview of the new motherboard I installed in my home server. It uses a fan-less, dual-core processor that is capable of hardware virtualization, making it perfect for the use of a hypervisor like Proxmox VE 1.9. Those looking to purchase the board can click here to go to the product page on Amazon.

From TWAIN Device to Web Application

ScreenshotAt my place of employment we recently purchased a piece of software to design and print identification cards.  We were planning to use the software to make employee badges.  I did not have an opportunity to try out the software in advance because no trial version was offered.  However, the vendor made a good sales pitch, so I shelled out roughly a thousand dollars to purchase the software.

It turned out to be one of the most difficult-to-learn software packages I have ever attempted to use.  After laboring for  five hours, I still had not figured out how to print a single ID card.  I’m not the sharpest knife in the drawer, but I’m not the dullest, either.  There had to be a better solution.  Not wanting to spend more money, I decided to build the software myself.

Continue reading

DIY Network Attached Storage

Today I spent the afternoon building a NAS (network attached storage) appliance.  I have been looking for a better place to store virtual machine backups, and this seems like a good solution.

I started with a 2U rackmount case, the Norco RPC-230.  I like this particular case for several reasons: First, it has a shallow depth that allows it to be mounted without rails, and it is sturdy enough that it won’t sag.  Secondly, being 2U allows for a standard off-the-shelf power supply unit.  I do not like scrambling to hunt down an odd-ball power supply when my server goes down.

I went with a fan-less mini-itx motherboard from Asus that comes with a dual-core Intel Atom processor already integrated.  This is one of the few Atom boards that met my three qualifications:  four SATA ports, no fans, and a decent price.

For storage I selected two identical Seagate 1 Terabyte drives. The data on these will be mirrored (RAID 1).

I finished it by installing the fabulous and open-source FreeNAS version 8 on a 8 GB USB  thumb drive, freeing the entire RAID pair to be used for storage.

For reference, here is a list of all the hardware for the appliance, cleverly linked to my Amazon affiliate account:

My first Google Chrome application

Light BulbI am a recent convert to the Google Chrome web browser.  In my opinion, the speed and simplicity of this browser is unmatched by the other popular choices.  Although Internet Explorer 9 and Firefox 4 are fairly good as well, Chrome is still my favorite browser on both the Linux and Windows platforms.

I also recently discovered the Chrome Web Store and became interested in developing Chrome applications.  To get an idea of what is required, I ported an old web based tool for calculating electricity cost from a PHP application to a Javascript-based Chrome application.   Since it is a “packaged” Chrome application, once you have it installed you can use it even when you are not connected to the Internet.  The application is located here.

My favorite web browser becomes my favorite PDF viewer

For some time now I have been displeased with Adobe Reader.  First of all, it seems bloated and launches slower than other PDF viewers I have used.  To make up for the slow speed, recent versions also install a background process in Windows that presumably loads part of the application in advance.  Little displeases me more than a software application that includes a background process, with the obvious exception of  anti-virus programs that NEED to run in the background.

Lately I have been using the Google Chrome web browser more and more and my old favorite, Firefox, less and less.  Unlike other web browsers, Chrome has a built-in PDF viewer, eliminating the need for the Adobe Reader plug-in.   This makes viewing PDFs faster and more trouble-free than relying on the plug-in.  I have never encountered a PDF document that did not display correctly in Chrome.

A few days ago it struck me that Chrome could be used to view PDF documents on my computer as easily as those on the web.  All you have to do is set it as the default application for opening PDF documents.  To do this in Windows 7, RIGHT-click on any PDF file and select Open With > Choose default program.  A screen will appear with a list of programs.  Select Chrome from this list (you may have to browse for it), check the box beside “Always use this program to open this kind of file”, and then click OK.  In the future, Chrome will be your default PDF viewer.  These steps will be very similar in Windows XP or Vista.

Linked style sheet woes with Zend Framework

One of the first frustrations I ran into with Zend framework was with linking images and style sheets to a web site. In my pre-Zend days of web programming, I’d just use a relative link, such as the following:

<link rel='stylesheet' href='theme/style.css' type='text/css' media='all' />

This link works fine within the default controller and action. However, when a different controller and/or action is specified, the URL changes, and the relative link breaks.  In search for an answer, some programmers suggested that the solution is to simply add a slash at the beginning of the href to make the link absolute, like so:

<link rel='stylesheet' href='/theme/style.css' type='text/css' media='all' />

Although this may work, it still breaks if you ever store the website in a sub-directory as opposed to the root of the webserver’s public directory.  In my case, this solution was a non-starter, as my development site uses sub-directories for each project.  I use a symbolic link to link a particular sub-directory on my development site to each of the Zend projects “public” directories.

dev.mydomain.com/project1    (sym-linked to /zendapps/project1/public)
dev.mydomain.com/project2    (sym-linked to /zendapps/project2/public)
dev.mydomain.com/project3   (sym-linked to /zendapps/project3/public)

Using a non-changing absolute link would cause the code to break as soon as it is copied to my production server, where each project resides by itself in the webserver’s root directory.

The real solution to this problem is to use Zend’s built-in baseUrl() view helper.  Then your code will look like this:

<link rel='stylesheet' href='<?php echo $this->baseUrl(); ?>/theme/style.css' type='text/css' media='all' />

Doing it this way makes your code work without modification regardless of where your project ends up.  I use this anytime I’m linking to a resource (image, javascript file, or CSS file) in my Zend project’s public directory.

A green computer … and a matching font

Fanless Mini-ITX ComputerGone are the days when you could save a bundle of money building a computer from parts.  However, there are still a few situations when it can make sense to do so.

I recently had the privilege of building a computer at my place of employment, using the following parts:

http://www.mini-box.com/M350-enclosure-with-picoPSU-80-and-60W-adapter
http://www.mini-box.com/D510MO-mini-ITX-Intel
http://www.mini-box.com/2GB-DDR2-Memory
http://www.newegg.com/Product/Product.aspx?Item=N82E16822136387

The result is an inexpensive, fan-less computer that can be mounted on a wall or on the back of an LCD.   The power usage of this computer ranges from 15 to 21 watts depending on its load, so I stand to save $30-$40 a year in electricity when compared with a more typical computer that consumes 50 to 80 watts (I leave my computer running 24/7).

There are prebuilt computers that are similar in price, such as the Zotac MAG, but they use proprietary parts.  That means if something breaks outside of warranty, you may find it difficult or impossible to find replacement parts.   With a standard mini-itx system like this one, parts availability should not be a problem for several years.

Speaking of “green”: did you know that you can save money on ink simply by using a different font when composing documents for printing? According to this article on Yahoo! News,  a font with thin lines such as Century Gothic can use up to 30% less ink than popular fonts such as Arial.  If you’re using Linux instead of Windows, you may not find either one of these in the list of fonts available to you.  However, the concept still applies; just look for a font with thin lines.