1. 18
  1. 4

    GoBlog in and of itself would’ve been a more interesting submission, IMO. Looks like it supports ActivityPub, neat!

    1. 1

      Yes, it does! ActivityPub was kinda hard to implement and debug due to all the signing stuff.

    2. 2

      This was at 0 points, but without a hide or a flag? How is that possible on lobsters, as there is no downvoting?

      1. 1

        Stories receive an implicit upvote from the submitter; they may have clicked the arrow again to remove the upvote.

        1. 2

          Nope, that didn’t happen. Someone probably doesn’t like my submission. 🤷‍♂️

      2. 2

        I also use tailscale and had a similar setup with nomad: https://blog.markpash.me/posts/tailscale-nomad-job/

        But since then there have been some more developer-focused additions to tailscale in the form of tsnet. Which can be used to create a listening tailscale socket in your Go app. https://pkg.go.dev/tailscale.com/tsnet

        I wrote a basic TCP proxy with it to expose containerised applications to my tailnet, though the drawback is that in order to make outbound connections from your app/service to your tailnet, you need to run their daemon to enable the SOCKS proxy. This is where the OP’s solution works better. If only tailscale provided official container images so that we aren’t beholden to a third party repo, which I find has been unstable in the past.

        My TCP proxy that I use as a sidecar: https://github.com/markpash/tailscale-sidecar

        A simple example app that uses tsnet to listen directly on your tailnet: https://github.com/tailscale/tailscale/blob/v1.14.3/tsnet/example/tshello/tshello.go

        1. 2

          Thanks for the links!

          1. 2

            No problem :) Your blogs are a great example of how one might actually integrate their software/systems with their product. Perhaps these posts will result in more priority to developer-focused product features on their side. It definitely helps that the client source code is open and importable.

          2. 1

            Just looked at your sidecar project. It’s basically the same as running the Tailscale daemon but without the possibility for outgoing connections. But that might be a feature, because I might want to publish a service to the Tailscale network, but don’t want it to be able to access nodes on the network itself.

          3. 1

            Let’s read it before it gets removed

            1. 1

              Theoretically interesting, but I need to know more about GoBlog—what’s the data store? SQLite? Flat files? PG/MySQL? are content pages dynamic or static? apparently it has a CMS, what’s up with that? what’s the story around asset management?—and neither the blog nor the repo list this information anywhere. I don’t want to have to read the code to figure out how all this is supposed to work.

              1. 2

                You’re right, I need to write more documentation. But here are my simple answers:

                • SQLite
                • Dynamic pages with caching in memory
                • Assets / media files can be uploaded via the editor to local storage, FTP or BunnyCDN (via FTP), Media files can also automatically optimized using Tinify, ShortPixel or Cloudflare. After uploading you get a link you can use in posts.

                After all it’s just the software behind my blogs / homepage / diary and I want to publish it, so others can use it too. I’ll create more documentation to make that easier.