March 11th, 2020 to me, felt a lot September 11th. Thousands of people didn’t die in one fell swoop, but it was when Coronavirus shifted from concern to cancellation. What once seemed far away was at our doorstep. A grim reaper coming that would rack up a worldwide death toll two orders of magnitude greater than September 11th.
As trivial as it sounds, WGI was cancelled on March 11th. With units traveling to Ohio from several countries (including Japan) and all over the US, it made sense to cancel it. Should we all be sitting in close quarters in a poorly ventilated arena? Probably not. Sites like is it canceled yet? had been tracking canceled events, and this was just another notch on the bedpost.
Maybe I could still enjoy some local live music? I had tickets for the orchestra that Friday, March 13th. It was to be canceled too, but not entirely. The orchestra would play – without a hall audience, and they would broadcast it on Minnesota Public Radio. The repertoire? Shostakovich’s 7th – The Leningrad Symphony.
Music is one of those things that gives people hope that there will be better days, no matter how bad things get. Shostakovich’s 7th was no stranger to tough times, having been both composed and premiered under dire circumstances.
Connection to Drum Corps
My love of classical music was reinforced through my 4 years marching in the Phantom Regiment Drum & Bugle Corps. I loved playing music that was new (to me), then researching a composer’s other works. I relished finding great recordings, which would further fuel my curiosity.
The obvious connection from Shostakovich’s 7th to my corps, is their 2002 program entitled Heroic Sketches – but long before that program ever took the field, I heard a piece that begged to be performed by a strong hornline. One that wound up being a cornerstone of 2002 show…
Back in the day…
The 1996 Phantom Regiment show Defiant Heart opened with a different piece by Shostakovich called the 4th Ballet Suite. As always, I would find recordings of the music we were playing to hear the original, and to hopefully hear something new.
I bought a recording of the Scottish National Orchestra conducted by Neeme Jarvi on the Chandos Label. It also included Symphony No. 10 – boy was I in for a surprise. I had never heard that Symphony, let alone the second movement Allegro, and it is a thrilling performance.
One of my favorite things about classical compact disc recordings (if they’re included) is the liner notes. Sometimes they have a history of the composer and the piece, and I would often use that as a basis for more research, or just to simply help paint a picture of what the music was about. From this CD the liner notes read:
The second part, the scherzo, is a musical portrait of Stalin
And here is the Phantom Regiment hornline playing an excerpt during their finals warm-up in 2002:
Symphony No. 7
That same 2002 program closes out with Shostakovich’s 7th. While researching that piece in 2020 during quarantine, I came across this recording which is stupendous.
I don’t have the CD liner notes to reference, but the comments on the YouTube video are worth reading. This one is my favorite of the bunch. I don’t know if it’s true or not, but I choose to believe it is.
The story goes, Leonard Bernstein was in failing health and he knew he was never going to stand in front of the Chicago Symphony ever again. Apparently there has been a long standing tradition of never encouraging the brass section of the CSO; not even looking at them or else they’ll blow you off the stage. During the end of this concert, and being a helpless romantic himself, good ol’ Lenny not only looked at the Chicago Brass, but he asked for everything they had. And the rest is history!
There are several great resources out there for setting up a gaming server on Microsoft Azure. This one is specifically for VirtualRC the R/C racing simulator. If you want to host a race and participate in the race itself, you’ll need two VRC accounts (and possibly paid subscriptions): one for you and one for the […]
If you want to host a race and participate in the race itself, you’ll need two VRC accounts (and possibly paid subscriptions): one for you and one for the race host. You can host a race with a free VRC account, but you’ll be limited to the free tracks and cars – that’s OK too – you’ll surely get a lot of people joining your server if you’re hosting races on the free-to-play tracks.
If you don’t already, sign up for a free Azure account. They usually give you a $200 credit when you first sign up, which is great to get started with. After about a month of hosting a 2-hour game night once a week, my monthly costs were between $20-30. I thought I could make my $200 credit last for at least 6 months, but sadly the $200 credit only lasts for the first 30 days
But, this is still likely the easiest way to get a rock-solid gaming server set up that does not rely on your home connection.
Sign into portal.azure.com. In the left navigation, click Resource groups. Then click Add.
I chose to use an NVidia based system for graphics performance in case I wanted to livestream our races. I thought having the server closer to the racers would be best (North Central US), but there’s another factor to consider: the VRC server is in Europe. So while I want low latency from drivers locations to the Azure server, I also want low latency from the Azure server the VRC server where the races are registered.
I picked East US and it seems to have been a wise choice. My ping times to the VRC server are consistently around 100ms.
Once your resource group is created, select Add to add a virtual machine (VM) to it.
Select Windows Server 2016 Datacenter – we’ll actually update that to the newer 2019 server in the next step. An alternative is to start with Windows 10 Pro, Version 1809 – I have not tried this setup, but I’ve seen it recommended and it may be a better base to start with.
Under the virtual machine Basics your resource group will be pre-selected. Give your VM name and select the same region as your resource group. You can change the image to Windows Server 2019 Datacenter here. Then click Select size to choose the type of VM.
On the VM size selection screen type NV into the search box to limit it to NVidia based servers. I like to change the cost to Hourly so it’s less scary The server I chose is NV6_Promo – the smallest/cheapest of the NVidia options.
Finding a virtual machine in a region was one of the most frustrating parts for me. I seemed to have activated my Azure account at the height of the Coronavirus pandemic. Many of the servers listed on the Products by region page were not actually selectable in the portal. After some back-and-forth with support, it turned out that they were running out of resources to allocate. Things eventually leveled out and I was able to select the NVidia server I wanted.
After selecting the VM size, set and record your VM username and password. Make sure to allow remote desktop (RDP) inbound ports. Then click Next : Disks.
For the OS disk type select Standard HDD – it is cheaper and won’t greatly affect the performance.
Further down that page, click Create and attach a new disk.
You’ll be prompted to create a new disk, click Change size to change the disk type and size.
Select Standard HDD for the Storage type. Wait! Didn’t I select a disk before? Why am I doing this again?! The previous selection was for the OS disk. It is temporary storage and nothing gets saved on it when you shut your VM down. You possibly could go without an “external” disk, but you’d have to install and configure VRC (and everything else) every time after you start up your VM.
You don’t need anything big here, just enough for VRC and its libraries. A full installation of VRC with a couple of extras is 20GB, so you could easily select 64GB or even 32GB here. Disks can be made bigger (but not smaller) later on.
Once your disk type and size is selected, click Next : Networking.
We’ll keep the defaults on the Networking tab, so just click Next : Management. On the Management tab click Enable auto shutdown – this will save your hide if you forget to shut your VM off. Speaking of which, get the Azure app on your phone in case you want to double-check to make sure you actually remembered to shut it down.
After the Management tab you can click Review + create. On the final page it will tell you how much it costs to run this server hourly. To agree, click Create.
Remove Network Security Group
This is sort of a controversial thing to do. Removing the Network Security Group (NSG) is like connecting your windows computer directly to your cable modem. It’s out there on the internet, available for anyone to hack. I haven’t had much luck getting VRC to play nice with the NSG, because you’ll have to set VRC network rules in Windows Defender Firewall on your VM and mirror those changes in the NSG.
My gaming server is only up for a couple hours at time, and with a different IP address every time. Plus there’s really nothing installed on there that is of value, so it’s a risk I’m willing to take.
Here’s how to remove the NSG. Navigate to your resource group and then click on the NSG for the group.
First you must disassociate the NSG with the Network Interface. Click Network Interfaces and then for your interface select the more menu icon then Disassociate.
Once it’s been disassociated, you can delete the NSG by going to the Overview screen and clicking Delete.
Start the Virtual Machine
Navigate to your virtual machine under your resource group. Now that your server is created and configured, you can start your VM if it’s not started already. Then copy the Public IP address so we can connect.
Connect via Remote Desktop
Connect to your virtual machine using the Remote Desktop Connection app from your home computer. Paste in the Public IP address you copied earlier. Before clicking connect, click Show options.
With the options shown you’ll be able to enter your VM administrator username.
Then click Connect. You’ll get an identity verification warning pop-up, but it’s safe to click Yes to continue.
Once you’re logged into your virtual machine via RDP, you can install VRC.
VRC will fail at installing the required .NET components, but you can install them through Server Manager which (annoyingly) will probably be automatically started when you log in through Remote Desktop. Click Add roles and features.
Click Next in the wizard until you’re on the Features screen. There you can expand the .NET Framework 3.5 Features section and check .NET Framework 3.5 (includes .NET 2.0 and 3.0). Then click Install.
VRC installs a couple of outbound firewall rules – you might even see this message during installation. But we need to add a couple of inbound firewall rules to Windows Defender Firewall.
Click the Start Menu and type defender. Then click on Windows Defender Firewall.
Once the Windows Defender Firewall control panel is open, click on Advanced settings.
Highlight Inbound Rules in the left pane, then click New Rule… in the right pane.
In the New Inbound Rule Wizard select Port for the rule type and click Next.
For the protocol and ports, select UDP and enter the port range of 26379-26381, then click Next.
Action should be set to Allow the connection, then click Next.
All profiles should be checked, click Next.
And then give it a useful name, like VRC. Then click Finish.
As mentioned earlier, if you’re using a Network Security Group (NSG) as part of your Azure resource group, then you’ll need to create the same inbound network rules there too.
Now you can start VRC, but we’re not out of the woods yet. VRC will likely complain about Internet Options:
If you’ve ever had windows update or some other nonsense dialog come up while you’re racing, you fully understand the madness that is involved.
The solution (without having to use two computers) was a setting in RDP to set Apply Windows key combinations to On this computer.
Otherwise I would press Alt+Tab when on the remote system and it would toggle between the VRC Server session and the desktop. By keeping that combination local, I can Alt+Tab to switch between RDP (fullscreen) and my local VRC game (fullscreen). Neither game session gets minimized so nothing hangs up or pauses.
Whew, that was a lot Did I forget anything? Let me know in the comments!
With all the other news of the global Coronavirus pandemic, police killings, and riots, I want to take a moment to make sure a important local story doesn’t get lost.
It was recently brought to my attention that Duron Jr. has died. This apparently happened at the end of April, but I just found about it last week. This young man was only in the 5th grade when he was struck by an SUV while crossing 61st from Fridley Middle School to the Fridley Community Center.
Next the city took down the (useless) plastic fences and erected bollards on the road to keep cars from passing each other on the shoulder.
I wondered how long they’d be there, and I now know Fridley has bollards as one of the tools in its toolboxes for testing changes without doing anything permanent.
Then throughout 2019 the city took action to apply more treatment to the 61st. Ave. They added a median with a pedestrian refuge to give pedestrians a little more priority at the intersection.
There is now a marked bike lane on both shoulders as parking was never allowed there previously. And there’s double white-striped paint to reinforce that passing is not allowed.
61st is a city-owned street. No county or state policies or politics stand in the way of making the street safe for everyone. I’m glad they took what was relatively swift action for a government agency.
But why do we wait until someone is struck by a vehicle – so severely that they risk death – to take action?
As car-loving Americans, we tend to have this have our cake and eat it too mentality when it comes to roads. Do we want safety? Yeah, sure, but dammit I’ll bitch to the mayor if I had to wait a minute longer in my car while dropping my kid off at school.
This last part is an unknown – I don’t know what the answer is right now, but I intend to find out. Sadly almost all of our government agencies, from city to federal, aren’t set up to proactively address problems in our built environment until somebody dies.
Will the crash that ended Duron’s life be recorded as a fatality? He sustained his injuries for over two years. But undoubtedly he would still be a thriving young student if he wasn’t struck that day.
Most of the chatter about this video is positive, but the first and last comments in this screenshot are what I want to talk about: I get mad when I hear things like “just what we need – another class” or that something is too juvenile for them to have fun. No matter how you […]
Most of the chatter about this video is positive, but the first and last comments in this screenshot are what I want to talk about:
I get mad when I hear things like “just what we need – another class” or that something is too juvenile for them to have fun. No matter how you cut it, RC racing at its core is toy cars. Yes they’re expensive, configurable, luxury toy cars. But they’re still toy cars as much as a $400 magnesium yo-yo is still a skill toy.
Let’s look at the reality and see if can’t all get along or at least agree to disagree without starting a flame-war
Part of me understands their complaint – adding another race on race day means it will add more time to the racing schedule. Which means more time waiting between their races, and the possibility of getting home later in the day.
But let’s break down the argument. Does it really mean more time? If more 2wd buggy drivers show up, it means adding an E-Main and another qualifying heat, so if there are more drivers it means more time no matter what. It doesn’t matter if they’re driving rally cars, formula one, tamiya mini, euro trucks, short course trucks, etc. More drivers is more time.
Why not welcome new classes? There are so many aspects to the hobby, but the common thread is racing. Track owners across the country don’t care if they’re announcing on the tone for the E-Main of 2wd Buggy or the A-Main of Euro Trucks. They want as many (paying) racers at the track as possible. I for one, would love to watch a 2wd Spec Stampede race like in that JConcepts video.
Track owners and race directors recognize this and most have a policy that if at least 3-5 guys show up with the same type of vehicle, they’ll run it as a class of its own. The belly-aching by the other drivers simply needs to stop. It does not help grow the hobby, it just makes us look like elitist jerks. It comes off sounding like: If you’re not good enough to afford or compete with the type of car I have, you should just stay home.
Racing on the Cheap
“Yet Another Class” usually means someone is testing the waters to try something different and see if it sticks. More often than not, it is something affordable. Tamiya Euro Trucks are a hit because they’re just over $100 and they look awesome. My favorite class of racing is currently Spec Slash. It’s right next to Euro Trucks as one of the cheaper ways to race. I also have a 2wd buggy, which is always popular at any track, but that platform is expensive. The idea of a 2wd Spec Stampede monster truck class sound like a great way to get kids (young and old) into some fun monster truck racing.
Heads-Up Mixed-Class Racing
Another option that is rarely exercised, but should be, is mixed-class racing. It’s literally running two or more types of classes in the same race. It’s already happening at your track during open practice and it makes everyone a better driver if they’re actively looking out for slower/faster traffic. Many drivers pay zero attention to anything that isn’t traveling at their speed. To combat it, more tracks should host heads-up races like this:
When running multiple classes in the same heat, there are two schools of thought. You can run cars of similar speed together, or run cars of different speed together – each has pros and cons.
Running cars of similar speeds together is easy. Maybe it’s VTA & Euro Truck or Stadium Truck and Open Short Course. The race director likely knows generally what the lap times are for a specific class. Hopefully the two classes lacking a full field of drivers wind up being a good match.
The other option would be to run classes with different speeds together. This happens in several real world races, but most famously at LeMans. Why do I like the speed differential? It allows for the faster cars, usually piloted by better drivers, to pass quickly. If slower drivers are predictable in their racing line, the faster cars can use just about any line to overtake. Is it going to slow everyone’s lap times? Sure, but not significantly and the racing will be even more exciting.
Talk to your track
As a rule of thumb, always check with the track owner and/or the race director. At bigger events like trophy races they’ll be clear on what classes are getting trophies and it probably doesn’t include your new class. The guys running a new class aren’t there for trophies anyway. They’re there to race against their friends and build some interest around what could be a fun racing series.
Don’t listen to the naysayers. If you want to run a class of Tamiya Dancing Riders, get some people interested and head to the track. You could even ask your local hobby shop to give the racing info to others buying that model. Even if no has joined you (yet), bring your car to the track. If there’s a Sportsman class, which is usually a smorgasbord of classes, run it in that. Or when you’re racing in a different class, run your new model during open practice time or before/after the race. Sometimes just seeing something new go ’round is all it takes to get others interested. I did this with my F1 car in 2016 and it has been a regular class in my area since.
Since I did this years ago, some of the instructions and firmware files are getting hard to find, but if you need instructions – let me know in the comments and I’ll try to help as best I can.
Getting into the RTP-300 admin panel
It had been at least a year since I’ve logged into the admin interface on my RTP-300. Luckily, there are some fun things you can do to help figure out how to get in. If you have a phone hooked up to it and it’s powered on, you can use the Interactive Voice Response (IVR) to get information. This article from Cisco (who purchased Linksys) has many of the available codes.
Pick up the phone and dial #### to get into the IVR menu. Then press 110# and the nice lady will read back to you the IP of your ATA.
Good info, but it wasn’t running the web interface on port 80, so I had to figure that out. The IVR option for port wasn’t working, so I did an nmap scan of all ports 1-65535 from the command line – you could use the raspberry pi or any other computer on the same network as your RTP-300:
$ nmap 172.16.0.11 -Pn Starting Nmap 7.60 ( https://nmap.org ) at 2020-04-04 18:02 CDT Nmap scan report for voip.lan (172.16.0.11) Host is up (0.0048s latency). Not shown: 999 filtered ports PORT STATE SERVICE 8080/tcp open http-proxy
There it is, port 8080. I made sure to add the address (with port) in my password manager. Then I had to use Firefox to finally connect to the ATA admin because Chrome wouldn’t complete the connection – likely because the RTP300 doesn’t have support for HTTPS. ¯_(ツ)_/¯
But we’re in! We’ll first do some configuration in Asterisk and then come back to the RTP300 configuration.
Once you’re logged in to the IncrediblePBX/Asterisk web admin, navigate to Extensions (under Applications).
There you can see there are a few extensions pre-configured for you, including 701 & 702, which will work great with the RTP-300.
Click the Edit button to the right (paper/pencil icon) to edit and view more information about that extension. You’ll need to do two things in here. First, copy the “Secret” key for each extension.
Second, for extension 702, also change the SIP port to 5061. There’s a note in there about how 5061 is sometimes used for “Line 2” on ATAs – and that’s exactly the case for the RTP-300.
RTP-300 Admin Navigation
The RTP-300 admin interface is little weird. Once you’re logged in you’ll want to navigate to the voice menu item on the far right.
Click the “Admin Login” link to switch from an informational view to one where we can actually make changes. Then click “switch to advanced view”.
Advanced view will show all of the extensions and settings.
RTP-300 Extension Configuration for IncrediblePBX
Configuring phone lines 1 & 2 is fairly simple despite the overwhelming number of settings fields on the admin. We just need to enter three values:
The IP address or domain name of our IncrediblePBX server as the SIP “Proxy” This is the SIP server the ATA is going to register this line with.
The Incredible PBX extension number as the “User ID”
The extension secret as the “Password”
Once you have these settings saved, the ATA should now register itself with Asterisk on your IncrediblePBX system. The best way to know if it worked is to pick up the receiver one of your lines – you should hear a dial tone 📞
If you’ve got a dial-tone and a phone on each port, you should be able to dial each extension with 701# or 702#. The # isn’t strictly necessary, it just instructs the ATA that you’re done dialing so it can stop waiting for further input. If you’re feeling fancy you could add a 70X entry to the dialplan on the line configuration of the ATA.
If that’s working, try one of the pre-configured Nerdvittles custom extensions. You can see them in the IncrediblePBX/Asterisk web admin by going to “Admin” and “Custom Extensions.”
Try 947# for weather by zip code ⛈️ or 951# for the latest news 📰
This write-up covers installation of IncrediblePBX 2020.3 on a RaspberryPi 3. The latest instructions are always available on NerdVittles and incrediblepbx.com, but I wanted to document my experience here for posterity. This article will cover installing X Windows for a GUI, and Samba & SSHFS for cross-platform file sharing on your home network.
Eject the SD card and put it into your Raspberry Pi and boot it up.
Follow the on-screen instructions carefully. I like to connect my RaspberryPi to the network, then ssh into it and run most of the configuration commands from a terminal on my main computer because:
I can select/copy/paste any instructions from the terminal into a document for later reference.
I don’t have to stand next to the cat’s litter box (where my Pi is located in the laundry room) 🤧
Because the IncrediblePBX installation is geared specifically towards having a turn-key phone system, it lacks some of the pre-installed stuff you normally get in a vanilla Raspbian installation, but that’s why were here (and we’ll fix it).
You’ll inevitably use raspi-config to change the settings for your Pi. For IncrediblePBX, don’t enable predictable names on network interfaces unless you know what you’re doing. Some of the IncrediblePBX scripts are looking for good ol’ eth0.
For some reason IncrediblePBX didn’t include ntp so I installed it with:
# apt install ntp ntpdate
Both of those are needed before running /root/timezone-setup (specified by the on-screen instructions).
Before setting up your PBX-equipped Pi to run X, you should add a “regular” user as having the system automatically log into X as root is a categorically bad idea. All of my examples in this article use the username as justin, but you should replace every instance with your own name 😀
# adduser justin
Follow the prompts for adduser, then add that user to the sudo group so you can still do useful stuff as a privileged user.
# usermod –aG sudo justin
Then log out and log in as your user, and run sudo raspi-config. Under “Boot Options” and set the “Desktop / CLI” option to “Desktop GUI, automatically logged in as ‘justin’ user.” raspi-config will prompt you to install X (follow those instructions). It will also ask you to reboot after changing that setting.
X Windows “Black Screen” Issue
When I went to log into X, I saw a black screen with the pointer mouse cursor and then it would log me out and show the login manager (LightDM). 🤔
After getting some clues about the error from my ~/.xsession-errors file, I found that I needed to remove this file out of /etc/profile.d in order to be able to log in to X:
I use samba to share files read-only across the network. This is especially useful for watching videos via VLC on devices like AppleTV and Amazon FireTV. Install samba by running:
$ sudo apt install samba
The Pi3, when set to boot up and log into the UI, will automatically mount any USB-attached drives under /media/justin, so I share my media folder read-only to the network.
$ sudo vi /etc/samba/smb.conf
To the bottom of the smb.conf file add:
comment = Media
path = /media/justin
browseable = yes
guest ok = yes
read only = yes
force user = justin
force group = justin
SSHFS for Read-Write Access
For read-write access to any of the drives on the Raspberry Pi, I use SSHFS.
In Ubuntu 18.04 you can connect to a sshfs URL in Nautilus by going to “Other Locations” and typing in the location in the “Connect to Server” box in the status bar at the bottom of this screen. Everything on my home network gets a .lan DNS name care of OpenWRT, so I connect to raspberrypi.lan – you can substitute your IP address. Your URL might look something like: sshfs://yourusername@X.X.X.X/media/yourusername
The remote location will show up as “OSXFUSE Volume X” in the Finder under your home directory and under “Volumes.” You can”Eject” (un-mount) the remote location if you wish to disconnect.
For access in windows I installed sshfs-win. Once it’s installed you can map a network drive over the SSHFS protocol. Right click “This PC” and select “Map network drive…”
That will bring up a dialog where you can enter the drive letter you want it to show up as, and the path information. sshfs-win has a protocol shortcut called sshfs.r if you want to map a path that is outside of your home directory (/home/justin) on the remote system. In my case I want to mount /media/justin. Remember to use backslashes for paths in Windows!
At this point you should have a RaspberryPi on your network that boots into a UI, automatically mounts external USB drives, and shares them read-only on your network. You should also be able to connect read-write using your Pi username and password for authentication from any computer.
We haven’t even touched the fully blown PBX that is already installed – we’ll get into that next! Stay tuned.
With almost everyone quarantined in their homes for the Coronavirus pandemic, RC racing (along with everything else) has come to a halt. I enjoy competitive RC club racing and I can’t wait to get back into it. Until then there’s two things we all can do: Buy a shirt and support your local track: https://tssmt.liverc.com/ […]
With almost everyone quarantined in their homes for the Coronavirus pandemic, RC racing (along with everything else) has come to a halt. I enjoy competitive RC club racing and I can’t wait to get back into it. Until then there’s two things we all can do:
I used to play VRC online with a club called Thursday Night Live. We’d qualify during the week and do Live mains on Thursday. Racing buggies, I was consistently in the C-Main with an occasional bump-up into the B. Just like real life! Who says it isn’t real?
That club went dark, so it’s time to bring it back to life! Meatball Racing is sponsoring Thursday night racing once more using an NVidia-powered server on Microsoft Azure
We’ll follow the format established by Thursday Night Live, as it worked well. The only thing we’re adding is a free night – the first Thursday of the month we’ll race on a track with cars/trucks that are free to play. This is a great way to try VRC before buying, to see if you like it.
Suddenly I find myself trapped in my own home due to COVID-19. It’s not really a big deal because I work from home normally. But it has changed my weekend plans drastically. So it’s time to start tackling one of my 2020 goals:
Organizing all of our digital files and having a consistent back-up strategy.
At our house important files mostly fall into two realms: Photos and Music. Many people have at one point decided to keep all of their photos or music with a 3rd party service like Flickr or iTunes. That’s fine, but you just have to be prepared to commit to them like a marriage – except they decide all of the terms – it’s not a mutual agreement. Personally, no matter if I upload my photos to a 3rd party service, I always keep the originals on a disk in my home so I can own my own content.
But this becomes an issue when everyone in your family isn’t on the same page. I have some photos on a USB drive and on my computer, and my wife has done the same on a different USB drive and computer. We need a way to have photos accessible in a consistent place, and make sure they’re getting backed-up.
When it comes to shopping for a big hard drive to store all of this stuff, I try to find whatever is the best space-per-cost within my budget. At one point I had devised a “2×100” rule: I get the biggest drive I can for $100 and consider buying two of them (for redundancy). As disk sizes increase, once a drive is available that is 2x the size of my current one for $100, I replace them. Currently you can get up to 4TB drives for $100.
I bought a 4TB drive to use as network attached storage to act as our central storage place. I attached it to a Raspberry Pi using a USB/SATA hard drive dock and share it read-only over the network using Samba. It shows up as a Windows-style network share on all computers and other devices like AppleTV & FireTV (using VLC). For read-write access, I use SSHFS so authenticated peeps can write to the disk and move files around.
We’re still working on how to consistently name our photo albums, but having them in one place that gets backed up off-site is a big win.
I used to be an amateur network administrator. In my back-office (laundry room) I had a tower server that had 6 disk drives. A 3-disk RAID5 for backups, a 2-disk RAID0 for temporary storage (for MythTV recordings), all in swappable drive trays. Then there was one more disk hard-mounted for operating system boot-up. It worked for a while, but when I was going to have to replace the 1000-Watt power supply for the second time, I thought maybe there’s a better way. One thing I hadn’t considered before is: the more disk drives you have, the higher chance of having a drive fail – an increased chance of the click of death was always in the back of my mind. Using one big disk with a Raspberry Pi is much simpler, smaller, and uses much less power.
With all disks on-site, there is still the chance of everything getting destroyed by fire. To handle off-site backup I had used CrashPlan, but that didn’t pan out – time to look for something different. Since we have quite the collection of different computers here – Linux, MacOS & Windows, I looked for a consistent backup solution that is operating system agnostic. I wound up going with Duplicati using Backblaze’s B2 for off-site storage.
All of our computers use Duplicati independently to backup to B2. The Raspberry Pi does as well to backup our photos and music.
I’m still working out (and documenting) the details of our setup, but I’ll list the specifics of our setup here as I get to them: