Install a LAMP and mailman (mailing list) server


I needed a mail server for a few custom email addresses from several domains that I own. There are some 6 domains and 10 custom email addresses.

Multiple email domains can be hosted on a single mail server. They are called virtual domains. Basically and can be directed to Clients from domain1 and domain2 connect for email service to

This configuration moves my email addresses from which charges $5.- / month / email account. Totals to saving a sweet $50.- monthly. That’s $600.- a year which I could use for something else.

I begin by installing the Mail Server using this cookbook: LAMP + Mail Server + Web Mail Server then I install mailman using my own cookbook Mailman 2.1.23 Install Instructions.

This results in a Mail Server capable of hosting multiple domains with multiple emails accounts. In fact it is running in my home office on a Raspberry Pi box!

If you want something like this but skip about 200+ lines of instructions, let me know, I’d be happy to help!




Shopify Facebook trouble

I recently helped my wife launch her website for the Christmas season. Her shop is Tiarani Studio at with a line of her traditional Batik Silk Scarves. They are wonderfully luxurious silk as you can see.

Tiarani Silk Scarves

I decided to take advantage of the Shopify Facebook 15 day trial advertised as easy to setup and simple checkout all for $9.95 / month.

Step 1 is to create a Facebook page. You’ll use this page as your shop within Facebook. Simple enough, it’s just like any other page. You can post, put up photos, and other things you normally do with Facebook pages. By all means announce your shop and hype it up.

Step 2 is to create an account at Shopify Facebook page, pretty easy, enter email address, first & last name, your store name and click on “Create store”. You’ll be asked pertinent information later.

Step 3 is to connect your Facebook page created in Step 1 to your Shopify account.

Step 4 is to add products. The usual titles, descriptions, pricing, tags and visibility (make sure it’s set). I use tags as a convenient way to categorize. I have 2 tags, Winter and Spring to categorize by season. I have a 3rd tag Featured to show products that are showcased. The visibility setting determines whether the product is displayed in the shop or not.

Step 5 is to create collections. I create 3 collections, each one is selected by each tag. So I have 3 collections using each tag, one for Featured, another for Winter, the last for Spring. In the collection page there is also a visibility setting (also make sure its set) to display the collection in the shop.

Step 6 is to go back to products page and bulk select all products and do a bulk action of publishing and make sure it’s set to Facebook. Push the Bulk Action button then Publish Selected products. Let it sync!

Step 7 is similar, go back to the collections page and bulk select all collections (except the “Home Page”) I’ve no idea what that does, I only want Winter and Spring collections to display. Push the Bulk Action button and Publish Selected collections. Let it sync too!

Step 8 is pray that the integration goes smoothly. It did the first time for me and here is where trouble can start. Shopify has its own approval process so you don’t sell anything untoward, and also says Facebook has a manual 24 hour store approval stage, so be prepared to wait for a day and call in if your shop hasn’t displayed yet. For me it incredibly happened just like that in 5 minutes and my Facebook page got a “Shop Now” button, a Shop section, and I could checkout a product. Theoretically the money gets deposited in my Shopify account, but I didn’t actually make a payment.

Uh Oh … trouble. The integration worked really well for nearly 2 hours. After which it went berserk. A collection that shouldn’t have displayed (Home Page collection), and one that should didn’t (Spring collection). I sync’ed and sync’ed and they never reset themselves.

Lastly the entire set of collections and products disappeared from my Facebook shop! Facebook points the finger to Shopify.

Shopify Facebook Page Problem

This is fatal for an ecommerce shop! It can’t make any money. The idea of spending money to make money maybe hasn’t dawned on Shopify. Or at least maybe their idea is to make money for themselves only 🙂

Just to show I didn’t make this up here is my Shopify Facebook collections page that show the collections to show. Shopify points the finger to Facebook.

Shopify Facebook Collections

To add insult to injury, 5+ support chats and some phone calls later they admit that the problem affects a large set of their customers and it’s Facebook’s faulty integration process that is to blame. One chat even set expectation that it might take 3-5 days to approve the shop and that might be the cause. I have email transcripts of the chats. I now rarely see their email updates, what else is there to say?

At the time of the posting I consider my Shopify Facebook shop dead RIP. This close to Christmas there is no more time to market much less to sell (even to friends & family).

I even offered to hand deliver within the Seattle Metro area same/next day free. Plus I ran a very focused Google Adwords ad campaign targeting very specific demographics (affluent 35-50 age group), and area (Seattle Metro). The ad was running well with positioning within 3-4 ranking from the top! No getters though.

But sadly 4 days later, on December 23rd, and about the last 48 hours of promised resolution the shop is still dead.

As a shopper I am extremely annoyed, disappointed, felt cheated, and disgusted with the incompetency of what appears is a serious lack of software development capabilities (Shopify is a startup company residing in Toronto, Canada).

As an interested investor seeing their 86% growth so far as attractive, I must wonder how their stock price is going fare. For the next financial results season, did they give guidance based on expected increased revenue from the Shopify Facebook facepalm or not? If they did, I might wait a while and let their stock drop like a rock and pick it up at near low.

So there you have it. Great promise, deeply troubling execution.

Facepalm on my Facebook page 🙂 Come Shop Tiarani Studio instead!

Connecting from Mac to Raspberry Pi’s remote desktop using X11

I play a lot with my Raspberry Pi PC. Usually I connect using Mac’s Terminal application via ssh to the Pi.

Sometimes though, I need to use the Pi’s full graphical desktop. For example I’m much more comfortable partitioning disks using gparted vs. any other command line tool.

So for those occasions I use an X11 window to connect from the Mac to the Pi, I use ssh to connect, and then run lxsession as the desktop on the Pi.

First, install X11 from XQuartz (

Download the installer package disk image from the homepage. Open the disk image and run the installer package. The installation will take a few minutes and towards the end it will say there’s 1 minute left for quite a while 🙂

Once the installation is complete you must log out and log back in. If you don’t, the remote desktop won’t open. XQuartz is installed to Applications -> Utilities

Second, launch XQuartz then open XQuartz’s Terminal application (XQuartz menu -> Applications -> Terminal).

Third, connect to the Pi using ssh inside the XQuart’z Terminal. Then Enter ssh -X user@pi (replace user with your username on Pi, and pi with the name of your Pi).

Fourth, launch the Pi’s desktop. Enter lxsession. The Pi’s desktop should now be running on the Mac’s desktop.

Cloning/Backing Up Raspberry Pi using a Mac

This grew out of the need to create multiple SD card Raspbian images for my Raspberry Pi Hadoop cluster. I was constantly experimenting and really wanted not to create the Raspbian OS from scratch every time (note that Raspbian OS is really Linux of the Debian variant).

I sought about how to create an image file of a Raspbian installation so I could flash the image to an SD card when I needed a fresh Raspbian OS installed.

A running Raspbian OS installation configured as necessary is required.That installation’s SD card is used to create the image and clones.

Cloning doesn’t really save time, the time taken to write the image a scratch SD card is the same as writing the clone image, but it saves on errors from human forgetfulness and typing. It also makes the base configuration easy as Pi (LOL), known and fixed.

First thing to know is the size of the source SD card matters. The disk image can only be flashed to an SD card of the same or larger size. I chose 16GB size as they are readily available for a reasonable price.

First, I use Mac’s Disk Utility tool. Applications -> Utility-> Disk Utility app.

Second, I insert the micro SD card with a Raspbian OS installation into the micro SD card reader and then insert the reader in the Mac’s USB port. A new disk shows up in Disk Utility.

Third, I click on the disk and then click on the “New Image” item on the menu bar on top, choosing “DVD/CD Master”as the Image Format and click “Create”. I use cloneimage.cdr as the filename, this will actually create an .ISO file, it will create the image file to be used later to clone an installation.

Whenever I need a new Raspbian installation I do the following.

First, I insert a new micro SD card in the card reader and insert the reader in your Mac’s USB port.

Second, I launch the Terminal utility application from Applications -> Utility. I enter “diskutil list” and make note of the disk name, this would be in the form of /dev/diskN where N is a number. I typically find the right disk by looking at the SIZE column and find my 16GB card that way.

Third, I unmount the disk using: “diskutil unmountdisk /dev/diskN”

Forth, this step overwrites the card in the reader. WARNING: this step will not pause for confirmation. If the wrong disk is specified, that disk will be overwritten, so I’m very careful and double check. Enter: “sudo dd if=cloneimage.cdr of=/dev/rdiskN bs=10m”

Fifth, well, I wait until the image has finished writing, there is no ongoing progress status output but pressing Ctl-T will print some status information.

About the only indication is the app finishes running and the console prompt shows again.

That’s it, the only way to know is to boot up the new Pi with the new card.

Cleanup, I usually clean up the new Pi by changing the hostname, if I picked an installation with a static IP address then I’ll update the static IP address. Depending on the installation, sometimes I also change users and passwords.