Deployment Guide

Estimated reading time: 5’

1. Introduction

Welcome to the PySyft Deployment Guide. This guide is designed to assist you in deploying PySyft across various environments efficiently. Whether you’re new to PySyft or an experienced user, this guide has something for you.

For beginners, we provide quick deployment examples on popular operating systems, whether on a local machine or a virtual machine (VM), using tools like Docker or Podman. These examples will help you get started with minimal hassle.

For advanced users, we delve into production deployments, offering detailed discussions on deploying PySyft using Kubernetes and other scalable solutions.

Additionally, a comprehensive troubleshooting guide is included to help you resolve common issues. The Frequently Asked Questions (FAQ) section provides further assistance, ensuring a smooth deployment process.

2. Technical Requirements

Depending on your operating systems, please identify what options are suitable for you given the support matrix below.

Supported OS Docker Podman Kubernetes
Linux
RHEL - -
MacOS
Windows - -

3. Basic System Requirements

Assuming a simple setup, with data hosted not exceeding 1GB, we recommend the following requirements.

Note

If you would like to host more data, or enable for particularly expensive computations, you might need to scale it further.

3.1. Resources

A VM or local machine with the following configurations:

  • 8 Core CPUs

  • 16GB RAM

  • 300 GB hard disk space

  • Debian or RHEL distribution, MacOS or Windows

3.2. Network requirements

For a VM, the following network security rules should be configured:

  • SSH: port 22

  • Open HTTP Port 80

For a local machine, we are currently working on a remote tunneling solution, please reach out on Slack for more questions!

Opening HTTP Port (80)

We need to launch the application in port 80, so that we allow incoming traffic. Since by SELinux, standard users cannot launch applications directly on ports <1024 without super user access. Instead of opening port for the standard user, we could do port forwarding such that the standard user could launch in an unprivileged port for security reasons.

If you need instructions on how to verify that Podman is running on Port 80, please refer to the Troubleshooting guide.

4. Which deployment solution should I choose?

The deployment strategy for PySyft can be customized to meet diverse needs, considering individual requirements, resource availability, and hardware limitations. If the guide below does not fully cover your needs or if you have questions, please reach out to us via Slack for support.

PySyft is a containerized application that can be deployed directly using Docker or Podman, or it can leverage orchestration capabilities via Kubernetes:

  • 🐳 Docker: A software platform for building applications based on containers.

  • 🦦 Podman: A daemonless container engine for developing, managing, and running OCI Containers on Linux systems.

  • ☸️ Kubernetes: An open-source system for automating the deployment, scaling, and management of containerized applications.

Depending on your step and use-case, you may proceed with: