I’m trying to set up a Lemmy instance using Docker on Ubuntu. This is my first time interacting with the open source community, so apologies if this is a stupid question. I’m not familiar with any common knowledge that might be obvious for people who frequently install software from github.

Anyway, in the official Lemmy installation guide, it says to download the following two files from the Lemmy github:

https://raw.githubusercontent.com/LemmyNet/lemmy/main/docker/docker-compose.yml https://raw.githubusercontent.com/LemmyNet/lemmy/main/docker/lemmy.hjson

However when you look at lemmy.hjson, it has a comment that says “This is a minimal lemmy config for the dev / main branch. Do not use for a release / stable version.”

I’m a little confused because I would expect that the setup guide would want me to use the latest release version, not the dev version. Why is this not the case? If I’m not supposed to use the release version, then who is the release version intended for?

Anyways I tried looking for the latest release version branch, which appears to be 0.17, and I got confused again when I saw folders for “prod” and “federation” in the Docker folder. What’s the difference?

Anyways can someone please help me understand the branch/folder structure? If I just want to run a regular Lemmy server with the latest stable code, which files should I use? Thanks

  • BurningnnTree@lemmy.oneOP
    link
    fedilink
    English
    arrow-up
    1
    ·
    2 years ago

    I used Namecheap but I can switch to anything. I haven’t heard of Cloudflare. How would switching to it affect the setup process?

    • ubergeek77A
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 years ago

      I’m going to tweak my config to not require Cloudflare, then make a dead simple deploy script for everyone. I’ll link you when it’s done :)

    • ubergeek77A
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 years ago

      It doesn’t change much. I just have a dead-simple Caddy config that uses a Cloudflare API token to automate HTTPS certificate renewal. Much simpler than the nginx stuff they recommend.

      But since I use Caddy instead of Nginx, I can’t exactly give you my config if you wanted to use Nginx. The same thing I’m doing with Caddy can likely be done easily with Namecheap, but I’m too lazy to go and research that :p

      To answer your original question, their docs are a bit lacking, and their Docker stuff seems to change every single time they do a release. Their config is also broken, I don’t know how their lemmy.ml service functions with this config, but the docker-compose.yml they provide completely firewalls off federation, and pictrs can’t reach the internet to download thumbnails.

      If I have some time I might write up a guide to help the masses, but for now, maybe it will be a little easier if you use their stable files instead (still has the same issues I mentioned though):

      https://github.com/LemmyNet/lemmy/tree/0.17.4/docker/prod

      • BurningnnTree@lemmy.oneOP
        link
        fedilink
        English
        arrow-up
        1
        ·
        2 years ago

        Thanks for the info. Sounds like Docker isn’t the way to go unless I want to spend a lot of time troubleshooting issues. Have you tried the Ansible method? Is it any easier or more reliable than the Docker method?

        • ubergeek77A
          link
          fedilink
          English
          arrow-up
          1
          ·
          2 years ago

          Oh no, Docker is 100% the way to go for reliability. The Ansible script is a mess. It only works on Debian based systems (which I didn’t have previously), I couldn’t get email working, and I had a weird issue where I couldn’t sign up for my own instance.

          Granted, I didn’t even try to get email working on Docker because I don’t need it, but the Ansible build is much less maintainable for me. On Docker compose, I change 2 version numbers in the file to update and that’s it. For Ansible, I’m not sure how it would work, I guess I have to wait for the Ansible author to update the script first, so I would be reliant on them.