Category Archives: Technology

Fix zfs-mount.service failing after reboot on Proxmox

In my new homelab migration to Proxmox I came across a bug that will prevent you from being able to mount all your ZFS mount points and be a pain in the ass even more if you host containers in that folder.
Continue reading

Install proxmox on a partition instead of a full-disk

By default, installing Proxmox with ZFS during the installation process will force you to use the entire disk for the root zpool. For most installs this is good enough. However, I like to do things differently sometimes.

I have a pair of Samsung 840 Pro 256GB SSDs that I wanted to use for my new homelab that I am currently building (moving from vmware to proxmox). You may be wondering why I want to install the operating system on a partition instead of an entire disk. Several reasons:
Continue reading

Homelab 2017 refresh

My faithful Lenovo TS440 home server has reached its peak potential as I have maxed out the 32gb memory limit of the Intel E3 v3 architecture.

My needs for more CPU power and memory is driven by the idea of hyperconvergence. Which means I use a single machine to be my router/firewall, VPN gateway, network storage as well as virtual machine host.

Those themes have been part of my home network design since 2010 or so, today’s hot technologies are focusing on containers (LXC), Docker, etc. So I need a more powerful server in order to be able to expand my playground into those technologies. The 32gb maximum on my old server is simply not enough when you have 5 different VMs that consume almost all your memory resources (windows 10 VM, OSX one and my FreeNAS one being the top users of 75%+). Continue reading

Why certain programs launch fine on Start > Run on Windows but not from the command line

On windows, if you run a program such as Chrome.exe (Google Chrome Web Browser) via control + R (run) it will launch without a hitch as long as the browser is installed.

However, if you open the command line and you attempt to run “chrome.exe” it will complain that the executable is not found in the %PATH%

This is because Control+R also looks up the registry values within HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\

Which include all apps ever installed such as Chrome.exe, Firefox.exe, Excel.exe, Illustrator.exe, etc.

So if you are ever writing a program in your programming language of choice, using a Windows Registry check of the location (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths) for whatever.exe will be the perfect solution when that program is not in the System Environment variable %PATH%

Flashing new firmware on HP hard drives without proliant hardware

I purchased a few hard drives off ebay for Docker homelab that I am building and found a good deal on a 2TB HP Enterprise branded hard drive (basically a rebranded Seagate disk with HP stickers on them).

The disk actually is a Seagate ST32000644NS that HP calls it its own model MB2000EAMZF. Once the disks arrived and I was ready to test them I noticed a fatal flaw. Their firmware was very out of date and HP made a critical update that is mandatory for these drives to avoid them from failing due to 24/7 usage.

To my surprise although these drives are Seagate and the internals are exactly the same they run different firmwares, and Seagate’s tools or utilities will not flash or work on HP branded drives thus forcing you to grab the firmware updates from HP.

Seagate makes these firmware updates available for free and HP does as well but with one gotcha – you must run the firmware update tool in Hewlett Packard hardware or the firmware will not flash and there seems to be no workaround. Thumbs down to HP for locking down a critical firmware update to only run on HP Proliant server hardware (I have Dell but a SATA hard drive is recognized as a normal hdd on any brand computer thanks to computing standards).

Configure Webstorm to use Github Desktop for Windows git-bash

If you have installed Github Desktop on Windows, you may have noticed that the application itself comes with a “Git Shell” which is basically a linux terminal emulator running on windows and its very useful for developers or linux users that are familiar with bash.

The problem I recently encountered was trying to find the executable PATH of the git-bash.exe so that I can configure my Webstorm IDE to use it. All the documentation on the internet seems to point to C:/Program Files/Git folder but Github may have changed this as in the latest release I downloaded (v the files reside elsewhere and I will share where to find them.
Continue reading

Overriding Google Compute Engine hostname from getting reset

On my last post, I explained how I am experimenting with Google Compute Engine (GCE) to host my backup DNS service and my post about configuring mailjet as an exim mail relay.

I have run into a few issues on Google Compute Engine, it looks like every time the instance gets a DHCP offer the hostname of the machine will get reset to the internal hostname, overriding whatever setting you may have set… this is bad news for a server that needs to respond to DNS settings.

After a few hours of digging and testing out different approaches, including trying to setup a DHCP hook to run the “hostname” linux command I came across documentation from Google talking about “custom metadata”.

How to setup Mailjet on exim for cPanel dnsonly on Google Cloud

I have been experimenting with Google Compute Engine (GCE) for the past few days. I wanted to migrate a slave DNS server to Google as an experiment and this blog post will talk about the shortcomings, my workarounds, configuration and tips to achieve the goal of having cPanel DNSonly installed and setup using Google’s infrastructure.

What is Google Compute Engine?

Google Compute Engine (or “GCE”) is Google’s answer to Amazon’s AWS, it basically offers you the ability to deploy Virtual Machines (VMs) at Google’s datacenters. In the most simplistics of setups you would use a single VM or “compute instance” and if you wanted to have a more complex setup you could deploy multiple instances in different geographic locations spread across different datacenters in the United States to achieve a more redundant setup or to provide you with better capacity for large traffic workflows.

It all depends on what your goals are, myself I am just starting out with a simple requirement. I would like to use a single compute instance running CentOS linux that runs cPanel DNSonly (proprietary control panel/dns clustering solution for cPanel servers).

The goal is not to host websites or any critical services on this instance, but rather only keep a copy of my DNS zones. If my experiment fails or my instance goes down or gets destroyed there won’t be any losses or damages for this experiment as my primary server is still running on Proxmox PVE.

The limitations of GCE… What I learned so far

GCE instances run behind Google’s firewalls and depending on the datacenter you decide to host your instance your VM will have an internal IP within that datacenters network scope/range (for example: us-central1 datacenter zone has a range for all VMs).

This means that assigning a IPv4 public static IP, which is needed to allow anyone to query the DNS server we’ll be hosting inside this instance will actually have to forward packets to the instances internal network. Not really a big deal unless your application can’t be behind a NAT firewall like it is the case here.

For our intensive use and purposes it is fine. One important issue that I found is that doing any kind of e-mail server related activities on GCE is prohibited (source). You won’t be able to use SMTP (Simple Mail Transfer Protocol) port 25, 465 or 587 to send or receive email.

Now for a DNS server that will not be a mailserver this is not a blocker, but it is really a pain in the ass. Why? because monitoring scripts running on the server need to email the administrator to notify me of issues or errors so they can be investigated.

Continued on the next page.

Apple iPhone 4S Cellular Network comparison AT&T 3G vs Sprint 3G (video)

Last week Apple released the newest iPhone 4S in the United States for all three major wireless carriers: AT&T, Sprint and Verizon.

As an iPhone user I wanted to compare the wireless networks of AT&T, my current carrier since the release of the iPhone 3GS in 2009, and Sprint the defacto Unlimited data wireless carrier since all data plans from the other major carriers carry a data-cap.

This is the first time that Sprint carries Apple’s flagship phone and despite the amaizing features of the phone, as you can see in the video, the wireless network of Sprint falls short of expectations for a proper iPhone experience to support YouTube streaming, data downloading, etc.

Further the video shows AT&T constantly offering amazing speeds (probably thanks to HDSPA+ wireless data technology only available for AT&T iPhones) in comparison to Sprint’s poor network performance during ping, download and web browsing tests.

For the time being AT&T will keep me as a customer, thanks to their superior data speeds and thanks to fact that AT&T is the only carrier to support web-browsing while on a call. If Sprint enhances their network to offer at least 100 KB/s (1MB steady downstream) they may become the defacto winner for new and current iPhone users looking to save some money (I could save $15+ a month by switching to Sprint). However due to their poor network performance I decided to stick with AT&T. I would love to hear about your experiences with the Sprint iPhone 4S on their network.

Quick C# Programming Notes on String Formatting

Here is a few examples on the different ways to format strings when outputting data to the user. Computers usually store numbers without formatting.

Some of these notes will tell you the exact code you would need to make a computer’s “224” to be outputted as “$224” or “224 %”.

Continue reading