D. Deploy using Podman (RHEL)
This guide helps you deploy a Datasite server on your local machine or a virtual machine hosted in the cloud that is running a Redhat distribution.
Prerequistes
Podman installation: check out the Podman Installation Guide and follow the instructions to install Podman on your system
If you encounter issues installing podman, please refer to the Troubleshooting guide to resolve common issues we have noticed while installing Podman in Redhat based systems.
Test Podman works
To test your prerequisites were properly installed, try to run:
podman ps
This should not return any error. If it does, please check you have the right permissions to run Podman commands.
Server Deployment
A one-liner convenience script is provided to launch your server using Docker. You can read the script before executing it.
Step 1: Download script
Downloaded it as follows:
curl -o setup.sh https://raw.githubusercontent.com/OpenMined/PySyft/syft-setup-script/scripts/podman-setup.sh
Step 2: Execute script
To deploy your server, a range of arguments are available to setup the type of server you would like to launch and its profile:
--version
or-v
: version of PySyft you’d like to setup--name
or-n
: an arbitrary name you’d like to give the server--side
or-s
: high or low (Default ishigh
if not specified)--root-password
or-password
: The password you’d like to set for the root user (Default ischangethis
if not specified)--root-email
or-email
: The email you’d like to set for the root user (Default isinfo@openmined.org
if not specified)--type
or-t
:datasite
orgateway
--port
or-p
: The intended port to be assigned
bash setup.sh -v {{VERSION}} -n {{SERVER_NAME}} -s {{SERVER_SIDE}} -t {{SERVER_TYPE}} -p {{PORT}} --password {{PASSWORD}} --email {{EMAIL}}
Note:
You can visit this part of the documentation to understand the different server types and their roles, and also the different server sides.
Example:
An example of this command will look like below:
curl -o setup.sh https://raw.githubusercontent.com/OpenMined/PySyft/syft-setup-script/scripts/docker-setup.sh && bash setup.sh -v 0.8.2-beta.6 -n my_server_1 -s high -t datasite -p 8081 --password mypassword --email myemail
Using lingering mode
Podman exits rootless containers when user session ends; a fix is to run lingering mode with the following command:
loginctl enable-linger $UID
. More information on this issue is available here and this troubleshooting section.
Launch client in Jupyter Notebook
In this step, you need a client server in order to interact with the PySyft server you just deployed. Here, the client consists of a Jupyter notebook running the same version of PySyft as the server served as a container.
This is a convenient setup, but you can as well launch your own Jupyter Notebook in an environment with Python3.10+ and the desired PySyft version.
To use the container approach to start the client:
podman run --rm -it --network=host docker.io/openmined/syft-client:${VERSION}
where ${VERSION}
is the version of PySyft Client you’d like to run. It must be the same as you passed before at deployment step.
Keeping the notebook running
Often, the jupyter notebook instance dies once you exit the terminal. To make it long running even after you close the terminal for easy access, consider running the command in a screen or tmux session. See this link for more information on how to use screen: Screen Command or tmux: Tmux Command.
Accessing the notebook
If you launched the command above on your local machine, you should see the local URL where the notebook is running and access it in the browser.
If you are running on a VM, it might require extra steps to access the notebook in your local browser. Considering that the above command is running a pre-packaged Jupyter notebook in a container that is mapped to the host network, there are several ways to access the notebook in your local browser.
How to reach your remote notebook in browser
You can use SSH port forwarding to access the notebook in your local browser. See this link for an example on how to do this: Jupyter SSH Port Forwarding
You could also open the port 8888 in the Network Security Group of the VM and access the notebook in your local browser by visiting
http://<VM_IP>:8888
.
If this step is successful, you will be taken to a Jupyter notebook interface in the browser. Please create a new notebook and run the following command:
import syft as sy
sy.login(url="localhost:80", email="[email protected]", password="changethis")
# Pass the email and password used to create the server or default as above is no email and password was used during server creation
If everything works well, you should be able to login to a high-side or low-side domain (depending on what you chose above). You can now start running PySyft commands on the client server to interact with the PySyft server you just deployed.