Shield up, ready and watching, the outpost got Orbitronized
Getting WriteFreely online was just the first milestone. Getting it to look and behave the way I wanted was another mission, now accomplished.
The original installation already did the important things. It runs happily on a small Ubuntu server, uses a compact SQLite database, sits behind Nginx, and lets you publish ordinary Markdown posts without weighing the system down with a complex content-management platform like WordPress.
The server’s attack surface and susceptibility to overloading are reduced by the absence of search. With a WriteFreely blog, a visitor can just use their browser’s built-in search box to find words and phrases in the blog landing page.
WriteFreely is fast, private, self-hosted and reassuringly uncomplicated.
One styling customization introduced a dark background, red highlights, dotted-link underlining and the Orbitron typeface.
The site name now uses Audiowide, which gives it a little more of the neon-sign character of the title on the main Dave Café blog.
A restrained red glow makes it noticeable without turning every page into the frontage of a kebab shop at two in the morning.
Although I've often had nothing against a nice kebab at two in the morning, and have absolutely nothing against kebab shops at all.
A light-and-dark theme switcher is another little tweak. The button sits at the bottom-right of the viewport and remembers the selected mode.
Dark mode is the default on the outpost, but light mode is working perfectly.
In light mode, the red accent got slightly darkened for better contrast.
Linked headings acquired a custom dotted underline.
The most-visible new feature is a floating navigation rail on the righthand side.
The four buttons take you to the top of the page, to the previous post heading, to the next post heading, or to the page bottom.
The rail is vertically centered and aligns with the separate sun/moon light-dark theme switcher below it.
A little JavaScript discovers the relevant headings and moves between them; the controls disappear on narrow displays where they would consume too much space.
That makes it easy to skip between page top, bottom and headings, and is surprisingly useful for navigating within a long timeline or article.
Less-visible work has happened under the hood.
Maintenance on Postfix and Dovecot aimed at securing and protecting the mail stack.
For instance, SMTP submission uses STARTTLS and authenticated sender restrictions. DKIM signing got tested end to end. Dovecot provides encrypted IMAP access, Fail2ban watches both mail authentication services, and the firewall exposes only the intended SMTP, submission and IMAPS ports.
Let’s Encrypt certificate renewal simulates successfully, including the service reload hooks, and the whole server survives reboot with every required service, listener, jail and route returning automatically.
Another notable change is that the same WriteFreely codebase is now doing a second job hosting https://bio.dave.cafe/.
That new bio site has its own service, configuration, templates, encryption keys, database, certificate and Web assets, but shares the application binary and static resources.
It uses WriteFreely's Novel mode, a format that places chapters in their original publishing order and hides their dates, which is better for an autobiography than the reverse chronology of a running log.
Both instances are humming along together comfortably on the same small server. One records what is happening now; the other assembles what happened before.
It's still a lightweight, text-centered publishing system, with no tracking scripts, advertising machinery and social-media distractions, and without a warehouse full of plugins.
The first transmission was a proof of the outpost being online. Now it's ready for prime time.
—oOo— End of transmission —oOo—