Skip Navigation

Hosting Lemmy in Azure—best approach

Hi—I have some free Azure credits and would like to use them to host a personal Lemmy instance. I know Lemmy is containerised, but is there a preferred choice for hosting in Azure—AKS, Azure Container Apps, Container Instances? Also, any guidance on appropriate PostgreSQL configuration—I know there are some options around that.

Also, can anyone point me at what resource utilisation will look like for a Lemmy instance—I imagine disk space is more of a concern that compute usage.

2
2 comments
  • I'm currently trying to get Lemmy working on Azure Container Apps and Azure Postgres Flexible Server. I've got it all deployed, but I'm having some issues with the reverse proxy.

    Regarding the 'best' choice - well it depends on what you mean by 'best'. AKS will be the most flexible and ACI will probably be the simplest (if it will even work for Lemmy - I haven't looked at ACI in years). Container Apps will probably be somewhere in the middle. Container Apps is just an abstraction over Kubernetes, so in theory you should get the scalability and flexibility of k8s without the overhead of managing a cluster.

    I got Lemmy up and running on my home Rapberry Pi microk8s cluster pretty easily, so it will work fine on AKS for sure.

    I'm looking at Container Apps just as a pet project because I've been waiting for a product like this for years. Kubernetes is awesome, but has always been too complicated for the average software developer to use. It needs a layer of abstraction and that's what Container Apps is. So anyways I figured running Lemmy on it would be a good way to test drive it.

    As I said though, I've run into some issues and am almost at the point where I was going to ask for help. If anyone's interested, I can post links to my Github repos with my Terraform code and all that.

  • Will you only be supporting yourself and maybe a small subset of users? If you don't need your instance to scale, you can (shameless self plug) try my deployment script to get yourself running.

    It just uses the recommended Postgres configuration as seen in the deployment files in Lemmy's official repo. It would just be in a Docker volume on disk, so if you had thoughts of scaling in the future, and wanted to use a managed Postgres service, I would not recommend using my script.

    I run an instance just for myself, CPU resources are so low that pretty much anything you can get in the cloud will be good. Disk space is a much more important factor. In terms of just Lemmy-created data, my personal 10-day instance has stored about 6.2GB of data. 2.4GB of this is just thumbnails. Note that this does not include other things that consume resources, such as my Docker images or my Docker build cache, which I clear manually.

    So, that is roughly 640MB of new data generated per day. Your experience will vary depending on how many communities you subscribe to, but that's a good rough estimate. Round it up to 700MB to have a safer estimate. But remember, this is with Lemmy's current rate of activity. If the amount of posts and comments doubles, triples in the future, my storage requirements will likely go up considerably.

    I am genuinely not sure what long-term Lemmy maintenance looks like in terms of releasing disk space. I can clear my thumbnail data and be fine, but I wonder what's going to happen with the postgres database. Is there some way to prune old data out of it to save space? Will my cloud storage costs become so unreasonable in a year, that I'll have to stop hosting Lemmy? These are the questions I don't have answers to yet.

    If there is something clever you can do to plan ahead and save yourself disk space costs in the future (like, are managed Postgres services cheaper to host than on disk ones?), I'd recommend doing that.


    EDIT: Turns out ~90% of my Lemmy data is just for debugging and not needed:

    https://github.com/LemmyNet/lemmy/issues/3103#issuecomment-1631643416