Server Settings (.settings)

Estimated reading time: 5’

What you’ll learn

This guide’s objective is to help you learn how to configure the Datasite server’s profile.

Server Settings

The server profile (or metadata) are very important in welcoming researchers to your server, so they easily understand who is supporting the server, what organisation and what they can find on it

# Launching a simple server
import syft as sy

server = sy.orchestra.launch(
    name="my_special_server",
    reset=True,
    dev_mode=False,
    port="auto",
)
Starting my_special_server server on 0.0.0.0:55595
Waiting for server to start Done.
SyftInfo:
You have launched a development server at http://0.0.0.0:55595.It is intended only for local use.

To configure your server as a data owner, you can start by looking into the server’s settings:

client = sy.login(url="localhost", port=server.port, email="[email protected]", password="changethis")

client.settings
Logged into <my_special_server: High side Datasite> as <[email protected]>
SyftWarning:
You are using a default password. Please change the password using `[your_client].account.set_password([new_password])`.

Settings

Id: 2858e22511e749f6acab686754bee1f0

Name: my_special_server

Organization: OpenMined

Description: This is the default description for a Datasite Server.

Deployed on: 08/02/2024

Signup enabled: False

Notifications enabled: Disabled

Admin email: [email protected]

The available settings on the domain are as follows:

Self-service registration

This setting, available via client.settings.allow_guest_signup(), allows admin to turn on or off the self-service registration. This way, guest users can self-register on your server if they have the address where your server is hosted (e.g. public IP). This is ideal for a low-side server, but proceed with caution for a high-side one.

Notifications

Via settings, the admin can also configure whether the server should or not dispatch notifications to the users. This can be enabled only if the SMTP services were configured, via client.settings.enable_notifications() and disabled via client.settings.disable_notifications(). Read more about it here.

Association

Your server can be discovered via other peer server or gateway server only if your server is associated with the other. This means that a route exists between the two server and they can communicate as needed. For such, an association request must be created by either of the parties. More documentation coming soon about how to better use PySyft’s networking capabilities. The available setting association_request_auto_approval states that you are auto-approving such requests. This is ideal for a low-side server, but proceed with caution for a high-side one.

Server Profile

Setting up the information others can see about a server is important for external researchers.

Let’s look what information is currently set on our default server:

dict(client.metadata)
{'metadata_version': 1,
 'name': 'my_special_server',
 'id': '2858e22511e749f6acab686754bee1f0',
 'verify_key': '4495efe565c9d34580649d783edda4f7d975d380b1c188176beabe6ff4678b40',
 'highest_object_version': 1,
 'lowest_object_version': 1,
 'syft_version': '0.9.0',
 'server_type': 'datasite',
 'organization': 'OpenMined',
 'description': 'This is the default description for a Datasite Server.',
 'signup_enabled': False,
 'eager_execution_enabled': False,
 'admin_email': '',
 'server_side_type': 'high',
 'show_warnings': False,
 'supported_protocols': [1, 2, 3],
 'min_size_blob_storage_mb': 1}

Assuming we would like to update these information point to better reflect my server status, we can do it via the ServerSettingsUpdate, which allows users to modify:

  • name: str: the name of their server

  • organization: str: the name of their organization

  • description: str: the description of your server and its purpose

  • admin_email: str: the email of the admin user, that can be used by data scientists to reach out

  • signup_enabled: bool: whether to allow for self-service registration

  • association_request_auto_approval: bool: whether to allow for association requests auto approval

from syft.service.settings.settings import ServerSettingsUpdate

new_settings = ServerSettingsUpdate(
    server_side_type="low", 
    organization="Green Org", 
    name="my_very_special_server",
    description="This is the low side server of the Green Organisation.")

client.settings.update(settings=new_settings)

# Requires re-logining in to fetch the updates
client = sy.login(url="localhost", port=server.port, email="[email protected]", password="changethis")
client
Logged into <my_special_server: High side Datasite> as <[email protected]>
SyftWarning:
You are using a default password. Please change the password using `[your_client].account.set_password([new_password])`.

Logo

Welcome to my_special_server

URL: http://localhost:55595
Server Description: This is the default description for a Datasite Server.
Server Type: Datasite
Server Side Type:High Side
Syft Version: 0.9.0
ⓘ  This datasite is run by the library PySyft to learn more about how it works visit github.com/OpenMined/PySyft.

Commands to Get Started

  • <your_client>.projects - list projects
  • <your_client>.requests - list requests
  • <your_client>.users - list users

Customise the welcome message

It would be very useful for data scientists to learn as much about your server as soon as they log in. PySyft allows you to customize the welcome message shown upon login with anything HTML or Markdown.

To make it easy to develop your custom one, PySyft has a few utilities to help you:

  • client.settings.welcome_preview(markdown/html="..") to preview how your intended welcome message is rendered in your execution environment (e.g Jupyter Notebook)

  • client.settings.welcome_customize(markdown/html="..") to set a new version of the welcome message

  • client.settings.welcome_show() to check whether the change was successful

Let’s see how it would be to expand the current message with a description.

# Expanding the default message

previous_welcome = client.settings.welcome_show()
previous_welcome
Logo

Welcome to my_special_server

URL: $server_url
Server Description: This is the default description for a Datasite Server.
Server Type: Datasite
Server Side Type:High Side
Syft Version: 0.9.0
ⓘ  This datasite is run by the library PySyft to learn more about how it works visit github.com/OpenMined/PySyft.

Commands to Get Started

  • <your_client>.projects - list projects
  • <your_client>.requests - list requests
  • <your_client>.users - list users

Let’s compose one by starting with the current style. We will take over the same styling, but modify the image, the url and the information presented. To copy the styles, we can access client.settings.welcome_show().text:

Hide code cell source
new_welcome ="""
    <style>
        /* cyrillic-ext */
@font-face { font-family: "Open Sans"; font-style: normal; font-weight: 300 800; font-stretch: 100%; src: url(https://fonts.gstatic.com/s/opensans/v35/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSKmu0SC55K5gw.woff2) format("woff2"); unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; }

/* cyrillic */ @font-face { font-family: "Open Sans"; font-style: normal; font-weight: 300 800; font-stretch: 100%; src: url(https://fonts.gstatic.com/s/opensans/v35/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSumu0SC55K5gw.woff2) format("woff2"); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }

/* greek-ext */ @font-face { font-family: "Open Sans"; font-style: normal; font-weight: 300 800; font-stretch: 100%; src: url(https://fonts.gstatic.com/s/opensans/v35/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSOmu0SC55K5gw.woff2) format("woff2"); unicode-range: U+1F00-1FFF; }

/* greek */ @font-face { font-family: "Open Sans"; font-style: normal; font-weight: 300 800; font-stretch: 100%; src: url(https://fonts.gstatic.com/s/opensans/v35/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSymu0SC55K5gw.woff2) format("woff2"); unicode-range: U+0370-03FF; }

/* hebrew */ @font-face { font-family: "Open Sans"; font-style: normal; font-weight: 300 800; font-stretch: 100%; src: url(https://fonts.gstatic.com/s/opensans/v35/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS2mu0SC55K5gw.woff2) format("woff2"); unicode-range: U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F; }

/* vietnamese */ @font-face { font-family: "Open Sans"; font-style: normal; font-weight: 300 800; font-stretch: 100%; src: url(https://fonts.gstatic.com/s/opensans/v35/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSCmu0SC55K5gw.woff2) format("woff2"); unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; }

/* latin-ext */ @font-face { font-family: "Open Sans"; font-style: normal; font-weight: 300 800; font-stretch: 100%; src: url(https://fonts.gstatic.com/s/opensans/v35/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTSGmu0SC55K5gw.woff2) format("woff2"); unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; }

/* latin */ @font-face { font-family: "Open Sans"; font-style: normal; font-weight: 300 800; font-stretch: 100%; src: url(https://fonts.gstatic.com/s/opensans/v35/memvYaGs126MiZpBA-UvWbX2vVnXBbObj2OVTS-mu0SC55I.woff2) format("woff2"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

        .syft-container {
            padding: 5px;
            font-family: 'Open Sans';
        }
        .syft-alert-info {
            color: #1F567A;
            background-color: #C2DEF0;
            border-radius: 4px;
            padding: 5px;
            padding: 13px 10px
        }
        .syft-code-block {
            background-color: #f7f7f7;
            border: 1px solid #cfcfcf;
            padding: 0px 2px;
        }
        .syft-space {
            margin-top: 1em;
        }
    </style>
    <div class="syft-client syft-container">
        <img src="https://emojiisland.com/cdn/shop/products/Smiling_Emoji_Icon_-_Blushed_large.png?v=1571606114" alt="Logo"
        style="width:48px;height:48px;padding:3px;">
        <h2>Welcome to Red Organisation</h2>
        <div class="syft-space">
        <strong>URL:</strong> https://datasite.red_organisation.org<br />
        <strong>Server Type:</strong> Domain <br />
        <strong>Server Side Type:</strong>High Side<br />
        <strong>Syft Version:</strong> 0.8.7-beta.10<br />

        </div>
        <div>
        <h3>About my_special_server</h3>
            <p> This server is open to all researchers interested in conducting studies about climate change and its implications on the biodiveristy using Red Organisation's data.
        </div>    
    </div><br />
"""

client.settings.welcome_preview(html=new_welcome)
Logo

Welcome to Red Organisation

URL: https://datasite.red_organisation.org
Server Type: Domain
Server Side Type:High Side
Syft Version: 0.8.7-beta.10

About my_special_server

This server is open to all researchers interested in conducting studies about climate change and its implications on the biodiveristy using Red Organisation's data.


client.settings.welcome_customize(html=new_welcome)
SyftSuccess:
Welcome Markdown was successfully updated!

client.settings.welcome_show()
Logo

Welcome to Red Organisation

URL: https://datasite.red_organisation.org
Server Type: Domain
Server Side Type:High Side
Syft Version: 0.8.7-beta.10

About my_special_server

This server is open to all researchers interested in conducting studies about climate change and its implications on the biodiveristy using Red Organisation's data.


Now, your Datasite server should be ready to be further configured and used by data scientists!