eskuero

joined 3 years ago
[โ€“] eskuero@lemmy.fromshado.ws 1 points 4 months ago

I live in spain so the main ISP is well provided with IPv4 blocks and have zero incentive to deploy IPv6 outside of mobile networks. So the IPv6 deployment here is like 3% and I don't have access to it ๐Ÿซ 

[โ€“] eskuero@lemmy.fromshado.ws 1 points 4 months ago

arch linux btw

[โ€“] eskuero@lemmy.fromshado.ws 2 points 5 months ago

How? If you got hit by this you are looking at restoring the system from a safe previous version.

And the compromised versions get pulled, not superseeded by a new release, so once you rebuild you would go back to a safe version...

[โ€“] eskuero@lemmy.fromshado.ws 11 points 5 months ago (1 children)

As long as the bot is not allowed to automatically merge minor version bumps in libraries...

[โ€“] eskuero@lemmy.fromshado.ws 36 points 5 months ago* (last edited 5 months ago) (5 children)

You can mitigate similar attacks by editing your .npmrc

min-release-age=7 # days
ignore-scripts=true
[โ€“] eskuero@lemmy.fromshado.ws 1 points 6 months ago

Doesnt have a dashboard per-se for centralized administration. It has a web ui to manually create create/upload collections. I personally use it a very simplistic way and just reupload an updated .vcf file with all my contacts from time to time.

About user management, I dont know how you installed radicale but they have this docs https://radicale.org/v3.html#authentication

[โ€“] eskuero@lemmy.fromshado.ws 3 points 7 months ago* (last edited 7 months ago)

Yes I do. I cooked a small python script that runs at the end of every daily backup

import subprocess
import json
import os

# Output directory
OUTPUT_DIR = "/data/dockerimages"
try:
        os.mkdir(OUTPUT_DIR)
except:
        pass

# Grab all the docker images. Each line a json string defining the image
imagenes = subprocess.Popen(["docker", "images", "--format", "json"], stdout = subprocess.PIPE, stderr = subprocess.DEVNULL).communicate()[0].decode().split("\n")

for imagen in imagenes[:-1]:
        datos = json.loads(imagen)
        # ID of the image to save
        imageid = datos["ID"]
        # Compose the output name like this
        # ghcr.io-immich-app-immich-machine-learning:release:2026-01-28:3c42f025fb7c.tar
        outputname = f"{datos["Repository"]}:{datos["Tag"]}:{datos["CreatedAt"].split(" ")[0]}:{imageid}.tar".replace("/", "-")
        # If the file already exists just skip it
        if not os.path.isfile(f"{OUTPUT_DIR}/{outputname}"):
                print(f"Saving {outputname}...")
                subprocess.run(["docker", "save", imageid, "-o", f"{OUTPUT_DIR}/{outputname}"])
        else:
                print(f"Already exists {outputname}")
[โ€“] eskuero@lemmy.fromshado.ws 3 points 7 months ago

26 tho this include multi container services like immich or paperless who have 4 each.

 

So only one small question/wonder at the end but I guessed this might be useful written down experience for anyone who is planning to do the same.

I grabbed two 20TB Seagate Exos (ST20000NM002C) as Manufacturer Recertified for 260โ‚ฌ each (they are now listed at 290โ‚ฌ lol)

My plan was to use one in my homelab to replace the current 8TB one that was already at 60% capacity since I planned to give new family members access to it. And the other one would go to a NAS on a separate location to mirror the jellyfin media and backup the immich library.

They arrived quickly, well packaged, no apparent damage, no issues so far.

I plugged the first drive. SMART data showed 280 hours of power on and one "short offline selftest" at 232 hours without errors. I just accepted it was just probably reset by Seagate and I would never knew the true data.

So I sent it to run a extended test which claimed would take roughly 40 hours to finish. While it was running I formatted the new drive and periodically run a rsync of the data from the existing 8TB to advance the migration. The long test finished without reported issues so I was a bit relieved. I shutdown the services, run one more sync, replaced the mountpoint with the new drive and rebooted. Everything worked without hiccups.

I plugged the second drive on the same machine to locally do the first sync before moving it to the offsite nas. This one's SMART data showed 70 hours of power on. No tests logged. I started a extended test. This time it claims it would only take 26 hours. What? The drives are theoretically identical. Is this something hardcoded/configured differently on the firmware? Or is the drive just faster? For the first time I have the idea of running an quick benchmark.

# hdparm -t --direct /dev/disk/by-id/ata-ST20000NM002C-3X6103_******** /dev/disk/by-id/ata-ST20000NM002C-3X6103_********E /dev/disk/by-id/ata-ST8000VN002-2ZM188_********

/dev/disk/by-id/ata-ST20000NM002C-3X6103_********:
 Timing O_DIRECT disk reads: 786 MB in  3.01 seconds = 261.46 MB/sec

/dev/disk/by-id/ata-ST20000NM002C-3X6103_********:
 Timing O_DIRECT disk reads: 606 MB in  3.01 seconds = 201.34 MB/sec

/dev/disk/by-id/ata-ST8000VN002-2ZM188_********:
 Timing O_DIRECT disk reads: 620 MB in  3.01 seconds = 206.24 MB/sec

The first 20TB drive turns out the slowest of all at 201MB/s, slightly behind the already existing 8TB at 206MB/s, but insanely behind the second 20TB drive that's supposedly identical at 261MB/s

Wait I'm an idiot of course the first drive must be slower. It's actually mounted and might be in use. So I stop all the services that read from it. The benchmark stays consistent.

Only final difference I can control is the SATA port/cable the second drive is connected. Actually I don't expect an issue with any of them but the second TB drive is connected on an HDD bay builtin onto the case because I didn't want to bother removing the screws again just to temporarily put it on an internal tray. This bay doesn't provide a cooling fan so while the first 20TB drive and the existing 8TB one are stable at around 30 degrees the second one on the outside is hitting 45 degrees. Does running it warmer make it goes faster?

  • I shutdown the fan cooling the drives and let them warm to 40 degrees. The benchmark stays consistent.
  • I swap the position of the 20TB drives. The benchmark stays consistent.
  • I finish the sync to the second now clearly faster 20TB HDD and mount it to serve the services the data they hold. The benchmark stays consistent.

So my only educated guess now is that the second drive is faster because it was recertified with barely any usage hours (maybe lived as an spare?) and was kept with stock fw while the first one was recertified after already running for thousands of hours and they kneecapped the firmware to safer values to make sure it goes through the warranty period without dying.

They seem to be good drives so can't really complain. Could have been worse since apparently I got lucky and landed an unused one.

Or maybe the opposite and I'm lucky that I at least got a battle tested one that will run for years on safer speeds.

Or maybe I'm entirely unlucky because I got a coin toss of unused drive and one with so much usage that's it's slower not because of firmware limits but because it's running on fumes and will both die in two months.

Thanks for listening to my ted talk.

59
submitted 8 months ago* (last edited 8 months ago) by eskuero@lemmy.fromshado.ws to c/selfhosted@lemmy.world
 
  • A different device from your home server?
  • On the same home server as the services but directly on the host?
  • On the same home server as the services but inside some VM or container?

Do you configure it manually or do you use some helper/interface like WGEasy?

I have been personally using wgeasy but recently started locking down and hardening my containers and this node app running as root is kinda...

 

I'm talking not only about trusting the distribution chain but about the situation where some services dont rebuild their images using updated bases if they dont have a new release.

So per example if the particular service latest tag was a year ago they keep distributing it with a year old alpine base...

[โ€“] eskuero@lemmy.fromshado.ws 8 points 9 months ago (1 children)

I run changedetection and monitor the samples .yml files projects usually host directly at their git repos

[โ€“] eskuero@lemmy.fromshado.ws 1 points 9 months ago

Bring back my computer as well

[โ€“] eskuero@lemmy.fromshado.ws 2 points 9 months ago (2 children)

people say go back in time to pick the correct lotto number

I say go back in time and sell my 8TB disk for 80 billion

view more: next โ€บ