Install on Raspberry Pi
Install the Roboflow Inference Server on a 64-bit Raspberry Pi 4 or 5 with Docker, and what performance to expect.
The Docker examples on this page publish port 9001 on localhost. For clients on another machine, deliberately change the mapping to a reachable host address and configure server access.
Inference works on the Raspberry Pi 4 Model B and Raspberry Pi 5, as long as you use the 64-bit version of the operating system. If your SD card is big enough, we recommend the 64-bit "Raspberry Pi OS with desktop and recommended software" version.
Once you have installed the 64-bit OS, install Docker, then use the Inference CLI to select, configure, and start the correct Inference Docker container automatically:
pip install inference-cli
inference server startThe server is reachable only from this device by default. inference server start publishes port 9001 on 127.0.0.1, so requests from a laptop or another host on the same network are refused. To reach it over your LAN, start it with inference server start --bind-address 0.0.0.0 (or publish the container port as -p 0.0.0.0:9001:9001) - and read Securing a self-hosted server first, because the server has no authentication by default and runs Workflows Custom Python blocks.
Hardware acceleration
Inference does not yet support hardware acceleration on the Raspberry Pi. Expect about 1 FPS on a Pi 4 and 4 FPS on a Pi 5 for a "Roboflow 3.0 Fast" object detection model (equivalent to a "nano" sized YOLO model).
Larger models like Segment Anything and VLMs like Florence-2 will struggle on the Pi's compute. If you need higher framerates or bigger models, consider an NVIDIA Jetson.
Manually starting the container
If you want more control over the container settings, start it yourself:
sudo docker run -d \
--name inference-server \
--read-only \
-p 127.0.0.1:9001:9001 \
--volume ~/.inference/cache:/tmp:rw \
--security-opt="no-new-privileges" \
--cap-drop="ALL" \
--cap-add="NET_BIND_SERVICE" \
roboflow/roboflow-inference-server-cpu:latestDocker Compose
If you use Docker Compose for your application, the equivalent YAML is:
Next steps
Run a model against your new server.
Docker configuration options for ports, caching, and model limits.
Securing a self-hosted server before you expose it beyond localhost.
Last updated
Was this helpful?