Nextcloud Dangling in the Works

Good Morning from my Robotics Lab! This is Shadow_8472, with a stubborn-project update. Let’s get started!

Nextcloud as a project comes with a lot of strings and hooks. Every time I sit down to work on it, the feature creep closes in: multiple volumes for speed and capacity, MariaDB container so SQLite doesn’t choke serving clients, a pod for MariaDB to live in alongside Nextcloud, Redis for RAM caching (Out of my scope, but worth a mention), Ansible Vault for password management (automation tool I’d need a month to learn), podman secrets, Philomena image board software – not to mention the volumes I learned about the other week! As noted in previously, the container I’m using from docker.io can take care of itself, but it will work a lot better with even a few of these things.

In my ideal configuration, all my containers’ persistent data lives on GoldenOakLibry so my old, red laptop can take over on critical Podman containers when ButtonMash is booted to Debian for photo scanning duty. The big, hanging question then is if GoldenOakLibry’s internal HDD’s absolutely need to spin up to serve shares hosted on NAS volumes mounted from an external SSD.

HDD: Hard Disk Drive
NAS: Network Attached Storage
SSD: Solid State Drive

My initial tests involved verifying that a drive could be mounted externally, then rebooting the NAS. I was expecting either a 1 or a 50 second wait, but instead I kept hitting “Stale file handle” errors when I tried mounting the external share. My second round of trials a week or two later exhausted search pages worth of results to learn how NFS shares change a few invisible details when restarted. Either something wasn’t ready when needed during boot, or my client just needs a while to refresh those details. It works in the long run, and external shares are not dependent on internal disk spinup. Time to move on.

Having solved the last known problem, I started layering the bits I had solved while frustrated with the USB share. I prepared three Podman volumes: two for Nextcloud prioritizing high-capacity and speed, respectively, and one for an SQL database. A pod housing MariaDB (the SQL database) and Nextcloud containers mounts these volumes (!). Podman secrets safely injects the database password so MariaDB and Nextcloud can work together – not strictly necessary for my application, but a good habit to get in in case I go in the direction of creating images from existing containers. Once the cloud is running, I want to try adding an image board to view the pictures.

(!) NFS –as it turns out– does not appreciate a number of the acrobatics rootless Podman performs with Namespaces. I don’t have the specifics memorized, but when Podman makes a container, the host’s user ID is mapped to root within that container. Podman then assigns variations of the host’s user ID to non-root users within the container as defined by a namespace. The NFS protocol wasn’t designed with namespaces in mind. To NFS, it looks like you’re trying to access another user’s files – possibly without permission. While this reportedly doesn’t stop rootless Podman from working well over NFS over normal circumstances, there are a bunch of search results talking about the snag when working with container images over NFS. Based off my experiences for this post, the same appears to hold true for volumes.

Takeaway

As much as I wanted this to be the last installment, this issue is a post in and of itself, and I’m getting burned out again over trying to come back to it. I’ll try coming back to this in around a month or so.

Final Question

Have you successfully used Podman volumes over NFS? Please, do tell me all about it in the comments below or on my Socials.

My Homelab Report, 2023

Good Morning from my Robotics Lab! This is Shadow_8472 with a snapshot of my different computers as of mid-March, 2023. Let’s get started!

I have felt a need for a page detailing my so-called “homelab” detailing the computers and other equipment I personally maintain. I didn’t finish any big projects this week, so here’s a first draft of that page. It’s listed in roughly the order I took ownership/responsibility for each piece. I’ve tried to gather each computer’s base model/modified configuration plus a list of its presently bootable operating systems. Warning: unexplained technobabble ahead.

Red Laptop

Dell Inspiron N7110
1 TB SSD

Debian 11

As the oldest operational computer in my fleet, this laptop has been with me for almost 12 years, though most every part was replaced while it was under extended warranty. Shortly after I started this blog, I installed Debian 10 on a USB external drive. I nuked its Windows drive one week by formatting the wrong disk, and later replaced it with a 1 TB SSD, cloned Debian inside, and it served as a get-me-online machine until the screen bezel cracked, threatening to shatter the screen the next time I’m not careful. It’s now serving as a backup home server, and it’s desktop environment has proven vital to rebounding from at least one network emergency since.

Upstairs Workstation

Custom Build

Intel Core i7-3770K (3.50GHz)
NVIDIA GeForce GTX 970 (rev a1)
24 GB RAM (2×8+2×4)

Windows 10
Manjaro
EndeavourOS (WIP)

“Upstairs Workstation” also predates when I started naming my computers. I got it for university when laptop turned up as bit underpowered. I went from Windows 7 to Windows 10 with this machine, narrowly avoiding an online tech support scam (10 didn’t support a Wi-Fi cart I was using at the time and later finished burning out when I put it back in after switching to Linux).

Derpy Chips

Custom Build
Intel Core i7-2600K (3.40GHz)
16 GB RAM

PopOS

Derpy was named for its tendency to give power kernel errors during its first service life until its retirement. When I adopted it, I gave it a new hard drive and inadverantly diagnosed the one lowballed part: its 2 TB HDD. I’ve also had issues with a stick of RAM from it, but I’ve had it running smoothly for a few years now as a secondary workstation.

ButtonMash

Dell Optiplex 7010
16 GB RAM
1×60 GB SSD
1×1 TB SSD (external)

Debian 11
Rocky 8

ButtonMash has been my main x86 experiment machine as well as my home server. I bought it from a church member who was upgrading his dental office computers. I My was host to my first Linux install: Ubuntu, but I’ve put it through a parade of distros including MicroCore (where I learned the command line), MineOS, Debian (originally from “red laptop”), and finally Rocky. Today, it serves as my primary home server, where I am setting up several Podman containers including Vaultwarden, PiHole, Nextcloud, and Minetest – each on a separate account for further isolation.

If and when we need to scan pictures, ButtonMash is dual booted with an external SSD I originally used with my Red Laptop.

GoldenOakLibry

Synology NAS

4x7TB HDD RAID 5 share
1 TB SSD share (external)

GoldenOakLibry is our home NAS intended for picture scanning. If nothing else, it’s exposed me to using a computer that’s meant to do nothing but serve files. I have a long way to go before I master it.

Raspberry Pi’s

1xRpi3B+
2xRpi4B
1xRpi400

My collection of super-flexible Raspberry Pi computers has served me well. At the moment, the Pi 4’s are serving as OpenWRT router firmware configured as Wi-Fi-to-Ethernet adapters for my upstairs workstation and my sister’s desktop. My Pi 3B+ has been inactive since its 3D printed PacMan ghost case got smashed, and my Pi 400 shares a monitor at my upstairs workstation.

Other/Misc computers

3D printer

Maker Select Plus
Added braces+feet

I am no master at 3D printing, but I know enough of the basics to scrape together most everything I try. At present, my printer needs a new fan and a printbed that isn’t warped.

Pine Phone

UBPorts Edition

The average smartphone these days spies on you. Its parent company is allowed to by the terms of service you need to accept before use. I resolved to not blindly accept any new EULA’s without knowing what I’m getting into and learning enough to be confident I’ve done something to mitigate the worst of these violations of privacy. As a consequence, I don’t have a usable phone ever since we switched providers a while back.

UPS’s

I have three uninterruptible power supplies directly under my supervision – one serving the network closet, one serving my upstairs workstation, and the other ButtonMash’s area. As of yet, I have not figured out the open source NUT driver.

My Father’s workstation

Dell Optiplex 7020
15 GB RAM

Linux Mint 20.3
Debian 11

15 GB RAM

After I bought ButtonMash, I got another used workstation out of the same dental office, replaced Windows, and gave it both sets of RAM. I later talked my father through installing Debian 11 on ButtonMash’s original hard disk

Ventoy USB (32 GB)

Not technically a computer, but easily one of my most versatile tools. Ventoy makes Linux media creation as simple as dragging and dropping a .ISO. Even better is that I can still put normal files on it!

Takeaway

Each part of my lab serves its function. There’s a certain joy when I get something new working and get to show it off.

Final Question

Which of your projects are you most proud of?

I Touched Up a Special Photo

Good Morning from my Robotics Lab! This is Shadow_8472 with a 1-night special project based on a mini-project I did a few weeks back. Let’s get started!

I’m no stranger to using my family’s photo trunk as fodder for a long-running project. Besides, there’s a special occasion coming up, and I thought it would be nice to restore a special photo where the photographer had his flash misaligned.

The first part was smuggling one of the scanners up to my room, where it wouldn’t be so obvious that/when I’m working on it. For reference, I’m working with an Epson Perfection V550 Photo and Manjaro Linux. My previous attempts at getting this and another Epson Perfection working with Linux using a driver called SANE were spotty at best. I even went so far as to save a cloned drive over my difficulty in reproducing my success.

> SANE: Scanner Access Now Easy

Long, boring story short: I landed at sane-project.org, where the whole series of Epson Perfection V[100-600] Photo is listed as “unsupported.” [1] The only reason I got it to work before was because I had Image Scan! for Linux installed, as I learned through a combination of user-forsaken forums and personal experimentation. My notes for this project made note to mention “[Epson Perfection V series scanners are] supported by the epkowa backend plus non-free interpreter.” I stopped trying to fully sort its meaning out after getting the V550 working thanks to an AUR package.

> AUR: Arch User Repository

With a working scanner, it wasn’t much more trouble to connect it to the XSANE plugin for GIMP, where I made a collage of different scans with slightly different settings. It took a while to zoom in and align each piece pixel-perfect; ironically, this process was aided by the dust and scratches I couldn’t get off. To finish off the project, I used a feathered eraser tool to smooth the edges.

Takeaway

If I had more time, I’d have feathered the edges after each scan. Like I said, this was a project I am finishing last-minute. I now have the picture looking the best it has in years, but it’s still due for plenty of help – some beyond my skill level.

Final Question

I have a pretty strong feeling I know the answer, but do scanner drivers communicate any additional information when optimizing a scan, or was I just needlessly exposing a special picture to extra light?

Work Cited

SANE, “SANE: Supported Devices,” sane-project.org, [Online]. Available: http://www.sane-project.org/sane-mfgs.html#Z-EPSON. [Accessed Mar. 13, 2023].

I Studied Podman Volumes

Good Morning from my Robotics Lab! This is Shadow_8472 with a side project of the week. Let’s get started!

Nextcloud has been a wish list item since I gave up using Google’s ecosystem (Drive, Calendar, Office, etc.). This open source almost-drag-and-drop alternative proved above my skill level at first, but I’ve learned a lot about server management and running OCI “Docker” containers in Podman in the years since.

Demo of Nextcloud

Nextcloud was relatively simple to demo: one non-privileged port forwarded. During my self-guided tour, I was amazed at the potential power there. In addition to its calendar, office, and file storage functions I expected, its recommended suite apps include email, chat, and contacts servers – with more apps available for download.

As much as I can see myself moving in right now, it’s important that I master how its persistent data is stored. Ideally, everything would live on GoldenOakLibry, my home network storage configured with RAID 5. But I hate waiting for HDD spin-up. If it had an SSD out the back (it has two USB ports), I could mount a directory there from a Nextcloud container and back it up to deep storage on a weekly or monthly basis. At the same time, I may want the capacity of the main disks if Nextcloud turns out to be good for hosting the family’s photo archive.

The solution: use two “volume” structures like I started looking at last week. They work similarly to directly mounting directories as I’ve been doing in theory, but are abstracted similar to containers. See my Tangent heading later on for more information.

With this purpose in mind, we ordered a USB–SATA adapter and dug up our MineOS SSD from once upon a time. I archived around 411 GB worth of Minecraft worlds to free up space. I got the poor idea to try compressing it to both .tar.gz and .zip, two widely used compression formats which turn out to be implementations of the same algorithm. GoldenOakLibry had ZIP, but not TAR, so I tarballed/compressed it to 393.5 GB over an hour vs the NAS struggled to produce a 393.77 GB .zip over a full day. With a savings that small, I’m probably best off curating it uncompressed – especially if I have family members interested in seeing it again.

RAID 5: A hard drive redundancy scheme resistant to a single drive failure. In my case: four matching disks with three drives’ worth of usable space.

TAR: Tape ARchive: An early archive tool often paired with the GNU Zip compression program.

To Do List

Regretfully, I have to split this topic just as it’s getting good. I was running a test to see if GoldenOakLibry can respond on the USB share without spinning up, but creating new network shares is not a skill I can perform reliably yet. I had it working once, rebooted, and now it won’t re-connect like the proven ones. If for whatever reason I can’t get GoldenOakLibry to share from MineOS’s SSD without spinning up, I’ll have to mount it internally to ButtonMash and play the BIOS game to disable booting to it.

Even if I was making good enough time with the USB share, I’d still need to study up on databases. The lightweight one included with the Nextcloud container I’m working with is meant for browser traffic only, and I want to try out its clients.

Tangent

I started with the working theory that volumes needed to be started and stopped like containers, and I would therefore need one of Podman’s signature pods to manage them alongside Nextcloud’s. It’s basically a container for organizing and running containers on a homelab scale. I rigged up a script to automate my attempts with it, but eventually realized that volumes are passive, and I had just learned the wrong tool for the job. I’m sure I’ll make use of it eventually.

Final Question

I’d like to open up the discussion. Two big choices remain: Where do I host my fast Nextcloud SSD (GoldenOakLibry or ButtonMash), and how do I host my archive pictures (Nextcloud, Mediawiki, something else)?

I look forward hearing your answers in the comments below or on my Socials.