Skip Navigation
Jump
NuShell: a very nice shell I found today. What do you think?
  • Me too. I really like it and I break it out for a number of tasks but, suspending vim is far too ingrained in my muscle memory to switch to something that doesn't handle it.

    3
  • Jump
    Good local-only/local-first wifi thermostat?
  • It also knows when you're home based on the occupancy sensors. I'm also not worried with their data collection so, mine is also not blocked from internet access.

    1
  • Jump
    Replacing drive with a larger drive in zfs
  • I run my Truenas Scale with 5 mirror vdevs. This is sort of like raid 10 (I don't need the differences explained to me). This means that I get 50% of the raw storage as usable but, it means that to upgrade space, I only need to upgrade two drives at a time. It also means that replacing a failed drive is fast, much faster than replacing a drive from a raidz* vdev. As you move to Truenas, this is something to consider. Given that you're going to have 4 drives total, I don't think you'd be wasting any additional space as you shouldn't consider raidz safe (same problem as raid 5, high risk of second drive failure during rebuild) which leaves you at raidz2.

    1
  • Jump
    Looking for a Glove80-like keyboard with hot-swappable switches
  • You can build / pay someone to build a Dactyl manuform with hot swap sockets. It will look very different from the glove80 but the key positions can be similar with some parameter tuning. That being said, I'm unconvinced that any of the concave key wells will be correct for most people's hands and therefore, they should always be customized. My glove 80 feels like where I started with my manuform (the default parameters) while my current manuform feels much more natural.

    3
  • Jump
    [vendor] The Biggest and Baddest Build Yet from Wylderbuilds
  • I'm curious if you'd be willing to share the generator and qmk config. I've been wanting to rebuild my Dactyl with screens and a rotary controller + trackball on the right. I'm pretty set on building it myself as I've basically customized all of the parameters to better fit my hands and I'd likely need to print a bunch of cases to tune them for the modifications. That being said, I'd much rather just pay you to build it.

    2
  • Jump
    What do you use to document your home lab?
  • I use logseq to record any manual steps as well as any administrative actions that I take on a service. That being said, all of my homelan infrastructure is codified and stored in git in various ways so, it can be recreated as needed. There are very few manual steps in reconfiguring any of my services.

    2
  • Jump
    anytype — decentralized, p2p, e2ee 'Notion' like app
  • I'm not seeing where it needs aws. It does need an s3 API compatable object store but there are a number of them that are self-hostable. I might have missed it in my brief reading of it.

    2
  • Jump
    Lemmy, Traefik, & Docker
  • This is my ingressroute for lemmy:

    
    apiVersion: traefik.containo.us/v1alpha1
    kind: IngressRoute
    metadata:
      name: lemmy
    spec:
      entryPoints:
        - web
      routes:
        - kind: Rule
          match: Host(`threads.ruin.io`) && PathPrefix(`/api/`)
          services:
            - kind: Service
              name: lemmy
              passHostHeader: true
              port: 80
        - kind: Rule
          match: Host(`threads.ruin.io`) && PathPrefix(`/pictrs/`)
          services:
            - kind: Service
              name: lemmy
              passHostHeader: true
              port: 80
        - kind: Rule
          match: Host(`threads.ruin.io`) && PathPrefix(`/feeds/`)
          services:
            - kind: Service
              name: lemmy
              passHostHeader: true
              port: 80
        - kind: Rule
          match: Host(`threads.ruin.io`) && PathPrefix(`/nodeinfo/`)
          services:
            - kind: Service
              name: lemmy
              passHostHeader: true
              port: 80
        - kind: Rule
          match: Host(`threads.ruin.io`) && PathPrefix(`/.well-known/`)
          services:
            - kind: Service
              name: lemmy
              passHostHeader: true
              port: 80
        - kind: Rule
          match: Host(`threads.ruin.io`) && Method(`POST`, `PUT`, `DELETE`, `PATCH`, `CONNECT`)
          services:
            - kind: Service
              name: lemmy
              passHostHeader: true
              port: 80
        - kind: Rule
          match: Host(`threads.ruin.io`) && HeadersRegexp(`Accept`, `application\/(?:activity|ld)\+json`)
          services:
            - kind: Service
              name: lemmy
              passHostHeader: true
              port: 80
        - kind: Rule
          match: Host(`threads.ruin.io`)
          services:
            - kind: Service
              name: lemmy-ui
              passHostHeader: true
              port: 80
    

    It seems to work correctly. Given that you’re not using kubernetes, you’ll need to do some translation work.

    5
  • Jump
    What are your most used selfhosted services?
  • There are multiple ways to evaluate usage. I’ll go with what I would guess is your desired measurement, things that I use intentionally (as opposed to things like dns, which just happen incidentally to other things or automation based things which are continuously running but not necessarily interacted with):

    1. Mastodon
    2. An app I’ve written to collect personal data
    3. Jellyfin
    4. Lemmy
    5. Bitwarden (I pay to self-host as opposed to vaultwarden as the latter probably won’t have a security audit)
    6. Freshrss
    7. Linkding
    8. Gitea
    9. Archivebox
    10. Mailcow
    5