unsubbed.co

DebOps

Self-hosted email & newsletters tool that provides your Debian-based data center in a box. A set of general-purpose Ansible roles.

Open-source Debian infrastructure automation, honestly reviewed. No marketing fluff, just what you get when you hand Ansible a structure and tell it to manage your servers.

TL;DR

  • What it is: A collection of Ansible roles and playbooks for bootstrapping and managing Debian or Ubuntu infrastructure — from a single host to a full data center [1].
  • Who it’s for: Sysadmins and DevOps engineers who already know Ansible and want an opinionated, battle-tested framework for Debian-based environments. This is not for non-technical founders.
  • Cost savings: DebOps itself is free (open source). The savings are in engineering time — you get hundreds of pre-built, integrated roles instead of writing them from scratch. The infrastructure you manage still costs what it costs.
  • Key strength: Unusually deep integration between roles — PKI, firewalls, DNS, and applications are wired together from the start, not bolted on [README].
  • Key weakness: Steep prerequisite cliff. If you don’t already know Ansible, Debian administration, and have SSH key access to your hosts, DebOps offers you nothing. It’s a framework for people who already know what they’re doing.

What is DebOps

DebOps is a project started by Maciej Delmanowski, a Debian sysadmin who noticed in the early 2010s that no serious, general-purpose Ansible project existed for managing Debian environments. He started writing one for his own workplace, and it grew into DebOps [1].

The name is a portmanteau of “Debian” and “Operations” [1]. The project is Free and Open Source, dual-tracked on GitHub and GitLab with continuous integration on both. As of this review it has 1,382 GitHub stars — a small number by open-source standards, but this is not a tool competing for developer mindshare with flashy demos. It competes for adoption among experienced infrastructure engineers who read documentation carefully.

At its core, DebOps is three things:

  1. A library of Ansible roles — each managing one service or system aspect (firewall, PKI, databases, web servers, monitoring, etc.), written to be composed together
  2. A set of playbooks that apply those roles in a controlled, integrated way using Ansible inventory groups
  3. A CLI tool (debops command) installed via pipx or via the Ansible Galaxy collection, that provides project directory management and wraps ansible-playbook calls

You point it at a Debian or Ubuntu host (physical, VM, LXC container, or Docker) via SSH, and run the default playbook. DebOps handles the rest — but “the rest” assumes you’ve already set up SSH keys, configured your inventory correctly, and understand what the roles will do to your system [README].

Some of the applications DebOps manages out of the box: X.509 certificate management with Let’s Encrypt, a GitLab hosting platform, network monitoring via LibreNMS, and cloud file hosting via Nextcloud or ownCloud [README].


Why people choose it

No independent third-party reviews with user quotes exist in the material available for this article — all five source documents are different versioned copies of the DebOps project’s own philosophy page [1][2][3][4][5]. That’s itself a signal: DebOps is a specialist tool used by people who find it through Debian community channels, Ansible Galaxy, or word of mouth, not through review sites.

The honest reconstruction of why someone would choose DebOps comes from the project’s own stated philosophy, which is unusually candid [1]:

The author cites operations reality as the foundation. Maciej Delmanowski writes that he “came to learn that the requirements put forward by sysadmins are to be taken seriously, because they are the ones whose phone will ring in the middle of the night when your software breaks.” This is not marketing copy. It’s the design philosophy that explains why DebOps roles default to security-hardened configurations, why firewalls are set up before services, and why PKI is integrated rather than an afterthought [1].

The long-term thinking is unusual. The philosophy page quotes Enrico Zini, a Debian Developer, on writing software “as if it is going to become a part of human cultural heritage, developing beyond my capacity, eventually surviving me.” Whether or not DebOps achieves this, the goal shapes the design: roles are written to be composable and configuration-driven via Ansible inventory, so the code itself doesn’t need to change as environments evolve [1].

Why not just write your own Ansible roles? Most teams start by writing their own. Two years later they have 40 roles with inconsistent variable naming, no PKI integration, firewalls that don’t know about each other’s ports, and a DNS setup that was added as an afterthought. DebOps solves the coordination problem — roles share a common variable namespace and trust each other’s outputs [README].


Features

Based on the README and documentation:

Core capabilities:

  • Ansible roles for managing Debian/Ubuntu hosts: single server to multi-host clusters [README]
  • Support for physical machines, VMs, LXC containers, Docker containers [README]
  • Project directory structure (debops project init) for managing multiple environments with separate inventories [README]
  • CLI wrapper that runs Ansible with correct project paths, environment variables, and secrets handling

Infrastructure services managed:

  • X.509 PKI with Let’s Encrypt certificate automation [README][homepage]
  • Firewall management (ferm/nftables) integrated across all roles
  • DNS configuration across environments
  • SQL databases (PostgreSQL, MariaDB), NoSQL (Redis, others)
  • Web servers (nginx, Apache)
  • Virtualization: KVM/libvirt, Docker, LXC [README]
  • Git hosting via GitLab [README][homepage]
  • Network monitoring via LibreNMS [README][homepage]
  • Cloud file storage via Nextcloud or ownCloud [README][homepage]
  • LDAP/LDAP-based authentication across services
  • Mail server stack (Postfix, Dovecot — this is why the tool appears in some “email” categorizations)

Engineering quality signals:

  • CII Best Practices badge — an independent security and quality certification from the Linux Foundation [README]
  • REUSE-compliant licensing (clear per-file license headers) [README]
  • CI running on both GitHub Actions and GitLab Pipelines [README]
  • Available via pipx install debops[ansible] or ansible-galaxy collection install debops.debops [README]
  • Roles are designed for high customization via Ansible inventory variables — you rarely need to fork the role code [README]

What it doesn’t include:

  • A web UI. There is no dashboard, no visual interface, no API for non-CLI users.
  • A hosted SaaS offering.
  • Hands-off automation — you drive everything with debops run commands.

Pricing: SaaS vs self-hosted math

DebOps has no SaaS offering and no commercial license tier. The software is free. The cost equation is entirely about engineering time and infrastructure.

What you pay for:

  • The Linux VPS or bare-metal servers you’re managing (those cost what they cost regardless of which tool you use)
  • The time to learn Ansible properly before DebOps makes sense
  • The time to set up and maintain the DebOps project directory

What you save:

  • Rebuilding from scratch: a mature set of integrated Ansible roles for Debian infrastructure would take a team several months to write to equivalent quality. DebOps provides this at no software cost.
  • Avoiding commercial alternatives: Puppet Enterprise starts at hundreds per year for small teams. Red Hat Ansible Automation Platform runs into thousands. DebOps plus a Hetzner VPS is $0 software + $5–15/mo infrastructure.

Honest caveat: If you don’t have an experienced sysadmin on staff, the “savings” are theoretical. DebOps requires someone who can write and debug Ansible, manage SSH keys, troubleshoot firewalls, and interpret Ansible error output. The tool doesn’t reduce that requirement — it organizes and accelerates the work of people who already have those skills.


Deployment reality check

The quick start from the README is technically simple: docker run -it --rm debops/debops gets you an Ansible controller container, and debops run common --diff applies the base playbook [README]. Or use Vagrant for a local VM. These work.

The production path is harder to sketch because it depends heavily on what you’re managing and how many hosts. The general flow:

  1. Install DebOps on an Ansible controller host (pipx install debops[ansible])
  2. Initialize a project directory (debops project init ~/projects/my-infra)
  3. Configure the Ansible inventory file to list your target hosts
  4. Run the base playbook (debops run site) — this applies firewall, PKI, DNS, and other foundational roles

Where it gets complicated:

  • DebOps’s security defaults are strict. The README explicitly warns that “the firewall created by DebOps blocked you from accessing the hosts” during initial deployments, and recommends having out-of-band console access as a fallback [README]. This is not a bug — it’s the tool being secure — but it will bite new users.
  • Password authentication is disabled by SSH configuration. SSH key access must already be working before DebOps touches anything [README].
  • The documentation is comprehensive (the official docs site is the primary interface for the project) but it requires patience. This is not a tool with a YouTube tutorial ecosystem.
  • The role count is large. Understanding what the default playbook will do to a fresh host requires reading documentation, not just running the command and hoping.

Realistic time estimate:

  • Experienced Ansible user, Debian admin: 2–4 hours to a first working environment
  • Intermediate sysadmin learning Ansible alongside DebOps: days, not hours
  • Non-technical user: not applicable

Pros and cons

Pros

  • Genuinely integrated. Unlike a collection of independent Ansible roles, DebOps roles are designed to cooperate — PKI certificates are automatically available to services, firewall rules are coordinated, DNS is wired through [README][homepage].
  • Debian-native philosophy. The project is written by Debian users for Debian users. It follows Debian conventions, security defaults, and packaging assumptions rather than working around them [1].
  • Free software, no license traps. No commercial tier that gates important features, no “community vs. enterprise” split, no surprise restrictions on commercial use [README].
  • CII Best Practices certified. An independent quality signal that the project takes security, testing, and maintenance seriously [README].
  • Long-term thinking. The project has been running since at least 2014 based on the philosophy references [1], with active CI on multiple platforms.
  • Dual-hosted. Available on both GitHub and GitLab, reducing single-platform lock-in for contributors [README].
  • Installs cleanly. Available via pipx (for the full package) or ansible-galaxy (for the collection) — no custom installation scripts [README].

Cons

  • No web UI. There is no way to interact with DebOps outside the command line. For teams that need visibility dashboards, approval workflows, or non-CLI management, this isn’t the right tool.
  • Ansible prerequisite is non-negotiable. DebOps does not abstract away Ansible — it adds structure on top of it. You need to understand Ansible inventory, playbooks, and variables before DebOps makes sense.
  • Small community. 1,382 GitHub stars is modest. The DebOps mailing list and IRC/Matrix channels exist but are not high-volume. When you hit an unusual problem, community support may be slow.
  • Debian/Ubuntu only. If you’re running CentOS, RHEL, Alpine, or any non-Debian family, DebOps has nothing for you.
  • Documentation depth over onboarding ease. The docs are thorough but structured for reference, not for getting started quickly. The quick start guide exists but there’s no “five minutes to a working environment” path through the complexity.
  • No third-party review ecosystem. The absence of independent reviews isn’t just a sourcing problem for this article — it reflects limited adoption outside the Debian/Ansible community. If you need vendor-independent evaluations before adopting a tool, you won’t find them for DebOps.
  • Firewall-first defaults can surprise you. The defaults are secure but aggressive. Budget time for troubleshooting access issues on first deployment [README].

Who should use this / who shouldn’t

Use DebOps if:

  • You manage Debian or Ubuntu servers and already write Ansible roles regularly.
  • You want a structured, opinionated framework instead of accumulating an ad-hoc role collection.
  • You’re building internal infrastructure — mail servers, GitLab, Nextcloud, LibreNMS — on Debian and want integrated PKI, firewall, and DNS from the start.
  • You value long-term maintainability and security defaults over fast initial setup.
  • You have out-of-band console access to your servers (critical for recovery when firewall rules block you during setup).

Don’t use DebOps if:

  • You’re a non-technical founder without a sysadmin on the team. This tool will not help you.
  • You’re running anything other than Debian or Ubuntu.
  • You want a web UI to manage your infrastructure.
  • You need commercial support, an SLA, or an enterprise contract.
  • You’re running fewer than 3-5 servers and the complexity overhead isn’t worth it — plain Ansible roles without the DebOps framework are probably enough.
  • You need fast time-to-working-infrastructure. The learning curve is real.

Consider alternatives if:

  • You want infrastructure automation with a web UI (look at AWX/Ansible Tower).
  • Your team uses Red Hat-family Linux (look at Puppet, Chef, or Salt).
  • You want declarative infrastructure-as-code that can manage cloud resources alongside servers (look at NixOS + NixOps, or Terraform + generic Ansible roles).

Alternatives worth considering

  • Plain Ansible roles (no framework): If you have fewer servers and simpler needs, curated individual roles from Ansible Galaxy without the DebOps structure may be less overhead.
  • AWX / Ansible Automation Platform: Adds a web UI, RBAC, job scheduling, and a REST API on top of Ansible. Red Hat’s enterprise offering; AWX is the open-source upstream. More accessible to non-CLI users at the cost of complexity.
  • Puppet (open source): A configuration management alternative to Ansible. Declarative language, agent-based, long history in enterprise Debian/Ubuntu environments. More complex to get started but widely documented.
  • SaltStack: Another Ansible alternative. Faster for large fleet management due to the agent model. Less Debian-specific than DebOps.
  • NixOS + NixOps: For teams who want fully reproducible, declarative system configuration. Different paradigm — you declare the desired system state in Nix expressions. Steep learning curve but extremely powerful for reproducibility.
  • Terraform + ad-hoc Ansible: For cloud-native teams who provision infrastructure with Terraform and configure it with Ansible without an opinionated framework. More flexible, less integrated.

For Debian-specific infrastructure management at small-to-medium scale, the honest shortlist is DebOps vs. rolling your own Ansible roles. DebOps wins if you value integration and are willing to commit to its conventions. Rolling your own wins if you need flexibility or have non-Debian targets.


Bottom line

DebOps is a serious piece of engineering for a narrow audience. It solves a real problem — the fragmentation and inconsistency that accumulates in every team’s homegrown Ansible role collection — and it solves it in a disciplined, security-first way that reflects more than a decade of Debian sysadmin experience [1]. The integration between roles (PKI, firewall, DNS, services all knowing about each other) is genuinely valuable and hard to replicate without significant engineering investment.

But the audience is unambiguously technical. If the phrase “Ansible inventory groups” doesn’t mean something concrete to you, this tool is not yours yet. There’s no cloud offering, no GUI, no customer success team to onboard you. What there is: well-documented open-source software, CII Best Practices certification, and a community of Debian engineers who take infrastructure quality seriously. For that audience, DebOps is worth evaluating carefully. For everyone else, start somewhere simpler and come back when Ansible inventory files feel comfortable.


Sources

  1. DebOps Philosophy — DebOps v3.3.0 documentation (latest/master). https://docs.debops.org/en/master/meta/philosophy.html
  2. DebOps Philosophy — DebOps v3.3.0 documentation (stable-3.3). https://docs.debops.org/en/stable-3.3/meta/philosophy.html
  3. DebOps Philosophy — DebOps v3.0.12 documentation. https://docs.debops.org/en/stable-3.0/meta/philosophy.html
  4. DebOps Philosophy — DebOps v3.1.7 documentation. https://docs.debops.org/en/stable-3.1/meta/philosophy.html
  5. DebOps Philosophy — DebOps v2.1.9 documentation. https://docs.debops.org/en/stable-2.1/meta/philosophy.html

Primary sources:

Features

Integrations & APIs

  • REST API