Should I host my own instance if I don't intend to run a community?
Should I host my own instance if I don't intend to run a community?
I think it's a matter of personal preference.
I've been running my own Mastodon instance for several months now, and I've enjoyed it. I don't have to rely on someone else, either, which is nice. I'm in control of everything on that instance.
As for Lemmy, I just started my own instance today, and am currently writing you from it. What made me decide to setup my own instance was some performance issues I was seeing with Lemmy.world, although that might have been an UI problem. Anyway, I enjoy doing this stuff, so I'm running my own instance for the sake of doing it.
On the flip side, it's more expensive and time consuming, and I'm the one who has to worry about backing up data, etc. Like I said, though, I enjoy doing it, so it's no big deal.
What might make you want to ditch your self-hosted Mastodon instance?
With Lemmy, I didn't feel a need to pick any specific instance because I can follow communities from anywhere, and it seems to work pretty well.
One downside I've encountered with my own Lemmy instance is that post and comment history in the communities I follow begins when I started following them on my new instance. New posts and comments are federated my way, going forward, but I don't have the ability to go back and view as much history as one would on lemmy.world or lemmy.ml, for example.
I didn't have this problem with Mastodon, but totally had it with Pixelfed. I don't think Pixelfed, at least at that time, supported relays. I scraped around pixelfed.social to find people to follow because I had an account there. It didn't seem possible at the time to see profiles on public servers, without having an account, so it was hard finding people. It was something I was used to do doing on Mastodon. In the end, I didn't have a positive experience running my own Pixelfed instance, and just decided to use pixelfed.social.
I do follow the developer and he's been making a lot of great progress. I've got the mobile app, and it's quite decent.
Basically just the hastle of maintaining and hosting it. My ideal situation would be an instance with a few people, where we can share some of the burden, and perhaps cost. But maybe that has its own headaches when there is a falling out etc.
There are also other drawbacks with your own Mastodon instance in terms of discovering new people, as a lot of those tools are geared towards the server scope, and Mastodon prohibits a full index search.
I actually don't know what the Lemmy policy is on indexing, but a way to search the entire Fediverse (or at least large parts of it) would help tremendously in popularizing it, I think. I understand why indexing would be blocked, but that seems a lot like security by obscurity to me, which I don't think works very well.
Basically just the hastle of maintaining and hosting it. My ideal situation would be an instance with a few people, where we can share some of the burden, and perhaps cost. But maybe that has its own headaches when there is a falling out etc.
All very good points. I wouldn't mind sharing the costs and burden with some folks, but I'm pretty happy just maintaining it myself. Again, for me, it's something I enjoy doing.
There are also other drawbacks with your own Mastodon instance in terms of discovering new people, as a lot of those tools are geared towards the server scope, and Mastodon prohibits a full index search.
I never really had that problem, but then I started out on other Mastodon instances and just migrated my account around until I ended up on my own personal instance. I also participate in several relays, which helps a lot. In the end, I've also spent time looking at the public feeds on other servers and browsing their profiles to find people. Another thing I did was participate in conversations, which was a good way to get mutual followers.
With that being said, I don't follow a ton of people either. I read my entire timeline, chronologically, so I keep it pretty tailored. I disable boosts and mute/unfollow people often.
I actually don’t know what the Lemmy policy is on indexing, but a way to search the entire Fediverse (or at least large parts of it) would help tremendously in popularizing it, I think. I understand why indexing would be blocked, but that seems a lot like security by obscurity to me, which I don’t think works very well.
Lemmy indexing everything on the server, as far as I know, which means local content and content federated to it.
That's awesome! Running my own social media instances has become a hobby for me.
Having my own Lemmy instance has felt fairly seamless versus using Lemmy.world, but there have been some kinks. For example, when attempting to subscribe to a new community, the server has to pull a bunch of data first. This takes several seconds, but the UI simply says "not found" -- and then after several seconds, the UI updates with the community you want to follow. I figured this out by tailing the logs.
Also, the installation was pretty damn easy, especially when compared to Mastodon.
Yeah, if you've got a decent amount of Linux experience, I don't think you'll have any issues. Mastodon's installation is well-documented and works. My only criticism is that it's a bit long and you have to be careful not to miss anything.
On the other hand, I recall installing Pixelfed back several months ago and having a difficult time. The documentation was lacking, and it required me to use Arch Linux, which I had never used. I was able to get it working, but eventually terminated the instance after a while because I was never using it.
LOL
It wasn't bad -- I just wasn't familiar with it.
That's awesome. This was several months ago when there was a link to some specific Arch Linux documentation that @[email protected] mentioned was the most complete. Sounds like it's been cleaned up.
Yeah, I think it is a PHP app.
As someone that has spent the better part of the week mucking with it.... the kbin build docs have multiple gaps in the documentation and are functionally broken unless you have some better understanding of the setup. I WAS able to get the system built, but could never get it online. Best i got was 500 errors where the UI was up but there was a break somewhere in Redis, Postgres, Nginx etc. All the logs were clean though.
Lemmy was much easier to setup using the ansible method. I have an instance online. Though im still working out the federation thing and some other kinks. There are some gaps but it seems much more mature. For example you cant mark your instance private AND have federation enabled. If you do that and restart the instance will fail to come up, but theres no warning or error in the UI.
I like the kbin dev better as people. But the lemmy code is definately more polished, even if the devs are turd sammiches.
Yeah. I like the kbin dev as a person much better. And I can empathize with what he is going through. Its why i wanted to setup an instance and help spread the load. But I just couldnt get it working and didnt have the time to really dig in (I have a lot going on otherwise with work).
He did announce he is onboarding a sysadmin/netadmin to handle the stability and scaling issues so he can focus on commits which is good. Ill keep an eye out for updates and maybe migrate then.
On the flip side, it's more expensive
Can you go into more detail on this?
Sure.
I run my own instance at a cloud provider, and thus have monthly expenses I wouldn't normally incur, if I were using a public instance.
Yes, there is electricity.
I think Internet connectivity could also be an issue, unless you have an ISP that's friendly to you running a publicly accessible server on your Internet connection at home.
Could you run a local server on your desktop that you only turn on whenever as a client? I don't really understand the Fediverse's architecture yet, but as far as I saw instances being down are not a big problem beyond not being able to log in if it's your home instance, and communities fracturing to separate discussions in other instances' local federation caches that only get resynced when the thing comes back up.
What prevents me from running my own instance as a very heavy client?
I've wondered that myself, and I don't know, to be honest, but there are some issues you'd certainly encounter. For example, if you posted any media it would need to be somewhere "always on" or remote instances and users might not be able to see it unless they managed to cache it on time. It means that your posts URL wouldn't be accessible, and such would only be available on servers to which it has already federated. There may be other issues, too, such as queues only keeping undelivered messages for so long, etc.
I'm sure someone with a good understanding of ActivityPub could explain whether or not this is possible.
You're talking about Lemmy, right?
I provisioned an Ubuntu 22.02 server at Linode. I chose their 2 GB Shared CPU instance type. Once I configured the server to my liking, I ran through the Lemmy-Ansible instructions. (They have other methods, so check the documentation.)
Essentially, you install Ansible on your workstation. I'm on macOS and installed it via Homebrew. You then download their git repository, create the necessary configuration files, and then have Ansible configure the server. It was fairly simple.
mmm. thats debateable.
If theres vulnerabilities in the software, like RCE's or SQL Injections that can lead to access...Cloudflare wont do much for you. For example Kbin has already have PRs for SQL injections and even XSS vulns.
These will get flushed out with time and more people maintaining them of course. But I dont know if I would want that on my personal network even if on a DMZ. If for no other reason than if your instance starts spamming outbound traffic and you get flagged by your ISP.
Heck I had one of my domains flagged by my works Cisco Umbrella instance and the dang thing wasnt even in prod yet.
Wow, I had no idea.
Thanks for your input.
I have a lab at home and do host some stuff for myself from there in a small DMZ (ie: Miniflux RSS readers, Plex through Reverse proxy etc).
But I used a linode for my lemmy/kbin stuff. Reason being is that the code is fairly new and there may be exploits bugs and
I dont want to deal with my ISP made an instance is exploited and becomes some type of C2 box or spews out spam. Kbin specifically already has PRs to fix XSS and Sql injection stuff, the former of which is usually avoidable if you just follow some pretty basic principles. So its a concern.
Linode has better bandwidth than my non-symmetrical ISP uplink and is on its own quota.
I’ve run linodes for years. My blog runs on them. I still host a variety of other services on them. They are good for everything from gaming servers to a blog etc.
They did get bought out by akamai a while back. And have raised their prices but they are still solid.
Nanodes are awesome deals frankly.
Im currently on the 4GB dedicated. However heres an htop of it.
https://imgur.com/a/NpEsw4t
I am currently the only user. Im considering opening it up to limited users but not really having communities once i get a lot of the instances cached and indexable.
Others are running on a 2GB shared just fine. I will likely move to that if i choose to keep it solo for sure, or under 100 users and no communities.
I dont have the time to really moderate others or content on the instance. So i dont think I plan to host any communities at all. I do wish you could federate/sync specific communities to your instance to make searching/subscribing easier.
Yes the ansible config worked fine for me.
I have yet to get email working but otherwise its solid. Linode will block email btw if you account is new (and frankly may be blocking mine now). You just have to put in a case and justify and it should be fine. My account should be old enough to be exempt but I will likely do it anyhow. Their support is pretty good.
Getting federation crawled and communities added is a bit slow. Mostly because the other instances are a bit slow.
A few pointers if you havent done admin yet.
Put nothing in the federation allow list unless you want to go whitelist only. Over time as other instances hit yours and you search others, the linked list of instances will grow.
Searching for instances seems to be CPU heavy on mine. Its not a problem though. You just cant simply plug in a URL of a community in another instance if you havent linked. You will get a 404 if you do. So you have to go to search, looking for that community by hitting search a few times until it shows up, then you can join and it will start crawling
Yeah how familiar are you with linux?
You dont run the ansible stuff on the instance itself. You do it from your personal machine or something with ansible installed.
Though I guess in theory you could run it on itself.
But I am happy to walk you though the basics of setting up a securing the box.
that would be perfect.
WIth Debian I would install UFW for a firewall. Set SSH to whatever your home IP is. You can always use the Linode SSH console for external access.
UFW is easy to configure and just translates iptables.
sudo ufw allow from any to any port 80 proto tcp sudo ufw allow from any to any port 443 proto tcp sudo ufw allow from HOMEIP to any port 22 tcp
If you want leave SSH open. Then i would probably only do Key based auth in /etc/ssh/sshd_config
you also want to edit that file (sshd_config) to disable root access once setup. I often turn on the following
LoginGraceTime 2m
PermitRootLogin no
StrictModes yes
MaxAuthTries 6
MaxSessions 10
AllowGroups somegroupname
then create a user and a group and add the user to the group. This ensures only that user has SSH access.
sudo adduser someusername
sudo addgroup somegroupname
sudo usermod -aG somegroupname someusername
You can also use visudo to edit sudoers. The first like will require a password. If you use the second line, you can sudo without a password. I would only do the latter if you only use key-based auth though.
someuser ALL=(ALL:ALL) ALL
someuser ALL=(ALL) NOPASSWD: ALL
I also edit /etc/hostname to my server name. Update and reboot. From there run through ansible instructions and make edits as necessary.
I do wish you could federate/sync specific communities to your instance to make searching/subscribing easier.
You mean something that populates your server with a history of posts and comments to communities before your subscribe to them?
Correct. Connect to for example connect to lemmy.ml and pull their communities so it shows in your communities page locally. Dont have to sync the posts etc. Just the base stats (subs, post, comments. Basically exactly what this is doing. https://lemmyverse.net/communities
note: I hadnt seen that page until after my comment...
I'm using Linode, and their prices are publicly available.
https://www.linode.com/pricing/
For Mastodon, I'm using the Linode 4 GB while the Lemmy server runs on the Linode 2 GB option. Both are under the Shared CPU pricing -- not dedicated.
thanks for all of the information you've shared in this thread, i can see you already answered my question elsewhere.
i was put off by the cost and effort involved in maintaining a mastadon instance when i looked into that a while back, but i'm glad to hear that lemmy could be cheaper.