Gone Indie

· 8 min read

I am proud to release Acrobox, my first venture as a solo founder.

I have been building and deploying web applications since I was around 11 years old. I would FTP CGI scripts and PHP/mySQL apps to a remote server and it just worked. It was so easy, a child could do it.

I took a long break from the web as I ventured into the world of game hacking. I returned considerably more paranoid security-conscious. Language trends had moved on to Python, Ruby, and Node.js. Apache httpd was so passé. Companies were hiring “rockstar” developers. Crazy times.

I explored a plethora of deployment options. Fully managed solutions like Heroku seemed great at first but as I began to add essential building blocks for modern applications, the costs compounded quickly. Multiplied by every experimental application I was pushing out — unfathomable.

Similarly, abstracting away the server seems delightful on the surface but what would I do when something inevitably goes wrong? Maybe it was just my need for a sense of control in my life to compensate for the feelings of drowning in the throws of harrowing depression and anxiety, but I felt lost without SSH access to the underlying server.

I don’t like feeling locked in to providers and have a penchant for diving into the details of how things work. For these reasons and many more, I made the decision to take on the extra responsibility of managing my own VPS.

I had to choose an operating system and configure SSH key authentication, firewalls, web servers, SSL/TLS certificates, databases, caches, updates, and backups. For every new application, I needed to SSH into the server, create directories to store my code and data, modify the web server configuration, create a new database, and configure a process manager to start my application and ensure it remains up. Manual configuration was cumbersome so I learned a configuration management tool.

If it was control I wanted, I had it — and it sucked. There had to be a better way. Nevertheless, I was deploying like it’s 1999.

Go was my language of choice and the documentation suggested that the reverse proxy included in the standard library was production grade. I privately built a very basic reverse proxy with automatic SSL/TLS certificates issued by Let’s Encrypt and dealt with HTTP/HTTPS and naked/www redirects.

Fast forward a few years and containerization, on the timescale of modern web development, was old and boring. New ecosystems were being built and after a few waves it looked like they were here to stay. It was time to take a deep dive.

The transition to containerization was one of the greatest advances in technology I had ever experienced. After so many years of complexity growth, walls were breaking down. I felt a breath of fresh air and restored my faith towards my future in tech.

I needed to modernize my deployment strategy for a containerized workflow. Cloud services were all the rage. The nightmares of my past had resurfaced but this time every component has it’s own usage-based pricing calculator and bible for a user manual.

I just wanted a home for my projects.

I found RancherOS, a Docker-based OS where every process was a container managed by Docker. I was already psychologically all-in on containerization so a system that was containerized from the bottom up felt perfect.

Caddy v1 had recently been released and it had an API to modify the configuration. I wanted to use my infrastructure upgrade as an opportunity to transition to a more battle tested reverse proxy. Sadly, there was no support for reverse proxying into Docker containers.

I discovered Traefik, also v1 at the time. Traefik lacked the API configuration that excited me about Caddy but there were workarounds and the documentation had a clear example for reverse proxying into Docker containers. After a little experimentation I had everything up and running.

It wasn’t long before Traefik v2 was in alpha with breaking changes to the configuration file. I had just gotten out of a relationship where I felt like things were so close to what I wanted, but not quite. My deployment stack was triggering me. I could choose to respond or react. I decided to dust off my proxy I had stashed away and close the gaps for my use case.

I had long planned towards going indie. I’d build a following through my open source work before building products or services and reach a point where I’m earning some arbitrary amount — maybe $200/m, $500/m, or $1500/m, depending on the day I’m dreaming — then I’d leave my job to shift my focus to said hypothetical project. It’s wise. It’s safe.

I really did want to go that route but I was burning out. I had gone through over 10 years in my career without a single day break between university and employers, trying to keep up with every technology trend, and battling mental health issues. I needed to shake things up.

My thoughts began with the idea of taking a short vacation, stretched to a three month sabbatical or time off without pay, slipped into considering remote work, and followed by entertaining remote work at reduced hours.

The pent-up energy of persevering as long as I did erupted spectacularly. There was a moment where I realized that taking the enormous risk of dropping everything and going solo was greater than the risk of continuing with the status quo. In that moment, I knew.

I had rather suddenly left my job. Truth was revealed and I took action. I didn’t know what I was going to build but I was confident that I’d figure it out. Something would turn up if I continue to deliver value to others.

I wanted to build, deploy, observe, and iterate on multiple web applications. Many would fail as businesses, some would serve to diversify my income sources, and eventually I’d land on one or two that make some serious cash.

In my first week off of work, I became aware that RancherOS had silently died and so my personal infrastructure needed to be revisited.

Fuck me. I just wanted a home for my projects.

Again, I returned to exploring cloud offerings. Keeping costs low, reducing the amount of moving parts, and understanding what is going on behind the scenes were my priorities. “Use what you know” was the prevailing wisdom for solo founders. I had already built so much over the previous decade — I only needed to piece it together into something usable.

I had initially thought that I could use this as an opportunity to package my work up as my flagship open source project. I could build a following and gain trust while I build out some business ideas that have been sitting in my backlog.

My first commit was July 15, 2020. I was sleeping on the floor of my Vancouver apartment and most of my remaining possessions were packed. I thought I was moving to Taiwan in three weeks. This project was simply a means for hosting and iterating on others.

Searching for solutions to my problem over the years revealed that I wasn’t alone in the pursuit for an ideal platform for solo indie hackers with a thirst for creativity and exploration.

Then it hit me — I had a product literally at my fingertips.

Open source is altruistic, and in a perfect world I would have kept it that way, but I was burning through my life savings. I need — what — maybe $2000/m to live super comfortably in many parts of the world. Ballpark an ARPU of $20/m per user, I would need 100 active customers to sustain this lifestyle, or less if it only worked out as a means to slow my burn rate while I build out other products. I’m no one-hit wonder.

Even if this were to fall into the unfortunate demise of most startups — a failed business venture — it’s still something I want and will be using to build and ship my next products with, evolving as I grow as a maker. I’m in.

I had intended to release by the end of last year, before cycling around Taiwan, but every step forward unveiled a few more tasks that I wasn’t willing to compromise on. I saw it as an exercise in finding balance between art, science, and business.

I ran 11 months over my self-imposed deadline. Granted, I was also learning how to read, write, and speak Mandarin in that time. Class finished, I moved to Chiayi, and teased out the definition of my minimum viable product.

I feel I’ve built a compelling product for this niche. Timing was right. There existed the sweet spot of having enough pressure to motivate me but not so much as to break me. I was seeing new players in this space every month — but none with my vision.

I had always resonated with dogfooding. If you can’t trust your own product — why should anyone else? I bootstrapped acrobox.io from an instance of Acrobox running locally on my personal laptop. Now I’m seeing how it behaves in the real world first hand.

Sign ups are by referral only at the moment. Interested friends are welcome to try it out in exchange for honest feedback before I reach out for less biased feedback from indie hacker communities.

I’ll be iterating on my vision and augmenting it with customer feedback. I intend for the quality of my product along with a transparent and generous referral discount to be my primary means of marketing.

Acrobox is still in its infancy. My vision is so far ahead of where it is today. It pained me to draw the line for a minimum viable product but this is where I settled and I’m happy with where it’s at.