Blog

  • Jellyfin Docker Compose is Brilliant

    After the little snafu of DuckDuckGo’s Assist box showing non-official directions, I tried the Docker Compose install and, with just a little set up.

    My docker-compose.yml here. Most of the changes are commenting out the user, running it as root, and hiding the environment configuration for now.

    Also note using the Plex media folder for everything, which is not the best idea. Here permissions wasn’t an issue, running as root, but probably should move things around and have this properly organized. For now though, everything gets dumped in there.

    So far, using Jellyfin as a music streamer with a specific client, Finamp, works great.

    services:
      jellyfin:
        image: jellyfin/jellyfin
        container_name: jellyfin
        # user: plex:plex
        ports:
          - 8096:8096/tcp
          - 7359:7359/udp
        volumes:
          - ./config:/config
          - ./cache:/cache
          - type: bind
            source: /var/lib/plexmediaserver/Library/audio/
            target: /media
          # Optional - extra fonts to be used during transcoding with subtitle burn-in
        restart: 'unless-stopped'
        # Optional - alternative address used for autodiscovery
        # environment:
          # - JELLYFIN_PublishedServerUrl=http://example.com
        # Optional - may be necessary for docker healthcheck to pass if running in host network mode
        extra_hosts:
          - 'host.docker.internal:host-gateway'

    Updated and Retried on 25.04 11/04/25

  • Potential F3800 API Options

    Following up on the F3800, otherwise quite good dual voltage standalone home backup but sans API, there are attempts at connecting to the unit. The standout is GitHub thomluther’s builds for Solix products but these are mainly balcony units outside the US. https://github.com/thomluther/ha-anker-solix

    Second there is an attempt at connecting via the Bluetooth local connection but, when I tried it, it didn’t easily connect and my bit registers seemed to be different so any updates by Anker might completely wreck the IO. https://github.com/tiger2380/anker_f3800_web

    For the first, the issue is the F3800 (plus or non I am guessing) doesn’t create a System (as defined in Anker’s config) so the endpoints are not available. That said, once connected to WiFi the unit can be managed from any location, not just on the same network, so the unit has cloud management but the endpoints aren’t clear. The second API option, tapping right into the local Bluetooth, would be ideal but relying on reading bit output has any number of issues.

    There are Ecoflow HA options and it would be interesting just to see what the potential is there.

  • Search Assist Boxes don’t pull from official docs?

    Search Assist Boxes don’t pull from official docs?

    Going to install Jellyfin and for, whatever reason, the main suggestion isn’t the official instructions. Why exactly?

  • Ubuntu 25.10 Remote Desktop Auto-Setup

    Warning: Potentially Unsecure Scripts Below

    Following up on a previous post trying to get the x11-less Ubuntu 25.10 set up with GUI management it looks like it’s possible to get Remote Desktop working. (Spice, unfortunately, has not been updated much in a long time and the install command seems to not work.)

    This doesn’t work fully yet, still running into keychain issues, but it’s close. On Reddit, user LarkinZero has a script that resets the password on boot. (Below.) Now, this is a keychain change which doesn’t unlock on boot. Trying another script from jdonohoo on GitHub almost works but still getting an error, auto-login on or off.

    With both scripts there are potential security issues such as having a password in plaintext and auto keyring unlocking (besides it still not working fully.) Will keep following up on this.

    Now I will say, this does seem to unlock via just a couple CLI commands so this might be good enough. Will revisit soon.

    Remote Credentials Update.

    #!/bin/bash
    
    SCHEMA="org.gnome.RemoteDesktop.RdpCredentials"
    LABEL="GNOME Remote Desktop RDP credentials"
    USERNAME="abc"
    PASSWORD="123456"
    EXPECTED_VALUE="{'username': <'$USERNAME'>, 'password': <'$PASSWORD'>}"
    
    echo "Step 1: Clearing old credentials..."
    secret-tool clear xdg:schema "$SCHEMA"
    
    echo "Step 2: Storing new credentials..."
    echo -n "$EXPECTED_VALUE" | secret-tool store --label="$LABEL" xdg:schema "$SCHEMA"
    
    echo "Step 3: Verifying stored credentials..."
    RESULT=$(secret-tool lookup xdg:schema "$SCHEMA")
    
    if [ "$RESULT" == "$EXPECTED_VALUE" ]; then
        echo "Success: Stored credentials match the expected value."
        exit 0
    else
        echo "Error: Stored credentials do not match the expected value."
        exit 1
    fi

    Keyring unlock script.

    ```
    sudo apt-get install -y gnome-keyring libsecret-tools dbus-x11 vim
    ```
    
    1. Place your unlock script here:
    ```
    vim ~/.config/unlock-keyring.sh
    ```
    ```
    #!/bin/bash
    
    export DISPLAY=:0
    export XDG_RUNTIME_DIR=/run/user/$(id -u)
    
    password=$(<"$HOME/.keyring_pass")
    /usr/bin/gnome-keyring-daemon --unlock <<< "$password"
    ```
    
    ```
    chmod +x ~/.config/unlock-keyring.sh
    ```
    2. Create keyring password file
    ```
    vim ~/.keyring_pass
    ```
    ```
    chmod 600 ~/.keyring_pass
    ```
    
    3. Create the systemd unit:
    
    ```
    vim ~/.config/systemd/user/unlock-keyring.service
    ```
    
    ```
    [Unit]
    Description=Unlock GNOME Keyring
    After=graphical-session.target
    
    [Service]
    Type=oneshot
    ExecStart=%h/.config/unlock-keyring.sh
    RemainAfterExit=true
    Environment=DISPLAY=:0
    Environment=XDG_RUNTIME_DIR=/run/user/%U
    
    [Install]
    WantedBy=default.target
    ```
    
    4. Enable the service:
    ```
    systemctl --user daemon-reload
    systemctl --user enable unlock-keyring.service
    ```
    5. Ditch login keyring to make new one on next boot
    ```
    rm ~/.local/share/keyrings/login.keyring
    ```
    Set login passphrase to same as default / what you have in ~/.keyring_pass
    
    Optional test:
    
    ```
    systemctl --user start unlock-keyring.service
    ```

    Updated and Retried on 25.10 10/30/25

  • No x11 in Ubuntu 25.10 means no (easy) VNC

    No x11 in Ubuntu 25.10 means no (easy) VNC

    While my 2-3 local Ubuntu servers are mostly managed via SSH CLI, it is helpful to have visual access particularly for programs that need mouse interaction. With Ubuntu 25.10, Canonical is moving away from x11 (for a variety of reasons.)

    Now Ubuntu can use the RDP (Remote Desktop Protocol) but the password rotates on reboot which, makes things difficult.

    Maybe Spice would work?

    (To be followed up on.)

    Updated and Retried on 25.10 10/29/25

  • Python starting place

    Python has been around for 34 years and is a great language for both high level app building and quick scripts. I’ve started a few projects using it but haven’t published anything. For a starting place I went to the beginners guide at https://www.python.org/about/gettingstarted/ but the recommendations are a very broad list where I was hoping there would be a few sample prompts to start building a project with. Coming up with a a few of those sounds like a good starting place:

    1. EV or Battery Calculator.
    2. API for… (APIs are always great starting projects.) Maybe a simple ask and response.
    3. Wonder what kind of game could be build. Maybe Python backend, JS frontend of some kind.

    Here we go.