Work

Chief Operations & Security Officer at Postiz

Postiz is the open-source social media scheduling platform. This is a hands-on job, not an administrative one.

#2
Contributor rank, Postiz core
405
Commits to the Postiz core
33
Advisories on the public record
1,201
Commits across these repositories
15
CVE identifiers assigned

Every figure here is read from the system that owns it. Checked 15 minutes ago. How they are counted

Chief Operations & Security Officer

at Postiz · Remote, Germany

Current 2024 - Present

Three maintainers. Nearly all of the execution, plus the whole of the security authority.

Areas I own

Security engineering
Vulnerability research, secure-by-default architecture calls, and the review that happens before anything ships. 33 published advisories and 15 CVEs so far, three of them critical.
CNA operations
Running Postiz as a CVE Numbering Authority with MITRE as TL-Root. Assignment, scoring against a stated rubric, CWE chain authoring, records straight against CVE JSON 5.1, and coordinated disclosure through GHSA.
Trust, fraud and abuse
Catching platform abuse and shutting it down, plus the policy work that decides where the lines sit.
Support and community
The whole support function. Tooling, staffing, and the answers themselves. The Discord to Intercom bridge, the SLA clock and the billing console are all mine, and so is the queue.
CI/CD and releases
Build, test and release pipelines, and the deployment path they feed. The documentation site and the deployment compose stack sit here too.
Monitoring
Error tracking and metrics, and the alerting policy on top of them. Sentry for errors, custom Prometheus exporters for what Sentry cannot see. The policy is what decides whether any of it is useful.
People management
Hiring, direction, and the daily reality of a small team carrying a large surface.

Detail

What the title covers

Postiz ran with two maintainers for about two years. It's three now. At that size a C-level title doesn't mean delegating. It means the work is yours.

Still in the code

I'm the second-largest contributor to postiz-app, at 405 commits. The operating role and the engineering role are the same job. I don't sign off on a release process I didn't build, or an advisory I didn't score.

The security record

33 published advisories and 15 CVEs. Three critical, the highest at 10.0.

Two clusters dominate. Eight advisories are server-side request forgery, which is what happens when a product's core function is fetching attacker-influenced URLs on a user's behalf. Three are payment-callback issues, where an unauthenticated webhook was trusted to grant entitlements.

Both clusters needed structural answers rather than per-endpoint fixes. That is the difference between closing findings and reducing the rate at which they arrive.

The platform

Every Postiz deployment runs its workflows on Temporal. Secrets and identity go through Vault: Raft storage, a full PKI with root and intermediate CAs, ACME issuance, dynamic secrets engines, OIDC backed by self-hosted Authentik.

Monitoring is Sentry plus Prometheus exporters I wrote, tuned so that an alert means somebody should actually get up.

Support is an engineering problem

I evaluated the support stack, moved us onto it, then wrote a Discord support bot from scratch. Billing lock, refund flows, CSAT, rate limiting, canned responses.

It has since grown into a bridge between Discord and Intercom, carrying the inactivity automation, the SLA clock and a full Stripe billing console. Its largest release deleted most of its own feature surface, because every agent-side command it had was a worse version of something Intercom already did properly.

Support volume tells you what's wrong with the product. Worth capturing properly.

Current 2025 - Present

The company behind the GHub product line and everything I run outside Postiz. One person doing product, code, licensing, infrastructure and support.

Areas I own

Product direction
What gets built, in what order, and more importantly what stays out of scope.
Engineering
Every line of it. There is nobody to hand the work to.
Platform and infrastructure
A four-node Proxmox cluster, VLAN-segmented and firewalled. Vault for PKI and secrets with Raft storage and dynamic engines, self-hosted Authentik for identity over OIDC, and the Ansible that keeps it all reproducible.
Security
The same standard I hold Postiz to, applied to my own code. Advisories against my own products get published under the GSSA prefix, with dates on them.
Licensing and commercial
Where the open core line falls, how the tiers are drawn, and the legal side of shipping proprietary software.
Support
Answering the people who use it, which is also the fastest way to find out what is broken.

Detail

What it is

Gelhaus Solutions is the umbrella for everything I build outside Postiz. The GHub product line ships under it, the community projects sit under it, and so does the infrastructure all of it runs on.

There is no team. Product direction, the code, the licensing, the support and the invoices are the same person.

The product line

GHub is the reason the company exists. Seven apps under that name, at very different stages: GAdvisory shipped and running in production, GeGroups shipped, GAnalytics computing its first module, GControl and GPlatform in active build together, and GBoarse and DAnalytics built but not at the front of the queue.

The model is open core. The base version of every app is free, Pro and Enterprise are not, and all of it sits under a proprietary licence I hold every right to. It is not AGPL and I do not call it open source.

The infrastructure

A four-node Proxmox cluster, VLAN-segmented and firewalled.

HashiCorp Vault handles secrets and PKI. Raft storage, a full certificate authority with a root and intermediates, ACME issuance for anything that wants a certificate, and dynamic secrets engines so credentials are short-lived by default rather than as an afterthought.

Authentik handles identity, self-hosted, wired into Vault over OIDC. Ansible keeps the whole thing reproducible instead of lovingly hand-tuned.

It is not a lab in the spin-it-up-for-a-weekend sense. Things I depend on run there, which is why it is built like production.

Held to the same standard

GAdvisory publishes advisories against my own products under the GSSA- prefix, written up the same way a third-party finding would be.

Publishing your own findings is uncomfortable and it is the point. A security page is a claim. An advisory with a date on it is evidence.

Why it is separate from Postiz

Different ownership, different licence, different money.

Postiz is open source, has a community around it, and carries a licence I do not control. GHub is open core and mine. Keeping the two apart is easier for everyone than explaining the overlap afterwards.

The security work has its own page

CNA operations, vulnerability research, disclosure.