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!
As someone who spent hours figuring out how to deploy through Ansible, how dare you /s But seriously thank you for putting in the work to make creating an instance more attainable for people.
What was difficult about ansible? The 4 step instructions worked perfectly for me.
Literally been thinking about this so thank you beautiful brained individual. Would you mind if I shouted this in the YSK group?
Thank you very much for the kind words!
Please be my guest! It would make me happy to know this was helping people join Lemmy!
Really awesome work. We need more Lemmy servers!
seriously, distributing the load helps a LOT. Though if you can’t spin up your own instance one thing you can do is try and host pictures externally, in !youshouldknow[email protected] a post mentioned how to do it for images in comments since by default it has you upload if you don’t manually put in
![image](link)
Can you point to the post ? Didn’t found it
Been pounding my head against the desk for the last TWO DAYS trying to get everything to work. Then you came along and solved all of my problems and it only took me 10 minutes to set up (mostly due to waiting on DNS to flush!)
THANK YOU SO MUCH for creating this, and PLEASE continue to maintain! I will gib coffees if need be along the way!!
You kind Sir/Lady/Gentleperson are making the fediverse a better place with this help. Thanks a bunch, gonna definitely ease my attempts at eventually self-hosting!
The check
$LEMMY_HOSTNAME == http*
will give a false positive if (for whatever reason) the domain name starts with httpThanks! Fix pushed.
I will definitely try this out. I already have my domain and SSL certificate. This will work on linode right?
It will work on pretty much anything that has a public IP and a domain pointing to that IP. The only thing that won’t work “out of the box” for most users is email, as most VPS providers block port 25. If you’ve requested access to port 25 and have been approved to use it, you can edit
config.env
to turn on the email service.As for your SSL certificate, unfortunately this does not support importing your own certificate. It’s made for beginners, after all :p
But there should be no problems with Caddy simply requesting a new one for you!
I think I have successfully got the server running on my linode.
I’m glad to hear that! Thanks for letting me know, it’s nice to hear people were able to use my script to get up and running :)
Once I got it up and running, I had to figure out how to get my domain to redirect to it. Now I just gave to figure out how to start federating with other instances.
If your instance is fully reachable from the public, all you have to do is search for the community you want to federate with in your search bar. For example, if you wanted to federate with and subscribe to this community, put this in your search bar, then hit search:
https://lemmy.world/c/selfhosted
It works for kbin communities too!
You might see some people say to search it like
!selfhosted@lemmy.world
, but I have way more success with doing it like that. After you’ve done that, you can click onCommunities
at the top of your instance’s page, click theAll
tab, then start subscribing with some of them.It will only start pulling “new” data though, you won’t get days or week old posts like this. But, if there is something you want to see/comment on from your instance, you can put the direct link to any post, comment, or user into your instance’s search bar, to make it “aware” of that post/comment/user. Then you can just interact like normal.
Welcome to the self-hosted Fediverse!
Email is vital to lemmy working. Saying this works without mail config is just silly.
I’m not sure what you mean? Most people are just self hosting instances for themselves, where email isn’t needed. My instance doesn’t have an email service.
And as I explained, if email is something you want, I support this, and I give you an easy option to turn it on. It’s not the default because there is not a public VPS host out there that lets you use port 25 without special approval.
Email config is needed for lost passwords. It’s also needed for account verification, if you run without verification you could easily become a place for people to abuse other servers and get yourself defederated.
Many web hosts have poisoned mail IPs, so setting up with a smtp config to a well known site server is required if you want your emails to be delivered.
And that is why I don’t advertise this as supporting email out of the box, and why it’s an advanced option without any support from me. The embedded postfix server is part of the official Docker Compose deployment from upstream Lemmy, and it’s part of the officially supported Ansible deployment too. Those deployment methods are what this is modeled after. That is as far as I go on email support. If upstream Lemmy started including some automatic AWS SNS configuration, I would adopt it, but they have not done so.
Everyone who has reported success to me so far are running single user instances for themselves. That is my target audience, and for that audience (and myself), email is not even close to being a hard requirement.
However, if you would like to improve this script by adding support for more robust and secure email systems, I would be happy if you submitted a PR to do just that :)
Don’t lose your passwords and leave closed registration so only people you actually want on your instance are on it. You absolutely do not need email.
You can’t have the checkbox for federation and private, the server will crash and tell you that in the lemmy log. Had that happen when I did thy to setup without email the first time.
I’m relatively competent installing server software, but the Lemmy instructions completely flummoxed me. Their docker instructions just don’t work.
I ended up using the ansible docker scripts and filling out the blanks because I’m unfamiliar with ansible.
If this is as good as it sounds, you’re doing everyone a massive favour.
deleted by creator
After trying to do it with docker or ansible manually for hours and failing, this was soo helpful. So thank you.
I just made a post about having issues with getting a fully functional instance so I think I’m gonna give this a try.
I hope it works out for you!
Quick note: For email, pretty much every VPS provider out there blocks port 25, which is needed for emails to send. They do this to prevent spam emails from being sent en-masse from their servers. This is likely why your Ansible installation is not sending emails.
Since it’s uncommon for servers to support email, this script disables it by default. If your provider supports port 25 (or you get approved to use it, some VPS providers allow you to request access), check
config.env
and setUSE_EMAIL
totrue
. This will set up everything you need for email.I haven’t been able to test email, so let me know how it works if you do! This doesn’t do any of the DNS verification some email provders require, so your emails might be sent to spam. Lemmy doesn’t really have documentation about how to set this up properly. If someone makes guidelines for this, I can update my project to do that automatically as well.
Will try this tomorrow. Tried them all. Nothing seems to work! I have been at it the whole week trying.
Thanks, this looks really nice. Bookmarked :)
Wow, I’ll definitely look into this, thanks! Even if I don’t use it, it still may be useful just reading through it.
based
Do I understand it correctly that this script only works if it can set up it’s own Caddy, and if I already run nginx to reverse proxy stuff on my server, then this isn’t for me?
You can try changing the ports in
docker-compose.yml.template
. I just use Caddy in this because its HTTPS convenience is hard to beat!Thanks!