# NextcloudPi is a build pipeline for preconfigured Nextcloud images

> Shell scripts that assemble a working Nextcloud server for a Raspberry Pi, an ARM board, an LXD container or a virtual machine, with most of the decisions already made for you.

**nextcloud/nextcloudpi** — 📦 Build code for NextcloudPi: Raspberry Pi, Odroid, Rock64, curl installer...

- Repository: https://github.com/nextcloud/nextcloudpi
- Website: https://nextcloudpi.com
- Stars: 2,948 · Forks: 319
- Language: Shell
- License: not declared
- Published: 2026-10-07 · Updated: 2026-10-07 · Language: en
- Canonical page: https://hysenlabs.com/projects/nextcloud-nextcloudpi

## What the repository actually is: build code, not the server

The GitHub description says it plainly: build code for NextcloudPi. The README repeats it as this being the build code for the open-source community project, and points at nextcloudpi.com for the documentation and a downloads page for the artifacts.

NextcloudPi is a ready-to-use image for virtual machines, Raspberry Pi, Odroid HC1, Rock64 and other boards. It also generates LXD and LXC containers, and there is an install script for the latest supported Debian-based system. So the deliverable is a prebuilt image or a container, and this repository is what assembles it. The project page is nextcloudpi.com and the documentation lives at docs.nextcloudpi.com, which the README notes is written entirely by volunteers.

The tree is consistent with that description. There is `install.sh`, `lamp.sh`, `ncp.sh`, `post-inst.sh` and `update.sh` at the top level, a `build/` directory for the image build, `ncp-app/` holding an application icon, `ncp-web/` for the web panel, `staged_rollouts/`, `updates/`, `generate_cohortes.sh`, `i18n/` for translated README files, and `tests/`. The primary language is Shell, and the topics are arm, nextcloud, qemu, raspbian and x86-64.

GitHub reports 2940 stars, 318 forks and 229 open issues, with a last push on 2026-09-07. That open-issue count is high relative to the star count, and for a project of this kind it is not surprising: the issues are mostly hardware and upgrade problems on boards nobody has in a lab.

## The feature list is the product, and it is a list of decisions

Reading the feature list is the fastest way to understand what you are agreeing to. The core list names Raspberry Pi OS or Debian 12 Bookworm, Nextcloud, Apache with HTTP2 enabled, PHP 8.1, MariaDB, a Redis memory cache, automatic HTTPS redirection, APCu, PHP Zend OPcache with a file cache, HSTS, cron jobs, sane configuration defaults, full emoji support, Postfix email, and an `ncp-config` TUI for RAM logs and USB drive setup.

The extras list is longer and more opinionated: a setup wizard, the NextcloudPi web panel, Wi-Fi setup, RAM logs, automatic security updates enabled by default, Let's Encrypt certificates, Fail2Ban, UFW, dynamic DNS for no-ip.org, freeDNS, duckDNS, spDYN and Namecheap, dnsmasq with a cache, ModSecurity, NFS and SAMBA sharing, USB automount, BTRFS formatting plus scheduled and automatic snapshots with sync, scheduled rsync, UPnP port forwarding, Lynis and Debsecan audits, ZRAM, and SMART monitoring.

You configure all of that through the web interface on HTTPS port 4443, or from a terminal:

```bash
sudo ncp-config
```

That is the central trade of the project. You get a working, hardened, snapshotting file server assembled in one image, and in exchange you inherit an opinionated stack, an extra management port to remember, and a set of components you did not choose and now have to maintain.

One caveat on the feature list itself, which is worth reading carefully. It names PHP 8.1 and Debian 12 Bookworm, while the releases published in 2026 list PHP 8.3 and Debian trixie, with v1.58.0 adding support for updating to Debian 13 through dist-upgrade. Both statements sit in this repository and neither is marked as historical. The feature list appears not to have been kept in step with the release notes, so treat the release notes as the current description of what ships and the feature list as an older summary.

## Building an image requires QEMU and about two dozen packages

The README lists the build packages before the build instructions, which tells you the shape of the task: apt-utils, apt-transport-https, build-essential, binfmt-support, binutils, bzip2, ca-certificates, chroot, cron, curl, dialog, lsb-release, jq, git, psmisc, procps, wget, whiptail, qemu and qemu-user-static.

The last two matter most. `qemu-user-static` with `binfmt-support` is how a build host produces an ARM image on x86 hardware, which is the whole reason the topics include qemu. The rest are an ordinary build and chroot toolchain, with dialog and whiptail confirming that the build scripts are interactive rather than purely declarative.

The Raspberry Pi image build is three commands:

```bash
git clone https://github.com/nextcloud/nextcloudpi.git
cd nextcloudpi
./build/build-SD-rpi.sh
```

ARM boards go through a separate script that takes a board code name:

```bash
./build-SD-armbian.sh odroidxu4   # supported board code name
```

LXD images have their own script at `./build/build-LXD.sh`. If you would rather not build anything, the README notes NextcloudPi can be installed on any architecture running the latest Debian, with the warning that this assumes a clean Debian install and offers no rollback method. The install path is a pipe from raw.githubusercontent into bash, run as root or prefixed with sudo:

```bash
curl -sSL https://raw.githubusercontent.com/nextcloud/nextcloudpi/master/install.sh | sudo bash
```

Executing a shell script straight from the network as root is the standard shape for this kind of one-liner installer, and worth reading `install.sh` in the tree first if you would rather know what it does before it runs.

## LXD and Proxmox are the two paths for virtualised use

For virtual machines, the project produces a downloadable LXC image. Importing one locally takes three commands, with the version number left as a placeholder you replace:

```bash
# Imports the LXC image, replace the X's with version number
lxc image import "NextcloudPi_LXD_vX.XX.X.tar.gz" --alias "nextcloudpi"

# Launches a container from the image
lxc launch "nextcloudpi" ncp

# Starts the container you've launched from the imported image
lxc start ncp
```

The two-step launch then start is LXD's own model rather than something specific to NextcloudPi.

Proxmox is documented two ways. The first is the official route: in the Proxmox web interface, pick a storage pool with CT Templates enabled, go to CT Templates, use Download from URL and paste the link to the latest LXC image from the releases page. The README adds that you can paste the corresponding md5 sum into a Checksum field so Proxmox verifies the download was not corrupted.

The second route delegates to community-scripts, formerly tteck, whose helper script installs the LXC container for you:

```bash
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/nextcloudpi.sh)"
```

The README states that project's default settings as 2GB RAM, 8GB storage and 2vCPU, and immediately hedges that you should check their own website because that may have changed. That hedge is worth respecting: a third-party script's defaults are outside this repository's control.

One more thing on the container side. The README carries a section titled Docker has been discontinued, linking to a Nextcloud forum announcement about discontinuing the Docker version, while the tree still contains a `.dockerignore` file. Treat the forum announcement as authoritative and the leftover file as a build remnant.

## The most recent release shipped without downloadable images

This is the part that should change how you approach an upgrade, and it is only visible in the release notes rather than the README.

The v1.58.0 notes, published in August 2026 with an apology for the delay, say the release does not have downloadable images because of unsolved issues with the build system, and instruct users to download an earlier version and upgrade from there by running `ncp-update`. That release lists Nextcloud 33.0.2, PHP 8.3, Debian trixie and Armbian, and credits two changes to a contributor: support for updating to Debian 13 through dist-upgrade, and disabling OCSP stapling for self-signed certificates.

The prior release, v1.57.1 from April 2026, is a conventional fixes release and gives a much better sense of what maintenance here looks like: fail gracefully when parsing an invalid backup cache, properly escaping all bash arguments in ncp-web, updating the sury repository key from package sources, and fixing a broken ncp-preview-generator cronjob script. Security escaping of shell arguments in the web panel is a good example of the category of bug this codebase has to get right, since `ncp-web/` contains PHP that ends up calling system tools.

Between them, the releases tell you the upgrade path is `ncp-update` from a working image rather than a fresh install, and that at least one recent version cannot be downloaded at all. Start from an earlier release and update upward, and read `changelog.md` in the tree for the full list.

## Conclusion

The decision this project asks you to make is about defaults rather than capability. NextcloudPi gives you a server with HTTPS redirection, a firewall, Fail2Ban, a web panel at port 4443 and a TUI called `ncp-config`, and the price is that almost every one of those choices was made for you. If you want a NAS-class box that boots working, that is a strong deal. If you need to run Nextcloud on an existing Debian host with your own Apache, database and TLS termination, this is the wrong tool and plain Nextcloud is the right one. Two practical checks before you commit: the README's feature list still names PHP 8.1 and Debian 12 Bookworm while the 2026 releases ship PHP 8.3 and Debian trixie, and the most recent release shipped without downloadable images because of build system problems. Read `changelog.md`, start from the last release that has an image, and use `ncp-update` to move forward.

## FAQ

### What is the difference between Nextcloud and NextcloudPi?

Nextcloud is the server software itself, and NextcloudPi is a build project that packages it into a ready-to-use image with the surrounding stack already chosen and configured. The NextcloudPi repository is shell-based build code that assembles an image containing Nextcloud plus Apache with HTTP2, MariaDB, Redis, PHP with APCu and OPcache, automatic HTTPS redirection, Fail2Ban, UFW and BTRFS snapshots, among other things.

### Can I run Nextcloud on a Raspberry Pi?

Yes, that is one of the primary targets. The README describes NextcloudPi as a ready-to-use image for Raspberry Pi along with Odroid HC1, Rock64 and other boards, and there is a dedicated build script, `./build/build-SD-rpi.sh`, that produces the Raspberry Pi image. Boards other than the Pi are built through `./build-SD-armbian.sh` with a board code name, such as odroidxu4.

### Can Nextcloud be used as a NAS?

NextcloudPi is packaged specifically for that use. Its extras list includes SAMBA sharing for Windows, Mac and Linux, NFS ready for mounting over the LAN, USB automount, BTRFS formatting with scheduled and automatic snapshots plus snapshot sync, scheduled rsync, ZRAM, SMART hard drive health monitoring, and dnsmasq with a DNS cache. SAMBA, NFS and USB automount are what let other machines on the network see the storage directly.

## Sources

- [Issues](https://github.com/nextcloud/nextcloudpi/issues)
- [nextcloud/nextcloudpi on GitHub](https://github.com/nextcloud/nextcloudpi)
- [Project website](https://nextcloudpi.com)
- [README](https://github.com/nextcloud/nextcloudpi/blob/master/README.md)
- [Releases](https://github.com/nextcloud/nextcloudpi/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/nextcloud-nextcloudpi
