3.3 KiB
3.3 KiB
Raspberry Pi 5 Docker Run
This server repository contains a Dockerized QSfera path for Raspberry Pi 5 and other 64-bit ARM Linux hosts.
Files used for this deployment:
Dockerfiledocker-compose.rpi5.yml.env.example
What This Runs
- QSfera server from this
Serversource tree. - A pinned production image tag by default:
qsfera-cloud-server:7.0.0-rpi5-stable. - Build metadata injected into the binary through Docker build args:
QSFERA_VERSION,QSFERA_EDITION, andQSFERA_BUILD_DATE. - QSfera config persisted under
/etc/qsferainside the container. - QSfera data persisted under
/var/lib/qsferainside the container. - Host-side config and data paths controlled by
QSFERA_RPI_CONFIG_PATHandQSFERA_RPI_DATA_PATH. - Host-side backend port bound only to
127.0.0.1:9200; external access should go through the reverse proxy and HTTPS domain.
Prerequisites On Raspberry Pi 5
- Install Docker Engine using the official Docker docs:
https://docs.docker.com/engine/install/debian/. - Install the Docker Compose plugin using the official Docker docs:
https://docs.docker.com/compose/install/. - Use a 64-bit OS. The compose file sets
platform: linux/arm64, and the Dockerfile builds withTARGETARCH=arm64. - Put
QSFERA_RPI_CONFIG_PATHandQSFERA_RPI_DATA_PATHon durable storage, not on a nearly full SD-card root filesystem. - Set
OC_URLto the public HTTPS URL used by clients and the reverse proxy. - Keep
QSFERA_EDITION=stableand a concreteQSFERA_VERSIONfor production rollouts. Leaving those unset falls back to the defaults in the compose file.
Start
Run from the Server directory:
cp .env.example .env
docker compose -f docker-compose.rpi5.yml up -d --build
Verify the image metadata before rollout:
docker compose -f docker-compose.rpi5.yml build
docker run --rm --entrypoint /usr/bin/qsfera qsfera-cloud-server:7.0.0-rpi5-stable version --skip-services
Stop
docker compose -f docker-compose.rpi5.yml down
Logs
docker compose -f docker-compose.rpi5.yml logs -f qsfera-cloud-server
Update After Pulling New Code
docker compose -f docker-compose.rpi5.yml up -d --build
Verify
Local backend status endpoint:
curl -k https://127.0.0.1:9200/status.php
External reverse-proxied status endpoint:
curl https://qsfera.example.com/status.php
Data Location
Docker bind mounts:
- host config:
${QSFERA_RPI_CONFIG_PATH} - container config:
/etc/qsfera - host data:
${QSFERA_RPI_DATA_PATH} - container data:
/var/lib/qsfera
For the current Raspberry Pi deployment inspected on 2026-06-08, the existing container uses:
- host config:
/mnt/data/qsfera/cloud-server/config - host data:
/mnt/data/qsfera/cloud-server/data - image:
qsfera-cloud-server:7.0.0-rpi5-stable - public URL:
https://qsfera.kusoft.xyz - loopback port:
127.0.0.1:9200
Reverse Proxy
The server is intentionally bound to loopback. Put Caddy, Nginx, Traefik, or another reverse proxy in front of it for external HTTPS access.
The inspected Raspberry Pi uses Caddy with this QSfera route:
qsfera.kusoft.xyz {
encode zstd gzip
handle {
reverse_proxy https://127.0.0.1:9200 {
transport http {
tls_insecure_skip_verify
versions 1.1
}
}
}
}