Plan sounds fine to me, debian + immich in docker + tailscale is pretty much the boring setup and boring is good for a box in a shed. one thing I’d do before carrying it out there, install tailscale and ssh, reboot it a couple of times and make sure it comes back on its own without a screen, because walking to the shed with a monitor gets old fast. also something like uptime kuma on another machine (or your NAS) pinging it, so you know it’s down before you’re on holiday and the photos stop uploading. I run a box at home I only reach over tailscale and that’s the part that saved me most.
- 3 Posts
- 32 Comments
ultimaluz@lemmy.worldto
Selfhosted@lemmy.world•Can you recommend me a free domain service?English
1·2 days agogood to know about the limit, thanks. for one domain plus DNS-01 that’s all most of us need anyway
ultimaluz@lemmy.worldto
Selfhosted@lemmy.world•Mysterious Loop Devices in Disk manager on plex serverEnglish
1·2 days agoyeah that sounds like exactly it, a snap that never worked still sitting there. “snap list” will show it, then
sudo snap remove <name>and you’re left with only the docker one, so whatever you open is the right one
ultimaluz@lemmy.worldOPto
Game Development@programming.dev•Devlog: my game streams itself on Twitch now, no streamer and the AI villain talks in chat. Some stuff that broke on the way
1·2 days agothanks! short answer is no, a reload doesn’t fix it. when the browser source comes up mute the page is actually fine, the audiocontext is running and even a test tone from the debugger never reaches the obs meters, so it’s obs, not the game. reloading or toggling “control audio via obs” didn’t help, only a full obs restart does. funny part is it fails on alternate starts, I measured 12 in a row and it was mute, sound, mute, sound. so the watchdog reads the meters for a few seconds and if the peak is under -60 dBFS it treats it like a black screen and restarts obs. and yeah the dwell idea is good, I’ll steal that
ultimaluz@lemmy.worldOPto
Selfhosted@lemmy.world•PSA: unattended-upgrades restarted nginx in the middle of my streamEnglish
1·2 days agospain, so CEST till tomorrow actually, the 13:45 UTC slot is 15:45 for me. 7:45 with people around sounds way nicer than my timer lol
on the fear part, in a healthy team the author still owns the change, the reviewer is a second pair of eyes not an insurance policy. what helped my people a lot was asking the author how they tested it and what happens if it goes wrong, if they can’t answer that’s your review comment right there. and if something breaks after you approved it, you fix it together and add a check so it doesn’t happen again, nobody serious blames the reviewer for that
ultimaluz@lemmy.worldto
Selfhosted@lemmy.world•Mysterious Loop Devices in Disk manager on plex serverEnglish
5·5 days agoThey don’t go away on their own, every installed snap is mounted as its own loop device and snapd keeps an older revision or two so it can roll back, so the number moves around after updates.
snap list --allshows which snaps they are, if one says disabled that’s the old revision and you can remove it withsudo snap remove <name> --revision=<rev>. about libation, if it’s installed as a snap itself that could be the actual problem, snaps are confined and can’t read folders outside your home or on other drives unless you connect the removable-media interface, so I’d check that before worrying about the loop devices.
ultimaluz@lemmy.worldto
Selfhosted@lemmy.world•Can you recommend me a free domain service?English
1·5 days agoGood to hear it’s been smooth, the caddy plugin was the main reason I looked at it in the first place.
ultimaluz@lemmy.worldto
Selfhosted@lemmy.world•Can you recommend me a free domain service?English
1·5 days agooh, didn’t know that, thanks for the heads up. deSEC still hosts dns for free if you bring your own domain I think, so a cheap one plus deSEC for the acme dns challenge still works, just not the free subdomain part
ultimaluz@lemmy.worldOPto
Selfhosted@lemmy.world•PSA: unattended-upgrades restarted nginx in the middle of my streamEnglish
1·5 days agothat’s actually a nice idea, updating with people around makes it way less of a chore, and someone always knows the weird fix. I’d probably steal it if I had more than one box to look after.
ultimaluz@lemmy.worldOPto
Selfhosted@lemmy.world•PSA: unattended-upgrades restarted nginx in the middle of my streamEnglish
1·5 days agosame here on the reboots, I never let it reboot on its own either. for me the reboot wasn’t the problem, it was needrestart bouncing nginx and postgres right after the upgrade, which you only notice if something long lived is running at that moment, like a stream lol
ultimaluz@lemmy.worldto
Web Development@programming.dev•Offline support and real-time sync keep turning out to be the same problem
1·6 days agoInteresting idea, but in my case it would feel worse I think, each paint costs a charge, so undoing both means two people lose a charge and nobody gets the cell. I don’t think it happens much at our size anyway, two people on the exact same cell inside half a second is pretty rare. last write wins is a bit unfair but it’s simple, and since every write is stored you can always see who painted what
ultimaluz@lemmy.worldOPto
Selfhosted@lemmy.world•PSA: unattended-upgrades restarted nginx in the middle of my streamEnglish
1·6 days ago512mb and getting killed every morning at the same time sounds like a fun one to track down lol. a fixed weekly slot like your tuesday evening is probably the sanest setup honestly, I just know I’d forget.
ultimaluz@lemmy.worldOPto
Selfhosted@lemmy.world•PSA: unattended-upgrades restarted nginx in the middle of my streamEnglish
2·6 days agoyeah exactly, no reboot, it was needrestart restarting nginx and postgres after the systemd update. you’re right that the timer is kind of the blunt fix, the cleaner one is probably telling needrestart to only list instead of restart ($nrconf{restart} = ‘l’ in needrestart.conf), or excluding nginx from it. I went with the timer because I still want things restarted, just not while I’m live
ultimaluz@lemmy.worldOPto
Selfhosted@lemmy.world•PSA: unattended-upgrades restarted nginx in the middle of my streamEnglish
1·6 days agoit’s a single cheap VPS that only I look after, so I’d rather get security patches the same day than remember to log in and do it, I guess that’s the tradeoff. and yeah you’re right about scheduling, that was the whole fix, the default timer runs around 6 UTC plus up to an hour of random delay and that happened to land on top of the stream. moved it to the afternoon and it’s been quiet since
ultimaluz@lemmy.worldto
Selfhosted@lemmy.world•Can you recommend me a free domain service?English
9·7 days agonobody said desec.io yet, it’s a non profit from berlin and they give free subdomains under dedyn.io, with a proper API, so you can do the DNS challenge for let’s encrypt (there’s a caddy plugin for it too). I haven’t run a domain there myself so can’t say how it is long term, but for a “try some things” domain it looks like the least shady of the free ones I guess.
ultimaluz@lemmy.worldto
Web Development@programming.dev•Offline support and real-time sync keep turning out to be the same problem
5·7 days agoSame conclusion here from the other side, I have a small multiplayer browser game where everyone paints cells on one shared grid (node, postgres, SSE), the client applies the paint right away and the server either confirms it or answers with a 409/429 and the client puts the old cell back. the rejection part is the one that took me longest honestly, a mutation that is valid locally but the server says no (out of charges, same color already there, world paused) and you need a different message for each, otherwise people think it’s lag. conflicts are just last write wins per cell, but that works because every write is a row in an append only events table, so nothing is really lost and you can replay or undo. and on reconnect I don’t try to merge anything, the client asks for the whole state again, at that size it’s cheaper than being clever.
ultimaluz@lemmy.worldto
Games@lemmy.world•Day 818 of posting a Daily Screenshot from the games I've been playingEnglish
2·9 days agoyeah thats the nice part, every app in its own box and if one breaks you just throw it away and start it again. for subdomains I ended up with caddy in front, it does the certs by itself so adding one is like 2 lines
ultimaluz@lemmy.worldto
Web Development@programming.dev•A 200 response can still be a loading screen: what do you check before calling it a rendering problem?
1·11 days agoFor me the evidence was the server logs, filtering by user agent. my main page is basically a canvas game, so the html has almost nothing for a crawler, and I was surprised to see googlebot not only rendering it but opening the SSE stream like a real player (I noticed because bots were showing up as online players lol). what actually got indexed were the plain server rendered pages I made for each thing worth sharing, with title, og image and json-ld, listed in the sitemap. so I didn’t change the app rendering, I just gave crawlers simpler pages to read.


I’d add that most of the time nobody actually measured anything. at work we inherit slow sites all the time and the first guess is always “the stack”, then you profile it and it’s one query running per item in a loop or something like that. I had the same with my own side project, was sure I needed a bigger server and after measuring the problem was somewhere else completely. measuring first is boring but it’s cheaper than any rewrite I guess