Build & Deploy / deploy (push) Successful in 1m52s
Reglen gjaldt kun de nyeste tekster; resten af sitet var fuld af dem. 72 steder rettet på tværs af sider, komponenter, layout, profildata og et blogindlæg. Valget pr. sted: ".." hvor der er en ægte pause eller en tør bemærkning (fejlbeskederne i /ubl, /nemhandel og /chat, påskeægget i sidekilden, "Øjebliksbillede.. verificér altid"), kolon hvor noget defineres (cookie-listen, kolofonens rækker, profilbemærkninger der forklarer en forkortelse) og komma hvor sætningen bare skal hænge sammen. Ét sted blev det til to sætninger, fordi indskuddet var for langt til et komma. Sidetitlen i Head.astro og de fire "docs.peppol.eu"-kildelinks brugte tankestregen som skilletegn; de bruger nu "·", som sitet i forvejen bruger mellem sidetitel og navn. Tilbage står én tankestreg i /ubl, og den bliver: den markerer et tomt felt i definitionslisten og er ikke en pause i en sætning. Claude-Session: https://claude.ai/code/session_0198n4owY35jQpwht1wCGzfh
59 lines
2.7 KiB
Plaintext
59 lines
2.7 KiB
Plaintext
---
|
||
import Base from '../layouts/Base.astro';
|
||
|
||
const sections = [
|
||
{
|
||
title: 'Homelab',
|
||
items: [
|
||
{ name: 'Proxmox VE', note: 'Hypervisor på egen hardware. ~50 LXC-containere og et par KVM-VM’er, én tjeneste pr. container.' },
|
||
{ name: 'NPMplus', note: 'Reverse proxy og TLS-terminering på kanten. Alt trafik ind går her igennem.' },
|
||
{ name: 'Authentik', note: 'Self-hosted SSO (OIDC/LDAP). Én identitet til alle tjenester, bygget fra source.' },
|
||
{ name: 'Gitea + Gitea Actions', note: 'Egen git-hosting og CI/CD. Denne side deployes automatisk ved push.' },
|
||
{ name: 'MariaDB / Redis / PostgreSQL', note: 'Databaser som dedikerede containere, host-pinned brugere og det hele.' },
|
||
{ name: 'Matomo', note: 'Self-hosted analytics, first-party og uden tredjeparter.' },
|
||
{ name: 'WireGuard', note: 'Tunneler og netns-baserede egress-profiler til alt der skal ud af huset på en pæn måde.' },
|
||
],
|
||
},
|
||
{
|
||
title: 'Udvikling',
|
||
items: [
|
||
{ name: 'Linux + code-server', note: 'Udvikling foregår i en dedikeret LXC med VS Code i browseren.' },
|
||
{ name: 'Java · Go · Python · TypeScript', note: 'Arbejdshestene. Java til Peppol/eDelivery-verdenen, Python/TS til alt det andet.' },
|
||
{ name: 'Claude Code', note: 'LLM-drevne workflows, fra blogindlæg til Proxmox-administration.' },
|
||
{ name: 'Docker', note: 'Hvor det giver mening. Ellers foretrækker jeg native installationer i LXC.' },
|
||
],
|
||
},
|
||
{
|
||
title: 'Denne side',
|
||
items: [
|
||
{ name: 'Astro 5 + Bun + Tailwind 4', note: 'Statisk output, ingen JS-frameworks i browseren. Se kolofonen for detaljer.' },
|
||
],
|
||
},
|
||
];
|
||
---
|
||
<Base title="Uses" description="Hardware, software og selvhostede tjenester bag mit homelab og denne side.">
|
||
<h1 class="text-4xl font-bold tracking-tight">Uses</h1>
|
||
<p class="mt-4 max-w-2xl text-muted">
|
||
Inspireret af <a class="text-accent hover:underline" href="https://uses.tech" target="_blank" rel="noopener">uses.tech</a>:
|
||
det jeg faktisk bruger. Kort version: alt der kan selvhostes, bliver selvhostet.
|
||
</p>
|
||
|
||
{sections.map((s) => (
|
||
<section class="mt-10">
|
||
<h2 class="text-sm font-semibold uppercase tracking-widest text-accent">{s.title}</h2>
|
||
<div class="mt-4 space-y-3">
|
||
{s.items.map((it) => (
|
||
<div class="rounded-2xl border border-border bg-surface/60 p-4">
|
||
<span class="font-semibold">{it.name}</span>
|
||
<p class="mt-1 text-sm text-muted">{it.note}</p>
|
||
</div>
|
||
))}
|
||
</div>
|
||
</section>
|
||
))}
|
||
|
||
<p class="mt-10 text-sm text-muted">
|
||
Nysgerrig på hvordan siden selv er skruet sammen? Se <a class="text-accent hover:underline" href="/colophon">kolofonen</a>.
|
||
</p>
|
||
</Base>
|