532 karma · joined June 12, 2020
And another huge benefit for my setup is the ability to use an HTTPS connection for the replication instead of SSH. My source and target servers are in different continents so there's pretty big latency. zrepl's HTTPS server manages to transfer data at ~890Mbps while SSH doesn't deal with the high latency as well and only manages ~190Mbps.
So far, AT&T Fiber is behaving the same here too. I might somehow just be lucky with ISPs :)
To allow Let's Encrypt to hit the DNS server, I run a public-facing dnsdist load balancer. It forwards the relevant TXT, CAA, DNSKEY, and NS queries to pdns and silently drops all other queries not required for ACME challenges.
I'd prefer that the internal hostnames wouldn't be leaked in the certificate transparency logs, but given that no services are exposed to the internet, it doesn't bother me enough to look for alternatives (eg. wildcard certs).
For things that "need" the performance (), I originally used a pair of Arista 7050TX's that I was kindly allowed to borrow from work. Unfortunately, these things were pulling 350W when idle and increased the temperature inside my rack by 15°F. They're also very significantly louder than a 2U Supermicro server. They're easily heard two rooms away due to the high-pitched fan noise.
Nowadays, for things that need a link faster than 1Gbps, I just use a direct connection so I don't need power hungry switches. I have my storage server connected to the main Aruba switch with 2x 10Gbps SFP+ DACs and then connected it to my desktop with 100Gbps fiber (Mellanox ConnectX-4). The storage server just uses plain old Linux bridges to behave like a switch. Actual performance without any tuning is less than half of the line speed, but that's good enough for me since the SSD's are the bottleneck for file transfer now.
For VLANs/subnets, I keep things relatively simple: 1 network for trusted things (no restrictions), 1 network for untrusted things (internet access only), 1 network for wireguard (access to trusted network only; no internet). Everything is dual-stack because I'm one of the crazy folks who love IPv6.
() "Need" because I hate slow file copies over SMB :)
1. Pictures are either manually copied to a staging folder on my storage server (for DSLRs) or automatically synced there via Syncthing (for smartphone cameras). For the latter, Syncthing is set up to preserve deleted files in case of accidental deletion.
2. The storage server runs zfs and takes 10-minutely snapshots of all datasets, which are replicated to 2 servers using zrepl: one sitting upstairs and another I rent from Hetzner halfway across the world. Replicated snapshots are kept for 2 years. Everything uses zfs' native encryption, but the replication targets do not have the key.
3. For the really important pictures and other documents, I create 2 additional backups: an encrypted backup to Backblaze B2 via rclone and burning them to M-DISC blu-rays. This is sort of a last ditch thing in case a zfs bug renders the primary backups unreadable.
* verify the checksums of everything installed
* find packages that no longer exist in any enabled repo
* find packages (not explicitly installed) that have no reverse dependencies
* find files no longer owned by any package
As a result, I haven't had too much trouble cleaning up things that might be left behind. My longest running install is going on 11 years now, having been migrated between computers and to/from a VM 8 times.
For Windows 10, I used to reinstall whenever explorer.exe would get stuck with a persistent bug where the metadata gatherer (eg. video thumbnails, mp3 ID3 tags, etc.) would take 10+ seconds per file and Explorer would freeze until it loaded the metadata for every file. I probably reinstalled 6 times before I got frustrated and threw explorer.exe in a debugger to find the cause. Turns out clearing a few registry keys fixes the problem: https://github.com/chenxiaolong/random-scripts/blob/master/c...
Nowadays, I reinstall Windows whenever my VR headset starts to drop frames for seemingly no reason (no Windows, SteamVR, or Nvidia driver updates).
Unfortunately, I don't think even this is supported. The Android app can't seem to act as a secondary device in any configuration.
As for the software I use to access the database:
* On Windows/Linux, I use KeePassXC with the corresponding browser extension. I also use the built-in SSH agent integration so I don't need to store my private keys in ~/.ssh nor manually type in their encryption passphrase.
On Windows, auto-type works great for the most part, except in ancient applications that only support scan-code-based input and not Unicode-based input (shakes fist at IPMI consoles of brand new servers that _still_ use ancient noVNC versions without support for Unicode input). I build KeePassXC from source to include a not-yet-merged patch for scan-code support.
* On Android, I use KeePassDX (open source). It integrates with Android's autofill API, but also has a keyboard for typing the username/password/TOTP code into apps that don't support autofill.
* Back when I still used iOS, I used Strongbox (open source, but does not accept contributions). It integrates with iOS' autofill API.
For syncing, I use SyncThingTray on Windows/Linux and SyncThingFork on Android. On iOS, I used to have Strongbox connect via sftp to my server running SyncThing because I could not find a decent SyncThing client. (I'm not even sure it's possible to implement on iOS without resorting to abusing location services for background execution, like iSH or most SSH clients.)
I stuck with that for years until fiber was available in my area since a threaten-to-cancel call got my TV price down to $0/month (on top of internet).
I use Veeam Agent for this purpose (free, but not open source). It can do full system backups and supports both restoring to the same hardware and new hardware. Restores are done via a bootable WinPE-based image that the tool creates.
One cool thing about it I haven't seen in other backup software is that incremental backups work via a driver that tracks which disk blocks are changed as the system is running. It avoids the need to rescan the disk to detect what has been changed (though it will still do that if the filesystem is modified outside of Windows, eg. if dual booting).
The biggest downside is Veeam's website. It's pretty "enterprisey" and they want you to register to be able to download. I install via the Chocolatey package manager to avoid this. Chocolatey's package source has a direct link to the official installer [0].
There are no ads, nagging, nor upselling in the software itself. I have not seen it making any network connections outside of connecting to my backup target host and the auto-updates server.
I've been looking for open source alternative with a similar feature set, but haven't had too much luck. There's Bacula, but that seems to very much be designed for an enterprise use case.
[0] https://github.com/sbaerlocher/chocolatey.veeam-agent/blob/m...
2. S3 suspend or at least a good S0ix implementation.
3. Good support for replacing UEFI Secure Boot keys.
4. No numpad so that the keyboard is centered.
5. Absolutely no coil whine. My Dell XPS 9560 had this since day 1, while my work MacBook Pro and Lenovo P1 developed it over time.
6. Biggest battery possible. I don't care about charging time or weight.
7. Good Linux support (including firmware updates via LVFS).
Another nasty one I encountered a couple years ago: After switching the build servers to using ramdisks, the app started breaking in subtle ways. Turns out there were two conflicting dependencies, but building on a server using ext4 and with the specific number of concurrent threads caused the "right" one to appear first the .jar's central directory.
Gotta add filesystem directory entry ordering to the list too.
accounts+wellsfargo@my.domain
but they accepted accounts+wellsfargosucks@my.domain
just fine. Seems like someone messed up the regex :)> No, it's when they port you over to a new splitter in your neighborhood's PFP cabinet seems to be what I'm following. Then you will be connected to a different OLT port at the CO(central office) that supports XGS-PON as well as standard GPON. > > Older Gateways will work on the newer OLT gear. But the 10Gbps XGS-PON will only work on the newer OLT ports. This newer port has an added management layer to support 10Gbps which needs authentication on top of the certs needed by both GPON and XGS-PON.
That's good to know. They already dragged their feet getting fiber available in my area (fiber laid 13 years before service was available). Hopefully they'll drag their feet with this "upgrade" too.
for each user in (get_freeipa_users | grep_attribute uid):
email = (get_freeipa_users | client_side_find user | grep_attribute email)
last_change = (get_freeipa_users | client_side_find user | grep_attribute krblastpwdchange)
expiration = (get_freeipa_users | client_side_find user | grep_attribute krbpasswordexpiration)
# Some slightly incorrect date math...
send_email
I changed it to a single LDAP query for every user that requests only the needed attributes. It cut that Jenkins job's runtime from 45 minutes to 0.2 seconds.Overwriting most core OS files (eg. shared libraries) in a persistent way, even with an exploit, would be difficult since the entire /system and /vendor volumes are signed using the device manufacturer's dm-verity keys.
However, with Android 10+ shipping with APEX modules [0], Google's ability to push core OS changes to existing devices might be changing. I'm not sure if any devices ship with the unflattened (ie. updatable) type of APEX modules yet, but I'd suspect these would be signed by Google instead of the device manufacturer and would be distributed through Google Play.