Self-Host Stack
Changelog
What shipped, when, and what it cost to learn. Written as we go — including the parts that went wrong, because those are usually the useful bit.
25 entries · newest 2026-08-22
August 2026
- The Tool We Recommended Had No ImageCal.diy is live on the lossless stack, with a calendar actually connected. Getting there meant discovering the tool we pointed readers at in July ships no Docker image at all — and then chasing an error message that blamed the user for a mistake we had made.
- Onyx Lands on palmer-ai, and Railway Tells Us Three Things It Doesn't DoNine services for one search box — the heaviest bundle in the stack by tenfold. Getting it up meant discovering that Railway silently drops start-command arguments, which cost more time than the other eight services combined.
- A Skill for Decile Hub, and What Measuring the CRM RevealedTwo GPs get one connector and 158 tools they can't tell apart — so the skill supplies the missing safety tiering. Then measuring the boards found three fields that look populated and aren't.
- Plane Is Live, and It Lied About Being Healthy for Ten MinutesProject tracking joins the stack — and an agent now files work items into it over the API. Getting there meant learning that a 200 response from Plane means the proxy is alive, not that Plane works.
- The Build Log Gets a Front Door — LFM Renders the Changelog at lossless.atTwenty-one entries that only existed in a git directory are now a readable, linkable surface. Getting there cost four bugs worth writing down, including a content collection that reported zero entries while building perfectly.
- The Second User Could Never Have Logged In — On Any of the Four CRMsA stakeholder at the-water-foundation couldn't log in or create an account. The invitation had been sent, accepted by the server, and written to a log file instead of an inbox. Twenty's email driver defaults to a setting that silently discards mail, and our own runbook called SMTP optional.
- Reach's Wiki Gets a Verified Backup — and Railway's IaC Nearly Upgraded Four Live Databases on the WayOutline's database now dumps weekly to R2, proven by forcing a run and reading the archive back. The plan that created it also quietly proposed bumping every Postgres in the project to 18, which would have taken them all down.
- Every Wiki Gets a Name Worth Sharing — and the Aggregating MCP Finally Has a SpecPaste an Outline share link now and it stays on lossless.at instead of flipping to a Railway hostname mid-click. Alongside it: a spec for the one-connector-per-client MCP, and a working prototype of its Skills plane built with no new infrastructure.
- Every Client Tool Gets a Readable Address — and One Redirect Test Killed the Pretty Connector URLlossless.at/<client>/<tool> now opens the right thing for every managed client, replacing hostnames nobody could read. The AI connector link had to stay ugly, and we found out why by measuring rather than assuming.
- Reach University Gets a Wiki — and Outline Taught Us Two Traps That Make a Failed Boot PermanentReach's homebase went from one card to three. Getting there cost a phantom Docker tag and a Redlock deadlock that turns one bad boot into an infinite one — both now written into the runbook so the next client's Outline is a repeat, not a re-fight.
- The Stack Grows a Safety Net — Five Weekly pg_dumps to R2, One pg17 Gotchathe-water-foundation went from zero backups to five verified weekly pg_dump crons landing in a per-client Cloudflare R2 bucket — proven by forcing live runs and reading the objects back, not assumed.
- Papermark Goes Live — the First Self-Hosted Data Room, Wrestled Out of a Source Tree That Doesn't Want to Be Self-Hostedthe-water-foundation now has a working Papermark VDR — the first in the stack. Getting there meant making an OSS repo build that imports 41 closed-source Enterprise modules it doesn't ship, then chasing a 404 through three middleware red herrings to the real culprit: the webhook host set equal to the app host.
- The Portal Moves Out — and We Write Down the URL Shape Before It HardensThe client portal leaves the public marketing repo for a private submodule, and the address model gets decided on purpose: lossless.at/<client>/<service>. The crux is that MCP's OAuth won't tolerate a naive subpath proxy.
July 2026
- The Hub Learns About the Knowledge Basepalmer-ai.didi.sh now has a 'Your Knowledge Base' card pointing at the Outline instance — the one bookmarkable link per client keeps its promise as the stack grows.
- Postiz Lands on reach-edu — Five Services, Three Gotchas, One Social Command CenterThe stack's Hootsuite-killer is live at postiz.reach-edu.didi.sh: Postiz v2.22.1 deployed to the reach-edu Railway project with a full Temporal orchestration layer, after fighting through a search-attribute quota, a soft-deleted volume, Railway's injected PORT, and a session cookie that browsers refused to store.
- Third Twenty CRM Stack Deployed — This Time for OurselvesThe per-client Twenty deployment runbook just ran a third time — for The Lossless Group's own CRM. Project creation to healthy /healthz in under ten minutes, zero new failure modes.
- Docmost Joins the palmer-ai Stack — Second Bundle, First Wikipalmer-ai's self-host stack grew its second bundle today: Docmost, the open-source Notion/Confluence alternative, deployed from upstream's compose in one pass and healthy in thirty seconds.
- Docmost Out, Outline In — an API License Gate and a Railway GotchaDocmost lasted four hours in the palmer-ai stack: gorgeous product, API keys locked behind Enterprise. We swapped in Outline the same evening — and found a Railway deploy trap worth its own delta entry.
- First No-Terminal AI Connection: Claude Desktop Talks to a Client CRM via OAuthThe whole client thesis rests on one motion — paste a URL, log in, done. Tonight it stopped being a design and became a working connection, after one proxy-config bug tried its best to stop us.
- One Link to Send: palmer-ai.didi.sh, the Client Hub with a Real DomainYou can't send a client a raw railway.app URL and expect trust — so now there's one branded, bookmarkable page per client: open your CRM, connect your AI, and a didi-account teaser for what's coming.
- First Client Stack Live: Twenty CRM for reach-edu on RailwayThe per-client self-host pattern stopped being a spec today — Reach University has its own Twenty CRM, its own database, its own project, and the first real record landed through the API within the hour.
- The Pattern Repeats: palmer-ai Live in Under Ten MinutesClient #2's Twenty CRM went from nothing to real records in one sitting, executed from the runbook client #1 wrote — zero failed deploys, four real companies in the workspace by end of session.
- Backups That Actually Restore: Weekly R2 Dumps for Both Client StacksA backup that hasn't been restored is a hope, not a backup — so before calling Phase 3 done, we pulled a dump out of R2, rebuilt a database from it, and found our API-written record sitting inside.
- The Roster Fills Out — and the First Recommendation Goes Stalecore/ grew from two tools to five across eight weeks, adding three new categories. Then Cal.com went closed-source in April and we found out in July, which is the real story: a recommendation table is a perishable good.