[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"technology-en-hetzner":3,"technology-projects-en-hetzner":30,"mdc--rbu78x-key":146},{"id":4,"title":5,"category":6,"content":7,"description":8,"extension":9,"faq":10,"icon":11,"links":12,"meta":21,"projects":22,"since":26,"stem":27,"updated":28,"__hash__":29},"technologies_en\u002Fen\u002Ftechnologies\u002Fhetzner.yml","Hetzner","infrastructure","Hetzner provides the dedicated server I rent for SaaS workloads including DigiPulse, VetSpace and NetPostPanel. I manage the software stack, with Proxmox separating application environments into virtual machines.\n\n## What I manage\n\nMy responsibilities include the operating system, virtual machines, container deployments, network configuration and application recovery. Renting a dedicated server gives me control over how resources are allocated without making the hardware my property. Hardware faults and replacements are handled with the hosting provider.\n\n## Why this setup fits my projects\n\nSeveral continuously running services can share the available capacity. That gives me a predictable base hosting cost and room to choose my own deployment tools. The full cost also includes storage, backups, administration time and any additional infrastructure.\n\n## Availability is a separate decision\n\nMultiple virtual machines on one server still share a physical point of failure. Proxmox isolation does not make that host highly available. When a project's availability requirements increase, backup recovery time and redundancy need their own design rather than simply adding another VM on the same machine.\n","Hetzner dedicated hosting for my SaaS projects: a rented server, Proxmox virtual machines and responsibility for application operations.","yml",null,"i-simple-icons-hetzner",[13,18],{"label":14,"to":15,"color":16,"icon":17},"hetzner.com","https:\u002F\u002Fwww.hetzner.com","neutral","i-heroicons-arrow-top-right-on-square",{"label":19,"to":20,"color":16,"icon":17},"Technical reference","https:\u002F\u002Fdocs.hetzner.com\u002Frobot\u002Fdedicated-server\u002Fdedicated-server-hardware\u002Fdedicated-server-hardware-overview\u002F",{},[23,24,25],"digipulse","vetspace","netpostpanel","2023","en\u002Ftechnologies\u002Fhetzner","2026-09-20","vkeE6kfqqdt_vcBkglQdMgn-9v7Ol0N4tq78xjgDyIE",[31,77,116],{"id":32,"title":33,"content":34,"date":35,"description":36,"extension":9,"featured":37,"image":38,"links":39,"meta":48,"stack":49,"stem":71,"tags":72,"url":42,"__hash__":76},"projects_en\u002Fen\u002Fprojects\u002Fdigipulse.yml","DigiPulse","Uptime monitoring SaaS — 60-second checks, SSL expiry tracking, Telegram and email notifications. The admin panel and core backend are built with Laravel (Octane, Reverb websockets) and Filament, while the monitoring engine is a separate Go service. Includes Google OAuth sign-in and Cloudflare Turnstile integration, plus an MCP server that exposes monitoring data directly to AI assistants. Self-hosted on Proxmox.\n\n## Key Features\n\n- **Dedicated Go engine** - availability checks run in a separate Go service, so constant 60-second polling never slows down the Laravel app\n- **Real-time dashboard** - Reverb websockets push status changes to the UI live, no manual refresh\n- **Octane + Filament** - resident-memory Laravel with a full admin panel for monitors, contacts and alert rules\n- **MCP server** - monitors and incidents are queryable from AI assistants (Claude, Cursor) via the Model Context Protocol\n- **Google OAuth + Turnstile** - passwordless sign-in and bot protection on public forms\n- **Self-hosted** - deployed on a Proxmox homelab I manage end-to-end\n\n## Tech Stack\n\n- **Backend**: Laravel (Octane, Reverb websockets)\n- **Admin Panel**: Filament\n- **Monitoring Engine**: Go (separate service)\n- **Database**: PostgreSQL\n- **AI Integration**: MCP server\n- **Infrastructure**: Self-hosted on Proxmox\n","2026-04-17","Uptime monitoring SaaS: event-driven architecture — Laravel (Octane, Reverb) + Filament dispatch checks through Redis to a lightweight Go worker; an MCP server exposes monitoring data to AI assistants; Telegram\u002Femail alerts",true,"\u002Fhero\u002Fdigipulse.avif",[40,44],{"label":41,"to":42,"color":43,"icon":17},"Live Demo","https:\u002F\u002Fdigipulse.cloud","primary",{"label":45,"to":46,"color":16,"icon":47},"GitHub","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fdigipulse-backend","i-simple-icons-github",{},[50,53,56,59,62,65,68],{"name":51,"icon":52},"Laravel","i-simple-icons-laravel",{"name":54,"icon":55},"Filament","i-simple-icons-filament",{"name":57,"icon":58},"Go","i-simple-icons-go",{"name":60,"icon":61},"PostgreSQL","i-simple-icons-postgresql",{"name":63,"icon":64},"Redis","i-simple-icons-redis",{"name":66,"icon":67},"Vue","i-simple-icons-vuedotjs",{"name":69,"icon":70},"MCP","i-heroicons-cpu-chip","en\u002Fprojects\u002Fdigipulse",[73,51,57,74,69,63,75],"SaaS","Monitoring","Event-driven","b7hu-_otqukg-JY_hPBvmlUYk5jVOx42XpCotH6Cvqo",{"id":78,"title":79,"content":80,"date":81,"description":82,"extension":9,"featured":37,"image":83,"links":84,"meta":96,"stack":97,"stem":112,"tags":113,"url":86,"__hash__":115},"projects_en\u002Fen\u002Fprojects\u002Fvetspace.yml","VetSpace","A two-sided veterinary platform — an SEO clinic catalog and a subscription-based CRM with appointments and patient records. A public clinic catalog built for SEO-first customer acquisition, and a subscription-based CRM (appointments, visits, patient records) as separate Vue\u002FNuxt apps on top of a single Laravel API. Database-per-tenant architecture, Stripe subscriptions via Cashier, GraphQL + REST, and AI-assisted visit analysis through a dedicated Go microservice.\n\n## Key Features\n\n- **Two-sided funnel** - an SEO-first public catalog acquires clinics; the subscription CRM (appointments, patient records) retains them\n- **True tenant isolation** - database-per-tenant keeps every clinic's data separate and makes GDPR export\u002Fdelete a per-database operation\n- **Dual API surface** - GraphQL for complex catalog queries, REST for the CRM — one Laravel codebase\n- **Billing built-in** - Stripe subscriptions via Cashier: trials, plan changes, dunning\n- **AI where it helps** - visit analysis runs in a dedicated Go microservice, keeping the main API unburdened\n\n## Tech Stack\n\n- **Backend**: Laravel (API)\n- **Frontend**: Vue\u002FNuxt (separate apps)\n- **Architecture**: Database-per-tenant multi-tenancy\n- **Payments**: Stripe via Cashier\n- **API**: GraphQL + REST\n- **AI**: Go microservice for visit analysis\n","2026-09-19","A two-sided veterinary platform — an SEO clinic catalog and a subscription-based CRM with appointments and patient records","\u002Fhero\u002Fvetspace.avif",[85,87,90,93],{"label":41,"to":86,"color":43,"icon":17},"https:\u002F\u002Fvetspace.pro",{"label":88,"to":89,"color":16,"icon":47},"API Overview","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fvetspace-api",{"label":91,"to":92,"color":16,"icon":47},"Frontend Overview","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fvetspace-frontend",{"label":94,"to":95,"color":16,"icon":47},"VetCard Overview","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fvetspace-vetcard",{},[98,99,100,103,106,109],{"name":51,"icon":52},{"name":66,"icon":67},{"name":101,"icon":102},"Nuxt","i-simple-icons-nuxtdotjs",{"name":104,"icon":105},"Stripe","i-simple-icons-stripe",{"name":107,"icon":108},"GraphQL","i-simple-icons-graphql",{"name":110,"icon":111},"AI","i-heroicons-sparkles","en\u002Fprojects\u002Fvetspace",[73,51,66,114,104,110],"Multi-tenant","NDJ-cDU24m4uCf7HzSeTbCgbh0MGVh5P5HASDymy0wA",{"id":117,"title":118,"content":119,"date":120,"description":121,"extension":9,"featured":37,"image":122,"links":123,"meta":127,"stack":128,"stem":140,"tags":141,"url":144,"__hash__":145},"projects_en\u002Fen\u002Fprojects\u002Fnetpostpanel.yml","NetPostPanel","An internal AI content-operations platform that turns topic research into publishable content: a full RAG pipeline (Google Custom Search + RSS → scraping → multi-provider generation → vectorization), plus a versioned external API that powers content workflows in other projects, including the DigiSpace blog pipeline.\n\n## Key Features\n\n- **External API** - a versioned `POST \u002Fapi\u002Fv1\u002Fgenerate` + `\u002Ftranslate` API with per-client keys and rate limits exposes the whole pipeline to other apps, sync or async with callbacks\n- **Auto Pilot** - scheduled daily runs generate content from new inspiration items or custom topics, fully unattended\n- **Provider-agnostic AI** - Gemini and OpenAI sit behind a driver abstraction, so swapping models is config, not refactoring\n- **Semantic pipeline** - Qdrant vector search deduplicates and clusters incoming stories before they reach generation\n- **Autonomous aggregation** - RSS auto-discovery and Google Custom Search plus scraping turn a bare topic into a self-feeding content source\n- **Observable LLM calls** - every generation is traced in Langfuse: tokens, latency, cost\n- **Role-based access** - admin\u002Fcontent manager\u002Feditor roles, with every query scoped to its owner unless admin\n\n## Tech Stack\n\n- **Backend**: Laravel, `laravel\u002Fai` agents\n- **Frontend**: Inertia.js + Vue 3 (Search & Creation SPA, TipTap editor)\n- **AI**: Multi-provider (Gemini\u002FOpenAI) behind a driver abstraction\n- **Research**: Google Custom Search + RSS aggregation, page scraping\n- **Vector DB**: Qdrant for semantic search\n- **Observability**: Langfuse for LLM tracing\n- **Queue**: Laravel Horizon\n- **Tests**: PHPUnit\u002FPest + Cypress E2E\n","2024-11-10","AI content-operations platform — a RAG pipeline (research → scrape → generate → vectorize), an external API other apps call, and Auto Pilot for unattended scheduled generation","\u002Fhero\u002Fnetpostpanel.avif",[124],{"label":125,"to":126,"color":16,"icon":47},"Overview","https:\u002F\u002Fgithub.com\u002FYurij2015\u002Fnet-post-panel-overview",{},[129,130,131,134,137],{"name":51,"icon":52},{"name":110,"icon":111},{"name":132,"icon":133},"Qdrant","i-simple-icons-qdrant",{"name":135,"icon":136},"Langfuse","i-heroicons-chart-bar",{"name":138,"icon":139},"Horizon","i-simple-icons-laravelhorizon","en\u002Fprojects\u002Fnetpostpanel",[110,51,142,143,132,138],"RAG","External API","https:\u002F\u002Fnet-post-panel.digispace.pro","9F27sKWiICL9ugPIbYmr3dQH8lYynDHYMUcKPSIVVGQ",{"data":147,"body":148},{},{"type":149,"children":150},"root",[151,159,166,171,177,182,188],{"type":152,"tag":153,"props":154,"children":155},"element","p",{},[156],{"type":157,"value":158},"text","Hetzner provides the dedicated server I rent for SaaS workloads including DigiPulse, VetSpace and NetPostPanel. I manage the software stack, with Proxmox separating application environments into virtual machines.",{"type":152,"tag":160,"props":161,"children":163},"h2",{"id":162},"what-i-manage",[164],{"type":157,"value":165},"What I manage",{"type":152,"tag":153,"props":167,"children":168},{},[169],{"type":157,"value":170},"My responsibilities include the operating system, virtual machines, container deployments, network configuration and application recovery. Renting a dedicated server gives me control over how resources are allocated without making the hardware my property. Hardware faults and replacements are handled with the hosting provider.",{"type":152,"tag":160,"props":172,"children":174},{"id":173},"why-this-setup-fits-my-projects",[175],{"type":157,"value":176},"Why this setup fits my projects",{"type":152,"tag":153,"props":178,"children":179},{},[180],{"type":157,"value":181},"Several continuously running services can share the available capacity. That gives me a predictable base hosting cost and room to choose my own deployment tools. The full cost also includes storage, backups, administration time and any additional infrastructure.",{"type":152,"tag":160,"props":183,"children":185},{"id":184},"availability-is-a-separate-decision",[186],{"type":157,"value":187},"Availability is a separate decision",{"type":152,"tag":153,"props":189,"children":190},{},[191],{"type":157,"value":192},"Multiple virtual machines on one server still share a physical point of failure. Proxmox isolation does not make that host highly available. When a project's availability requirements increase, backup recovery time and redundancy need their own design rather than simply adding another VM on the same machine."]