this post was submitted on 18 Jun 2023
28 points (100.0% liked)

Self Hosted - Self-hosting your services.

11503 readers
1 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules

Important

Beginning of January 1st 2024 this rule WILL be enforced. Posts that are not tagged will be warned and if not fixed within 24h then removed!

Cross-posting

If you see a rule-breaker please DM the mods!

founded 3 years ago
MODERATORS
 

In the past few days, I've seen a number of people having trouble getting Lemmy set up on their own servers. That motivated me to create Lemmy-Easy-Deploy, a dead-simple solution to deploying Lemmy using Docker Compose under the hood.

To accommodate people new to Docker or self hosting, I've made it as simple as I possibly could. Edit the config file to specify your domain, then run the script. That's it! No manual configuration is needed. Your self hosted Lemmy instance will be up and running in about a minute or less. Everything is taken care of for you. Random passwords are created for Lemmy's microservices, and HTTPS is handled automatically by Caddy.

Updates are automatic too! Run the script again to detect and deploy updates to Lemmy automatically.

If you are an advanced user, plenty of config options are available. You can set this to compile Lemmy from source if you want, which is useful for trying out Release Candidate versions. You can also specify a Cloudflare API token, and if you do, HTTPS certificates will use the DNS challenge instead. This is helpful for Cloudflare proxy users, who can have issues with HTTPS certificates sometimes.

Try it out and let me know what you think!

https://github.com/ubergeek77/Lemmy-Easy-Deploy

top 15 comments
sorted by: hot top controversial new old
[–] [email protected] 2 points 1 year ago

Does docker need to be already installed on my local machine and my VPS?

[–] [email protected] 1 points 1 year ago (1 children)

Hi @ubergeek77 Thanks for this tool! It's great! Any possibility to integrate something like Mailgun for the email part? Would really be great to have this sending emails to users for account verification :)

[–] [email protected] 2 points 1 year ago (1 children)

You should be able to use the SMTP options in config.env to use Mailgun!

[–] [email protected] 1 points 1 year ago

Ah yes. I actually went ahead with Oracle Cloud. Seems to be included in the always free package and worked straight away. Thanks again for this script. Super!

[–] MarsAgainstVenus 1 points 1 year ago

What Cloudflare API am I supposed to use?

[–] carrmcg 1 points 1 year ago (1 children)

Hey man, thanks for putting this together. I'm trying to deploy this using UI and BE 0.18.4, but my BE container falls into a boot loop. Any insight on what I can try for this? https://imgur.com/a/Kv36gbB

[–] [email protected] 1 points 1 year ago (1 children)

Unfortunately, there is not a lot of information to go off of here. I was able to upgrade to 0.18.4 with no hitches, and I haven't seen similar reports of this.

Are you using any custom configs? Do the logs for just the Lemmy service show you anything of note?

docker compose -p lemmy-easy-deploy logs lemmy

In the past, Lemmy itself has had some strange edge cases causing crashes, such as an improper audit log value causing the entire audit log to fail. It's possible this is a similar case, in which case you may need to file a bug on Lemmy's tracker.

You are welcome to file an issue with some more information and logs, but if this is an issue caused by a bug in Lemmy, unfortunately I won't be able to fix it.

If you're still having issues, feel free to give me some more info on my tracker and I can take a look:

https://github.com/ubergeek77/Lemmy-Easy-Deploy/issues

[–] carrmcg 1 points 1 year ago

Thanks for the response! I probably won’t be able to look at this again until the weekend. That’s good to hear that you’ve had 0.18.4 working. I’ve been testing this out on Ubuntu server 22.04 in a Windows Hyper-V VM.

I’ll gather what I can and get back to you. Thanks again.

[–] [email protected] 1 points 1 year ago (1 children)

While it doesn't seem to account for ARM, it's definitely working for x64. Massive thanks for this, I've been having issues with both Kbin and Lemmy for what seems like a no reason.

[–] [email protected] 1 points 1 year ago* (last edited 1 year ago)

Yep, I see an issue on my repo related to ARM now. It looks like the Lemmy team doesn't push multiarch images to the same tag, and they also don't push ARM images consistently (last ARM image was for 0.17.3).

I'll add a check that forces compiling from source if the user is on ARM. This will greatly increase deploy time, but since an ARM image for 0.17.4 isn't available, it's the best I can do for the time being.

[–] Annoyed_Crabby 1 points 1 year ago

Hey, thank you for this, i was trying to get it up and running on my window machine following the instructions from join-lemmy site and couldn't get it work at all, but this one deploy in minute!

Anyway, since i'm just trying to mess with the setting i didn't get a domain for it, is there anyway setting i need to change so i can host it locally?

[–] [email protected] 1 points 1 year ago (1 children)

I tried to run your script on a proxmox Debian 12 lxc but i hit a few issues.. i already run a reverse proxy etc..

So.. what VPS would you recommend to run this on ? It will literally only be for myself to maintain my subscriptions and have a singular account...

[–] [email protected] 2 points 1 year ago* (last edited 1 year ago) (1 children)

Unfortunately, Lemmy Easy Deploy isn't well suited for running behind a reverse proxy. It is a complete "do everything for me," and I don't have a good way to support people running a webserver already. I've pushed an update a few minutes ago, so you can try playing with the ports and maybe turning off Caddy's TLS (so that certificates are managed by your webserver instead of the one in LED), but I'm sorry to say you're on your own in that case :(

Lemmy can basically run on a potato. Any VPS will do, but the main metric you'll want to keep track of is disk space. Any $5/month instance will be fine.

I am a moderate-to-heavy user of Lemmy, and I go through about 700MB of new data per day. If you federate with less communities than me, this may be less for you. At my current rate of storage, I can go for about a month and a half before I have to worry about storage space.

After that, I'm thinking about clearing my thumbnail cache, and seeing if Lemmy has some way to prune old data. I haven't been using Lemmy long enough to know what to do to clean things up, but if I figure out something clever in a month or two, I'll share what I learn.


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

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

[–] [email protected] 1 points 1 year ago (1 children)

I unretired an old racknerd vps and got it running on there.. works great!

Just need to now figure out how to move it to something that can actually cope with it lol..

Any ideas how to backup an instance and move it?

[–] [email protected] 1 points 1 year ago

Yes, you will want to copy the entirety of the Lemmy-Easy-Deploy folder recursively, including the live folder.

However, all important data is also stored in Docker volumes on the system. There isn't a great way to migrate Docker volumes between systems, but there are a few options. One I have not personally used, but seems to look good, is vackup:

https://github.com/BretFisher/docker-vackup

You'll want to run docker volume ls on your current system, and make sure that when you migrate them to the new system, all the volume names are exactly the same. Then, if you run deploy.sh -f, it should pick everything up and deploy.

Do note: if Docker Compose itself does not create the volume with the right tags, it will still work, but it will print some warnings to the console. Here is an issue discussing it and some potential hacks you can use to add the right tags:

https://github.com/docker/compose/issues/10087

Finally, if you need to re-create a volume on the new system with tags like the above issue mentions, you can try migrating data over between named volumes on the same system using this helpful oneliner (don't forget to change the volume names in all the places in this command):

https://www.commands.dev/workflows/rename_docker_volume

In short, it's a bit hacky, but it can be done.

Good luck!

load more comments
view more: next ›