B. Deploy Using Docker (MacOS)#
This guide helps you deploy a Datasite server on your local machine or a virtual machine hosted in the cloud that is running MacOS.
Prerequistes:#
Install Docker: Docker for Mac
Test Docker works#
To test your prerequisites were properly installed, try to run:
docker ps
or docker info
.
This should not return any error. If it does, please check you have the right permissions to run Docker commands.
To test that Docker can pull and run images, please run:
docker run hello-world
Running with sudo
You might need to run Docker commands using sudo
, depending on your setup. In this case, please run sudo docker run hello-world
to verify that
Configure resources#
Ensure that you have allocated enough resources to Docker. You can do this by going to Docker > Preferences > Advanced and increasing the resources allocated to Docker.
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/docker-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:
bash setup.sh -v 0.8.2-beta.6 -n my_server_1 -s high -t datasite -p 8081 --password mypassword --email myemail
To check that the server is up and running, run docker ps -a
to see the docker container you deployed. You can also run curl localhost:8081
.
With the server up and running, you have successfully deployed a PySyft Server on your machine!
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.
We need to start the client as follows:
docker run --rm -it --network=host 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 to test your full setup is ready to be used:
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.