gitwtfhub

wtf is qnap-32k-containers?

laroy-sh/qnap-32k-containers — explained in plain English

Analysis updated 2026-05-18

0DockerfileAudience · ops devopsComplexity · 3/5Setup · moderate

TL;DR

Rebuilt Docker images of Pi-hole, Syncthing, and other apps that fix a crash affecting older 32 bit ARM QNAP NAS devices with a nonstandard memory page size.

Mindmap

mindmap
  root((qnap-32k-containers))
    Problem
      Exit code 139 crash
      32 bit ARM CPU
      32K memory pages
    Fix approach
      Keep upstream binaries
      Rebuild userland only
    Images
      Pi-hole
      Syncthing
      Ladder
      Stirling PDF
      Vaultwarden
    Tech Stack
      Docker
      Ubuntu 22.04
      ARMv7
    Audience
      QNAP NAS owners

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Run Pi-hole ad blocking on a TS-431P3 or TS-231P3 QNAP NAS without crashes.

REASON 2

Self host Syncthing file sync or Vaultwarden password management on an older QNAP device.

REASON 3

Read paywalled articles through a self hosted Ladder proxy on a 32K page kernel NAS.

REASON 4

Run Stirling PDF's web based PDF tools on hardware that rejects most modern container images.

What's in the stack?

DockerfileDockerUbuntuARMv7

How it stacks up

laroy-sh/qnap-32k-containersag-grid/ag-charts-server-side-examplecaspermeijn/wallabag-test-server
Stars0
LanguageDockerfileDockerfileDockerfile
Last pushed2026-03-132024-12-24
MaintenanceMaintainedStale
Setup difficultymoderatemoderateeasy
Complexity3/52/52/5
Audienceops devopsdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · moderate Time to first run · 30min

Only works on 32 bit ARM QNAP models with the 32K page kernel bug, requires Docker or Container Station.

The README does not state a license in the shown portion.

Wtf does this do

This project fixes a specific compatibility problem on certain QNAP network storage devices, such as the TS-431P3 and TS-231P3, that use older 32 bit ARM processors. On these devices, many normal Docker container apps crash the instant you try to run them, showing an exit code with no error message in the logs at all. The README explains that this happens for two reasons. First, these NAS devices use 32 bit ARM chips, so they can only run software built for that specific processor type, not the 64 bit or Intel style images most software ships today. Second, and more unusual, QNAP built the operating system on these models to use a much larger memory page size than standard Linux uses. Most modern container images, even ones built for the right processor, are built assuming the standard smaller page size, so they fail to load correctly and crash right away. The project includes a table showing which base system versions still work and which ones crash, based on testing on a real device. Rather than rebuilding each app from its source code, the project's approach is to keep the official binaries and files from each upstream project untouched wherever possible, and only rebuild the surrounding operating system layer using an older, compatible base system. This keeps updates simple: pulling in a newer version of the underlying app usually just means rerunning the build. The repository currently offers five ready made container images: a working version of Pi-hole, a network wide ad blocker, Syncthing, a file synchronization tool, Ladder, a tool for reading articles behind soft paywalls, Stirling PDF, a web based PDF editing tool, and Vaultwarden, a self hosted password manager compatible with Bitwarden. Each one includes example commands or a configuration file to run it, along with specific notes about quirks, such as which exact version to use or what settings are required for it to work properly. To use any of these images, you pull them from GitHub's container registry and run them the same way you would any other Docker container, using either a plain docker run command or a Container Station compose file on the NAS itself.

Yoink these prompts

Prompt 1
Explain why my Docker container crashes with exit code 139 on my QNAP TS-431P3 and how qnap-32k-containers fixes it.
Prompt 2
Help me write a Container Station compose file to run ghcr.io/laroy-sh/pihole-qnap on my QNAP NAS.
Prompt 3
Walk me through migrating my Pi-hole v5 settings to the qnap-32k-containers Pi-hole v6 image.
Prompt 4
Show me the docker run command to start Vaultwarden using ghcr.io/laroy-sh/vaultwarden-qnap on my NAS.

Frequently asked questions

wtf is qnap-32k-containers?

Rebuilt Docker images of Pi-hole, Syncthing, and other apps that fix a crash affecting older 32 bit ARM QNAP NAS devices with a nonstandard memory page size.

What language is qnap-32k-containers written in?

Mainly Dockerfile. The stack also includes Dockerfile, Docker, Ubuntu.

What license does qnap-32k-containers use?

The README does not state a license in the shown portion.

How hard is qnap-32k-containers to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is qnap-32k-containers for?

Mainly ops devops.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.