Zum Hauptinhalt springen
tsecurity.de LIVE
Echtzeit-Radar & Feeds
Alle RSS Feeds
👥 Community & Social
Sichere ProgrammierungMy fact-checker said CONFIRMED about a group that doesn't exist(23.09.2026 um 02:13 Uhr)
Sichere ProgrammierungZero-Friction Payment Architectures for Global Scalability(23.09.2026 um 02:20 Uhr)
Sichere ProgrammierungYour SaaS launch should have a high-score table(23.09.2026 um 02:24 Uhr)
Sichere ProgrammierungMy fact-checker said CONFIRMED about a group that doesn't exist(23.09.2026 um 02:13 Uhr)
Sichere ProgrammierungZero-Friction Payment Architectures for Global Scalability(23.09.2026 um 02:20 Uhr)
Sichere ProgrammierungYour SaaS launch should have a high-score table(23.09.2026 um 02:24 Uhr)
Intelligence View
⚡ tsecurity.de Intelligence

I built a directory of EU software alternatives. Then HN pointed out I was running it on Cloudflare.

only-eu.eu is a directory of verified European alternatives to common US software. Proton instead of Gmail, filen instead of Dropbox, that kind of thing. 332 pages, EN and DE, 88+ products. This is about how it's built. Some decisions I'd…

0
↗ Quelle (dev.to)
Reagiere als Erste:r — dein Feedback zählt!

only-eu.eu is a directory of verified European alternatives to common US software. Proton instead of Gmail, filen instead of Dropbox, that kind of thing. 332 pages, EN and DE, 88+ products.



This is about how it's built. Some decisions I'd make again. One I had to fix while 6,100 people were on the site.









Why Astro



The site is content: product pages, category pages, a landing page. No user accounts, no dynamic feeds, nothing that needs a server at render time. Astro was the obvious fit. Static output, fast builds, and you only ship client-side JS where you explicitly add it.



In practice the site has two interactive elements: a "switch tool" widget on the homepage (shows EU alternatives based on what US tool you use) and a suggestion modal for submitting new products. Both are Astro islands. Everything else is plain HTML from the build.



Build time for 332 pages is around 40 seconds. That includes generating both language variants for every product and category page from a single TypeScript data source. Astro's file-based routing made the i18n structure straightforward: /[lang]/[category]/[product] resolves cleanly with getStaticPaths.









Hosting: from Cloudflare Pages to Bunny.net



The site launched on Cloudflare Pages. It works fine: zero config, fast deploys, generous free tier. But after a Show HN post got traction (326 upvotes, ~6,100 visitors in a day), I decided to migrate.



The reason was not performance. It was consistency. A directory arguing "use European software" probably should not run on US infrastructure. Cloudflare is registered in San Francisco.



I moved to Bunny.net for hosting, CDN, and DNS. Bunny is registered in Slovenia, runs its edge network across EU regions first, and the developer experience is comparable to Cloudflare. Maybe a bit more config upfront, but nothing unreasonable.



The migration itself was mostly a DNS exercise. Bunny has a Storage Zone for static files and a Pull Zone for CDN delivery. You point your DNS at Bunny, configure the Pull Zone to serve from the Storage Zone, set up the custom hostname, and deploy via their API. I integrated the deploy into the existing build step: bunny.net CLI uploads the dist/ folder after astro build.



One thing to watch: Bunny's DNS API uses numeric type codes. Type 0 for A records, Type 2 for CNAME, Type 3 for TXT. The docs are a bit sparse on this. I created two TXT records by accident before I found the right values.









API and analytics: Hetzner VPS + self-hosted Plausible



The site has a small backend: a suggestion API (collects product submissions from users), a contact form endpoint, and an automation layer. All of that runs on a single Hetzner VPS in Nuremberg (~4 EUR/month).



Analytics is self-hosted Plausible on the same VPS. No cookie banner, no third-party JS, no fingerprinting. A clean analytics dashboard with no data leaving the EU and no GDPR consent dialog. For a site about EU software, that felt like the only reasonable option.









What broke during the HN launch



When the Show HN post went live, the first substantive comment pointed out that Ente Photos, which I had listed as Norwegian, is actually incorporated in Delaware, USA. I removed it within the hour.



That comment prompted a full pricing audit across all products. I found 19 incorrect prices. Corrected all of them the same day.



And then there was the comment that stung a little more. Someone noted that a directory promoting European alternatives was running on Cloudflare, a US company headquartered in San Francisco. They were right. The HN community did not let that one slide quietly, and honestly I deserved it. That is part of why the Bunny.net migration happened: not just because of the principle, but because the irony had been pointed out publicly and I had no good counterargument.



None of these were catastrophic. But they were visible. A community of thorough people will find the things you missed, including the things you were already a little uncomfortable about.









Current state




  • 332 pages (EN + DE)

  • 88+ products, 20+ categories

  • Hosting: Bunny.net (EU)

  • DNS: Bunny DNS (EU)

  • Analytics: self-hosted Plausible on Hetzner (Nuremberg)

  • API: Hetzner VPS, Node

  • Build: Astro, deployed via Bunny CLI

  • No cookies, no third-party JS, no CDN outside EU



If you're building something similar, happy to discuss the specifics in the comments.



Also, if you think a product is missing on the site, use the "suggest" button, I'm implementing products on a weekly base.



Feel free to connect on X.



Cheers,



Manuel



PS:

I used AI to spellcheck and sharpen my tone, I hope that's OK here.

Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten I built a directory of EU software alternatives. Then HN pointed out I was running it on Cloudflare.

Thematisch verwandte Begriffe: built, directory, software, alternatives · 6 Treffer

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Zum Aktualisieren ziehen
ZERO-DAY CVE-2026-17636 | IBM Financial Transaction Manager (FTM) for RedHat OpenShift could allow…
Advisory →
TTS Reader • tsecurity.de Voice
tsecurity.de Icon
tsecurity.de App
Offline-Lesen, Eilmeldungen & 0ms Ladezeit

Installiere tsecurity.de direkt auf deinen Home-Bildschirm für das ultimative Vollbild-Magazinerlebnis ohne Browser-Leisten.

Nächster Beitrag
Themen-Radar & Intelligence Matrix
Echtzeit-Taxonomie nach Angriffsvektoren & Plattformen

tsecurity.de Live Threat Radar

🔴 LIVE RADAR
MONITORING
AKTIV
CVE-DATENBANK
LIVE
🔍
Community Radar & Live Chat
Sentinel Bot online • Live-Stream
Dein Cluster: Security Explorer
Match:
lädt…
Verbindung zum Community-Stream wird aufgebaut...
Bearbeitungsmodus — Senden überschreibt deine Nachricht
Community-Puls — was gerade passiert
lädt…
Aktivitäten deiner Analysten
lädt…
Neues Thema oder Eilmeldung einreichen

Reiche interessante Links, Zero-Days oder Debatten ein. Die Community entscheidet per Upvote über die Veröffentlichung.

Heiß diskutierte Einreichungen
🔖 Gespeicherte Artikel
📂 Keine gespeicherten Artikel vorhanden.
Zurück Ziehen Vor
Links: vorheriger Artikel Rechts: nächster Artikel unten: schließen
News NIS-2 Frühwarnung Tier-1 Intel ⏱️ 3 Min vor 10 Min
Artikeldaten werden geladen...

Zurück: vorheriger Vor: nächster
↗ Original-Quelle
Social Reaktionen Deine Reaktion zählt
Einstufung & Relevanz-Poll 0 Stimmen
In sozialen Netzwerken teilen 1-Klick