Where and how to run Hugo + Go-Jamming?

I am planning to moved from Wordpress to Hugo for static site generation and Go-jamming to handle IndieWeb stuff. I’ve tested running Hugo on my local machine and it is straightforward enough, but I’m not sure how/where I should use it with Reclaim hosting for two reasons:

  1. I want to retain the ability to work on and post to my site from anywhere

  2. I believe Go-jamming needs to be running all the time on the server side to catch and send all the things it needs to

I am guessing this is a job for Reclaim Cloud? If so, what base configuration should I be considering (I confess that, despite building and testing multiple Docker containers or whatever they are called, I don’t really understand them)?

I’ve done some more reading, and it looks like Hugo is designed to work well with Github, so that should solve the access anywhere problem. But I remain unsure where to start with getting the Go-jamming service running. Do I start with a VPS or a Docker image or something else to get the base OS and system to run these?

You do indeed have a lot of options for hugo depending on how you want to manage things. I use hugo for https://jadin.me, and I actually have a GitHub repository I use to update the site, then I have a script on my account on Shared hosting that will pull changes from GitHub, then runs hugo to build the site. The advantage being I can update my site from any device that has access to github as hugo is actually running on the server. At some point I should document this setup in case it is useful to anyone else.

For Go-jamming, based on their Install page I do think you will be best off running this on a VPS on Reclaim Cloud given that you’ll have to set up a Service to keep it running. It looks like it’s going to require an NGINX proxy but doesn’t give a ton of detail on how you would do that outside of the example config, so as a shortcut you could use a Load balancer in front of a VPS.

I’d make an environment like this:

  • Turn on the built-in SSL
  • Add an NGINX Load balancer and give it an IP
  • As your application server, click More then choose Elastic VPS and use Ubuntu (it’s likely most any application server would work, but this will give you the benefit of being able to follow their instructions pretty directly, while also not having to deal with setting up NGINX reverse proxy stuff, and Let’s Encrypt certs from scratch)

I don’t have any experience with Go-jamming itself, but I think that will be a good start. An alternative option would be to just deploy a VPS with no load balancer or anything like that, then look up instructions on how you would set that up inside the VPS, but I think my above suggestion will likely save you some time.

This is great, thank you. It must be a sign that even this old man can learn that I had come to creating that exact setup (with a little fiddling as to whether to “unminimize” the Ubuntu install or not…docs implied that was useful if people were going to be logging in to the server itself, and I assume people includes myself)!

It would be awesome if you could document your setup at some point. I plan to use Github as well.

2 Likes

I will hopefully get around to that soon! For now, here’s the repo for my site:

Basically, I downloaded the hugo binary, added that to the path in my user account, and made this little build script:

OK, so I am trying your suggested environment config now and have a few questions:

  1. I’m inferring from the instructions that my web files are deployed from the load balancer?

  2. Assuming #1 is correct, then I further assume that I should point my domain’s DNS records to that IP?

  3. And does this mean that the only function of the Application server will be to run the Go-Jamming service?

1 Like

The load balancer is simply a route and will push all traffic through the attached IP to the Hugo environment. So the files should run in the VPS or whatever environment you have beneather the load balancer. That said, you will point the A record to the IP attached to the load balancer, which means no need for a separate IP 4v on the VPS/Hugo environment. That said, @taylorjadin may have more to add here given he knows Hugo much better.

Yes that would be the route I would go. Go-jamming won’t run on shared hosting, so run that on the cloud, but you could definitely host a hugo site on Shared Hosting. Because Hugo is making just a static HTML site, it can be served from almost anywhere.

The load balancer is acting as a reverse proxy to make sure your site loads over HTTPS, basically the Ubuntu application will make the all of the files, then hand them off to the Load Balancer to serve up. The load balancer does this by listening on port 443 for HTTPS, then talking to your Ubuntu application server on port 80. It’s sort of bridging the gap here.

Once you map an IP to the load balancer, you will probably also want to use the Let’s Encrypt addon on the Load balancer to make sure it gets a cert for HTTPS to work.

Ah, I see. For some reason I read your suggestion as using either the load balancer or the VPS to also serve the site itself!