DIY – Michael Groff /blog Expand or Die Mon, 11 Mar 2019 05:08:19 +0000 en-US hourly 1 https://wordpress.org/?v=6.9.4 Home Lab 2.0 /blog/home-lab-2-0/ Fri, 01 Mar 2019 00:22:12 +0000 /blog/?p=927

This post will serve as the 10,000 ft overview of my environment and what it all consists of. I plan to follow up this post with a series of smaller posts breaking down my Home Lab into the following sections:

(as I update these blog posts, links will appear and become active)
  • Home Lab Servers & Storage
  • Home Lab Routing & Switching
  • Home Lab Access Points
  • Home Lab Surveillance
  • Home Cat6 Cable Wiring

Home Lab Servers & Storage

In this post I go into details about the server and storage that I use in my Home Lab environment.

The current hardware I use is:

  • Dell PowerEdge R710 SFF & LFF
  • Dell PowerEdge C2100
  • Dell PowerEdge CS24-SC (Essentially a 2950)
  • Dell PowerEdge R510 LFF

The operating systems that I use are:

  • VMware esxi 6.5
  • VMware esxi 6.7
  • Windows Server 2012 R2
  • Windows Server 2016
  • Windows Server 2019
  • FreeNAS 11.1 (U7 if you care)

I have purchased or otherwise acquired some Gen10 and Gen11 Dell PowerEdge Servers throughout my years in IT. I enjoy having a Home Lab to work in and learn new things without repercussions of really messing something up. In my environment, nuke and pave is not frowned upon at all. I do my best to say up-to-date and using the latest and greatest trial software, but due to the hardware I am running, that goal comes with some limitations.For instance, my C2100 servers simply cannot be upgraded beyond esxi 6.5. The processors are not compatible with esxi 6.7. However, I was able to upgrade my vCenter Server to 6.7 and still have it manage my 6.5 hosts.

Most of my servers are running Windows Server 2019, but some are still running 2016 as I havent had the time or need to update them. (Such as DC’s and DB’s)

My Storage devices are all PowerEdge Servers running FreeNAS. I set them up with FreeNAS and configure the iSCSI service for MPIO to my esxi hosts. I find it is a set-it and forget-it type of thing. I am subscribed to some FreeNAS emails and RSS feeds, so I look out for OS updates and install them accordingly.

Home Lab Routing & Switching

In this post I will cover all the networking equipment that I use in my home lab and how I use it.

The networking hardware that I use is:

  • Unifi USG-PRO-4 (Gateway)
  • Unifi US-24 (Switch)
  • Unifi US-8-150 (Switch)
  • 3 x Dell PowerConnect 7048P (Switch)
  • Netgear ProSAFE GS108Ev3 8-Port

For most of my networking equipment, I run Ubiquiti Unifi equipment. This is marketed as “Enterprise” networking equipment, but imho, it is far from “Enterprise”. I would place it solidly in the “prosumer” line of networking equipment. Dont get me wrong, their WAP’s are pretty awesome. But their switching and routing devices leave much to be desired. Their GUI is quite pretty and you can do enough to get by through it, but for really advanced setups, you are required to edit a json file. Often the editing of the json file is unsupported and a PITA the figure out.

For the rest of my networking equipment, I run some classic Dell PowerConnect switches. I run the 7048P’s. For the most part, I dont need the PoE feature, but for under $150 per switch, I couldnt not get the PoE feature. I just disable it on the ports where it is not needed. The language is pretty similar to Cisco so getting by in command line is my preferred way to manage these.

Oh, and I have a Netgear managed 8-port switch. This little guy has kept up with the other two brands of switches afaic. I like the little guy and it works great as an under the desk switch.

Home Lab Access Points

In this post I will cover the Access point that I use in my home, discussing wiring, port and physical placement.

The hardware access points I currently use are:

  • Unifi UAP-AC-PRO
  • Unifi UAP-AC-M-PRO
  • Unifi UAP-IW-PRO

For all my Wireless, I trust in the Ubiquiti Unifi line. They are a great “prosumer” product at a price that I can afford. And they definitely do their job for my home needs. I have even installed these at a few businesses with very solid results.

Home Lab Surveillance

In this post I will cover my Home Surveillance Solution using my Home Lab equipment.

Some of the equipment I use is as follows:

  • Home Server (Sometimes virtualized, sometimes standalone)
  • BlueIris NVR Software
  • Reolink IP Cams
    • RLC-410
    • RLC-411
    • RLC-420
    • RLC-423
  • HikVision IP Cams
    • DS-2CD2142FWD-IS 4MP
  • Ring Pro Doorbell

When I first got into the surveillance game, I was purchasing Hikvision IP Cameras from a specific re-seller in my area. Since then, Reolink has become quite a mainstream prosumer product and I can get them from Amazon. So as of late, all of my Reolink cams have been purchased from random amazon sales.

Overall I enjoy both cams, but prefer the Reolink branded cams over Hikvision.

As for the Ring Pro Doorbell. I got it because it’s easy for the wife to use and not answer the door if she doesn’t want to. I have it on a “security device” vlan, so it is segmented off. I actually do enjoy the device. It is nice having something in the cloud separate from Blue Iris.

Home Cat6 Cable Wiring

In this post I will go through what it takes to wire up your home with Cat6 cabling. This is currently an ongoing process for me and may be for some time yet to come.
The materials you will need to complete wiring in your house are as follows:

  • Cat6 cabling
  • RJ45 Cat6 Jacks
  • RJ45 Boots
  • RJ45 Crimping tool
  • RJ45 Punch Down tool
  • Cat6 Wall Plates with Jacks
  • Pull String

Wiring your house is a process. If you have unlimited amounts of money, then hire a company to do it and they will charge you a few grand to go in there and get it done. They will most likely run the cables in a manner that works, but is not tech approved bc they are dudes who just know how to run cables, not why they are run or consequences of how they are run. If you are like me where money is not an endless pit of fun and you like having control over things, then you will want to take on wiring yourself. Overall you can do this for a fraction of the cost compared to contracting it out, but it will be a lot of work and sometimes, a complete, PITA. If you live in Texas like me, only plan on doing this kind of work from late October through late April… It gets hot in there.

Overall, I have found wiring my house to be quite rewarding, both financially and emotionally. I am able to “put a stamp” on my work and be proud of what I have done.

]]>
Identify Failed Port and Replace NIC /blog/identify-failed-port-and-replace-nic/ Tue, 26 Feb 2019 02:03:15 +0000 /blog/?p=958

This past week, I had a failed port one one of my C2100’s. The specific part was a Intel PRO/1000 VT Quad Port Gigabit PCI-E Ethernet Network Adapter (HM9JY). Now just one single port failed and I was using all 4 ports for iSCSI from my FreeNAS C2100 to my esxi cluster. Luckily I have 4 ports so naturally MPIO is configured and I didnt notice the failure immediately. I first noticed this in my cluster and also saw the port was failed in FreeNAS. Since there is no OMSA for BSD, I was unable to gather more information about the status of the port.

This is how I noticed the failed port on an esxi host

I went onto ebay and ordered the new part for $20 with free shipping. It came in today and I took some time to replace it this evening. It is a pretty simple process, I will walk you through it below.

The first things I am going to do is power off my server and then remove all the cabling from it. Some people choose to not remove networking when doing this, but I am running PoE switches, and even though PoE has been disable on the ports, I dont trust it. I remove all potential of electricity running through the system other than the CMOS and RAID batteries.

So, Power off your server, remove all the cabling, pull it out of the rack and remove the cover.

The new part looks like this. It will just slide right into a PCIe slot and I will screw it in.

Here we are with the top open.

I am going to pull out that part in the upper left hand corner to replace.

Here is the empty slot that we will plug back into.

The top device  is the one I pulled out and replace.

It is the top device due to the photo orientation and the fact that I pulled it out of the server. When I put it back in the server, it will “on the bottom”. I find placing NIC card below RAID card make it easier to unplug booted cables from the server.

Now that the NIC has been replaced, all iSCSI paths are available!

]]>
Retro Gaming on Raspberry Pi /blog/retro-gaming-raspberry-pi/ Mon, 06 Feb 2017 23:16:19 +0000 /blog/?p=222

I was recently asked to help someone build a “Retro Gaming System”. While thinking of the best way to do this, I figured that I would like to give them something that they can come back to and do this on their own; at anytime. There are plenty of other tutorials and ways to go about this, but this one is mine. Please leave any feedback through the site should you have any.

Parts List

Programs List

Both
Windows
Mac

SD Card Configuration

Download the latest version of Raspbian, you can use torrent or HTTP to download this. Torrent will be quicker, but will require another program.

The version at the time of this writing is Jesse. For this setup we will use the LITE version of Jesse as we do not need a Desktop GUI. This will help to save space on the SD Card among other things.

You can find the latest version on Raspberry Pi’s site.

Windows

Extract the zip that we just downloaded.

Install Win32DiskImager utility if you don’t have it installed already. (You can download it on the utility from the Sourceforge Project page)

Insert the SD Card into the PC.

Run Win32DiskImager and select:

  • Rapberry pi image we just extracted
  • SD Card’s Drive Letter

Select Write!

Safely Eject the USB Drive and remove it from the PC

Insert the SD Card into the Raspberry Pi.

Mac

Extract the zip that we just downloaded.

Insert the SD Card into the PC.

Follow this artcle provided by Raspberry Pi

Raspbian Initial Installation & Configuration

Plug a Keyboard into one of the USB slots, a Monitor/TV into the HDMI slot and an Ethernet Cable into your Raspberry Pi. We will be downloading packages from the internet and using SSH for some of this, so Ethernet is required. (Note: You can use WiFi if you want, but that will not be covered in this tutorial, more info here)

Power on your Pi by plugging the Micro USB Power Cable in.

You will see your Pi boot into a notification that the File System is being resized. This is an automated feature that expands the filesystem to take up your entire SD Card upon the first boot. The server will then reboot.

After the reboot completes, you can now login with the following credentials:

  • Username: pi
  • Password: raspberry

First things first, lets update that password, you can do so by entering the following:

sudo passwd pi

Here you will enter your new password twice to confirm it has been entered correctly.

Run

sudo raspi-config

Select – 1 – Expand Filesystem, Hit [Enter] and proceed through the steps to get back to the selection screen:

Generate proper locales. (This step is for persons with ANSI/USA Keyboards)

Select – 4 – Localisation Options > I1 – Change Locale > Deselect en_GB.UTF-8 UTF-8 and select en_US.UTF-8 UTF-8

Change the keyboard layout

Select – 4 – Localisation Options > I1 – Change Keyboard Layout Generic 101-Key PCOther English (US) > Enter > Enter

Select – 7 – Advanced Options >  A2 – Hostname Enter a new hostname for this Pi:

Select – 7 – Advanced Options >  A3 – Memory Split Change the value to 128 if you have a Pi 3:

Select – 5 – Interfacing Options >  P2 – SSH > Yes Enable SSH so we can access the Pi remotely:

Change anything else you see fit, select Finish and reboot your Pi:

After the reboot completes, log back in at the console one more time,

run

ip a

and get the IP from the Ethernet connection labeled eth0

Remember or write down that IP, then type in

logout

to logout.

Install RetroPie

From your computer, open Putty and enter the IP you got from the last step and click Open

If you receive a certificate warning, ignore it and proceed.

Enter your username and password to login. You will then see a nice blank screen as follows:

Time to update your Pi!

Run

sudo apt-get update && sudo apt-get upgrade -y

This may take take some time, so feel free to walk away for 5 minutes or so and come back.

Install the prerequisites for RetroPie:

sudo apt-get install -y git dialog lsb-release


Download the latest version RetroPie and begin the installation:

cd
git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git
cd RetroPie-Setup
chmod +x retropie_setup.sh
sudo ./retropie_setup.sh

After this runs, a GUI portion of this install will begin.

When it comes to the following screen, Select OK. 

Select Basic Install Yes

This will run through an install, it will take some time.

Once that completes, select Configuration / Tools > 802 – autostart > 1 – Start Emulation Station at boot

 

Install drivers by selecting: Manage Packages Manage Driver Packages Install/Update all driver packages from binary

Finally, reboot the Pi!

ROM Installation

Windows

Now it’s time to move ROM’s you own, to the Pi. You don’t own any ROMs? Don’t worry, you’re resourceful and I have a link for you to Follow.

Install WinSCP if it is not installed already.

Run WINSCP.

Connect to your Pi with the IP from earlier and the password you configured as such:

Navigate to RetroPieroms and you will find a list of all the available systems that you can play.

For this tutorial, we will be dropping roms in:

  • megadrive (Sega Genesis)
  • n64 (Nintendo 64)
  • nes (Nintendo Entertainment System)
  • snes (Super Nintendo Entertainment System)

Now you will simply drag and drop your ROMs into the desired destination.

Once all the ROMs have finished moving, reboot your Pi and go back to it.

Mac

(to come at a later date…)

Time to Play!

If you have not rebooted since adding the ROMs, do so now.

sudo reboot

Now that your Pi has been configured and has ROMs on it, you are ready to configure your controller and start playing.

When your Pi reboots, if you set it up to auto-run as described, it should be up and running after the reboot.

 

Controller Configurations are as follows:

NES

Hold a Random Button to start.

RetroPie Controller
D-PAD UP D-PAD UP
D-PAD DOWN D-PAD DOWN
D-PAD LEFT D-PAD LEFT
D-PAD RIGHT D-PAD RIGHT
START START
SELECT SELECT
A A
B B
X [BLANK]
Y [BLANK]
LEFT SHOULDER [BLANK]
RIGHT SHOULDER [BLANK]
LEFT TRIGGER [BLANK]
RIGHT TRIGGER [BLANK]
LEFT THUMB [BLANK]
RIGHT THUMB [BLANK]
LEFT ANALOG UP [BLANK]
LEFT ANALOG DOWN [BLANK]
LEFT ANALOG LEFT [BLANK]
LEFT ANALOG RIGHT [BLANK]
RIGHT ANALOG UP [BLANK]
RIGHT ANALOG DOWN [BLANK]
RIGHT ANALOG LEFT [BLANK]
RIGHT ANALOG RIGHT [BLANK]

HIT A to finish!

SNES

Hold a Random Button to start.

RetroPie Controller
D-PAD UP D-PAD UP
D-PAD DOWN D-PAD DOWN
D-PAD LEFT D-PAD LEFT
D-PAD RIGHT D-PAD RIGHT
START START
SELECT SELECT
A A
B B
X X
Y Y
LEFT SHOULDER LEFT SHOULDER
RIGHT SHOULDER RIGHT SHOULDER
LEFT TRIGGER [BLANK]
RIGHT TRIGGER [BLANK]
LEFT THUMB [BLANK]
RIGHT THUMB [BLANK]
LEFT ANALOG UP [BLANK]
LEFT ANALOG DOWN [BLANK]
LEFT ANALOG LEFT [BLANK]
LEFT ANALOG RIGHT [BLANK]
RIGHT ANALOG UP [BLANK]
RIGHT ANALOG DOWN [BLANK]
RIGHT ANALOG LEFT [BLANK]
RIGHT ANALOG RIGHT [BLANK]

HIT A to finish!

N64 – (Mupen64plus)

Hold a Random Button to start.

NOTE: On this controller, I sacrifice the LEFT TRIGGER for SELECT so it can be used to exit the emulator in conjunction with the start button.
RetroPie Controller
D-PAD UP D-PAD UP
D-PAD DOWN D-PAD DOWN
D-PAD LEFT D-PAD LEFT
D-PAD RIGHT D-PAD RIGHT
START START
SELECT [BLANK]
A C-DOWN
B A
X C-LEFT
Y B
LEFT SHOULDER Z
RIGHT SHOULDER RIGHT SHOULDER
LEFT TRIGGER LEFT SHOULDER
RIGHT TRIGGER [BLANK]
LEFT THUMB [BLANK]
RIGHT THUMB [BLANK]
LEFT ANALOG UP ANALOG STICK UP
LEFT ANALOG DOWN ANALOG STICK DOWN
LEFT ANALOG LEFT ANALOG STICK LEFT
LEFT ANALOG RIGHT ANALOG STICK RIGHT
RIGHT ANALOG UP C-UP
RIGHT ANALOG DOWN [BLANK]
RIGHT ANALOG LEFT [BLANK]
RIGHT ANALOG RIGHT C-RIGHT

HIT A to finish!

Sega Genesis

Hold a Random Button to start.

RetroPie Controller
D-PAD UP NOT TESTED
D-PAD DOWN NOT TESTED
D-PAD LEFT NOT TESTED
D-PAD RIGHT NOT TESTED
START NOT TESTED
SELECT NOT TESTED
A NOT TESTED
B NOT TESTED
X NOT TESTED
Y NOT TESTED
LEFT SHOULDER NOT TESTED
RIGHT SHOULDER NOT TESTED
LEFT TRIGGER NOT TESTED
RIGHT TRIGGER NOT TESTED
LEFT THUMB NOT TESTED
RIGHT THUMB NOT TESTED
LEFT ANALOG UP NOT TESTED
LEFT ANALOG DOWN NOT TESTED
LEFT ANALOG LEFT NOT TESTED
LEFT ANALOG RIGHT NOT TESTED
RIGHT ANALOG UP NOT TESTED
RIGHT ANALOG DOWN NOT TESTED
RIGHT ANALOG LEFT NOT TESTED
RIGHT ANALOG RIGHT NOT TESTED

HIT A to finish!

Hotkeys and special buttons of Note

Key Description
SELECT + START Exit emulator.
SELECT + L1 Load state.
SELECT + R1 Save state.
THUMB LEFT Enable memory expansion pak.
THUMB RIGHT Enable rumble expansion pak.

Further RetroPie Configurations

ENJOY!

]]>
PS Script install WP manually on Server 2012 R2 /blog/ps-script-install-wp-manually-server-2012-r2/ Thu, 14 Jul 2016 22:23:07 +0000 /blog/?p=548

This post does basically the same thing that I have already covered in my “WordPress on IIS 8.5 (Windows 2012 R2)” post, but it is a script that does literally everything for you. You will just need to add in a few of your own settings into the script, run it, and you will have a functional WP site.

First lets start of with the Features that I already have installed:

You will most likely have all of these but Telnet… INSTALL TELNET!

 

DisplayName                                   Name                      InstallState
-----------                                   ----                      ------------
File and Storage Services                     FileAndStorage-Services      Installed
Storage Services                              Storage-Services             Installed
.NET Framework 4.5 Features                   NET-Framework-45-Features    Installed
.NET Framework 4.5                            NET-Framework-45-Core        Installed
WCF Services                                  NET-WCF-Services45           Installed
TCP Port Sharing                              NET-WCF-TCP-PortSharing45    Installed
SMB 1.0/CIFS File Sharing Support             FS-SMB1                      Installed
Telnet Client                                 Telnet-Client                Installed
User Interfaces and Infrastructure            User-Interfaces-Infra        Installed
Graphical Management Tools and Infrastructure Server-Gui-Mgmt-Infra        Installed
Server Graphical Shell                        Server-Gui-Shell             Installed
Windows PowerShell                            PowerShellRoot               Installed
Windows PowerShell 4.0                        PowerShell                   Installed
Windows PowerShell ISE                        PowerShell-ISE               Installed
WoW64 Support                                 WoW64-Support                Installed

 

NOTES:

  • Use https://api.wordpress.org/secret-key/1.1/salt/ to generate your Salt Keys… After they have been generated, you must replace any “$” character with any other character. Not just this script, but WordPress will not work if there is a “$” character in the salt keys.
  • You will be asked for some variables, they are as follows:
Variable Example
IIS Site Name MyWordpressSite.com
IIS App Pool Name MyWordpressSite.com
Directory Path for website C:\inetpub\wwwroot\MyWordpressSite
Database Name wordpress612
Database Username wordpressuser612
Database Password mysecretpassword612
MySQL root Password v9gvBhTG@*b6n#^!v
FTP Username FTPUser
FTP Password FTPPass123!
  • You can download check out the progress of the script on my Github and you can download it with the following icon:

ps1_Icon

Now for the Script

<# 

    .SYNOPSIS
    Install a new WP site with all pre-reqs using pre-set variables. Can be used for additional sites.
    
    .DESCRIPTION
    This script will create a WordPress site with known-working configurations.
    Script can also be used to add additional sites as checks are in place. 
    To customize site, update custom variables as desired. 
    CAUTION - this script will overwrite a current site
        
    .OUTPUTS  
    A new wp site ready for your configuration! ;-)
     
    .NOTES
    Author: Michael Groff
    Minimum OS: 2012, 2012 R2
    PS Version: 4.0
    Date:  1/12/17
    
#>

#Checking Powershell Version

$LocalPSVers = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine\").PowerShellVersion | Where-Object {$_ -gt "4"}

IF (-not$LocalPSVers)
{
    Write-Host "
You need to upgrade to atleast PS Verion 5 before running this script!
" -ForegroundColor Red
    Read-Host "Press enter to exit"
    BREAK
}
ELSE
{
    Write-Host "
Correct Powershell Version found, you are good to go!
    " -ForegroundColor Green
}

###
###Variables Start: 
###
#Site Name, must inclue the TLD (.com, .info, .net, etc.)
Write-Host "
The website name, must inclue the TLD (.com, .info, .net, etc.)
" -ForegroundColor Yellow
$iisAppName = Read-host -prompt "Enter the website name"
#IIS App Pool Name: 
Write-Host "
The iis app pool name, can be same as website
" -ForegroundColor Yellow
$iisAppPoolName = Read-host -prompt "Enter the iis app pool name, can be same as website"
#Site Path
Write-Host "
The suggested website root directory path is 'C:\inetpub\wwwroot\MyWordpressSite'
" -ForegroundColor Yellow
$directoryPath = Read-host -prompt "Enter the Website root directory path"
#Database Name
Write-Host "
The WordPress Database is a MySQL Database
" -ForegroundColor Yellow
$dbn = Read-host -prompt "Enter the WordPress Database Name"
#Database Username
Write-Host "
The WordPress Database User is a MySQL User
" -ForegroundColor Yellow
$dbun = Read-host -prompt "Enter the WordPress Database Username"
#Database User Password
Write-Host "
The WordPress Database Password should be a strong password, minimum 12 characters
" -ForegroundColor Yellow
$dbpw = Read-host -prompt "Enter the WordPress Database User Password"
#MySQL root password
Write-Host "
The  MySQL root password, this will create one if it doesnt exist
" -ForegroundColor Yellow
$MySQL = Read-host -prompt "Enter the MySQL root password"
#Salt Keys - https://api.wordpress.org/secret-key/1.1/salt/ (NOTE: Replace any $ that you see with another character!)
#Authentication Key
$AuthKey = "ry=,b*Gp,+1-voDYM`zq#:S_^ODN Lp9:_:&D5o6C%0SXsyi

		
]]>