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:
Local Development Server: Quickly test PySyft and prepare your server setup without launching an actual server. Refer to our local development guide
Beginner Friendly: Deploy a PySyft server on a local machine or a VM hosted in the cloud. Instructions are provided for different operating systems for your convenience:
Advanced: For an orchestrated deployment, we support Kubernetes. You can test this deployment in a local environment using k3d before progressing to a cloud-based deployment. Depending on your chosen cloud platform, please refer to the following: