This week, I've been working on two things. Thing one is getting a development instance of the CloseBrace site working on my publically accessible server so that beta testing can begin, which requires getting my server ready to run Node, configuring Nginx to act as a proxy server for multiple node apps, getting a secure certificate and setting up HTTPS.
Thing two is determining whether I can rob a bank in order to hire a server admin who can do all that stuff for me.
Kidding, of course. I love not being imprisoned far too much to rob a bank. What I don't love is server administration. It's a necessary step, though, and like every other tech adventure I've had that has at times left me gnashing my teeth, I'll be happy to have learned everything once it's actually working!
It's interesting because each step has given me obstacles to overcome. Well, that's not entirely true; getting Node set up was pretty straightforward. But configuring Nginx took a lot of time, in part because I'd misconfigured it when setting up the blog, so I had to go back and rewrite that stuff. I also ended up having to do a bunch of DNS changes, which broke some things yesterday. HTTPS has proven a pain, but I've finally got that running the way I want it to.
The latest fun is that, sure, I can run a little Node app without problem. But a node app like Keystone that has a ton of dependencies? Well, npm install was running out of memory. So that required an upgrade of my DigitalOcean droplet to allow for more RAM, and I also had to set up a temporary swap file. I've now managed to install my node modules ... and of course, the app didnt' want to run due to a MongoDB error. So, I tracked that down, and now it's finally running, though there's still more to do before I can unleash my beta testers upon it.
This is the way it goes when you're running your own startup as a single employee! Yes, I could pursue help—I've even had a few people volunteer to work on the site—but part of the point of all of this is exactly what was behind my original node tutorials: I went through a lot of pain and annoyance figuring everything out, and wanted to hopefully spare others those issues. This is the same thing. Once I know how to do this stuff, I can show everyone else how to do it, hopefully with less difficulty than I'm experiencing myself!
So anyway, that's where I'm at. Hoping to fight through this today and get something up and running that I can then make available to beta testers. We'll see how it goes!