Friendly warning for new users of #linkding. RTFM. This little gem is buried in the instructions: “Note that the command above will store the linkding SQLite database in the container, which means that deleting the container, for example when upgrading the installation, will also remove the database. For hosting an actual installation you usually want to store the database on the host system, rather than in the container. “ Meaning, if you just start using it out of the box, you’ll be really disappointed when you upgrade and lose all your data. AMHIK 🙂
Mentioning here how helpful the native Mac OS app Yate is for cleaning up FLAC tags. The “Mickey Hart” mix versions of Workingman’s were intermingled with the original album release and Yate was the right tool for the job to rename the album to Workingman’s Dead (Mickey Hart Mix). https://2manyrobots.com/yate/
Took me a little while to get this sorted out so I thought I’d document it here:
Music Assistant supports grouping speakers so, briefly put what you’re doing here is just creating a group with two HomePods, one playing the left channel, the other the right channel. Key here is configuring the individual HomePods to play left/right and then creating the group.
Details:
Under Music Assistant Settings, select the “players” icon (in this screenshot it has the red dot on it)
Select one of your HomePods and expand the “Audio” settings section. At the bottom you can select the channel:
Pick either the left or right, depending on your choice/location of the HomePod. Don’t forget to hit “Save” and then repeat this process for the other member of the stereo pair.
Once you’ve defined your HomePods as left/right, go back to the settings and select “Add Group Player”
From there it’s just a matter of select “Group Type” of “AirPlay” from the drop down and adding your two HomePods the group and give it a useful name like “Stereo Pair” this seems to be pretty reliably working though sometimes I have to restart the stream once or twice
It feels like magic to have no open ports on my router and still be able to access all of myself hosted services. Jotting down a few notes here on how I approached this.
First off, my primary server that I self-host all of my services on is always running a VPN so I don’t have tailscale running on that. Instead, I have tailscale running on raspberry pi that only runs nginx (to forward proxy requests to the internal server) and pi-hole.
The Nginx config has about a dozen host names so i use Nginx Proxy Manager running in a docker container on the Raspberry Pi to keep the host forwarding organized. I then setup hostnames on my DNS service (I’m grandfathered in to a free DynDNS account) to forward various hostnames like “music.Myselfhosteddomain.net” to the tailscale IP of my raspberry pi. I also have those same hostnames mapped to the internal IP of my raspberry pi using pi-holes DNS server so I don’t need to run tailscale when at home. This has proved to be a super elegant and easy to manage solution.
The only challenge was getting home assistant to do some forwarding magic which took me a while to sort out in Nginx Proxy Manager because I needed to add some custom fields, and there’s not a whole lot of documentation so posting here in case anyone runs into this issue. Note that I’m using hostnames for the port forwarding (e.g. “home.myselfhosteddomain.com” and not location based forwarding like “server.myselfhosteddomain.com/home_assistant”) so you may need to tackle this differently if doing the latter. I figure I can create limitless hostnames plus it makes managing/saving passwords in keychain a lot easier to just use a different host names for each service.
The other important step is to enable websockets support which you can do through the NPM interface:
I had created SSL certs for most of my hostnames prior to spinning up tailscale but no longer need them as I’m not accessing them through port 443 on the outside any longer so that should save me a little bit of maintenance overhead moving forward.
I spent some time writing personal automations on my iPhone to connect/disconnect from tailscale when I leave the house/connect to my car’s audio (I self host my music library and use play:sub when driving) but then later learned that under tailscale settings there’s a “VPN on Demand” section that may handle this better so I’m still fiddling with this.
Now to create some dashboards!
“The Christmas lights won’t turn on, better power cycle the server.” Filed under: Sentences Unfamiliar to Thoreau. #homeassistant
Hard to imagine how long finding this answer would have taken before perplexity.ai:
“I have an ecobee 3 lite and an aquastatic, 2 taco valve boiler– Can I use the ecobee to control one of the valves and my old thermostat for the other valve?”
A PSA/reminder to self: Linode makes it SUPER easy and fast to increase the size of your server with no downtime but when you want to scale it back down, you have to first resize your disk (down) and then resize the linode box which requires bringing it down completely.
A few weeks ago I worked with Claude.ai to generate some journaling prompts that were unique to me and my goals. It’s made for some great journaling this month so far.
Today’s prompt and response is one worth sharing as I think it’s something a lot of folks like me would benefit from thinking about and the responses, too, might be helpful for others. These are just the projects from the past month or so. I think this type of question might be a good one to think about at the end of each year though.
Which of my recent personal/self hosted technology projects truly enhanced my life versus just occupied time?
Swapping out my Hue white bulbs for colored bulbs and setting a more mellow early AM lighting scene for my 4:30AM wake ups has made being in my listening nook much nicer and more welcoming
Getting Moode Audio running on a Raspberry PI connected to the HiFI in my listening room has also made music discovery and listening during those early AM hours (and whenever else I can retreat to the room) much better.
Doing some room analysis and adding room correction EQ to my Moode Audio setup has reduced an annoying bass frequency range, makes listening at loud volumes way better.
Getting Home Assistant running on an Intel NUC, adding Zigbee and incorporating some energy monitoring plugs into my smart home has helped me identify where it might be possible to use resources more efficiently (running certain appliances while there’s sun as I discovered I have a lot of surplus solar on my battery-less system).
Creating a playlist in Overcast for my daily news podcasts (would love to be able to play the playlist from a shortcut but haven’t quite sorted that out).
The holy grail I’m chasing right now which I’m hopeful will really add some enhancement/enjoyment is a script that takes my Shaarli bookmarks and processes them in such a way through ChatGPT API to auto tag and summarize in the description as well as send the link to readwise if it’s an article. That’s my project for the next week or so, we’ll see.
I added this snippet which seemed to do the trick of only sharing WordPress posts categorized as “Status” up to Mastodon. The rest I’ll share manually
/**
* Enable sharing only for posts in the "Status" category.
*
* @param bool $is_enabled Whether the post is enabled for sharing.
* @param int $post_id The ID of the post being processed.
* @return bool Updated sharing eligibility.
*/
function enable_sharing_for_status_category( $is_enabled, $post_id ) {
// Ensure this is a valid post ID
if ( ! $post_id ) {
return false;
}
// Check if the post belongs to the "Status" category
if ( has_category( 'Status', $post_id ) ) {
return true; // Allow sharing
}
return false; // Block sharing
}
add_filter( 'share_on_mastodon_enabled', 'enable_sharing_for_status_category', 10, 2 );
Think I may have my WordPress to Mastodon filtering in place so that it only posts from a specific category and doesn’t spam my Mastodon account with all of my link and highlight saves. Fingers crossed!
Who profits from our constant state of dissatisfaction? The answer, of course, is painfully obvious. Every industry that sells a solution to a problem you […]
. The EU invokes a mechanism called the precautionary principle in cases where an innovation, such as GMOs, has not yet been sufficiently researched for […]
The real problem, in my mind, isn’t in the nature of this particular Venture-Capital operation. Because the whole raison-d’etre of Venture Capital is to make […]
Saved Links
RSS Error: A feed could not be found at `https://links.jimwillis.org/feed/atom?`; the status code is `404` and content-type is `text/html; charset=utf-8`