Open Web
Services
EN DE

Open source · self-hosted · provider-neutral

One console. Many providers.

ows is a control plane for infrastructure spread across hosting providers. Connect your accounts, see servers, DNS and domains in one place, and stop learning a new console for every cloud.

Hosted console: registration opens soon console.open-web-services.com

Illustration with example data. The provider is a label, not a different UI.

Familiar console vocabulary, slightly less serious.

Every service has a playful name and a plain label next to it, so you always know what you're clicking.

  • OC2 Servers

    Ordinary Compute Cloud. Servers at any provider you connect.

    Import existing servers, create new ones from offers across providers, power on, off and reboot, and install Docker-based apps on servers ows created.

  • Route 66 DNS

    DNS that takes you where you're going. Get your kicks on port 53.

    Import, create and delete zones. Record sets are read live from the provider and edited in place.

  • Lot 42 Domains

    A plot of the internet with your name on it. Search, compare, claim.

    Search availability and price across registrar groups, get a quote, place audited orders and list the domains you hold.

  • IOU Provider groups

    Identity of Owners & Users. Who's paying for what, honestly.

    One group is one set of credentials at one provider. Adding a group verifies it and imports what already exists; a background sync keeps it current.

  • S4 Storage · not built yet

    Simply Some Storage Service. One more S than you'd expect.

    On the roadmap. Nothing to click yet.

Built for operators who scan, not browse.

  • Provider-neutral

    Every screen works the same whichever provider a resource comes from.

  • Truth from the provider

    Resources stay at the provider. ows shows their real state, and pending actions are visible.

  • No surprise deletes

    Destructive actions at the provider are explicit and confirmed in place.

  • Calm density

    Information first, decoration never. Pages update live as data changes.

Two providers today. The plug-in model is open.

What ows supports at each provider right now. Networking and firewalls are read and written live; nothing is copied into ows.

ProviderServersDNSDomainsNetworkingFirewallLabels
Hetzner Cloud Yes Yes Not offered Yes Yes Yes
OVHcloud Yes Yes Yes Yes IPv4 Not yet

More providers are planned. Adding one means implementing a single connector interface; the UI builds its forms from what the connector declares. How providers plug in

Run it yourself, or let us run it.

The same software either way. The source is open; the hosted console is for people who'd rather not operate one more thing.

Self-hosted

Open source

Runs on low-power hardware such as a Raspberry Pi 4, with no CDNs and no external font hosts. You need Docker and the .NET 10 SDK.

git clone https://github.com/harryneufeld/open-web-services.git
cd open-web-services
docker compose up -d db
dotnet run --project src/OpenWebServices.Web
# first visit opens /setup to create the admin account
  • Migrations run at startup; existing resources are imported when you add a provider group.
  • Secrets are encrypted at rest. Back up the data protection keys with the database.
  • Release builds for 64-bit Raspberry Pi OS and Debian ship with an install script.

Hosted console

Registration soon

ows as a managed service at console.open-web-services.com. Bring your provider credentials, skip the server.

  • No installation, no updates to apply, no keys to back up.
  • Same features and same interface as the self-hosted version.
  • Pricing will be published when registration opens.
Open the console Sign-up opens soon.

Boring on purpose. Dependencies point inward.

ASP.NET Core with Blazor Server, EF Core on PostgreSQL, plain CSS and no JavaScript framework.

A provider is one connector behind a small set of ports for servers, DNS, networking, firewalls and domain registration. Capabilities are optional: when a provider has none, the UI says so instead of hiding the gap.

// Infrastructure: add a provider
class MyConnector : IProviderConnector
{
    // declare resource kinds and credential fields,
    // return IServerProvider and/or IDnsProvider
}
  1. WebBlazor Server, composition root
  2. InfrastructureEF Core, provider API clients, SSH, background sync
  3. ApplicationUse cases and ports
  4. DomainProvider groups, servers, zones, app installs. No dependencies.

Each layer depends only on the one below it.

Questions, answered plainly.

What is ows?
ows (Open Web Services) is an open source control plane for infrastructure at several hosting providers. You connect provider accounts and manage servers, DNS zones, domains, networking and firewalls in one web console.
Which hosting providers does ows support?
Hetzner Cloud (servers, DNS, networking, firewalls, labels) and OVHcloud (servers, DNS, domains, networking, IPv4 firewall). More providers are planned; each one is a single connector in the code.
Does ows move my servers or copy my data?
No. Resources keep living at the provider. ows imports and manages them through each provider's API, and networking and firewall settings are read and written live.
What do I need to self-host ows?
Docker for the PostgreSQL database and the .NET 10 SDK. ows runs on low-power hardware such as a Raspberry Pi 4 and needs no CDN or external font host. Release builds for 64-bit Raspberry Pi OS and Debian include an install script.
How are my provider credentials stored?
API tokens and server SSH keys are encrypted with ASP.NET Data Protection. Sign-in uses PBKDF2-hashed passwords and is rate-limited.
What does ows cost?
The source code is public on GitHub, and running it yourself costs nothing beyond your hardware and your provider bills. Pricing for the hosted console will be published when registration opens.
When can I sign up for the hosted console?
Registration for console.open-web-services.com opens soon. Until then you can self-host ows from the GitHub repository.

Your servers already live in more than one place.

Your console doesn't have to. Star the repo, open an issue, or send a connector for the provider you use.