As an IT technician, one problem my team and I have faced is trying to track down a specific piece of equipment in one of our many server and network rooms. As a university IT team consisting of mostly students, we have a lot of new and inexperienced technicians not familiar with our server rooms and racks. While we have an inventory system, it’s hard to maintain and impossible to track down the exact location of hardware, making it difficult when student’s get a ticket to patch in a new port, for example.
One app I made for my department last year was a desk mapping tool that allowed us to make interactive room maps to track the location of graduate student desks with a drag and drop editor that interfaced with our computer and student databases. When demonstrating this tool to my supervisors, one of our server administrators brought up the idea of implementing a similar system for mapping out server racks. Over the weekend I put together a rough prototype heavily based on the room mapping system and presented it to our sysadmins. They were impressed, but it was very limited and unable to integrate with our existing systems, and while we discussed the possibility of adding integrations to our ticketing system or an API, my primary role is not as a software developer, and I didn’t have the time or resources to complete it, however, I really liked the idea of a fully integrated rack mapping tool and couldn’t find anything else like it on the market, so rack manage was born, and after about 6 months of development, I’m ready to introduce it to the world.
What is rack manage?
As the website says, “rack manage is a tool to help you design and manage your datacenter and server racks in a simple and easy way. With a drag and drop rack editor, room layouts, and server inventory, rack manage is the perfect tool for your datacenter.”
Rack manage consists of three primary features: rack management, room management, and inventory. In rack manage, you can create a server rack, and fill it with all of your equipment. Each rack and piece of equipment can have data associated with it like the model, serial number, name, tags, location, etc.
The drag and drop rack editor allows you to organize your racks and automatically converts your rack design into a CSV or JSON object that shows exactly which slot your equipment is in, and all of the details.
Racks can then be placed in interactive room maps, along with other objects like labels and doors, allows you to find the physical location of both your rack and equipment.
Racks, rooms, and slots can all be searched to quickly and easily find and filter your equipment.
Besides the core inventory features, rack manage is loaded with features and integrations to make it as versatile and useful as possible. These include:
- Search Engine
- Single Sign-On
- Branded Subdomains
- Custom Domain Hosting
- White Label Branding
- Multi-user Teams (Coming Soon)
- Dark Mode
- Mobile / Touchscreen Support
- Multi-Object Select
- Object Copy & Paste
- Object Snap-To-Grid
- Export to PNG, PDF, JSON & CSV
- Import from JSON & CSV
Given that this is a tech blog after all, I wanted to give a quick write up about how rack manage was built and what technology it’s using.
From the start I wanted an extremely scaleable but cost effective platform to run rack manage on that wouldn’t require much maintenance. While I don’t expect it’s going to need this scalability, at least not right now, I want to build with the future in mind, so I decided to go with a serverless + NoSQL architecture based on Google Firebase and Cloudflare Pages / Workers. Rack manage runs almost entirely in the browser, utilizing a client side connection to a firestore database which allows it to work like a PWA. The frontend is built in Vue, using Konva.js to run the interactive editor and Ant Design Vue as the design system, with TailwindCSS for additional styling. Some other fun libraries that made their way into rack manage included Microsoft’s Monaco Editor for building webhook requests and Checkly Handlebars for webhook processing.
I’ve started kicking myself for not using this as an opportunity to learn React, as I sort of wish I had used Next.js to integrate the serverless functions directly into the front end, but Firebase Cloud Functions, although slower than I would like, are relatively easy to build and integrate, especially when using Firebase Auth to share the authentication context between the frontend and serverless environments. Speaking of Next.js, rack manage initially used Vercel for SPA hosting, but I decided to switch to Cloudflare Pages, as they offer a much better free plan, especially considering that it integrates seamlessly with the other Cloudflare products I used for this project including Cloudflare DNS, Cloudflare for SaaS, Cloudflare SSL, and Cloudflare Access, as well as supporting wildcard integration with DNS for custom routing and subdomain support.
Cloudflare workers are used primarily for access control and routing, pointing the branded subdomains and white label domains to the correct servers and restricting access to authorized users / registered domains, as well as some serverless functions that were too slow to run on Firebase Cloud Functions (workers have no cold start 🤩).
Two crucial technology choices that helped provide the enterprise level integrations I needed, were the use of Firebase Auth and Cloudflare for SaaS. Firebase Auth provided a free way to integrate SAML and OIDC providers to rack manage for use by enterprise customers, while Cloudflare for SaaS provided a free way to connect external domains for white label hosting and generate SSL certs for them.
Other technologies used in rack manage included Stripe for subscriptions and payment processing (which also integrates directly with Firebase Auth & Firestore using Firebase extensions), Algolia for search indexing, MailerSend for email notifications, Sentry, Instatus and Checkly for application monitoring, and Jira Service Management, Confluence, and Refined, for customer support.
These platform decisions were made almost equally for cost and performance. While all of these services are excellent and do their job perfectly, they are also all completely free to use (at least at a starting level). They all have generous free plan limits that eventually turn into paid tiers, but none of them require monthly subscriptions to run, so rack manage can exist and offer a free plan without having to worry about subscription fees.
Some features can be more expensive than others or use a significant amount of free plan limits, like SaaS hosting, SSO, API, and webhooks, so these features have been restricted to paying customers to help cover any bills generated by their usage. As rack manage has not been publicly available up until now, I do not have the usage data to help calculate the subscription prices needed to cover these bills, but to start, the basic plan is being offered at a $5/month price which may change in the future.
While rack manage is still heavily under development, the Free and Basic ($5/mo) plans are now available for anyone who wants to give rack manage a try. The Plus plan is still unavailable as I’m working on finishing up two core features (team support and inventory management), but I expect it to be available in the coming months and anyone who wants to beta test it can send me an email to get access.
I’d love to hear your feedback and suggestions on the platform so leave a comment below or send me a message at [email protected].
To sign up for an account today, head over to rackmanage.io and click “Get Started”.
While rack manage is already very feature rich in my opinion, I do have some goals already planned for future versions including:
- Support for custom uploaded rack slots & room objects
- Open source / self hosted version
- Integrated status monitoring (view server status inside of rack viewer)