Self-Hosted Software Delivery Platform
Provider-independent Linux infrastructure for developing, testing, deploying, monitoring, backing up and operating containerized Angular, .NET and PostgreSQL applications.
Context and responsibility
I design and operate a self-managed Linux platform that keeps application architecture close to delivery and operations. The goal is not to reproduce a hyperscale cloud. It is to make the complete path from development to a recoverable production release explicit, portable and understandable.
I own the platform as architect, developer and operator: development environments, source control, runners, container images, ingress, application networks, databases, observability, backups and release recovery.
Sanitized platform topology
flowchart LR
Dev[Linux or Windows 11 with WSL] --> GitLab[Self-hosted GitLab]
GitLab --> Runner[GitLab Runner]
Runner --> Registry[Container registry]
Runner --> VPS[Hardened Linux VPS]
Users[Public users] --> Ingress[TLS reverse proxy]
Ingress --> Web[Angular applications]
Ingress --> Api[ASP.NET Core APIs]
Api --> Db[(PostgreSQL)]
Web --> Observe[Prometheus and Grafana]
Api --> Observe
Db --> Backup[Daily backups]
Mail[Mail platform] --> BackupPortable development
The development workflow runs across native Linux, Windows 11 with WSL, Docker Desktop and standalone Docker Engine. Keeping build and runtime behavior containerized reduces dependence on a single workstation product and makes local, runner and server environments easier to compare.
Health-gated delivery
sequenceDiagram
participant Dev as Developer
participant CI as GitLab CI
participant Stage as Staging
participant Prod as Production
Dev->>CI: Push reviewed change
CI->>CI: Validate, test and build image
CI->>Stage: Deploy immutable image
CI->>Stage: Verify health and public route
alt Verification passes
CI->>Prod: Promote verified image
CI->>Prod: Verify health and public route
else Verification fails
CI->>Stage: Restore previous healthy release
endGitLab pipelines validate configuration, run automated tests, build versioned images, deploy to an isolated staging environment and verify health before production promotion. Previous release references remain available for rollback.
Security, observability and continuity
Public traffic enters through a TLS reverse proxy. Web and API host ports are loopback-only, application and database networks are segregated, deployment secrets stay outside source control, and databases are not publicly exposed. Health endpoints, Prometheus metrics, Grafana dashboards, logs and daily backups keep operational state visible.
Long-running mail operations
I have operated a multi-domain mail platform since November 2010 using iRedMail, Roundcube and SOGo. It has supported a peak of 40 mail domains, currently stores more than one million messages and has passed through three server migrations. I manage its DNS, TLS, DKIM, SPF, DMARC and backup configuration.
Measured delivery quality
The deployed Chronobat website achieved 100 for Performance, Accessibility, Best Practices and SEO in dated Google PageSpeed Insights lab audits on both mobile and desktop on 21 July 2026. The result is point-in-time evidence of performance and technical SEO work, not a permanent score guarantee.
Owning this chain directly sharpens architecture decisions: every dependency has an operational cost, every deployment needs a failure path, and every backup needs to be treated as part of the system rather than an afterthought.