• 23 posts
  • 124 comments
Joined 3 years ago
Cake day: June 5th, 2023

All docker files look something like this

services:
  service_name:
    image: author/project:latest
    container_name: service_name
    volumes:
      - service_data:/app/data/

volumes:
  service_data:

Yes, this makes the data to persist, but it creates a directory with a random name inside /var/lib/docker/volumes/
This makes it really hard to actually have ownership of the data of the service (for example to create backups, or to migrate to another host)

Why is it standard practice to use this instead of having a directory mounted inside at the same level you have your docker-compose.yml?
Like this - ./service_data:/app/data

I have in mind two options:

  • Code in the class being saved/loaded. The flows for each entity/model are in the same place, so it’s easy to just have one file open to see all the functionalities of that class, but this means having more code in a single file.
  • Code in a dedicated class (like a factory)
    This makes each file smaller, but spreads flows of a single model into different parts of the repo, also because I’m thinking of having a directory /src/models and another like /src/export (or serialize)

What do you guys think?
What’s your preferred way to organize the save and load flows?

  • I’m assuming you mean updating every service, right?
    If you don’t need anything new from a service you can just stay on the version you use for as long as you like as long as your services are not public.
    You could just install tailscale and connect everything inside the tailnet.
    From there you’ll just need to update tailscale and probably your firewall, docker, and OS, or when any of the services you use receives a security update.

    I’ve lagged behind several versions of immich because I don’t have time to monitor the updates and handle the breaking changes, so I just use a version until I have free time.
    Then it’s just an afternoon of reading through the breaking changes, updating the docker file and config, and running docker compose pull && docker compose up -d.
    In theory there could be issues in here, that’s were your backups come into place, but I’ve never had any issues.

    The rest of the 20+ services I have are just running there, because I don’t need anything new from them. Or I can just mindlessly run the same compose commands to update them.

    There was only one or two times I had to actually go into some kind of emergency mode because a service suddenly broke and I had to spend a day or two figuring out what happened.

  • I’d say syncthing is not really a backup solution.
    If for some reason something happens to a file on one side, it’ll also happen to the file on the other side, so you’ll loose your “backup”.
    Plus, what ensures you your friend won’t be going around and snooping or making their own copies of your data.
    Use a proper backup software to send your data offsite (restic, borg, duplicati, etc) which will send it encrypted (use a password manager to set a strong and unique password for each backup)

    And follow the 3-2-1 rule MangoPenguin mentioned.
    Remember, this rule is just for data you can’t find anywhere else, so just your photos, your own generated files, databases of the services you self-host, stuff like that. If you really want you could make a backup of hard to find media, but if you already have a torrent file, then don’t go doing backup of that media.

  • What do you mean jellyfin uses the *are suite?
    I have Jellyfin with any media in different directories as long as I try to match the format the documents mention.
    So, as long as I can get the media in any way I can just put it in any directory and it’ll be added to the library.

    Is it similar with Odin? Or does it directly fetch the media from where you want to download it?

  • FreshRSS has been amazing, as you said, other readers have other goals in mind and seems RSS is just an add-on.

    On Android’s also there are no good clients, I’ve been using the PWA which is good enough.
    There are several extensions for mobile menu improvements, I have Smart Mobile Menu, Mobile Scroll Menu and Touch Control (it works great on Firefox, but not on brave, it’s too sensitive there, so YMMV).

    There’s also ReadingTime, but there are feeds which don’t send the whole body of the post, so you might only see a 1minute read because of that.


    The extension AutoTTL processes the feeds and makes them update only when it’s more likely for them to get new items instead of every X minutes configured by FreshRSS.
    Still there’s a problem when the MaxTTL happens, all feeds are allowed to be updated and you might hit some rate limits, so I developed a rate limiter. Still there’s a problem with AutoTTL because how extensions are loaded and with the http code reported by FreshRSS.


    I found this project which receive the emails of newsletters and turns them into a RSS feed, I’ve only used it for one feed and I’ve only received one entry, not sure if the newsletter is that bad or if the site struggles to receive/show them. Haven’t tried something it.
    https://github.com/leafac/kill-the-newsletter

    There’s also this repo linking a lot of sites with feeds, and some sites which don’t offer feeds directly are provided via feedburner (which seems it’s a Google service and wikipedia says "primarily for monetizing RSS feeds, primarily by inserting targeted advertisements into them", so use those at your own discretion) https://github.com/plenaryapp/awesome-rss-feeds

  • Maybe you could submit an issue to the repo to include a way to change the format of the saved folders.
    (I’m thinking something similar on how immich allows to change some formats)

    I’m seeing in my instance the names seem like some sort of timestamp, not sure if the code uses them in a meaningful way, so probably the solution would be to create symlinks with the name of the site or some other format while keeping the timestamp so the rest of the code can still expect it.

I’m having issue making a container running in the network of gluetun to access the host.

In theory there’s a variable for this: FIREWALL_OUTBOUND_SUBNETS
https://github.com/qdm12/gluetun-wiki/blob/main/setup/connect-a-lan-device-to-gluetun.md#access-your-lan-through-gluetun
When I include 172.16.0.0/12 I can ping the ip assigned with host-gateway but I can’t curl anything.

The command just stays like this until it timesout

# curl -vvv 172.17.0.1
*   Trying 172.17.0.1:80...

I also tried adding 100.64.0.0/10 to connect to tailscale but is the same response, can ping and timedout curl.

Any other request works properly connected via the VPN configured in gluetun

Do you guys have any idea what I might be missing?

  • Maybe FreshRSS with some extensions?
    I saw a recent commit to fire an event when saving a favorite, so probably you can get an extension to send the link to something like archivebox for the pages you favorite.

    I’ve just fiddled with an already created extension, but they seem fairly simple to create your own easily.
    Of course you can inject JS so you could make it more complex if you want.