You know which birds I really like? Kingfishers. They’re small, very colorful and fast. You’ll see them in smaller creeks, hiding in the vegetation, but you have to pay attention and probably keep staring at a place for about 10 minutes. And if you’re lucky.. you’ll see one!
It was my number 1 reason to go for walks when I was a kid; “We might see a kingfisher!”
And once, more recently, when I was swimming in the local river with a friend, at 8AM in the morning, with temperatures under 10 degrees, it flew past us, within a meter of distance.
What’s in the name?
Halcyon is the latin name of the Kingfisher. And the inspiration for this development server project: A small, fast and flexible environment for development!
The origins
About 2 years ago, I landed a new client with a very heavy website environment. When running this locally, in MAMP Pro or in docker containers, the website was loading very very slowly. It was as good as impossible to work on this website without getting extremely annoyed. So I decided to look into alternatives. I’ve spent hours and hours on research, and finally bought some components for a mini PC / barebone, resulting in:
- ASRock DeskMini H470 Series
- CPU: Intel Core i5-10400
- RAM: Kingston 32GB DDR4 2666MHz Kit
- SSD: Kingston A2000 1TB
- HDD: 2x 2TB Seagate Barracuda Compute
So, what does it do?
This little “creature” serves many purposes. For starters, you can run any docker container, and make it available on the web via nginx-proxy. I run everything I work on in docker containers and use the tld “c7” to make it available to any device connected to my Wi-Fi network. Creating a new website is as easy as the GIF on the right.
It also serves as:
- A VPN server, so I can work on projects from anywhere by logging into the VPN
- A backup server for my iPhone
- A TimeMachine backup server for my Macbook
- A Spotify player
- It’s connected to a TV and shows a full screen website with a screensaver and the current time
- A DNS server, so that all “.c7” domains are resolved locally and others are forwared to an external DNS server
- A catch-all mailserver for all projects
- It runs recurring tasks (like automate commits to a demo repository on Github)
What’s the blog series for?
I love my setup and want to share it with the world. I’ve decided to rebuild it with some cheaper components. At the same time I will also setup a cloud equivalent, meaning that even without the hardware, you can follow these blog series and setup your own. Keep in mind though; running this remotely takes longer page loads and is generally not recommended.
Halcyon: The components
This project will run on:
- Case/CPU: Gigabyte GB-BLCE-4105 J4105
- RAM: Corsair DDR4 SODIMM Vengeance 1x8GB 2400
- SSD: Gigabyte 256GB NVME M.2
Total cost at time of purchase: €246,80
To get these up and running (feel free to borrow these from anyone) we’ll also need a:
- Monitor
- Keyboard
- Mouse
As soon as we got the basics up and running, we can ditch these items.
What’s next?
Next up is unpacking and getting it up and running, the steps will be something like:
- Unpacking and installing components
- First start & installing Ubuntu
- Some security and setting up SSH keys
- Login remotely
- Creating the docker-compose.yml file that will run services, probably starting with the DNS and nginx-proxy containers.
Following along? Let me know in the comments or ping me in Twitter!
Leave a Reply