# Pulumi Code and Ansible Playbook for Nextcloud deployment (bare-metal + minimal Docker) — v3.2 released

**URL:** <https://help.nextcloud.com/t/pulumi-code-and-ansible-playbook-for-nextcloud-deployment-bare-metal-minimal-docker-v3-2-released/242843>\
**Category:** 📑 How to\
**Tags:** external\_storage, s3, hosting, office, onlyoffice\
**Created:** [April 3, 2026, 1:54am UTC](https://help.nextcloud.com/t/pulumi-code-and-ansible-playbook-for-nextcloud-deployment-bare-metal-minimal-docker-v3-2-released/242843 "2026-04-03T01:54:44Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Reiner\_Nippes](https://help.nextcloud.com/user_avatar/help.nextcloud.com/reiner_nippes/32/9479_2.png) [@Reiner\_Nippes](https://help.nextcloud.com/u/Reiner_Nippes)\
**Post date:** [April 3, 2026, 1:54am UTC](https://help.nextcloud.com/t/pulumi-code-and-ansible-playbook-for-nextcloud-deployment-bare-metal-minimal-docker-v3-2-released/242843/1 "2026-04-03T01:54:45Z")

</div>

## Nextcloud AIO BIB — All-in-One But-in-Big

### Ansible Playbook for Nextcloud deployment + Pulumi-based cloud provisioning

Hey everyone 👋

I’d like to announce the release of **v3.0** of my Ansible playbook for deploying Nextcloud — primarily on **bare metal** , without the all-in-one Docker approach.

**Repository:** [GitHub - ReinerNippes/nextcloud: Ansible playbook to install nextcloud, php, nginx or apache, mariadb or postgres, redis-server, onlyoffice or collabora office · GitHub](https://github.com/ReinerNippes/nextcloud)

### What is this?

An Ansible playbook (with optional Pulumi-based cloud provisioning) that installs a full Nextcloud stack directly on bare metal or VMs. The core components — Nextcloud, PHP, database, Redis, webserver — all run natively on the host. Some companion services (Nextcloud Office/Collabora, OnlyOffice, Talk Recording) run in containers, and more may follow where it makes sense.

The playbook sets up:

- **Nextcloud** (latest)

- **nginx** or **Apache**

- **PHP** (current recommended version)

- **PostgreSQL** or **MariaDB**

- **Redis** (or Valkey on RHEL-based systems)

- **Let’s Encrypt** via acme.sh (or self-signed certs)

- **Nextcloud Talk** with High Performance Backend (HPB)

- **Nextcloud Office** (Collabora) 🐳

- **OnlyOffice** 🐳

- **Talk Recording** 🐳

- **Fulltextsearch** with Elasticsearch

- **Notify Push**

- **ExApps** (HaPR Daemon) 🐳

- **Restic Backup**

🐳 = runs in a container

Ready to log in in less than 20 minutes.

### Why this approach?

There are great fully containerized solutions out there (Nextcloud AIO, etc.), but some of us prefer or need the core stack running natively — for performance, compliance, full control, or because that’s how our infrastructure works. Where upstream only provides container images (Office suites, recording), this playbook uses Docker for those specific services.

### Back after 6 years

Some of you may remember the original version of this playbook. After a **6-year pause** , I’ve completely overhauled it and brought everything up to current standards:

- Support for **Ubuntu 24.04, Debian 12/13, CentOS 10, AlmaLinux 10, RockyLinux 10**

- Modern PHP, PostgreSQL, and Nextcloud versions

- Reworked roles for Talk, OnlyOffice, Nextcloud Office, Fulltextsearch, and more

- Added **Pulumi-based cloud provisioning** for Hetzner and Scaleway (infrastructure-as-code)

- Multi-server support (dedicated coturn, signaling, OnlyOffice servers)

- Performance tuning playbook included

### What’s next

I’m actively working on adding:

- 🔲 **Whiteboard** integration

- 🔲 **CrowdSec** for intrusion prevention

- 🔲 **S3 primary storage** support

- 🔲 **SMTP relay server** setup

- 🔲 Additional **cloud providers** (AWS, DigitalOcean, …)

**Feature requests are very welcome!** Open an issue on GitHub or reply here.

### Documentation

The repository includes detailed documentation for each component:

- [Database setup (PostgreSQL / MariaDB)](https://github.com/ReinerNippes/nextcloud/blob/master/docs/DATABASE-README.md)

- [PHP & PHP-FPM configuration](https://github.com/ReinerNippes/nextcloud/blob/master/docs/PHP-README.md)

- [Nextcloud core settings](https://github.com/ReinerNippes/nextcloud/blob/master/docs/NEXTCLOUD_README.md)

- [TLS / Let’s Encrypt](https://github.com/ReinerNippes/nextcloud/blob/master/docs/TLS-CERT-README.md)

- [Nextcloud Talk & HPB](https://github.com/ReinerNippes/nextcloud/blob/master/docs/TALK-README.md)

- [Nextcloud Office (Collabora)](https://github.com/ReinerNippes/nextcloud/blob/master/docs/NEXTCLOUDOFFICE-README.md)

- [OnlyOffice](https://github.com/ReinerNippes/nextcloud/blob/master/docs/ONLYOFFICE-README.md)

- [Redis](https://github.com/ReinerNippes/nextcloud/blob/master/docs/REDIS-README.md)

- [Docker components](https://github.com/ReinerNippes/nextcloud/blob/master/docs/DOCKER-README.md)

- [Dynamic inventory & cloud provisioning](https://github.com/ReinerNippes/nextcloud/blob/master/docs/DYNAMIC-INVENTORY-README.md)

- [OS-specific notes](https://github.com/ReinerNippes/nextcloud/blob/master/docs/OS_README.md)

- [Pre-check role](https://github.com/ReinerNippes/nextcloud/blob/master/docs/PRECHECK-README.md)

**GitHub:** [GitHub - ReinerNippes/nextcloud: Ansible playbook to install nextcloud, php, nginx or apache, mariadb or postgres, redis-server, onlyoffice or collabora office · GitHub](https://github.com/ReinerNippes/nextcloud)

* * *

Happy Self-Hosting! 🚀

---

<div class="post-metadata">

**Author:** ![Reiner\_Nippes](https://help.nextcloud.com/user_avatar/help.nextcloud.com/reiner_nippes/32/9479_2.png) [@Reiner\_Nippes](https://help.nextcloud.com/u/Reiner_Nippes)\
**Post date:** [May 5, 2026, 5:55pm UTC](https://help.nextcloud.com/t/pulumi-code-and-ansible-playbook-for-nextcloud-deployment-bare-metal-minimal-docker-v3-2-released/242843/2 "2026-05-05T17:55:01Z")

</div>

# v3.1 and v3.2 are out — here’s what’s new 🚀

Since the v3.0 announcement, two more releases have landed. Here’s a quick overview:

## v3.1

The big theme was modularity and broader OS support:

- Whiteboard role — Excalidraw-based collaborative whiteboard (Docker + reverse proxy), collocated or dedicated server

- Office co-hosting refactor — nextcloudoffice and onlyoffice roles now support both collocated and dedicated modes with auto-detection

- Nextcloud role split — the monolithic nextcloud role is now split into nextcloud\_prepare, nextcloud\_install, and nextcloud\_app for better maintainability

- Custom Ansible collection (reinernippes.nextcloud) — all raw php occ calls replaced with idempotent typed modules (occ\_app, occ\_config\_system, occ\_user, …)

- openSUSE Leap 16 support — full coverage across all roles including Valkey (Redis fork), PHP packages, and Apache

- New firewall role — disables firewalld on openSUSE; placeholder for future per-server port management

- Elasticsearch upgraded 7 → 9, various Redis/Valkey config fixes, TLS cert provisioning for office/whiteboard hosts

## v3.2

Focus shifted to infrastructure maturity — dedicated/managed services and cloud provisioning:

- Euro-Office Document Server — new eurooffice role for the OnlyOffice-compatible Euro-Office suite, mirroring the onlyoffice architecture. Tested on Debian 13, Rocky 10, CentOS 10, openSUSE Leap 16

- MariaDB Analyzer — new mariadb\_analyzer role for live tuning analysis (mirrors postgres\_analyzer), with hardware-aware recommendations for InnoDB buffer pool, connections, threads, and more

- Dedicated DB & Redis servers — now fully functional — PostgreSQL with dynamic source-IP detection for pg\_hba.conf (via ip route get), scram-sha-256 auth, TCP-mode Redis bound to the private interface

- Managed database/Redis support — new nextcloud\_db.managed flag for external services (AWS RDS, Scaleway Managed PostgreSQL/MySQL, etc.)

- Pulumi stack examples split — Pulumi.nextcloud.yaml.example replaced by three focused examples: Hetzner all-in-one, Hetzner multi-tier (DB/Redis on private network), Scaleway + Cloudflare DNS + managed services

- Hetzner: intern-only servers & per-server firewalls — servers without public rules are labelled intern\_only=true; one merged firewall per server removes the previous 5-firewalls limit

Breaking changes in v3.2: default database type changed from mysql to pgsql; default PostgreSQL version bumped to 18.

* * *

Full changelogs and documentation are in the repository. Feedback and feature requests welcome — either here or as a GitHub issue!
