A long-time Lemming and the proud owner of r1b.it 🐸

  • 13 posts
  • 3 comments
Joined 15 days ago
Cake day: October 12th, 2026

Week number 2! Sorry, this is a big one…

Users!!

Only 2 weeks in, and r1b.it already has it’s first three local users (besides me, ofc)! This is an absolutely insane milestone, and I’m super pumped we’ve hit it so soon. Like I said in the last Weekly Croak, I didn’t expect to have any active users for the first few weeks, but we have 3 already?? Insane.

In particular, I just wanted to shout out @Trying2KnowMyself@lemmy.ml. They have been very active and have constantly maintained an positive, happy attitude – exactly the type of userbase I want to cultivate :) I’m super grateful that complete strangers are as pumped about my little instance as I am. It’s super validating, so I just wanted to publicly show my appreciation.

However, that’s not to say we shouldn’t keep growing ;) The best, most tight-knit communities grow almost exclusively by word of mouth. Like-minded individuals naturally interact with one another on the Fediverse, so normal conversation is the best way to build the type of userbase I want. So, if you have a r1b.it account, please use it! Even showing up in foreign threads here and there with the instance attached to your username does something (that’s actually how I found my old home instance). If you don’t have a r1b.it account or just prefer using a different instance, still post! That keeps the instance alive. What I have been doing is posting on r1b.it and then cross-posting to similar communities, which seems to work fairly well.

slrpnk.net is down :(

If you weren’t aware slrpnk.net – a very closely-related instance – is currently down due to hardware issues, and they say they likely won’t be back up until December/January. In the meantime, I’d be happy to house any interim communities or users until it gets back online. Just post a request in !croak@r1b.it, and I’ll be happy to make it for you! Once slrpnk comes back up, I can remove them if you so desire.

Federation issues… fixed?

As I said in this post, r1b.it has been struggling to federate content due to it’s small size. A handful of users just isn’t enough to maintain healthy links to every subscribed community. So, I have been working on a little script to automatically poke subscribed communities every so often, hopefully pulling any new posts from them.

However, while I said the issue was fixed, it wasn’t… I got a bit too overzealous and posted right after successfully running the script for the first time without waiting to see if it was a permanent solution. That’s entirely on me and is a lesson learned as a community administrator. I think I have gotten the script to a place where it works consistently, but again, I’ll just need some time to see. Once I solve the issue for good, I’m hoping there will be less friction for new users to join and consistently use their r1b.it accounts.

My statement on AI

Like I said above, we currently have 3 r1b.it user accounts, but I’ve gotten almost 6 total applications. The reason for the low acceptance rate is simple: AI content.

Two of the applications were for completely AI-driven users, which is absolutely insane to me. The Dead Internet Theory is quickly becoming the Dead Internet Reality. The other denied application was a user that boasted their use of AI, and said they could quickly churn out content to keep r1b.it alive. While, yes, active users are great, that misses the whole point. I don’t run this instance for the satisfaction of having a bigger number on the stats page; I run it as a service to people. It is a place to listen and to be heard. If I allow AI-generated content on my instance, living people won’t be impacted, and we’ll be speaking into the void.

On top of that, I just can’t justify the intense compute required to produce generated content. r1b.it is an instance dedicated to nature and actively supports conservation communities like slrpnk. Allowing AI-generated content that consumes immense quantities of power and water is a slap in the face to the very idea of this instance.

With all of that in mind, I am strictly banning all AI-generated content on r1b.it. If you suspect any, report it. Thank you for your help!

cross-posted from: https://r1b.it/post/12935

As I have browsed the Fediverse through r1b.it, I’ve noticed lots of missing content from remote communities. Some of that has to do with actual federation problems (which I have been in talks with other instance owners to fix), but most of it is a result of completely intentional behavior. Regardless of that, though, I feel as if missing content detracts from the r1b.it user experience. So, I decided to flex my programming muscles a bit and devised a solution.

For the more technically inclined bunch, you can keep reading to see how it works. For everyone else, you can just be happy to hear that you should now be getting all new content from your subscribed communities! If you have any further federation issues, please let me know. You can always @ me in !croak :)

The nerd stuff

Lemmy relies on an event-driven feed, meaning it doesn’t always automatically pull posts from remote servers unless someone is actively browsing or querying them. So, if a r1b.it user doesn’t actively interact with a community, the content won’t get pulled. If no new content is getting pulled, no one will interact with the community. To break this cycle, I’ve set up a lightweight Python script to automatically sync every subscribed community in the background. This script is set up as a cron job that runs every 6 hours.

This script first queries r1b.it’s local PostgreSQL database to gather a unique list of every remote community local users are subscribed to. For each community it finds, the script targets Lemmy’s resolve_object API endpoint using the community’s full actor URL to refresh its metadata and maintain connection health.

To keep this script from turning into a DDOS as r1b.it grows, it shuffles the community list to spread instances out and has a polite randomized pause between each request. Additionally, I plan to remove this script entirely if r1b.it ever gets big enough to federate itself naturally.

#!/usr/bin/env python3
import subprocess
import urllib.parse
import urllib.request
import time
import random

LOCAL_DOMAIN = "https://r1b.it/"
DB_CONTAINER = "REDACTED"
DB_USER = "REDACTED"
DB_NAME = "REDACTED"

SQL_QUERY = """
SELECT DISTINCT c.actor_id 
FROM community_follower cf
JOIN person p ON cf.person_id = p.id
JOIN community c ON cf.community_id = c.id
WHERE p.local = true 
  AND c.local = false;
"""

def get_subscriptions():
    cmd = [
        "docker", "exec", "-i", DB_CONTAINER,
        "psql", "-U", DB_USER, "-d", DB_NAME, "-t", "-A", "-c", SQL_QUERY
    ]
    try:
        res = subprocess.run(cmd, capture_output=True, text=True, check=True)
        return [line.strip() for line in res.stdout.splitlines() if line.strip()]
    except Exception:
        return []

def resolve_community(actor_id):
    encoded = urllib.parse.quote(actor_id, safe="")
    api_url = f"{LOCAL_DOMAIN}/api/v3/resolve_object?q={encoded}"
    req = urllib.request.Request(
        api_url, 
        headers={"Accept": "application/json", "User-Agent": "LemmyAutoSync/1.0"}
    )
    try:
        with urllib.request.urlopen(req, timeout=10) as resp:
            return resp.status
    except urllib.error.HTTPError as e:
        return e.code
    except Exception:
        return 500

def main():
    communities = get_subscriptions()
    if not communities:
        return

    print(f"Found {len(communities)} unique remote subscriptions")
    
    random.shuffle(communities)

    for actor_id in communities:
        status = resolve_community(actor_id)
        if status == 200:
            print(f"{actor_id} FEDERATED")
        elif status == 400:
            print(f"{actor_id} ALREADY FEDERATED")
        else:
            print(f"{actor_id} FAILED ({status)")
        
        # Polite randomized pause
        time.sleep(random.uniform(1, 5))

    print("Sync complete.")

if __name__ == "__main__":
    main()

As I have browsed the Fediverse through r1b.it, I’ve noticed lots of missing content from remote communities. Some of that has to do with actual federation problems (which I have been in talks with other instance owners to fix), but most of it is a result of completely intentional behavior. Regardless of that, though, I feel as if missing content detracts from the r1b.it user experience. So, I decided to flex my programming muscles a bit and devised a solution.

For the more technically inclined bunch, you can keep reading to see how it works. For everyone else, you can just be happy to hear that you should now be getting all new content from your subscribed communities! If you have any further federation issues, please let me know. You can always @ me in !croak :)

The nerd stuff

Lemmy relies on an event-driven feed, meaning it doesn’t always automatically pull posts from remote servers unless someone is actively browsing or querying them. So, if a r1b.it user doesn’t actively interact with a community, the content won’t get pulled. If no new content is getting pulled, no one will interact with the community. To break this cycle, I’ve set up a lightweight Python script to automatically sync every subscribed community in the background. This script is set up as a cron job that runs every 6 hours.

This script first queries r1b.it’s local PostgreSQL database to gather a unique list of every remote community local users are subscribed to. For each community it finds, the script targets Lemmy’s resolve_object API endpoint using the community’s full actor URL to refresh its metadata and maintain connection health.

To keep this script from turning into a DDOS as r1b.it grows, it shuffles the community list to spread instances out and has a polite randomized pause between each request. Additionally, I plan to remove this script entirely if r1b.it ever gets big enough to federate itself naturally.

#!/usr/bin/env python3
import subprocess
import urllib.parse
import urllib.request
import time
import random

LOCAL_DOMAIN = "https://r1b.it/"
DB_CONTAINER = "REDACTED"
DB_USER = "REDACTED"
DB_NAME = "REDACTED"

SQL_QUERY = """
SELECT DISTINCT c.actor_id 
FROM community_follower cf
JOIN person p ON cf.person_id = p.id
JOIN community c ON cf.community_id = c.id
WHERE p.local = true 
  AND c.local = false;
"""

def get_subscriptions():
    cmd = [
        "docker", "exec", "-i", DB_CONTAINER,
        "psql", "-U", DB_USER, "-d", DB_NAME, "-t", "-A", "-c", SQL_QUERY
    ]
    try:
        res = subprocess.run(cmd, capture_output=True, text=True, check=True)
        return [line.strip() for line in res.stdout.splitlines() if line.strip()]
    except Exception:
        return []

def resolve_community(actor_id):
    encoded = urllib.parse.quote(actor_id, safe="")
    api_url = f"{LOCAL_DOMAIN}/api/v3/resolve_object?q={encoded}"
    req = urllib.request.Request(
        api_url, 
        headers={"Accept": "application/json", "User-Agent": "LemmyAutoSync/1.0"}
    )
    try:
        with urllib.request.urlopen(req, timeout=10) as resp:
            return resp.status
    except urllib.error.HTTPError as e:
        return e.code
    except Exception:
        return 500

def main():
    communities = get_subscriptions()
    if not communities:
        return

    print(f"Found {len(communities)} unique remote subscriptions")
    
    random.shuffle(communities)

    for actor_id in communities:
        status = resolve_community(actor_id)
        if status == 200:
            print(f"{actor_id} FEDERATED")
        elif status == 400:
            print(f"{actor_id} ALREADY FEDERATED")
        else:
            print(f"{actor_id} FAILED ({status)")
        
        # Polite randomized pause
        time.sleep(random.uniform(1, 5))

    print("Sync complete.")

if __name__ == "__main__":
    main()

The first Weekly Croak! I know it won’t be the one-week mark until tomorrow, but I want to post these on Saturdays, lol.

Thank you all!

It’s only been one week since I created r1b.it, but I’m already amazed by the amount of support I’ve gotten. I may not have any applicants to join the instance yet, but there are almost 150 total subscribers across our three communities! I was expecting to be talking to ghosts for at least the first couple weeks, but it seems like I have a notification every single time I check. My numbers may be small, but the fact that they’re already above 0 is super fulfilling. I’m already starting to recognize a few familiar faces ;)

Amenities, amenities, amenities

I originally just wanted to dip my toes into running an instance. As such, my current setup is all very cheap and “ad-hoc” because I wanted to make it easy to tear down and undo if I decided it wasn’t for me. I’ve decided that it most definitely is, so I want to begin investing into upgrading my current setup, optimizing and configuring instance settings, and proving additional amenities to you all. I’m not quite sure what that will look like, which is why I’m coming to you for support. Perhaps it could just be a Matrix server? Maybe a wiki? A game server like Minecraft or Terraria? Maybe even static hosting with custom subdomains! It could be pretty cool to make a Single Sign-On “suite” of r1b.it services later down the line.

Though, regardless of what we land on, I want it to be for you, so please give me suggestions for what you might want to see. I want to hear your ideas, even if you’re not a r1b.it user yourself. I don’t even care how feasible it is, lol. Big or small, fully fleshed out or just the tip, I wanna hear it.

On to week 2!

Once again, I just want to say thanks for the support. I’m super motivated to keep going and provide as much as I can to you all. Hopefully that motivation will only keep the snowball rolling and grow it into something even bigger. This has been a fantasic week, and I can’t wait to see what the next few hold :)

Is it just up-front cost? I understand that for larger instances because they’d have to setup heftier systems, but even micro-instances seem to rent cloud compute when they could probably get by with port-forwarding to an old laptop.

Edit: I understand that self-hosting is a skill that takes years to learn, and I’m aware that the vast majority of people on Earth choose to spend their time and energy investing into completely different topics. However, Lemmy tends to attract the techy type, so I suppose I just assumed the ratio of self-hosters-to-not would be higher. I’m not saying it’s trivial, just that I presume more Lemmings know how to do it than, say, Redditors (taking total users into account ofc)

I think r1b.it is beginning to carve it’s niche in all things nature and non-fluffy animals. That kinda works out given the name and theme, lol.

Anyway, this niche is certainly… niche, but it isn’t completely untapped on the Fediverse. As such, I’m looking for communities that overlap with !herps@r1b.it, !marine@r1b.it, or even the r1b.it instance as a whole so I can link them in their respective sidebars.

I don’t believe in consolidating users into individual communities. I think supporting similar communities helps decentralize the Fediverse, which is kinda the whole point, right? I don’t want to dominate any particular field; I want to share it. So please, help me find things to link :)

I feel as if Lemmings can be very politically polarizing. Definitely less so now than a few years ago, but I still see it from time to time. How does that effect the macro-community’s general perception of the military? I looked and only found one community on any instance, and it was fairly small and inactive.

With mander.xyz being down for the past couple months, a huge gap has been left in the Fediverse for herpetology enthusiasts, reptile keepers, and field herpers.

To help reconnect our community, I’ve launched !herps@r1b.it, a quiet, nature-focused space dedicated to cold-blooded creatures of all kinds!

Whether you’re looking to share field observations, show off bioactive enclosures, post photos of native frogs and snakes, or discuss care advice, you’re very welcome here.

⚠️ IMPORTANT! If/when mander comes back online, I fully encourage you all to go back to it – it’s an absolutely wonderful instance. I’d love it if some people used both, but I don’t expect everyone to.

I imagine most (if not all) of my traffic will be from foreign instances, and probably for a good while, too. So, to those just stopping by, how are ya? And if you’re willing to hang out a bit longer, what do you think the Fediverse is missing? There’s a lot of nature and animal stuff on r1b.it now, but that’s just what I like. What about you? What are your untapped interests?

Hello and welcome! My name is Sam, and if you couldn’t tell, I love frogs. I’ve been a Lemmy user for many years (my home instance is feddit.org 😉), but I’ve always wanted to host an instance of my own. That desire is finally coming to fruition.

I don’t have much of a plan for r1b.it beyond building a little online community; I kinda want that to be up to you guys! My hope is that r1b.it will naturally carve itself a niche as the userbase grows, but we’ll just have to see. Perhaps the most attractive part about my instance is that it is ran as a collective. I may have the admin and moderation power, but my users are the ones that guide it. It may be “my” instance, but I run it as a service to you all.

If you have a community idea and no place for it to call home, I’d be happy to host it on r1b.it! If you’re looking for that sense of digital comradery, you won’t find a closer bunch of Lemmites than r1b.it. Even if you just want a super short domain name attached to your user and nothing else, r1b.it is the instance for you!

When you apply, tell me a little bit about yourself. I’d love to get to know you! :)