Installation ============ You can install |platform| Client from source or choose to build a Docker image from a provided Dockerfile with |platform| Client, Opaque SQL, and all dependencies pre-installed. Building the Docker image is much faster than building from source (takes about 7 min), but should be used for development/testing purposes only. Building with Docker for a local deployment ------------------------------------------- To quickly play with |platform| Client and Opaque SQL locally, you can use the provided Dockerfile to build a container (takes ~7 min) with all |platform| Client and Opaque SQL dependencies. Alternatively, you can pull a pre-built Docker image instead of building one. To do either, you must have `Docker `_ installed. The container will have the contents of this ``opaque-client`` directory at ``/mc2/client``. Opaque SQL will be at ``/mc2/opaque-sql`` .. note:: If you have installed Docker on Linux, you will either need to follow the post-installation instructions provided [here](https://docs.docker.com/engine/install/linux-postinstall/) or run all docker commands as ``sudo``. For ease of use, we recommend that you create a directory within your host ``opaque-client`` directory that will serve as your playground, and then mount your ``playground`` directory to the Docker container. Mounting will ensure that changes you make in your ``playground`` directory outside the container will be reflected inside the container, and vice versa. If you're bringing your own data, you can either copy your data over to your playground directory, or separately mount your data directory to the container. .. code-block:: bash :substitutions: # From the `|github-org|/|github-repo|`, create a `playground/` directory mkdir playground # Clone the `|github-repo|` repo git clone https://github.com/|github-org|/|github-repo| # Build a Docker image called `|cmd|_img` docker build -t |cmd|_img . # Alternatively, pull a pre-built image (~3 GB) # docker pull |docker-org|/|cmd|_img:v|release_version| # Run the container, mounting your playground to the container, and open a shell into the container docker run -it -v $(pwd)/playground:/mc2/client/playground |cmd|_img /bin/bash Building from Source -------------------- To install |platform| Client, you'll need to be running Ubuntu 18.04. Ubuntu 16.04 should also work but is untested. |platform| Client is written in both C++ and Python. As a result, we'll have to first build the C++ source, and then build and install the Python package. 1. Install dependencies. .. code-block:: bash :substitutions: # CMake wget https://github.com/Kitware/CMake/releases/download/v3.15.6/cmake-3.15.6-Linux-x86_64.sh sudo bash cmake-3.15.6-Linux-x86_64.sh --skip-license --prefix=/usr/local # Open Enclave echo 'deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu bionic main' | sudo tee /etc/apt/sources.list.d/intel-sgx.list && \ wget -qO - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | sudo apt-key add - && \ echo "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-7 main" | sudo tee /etc/apt/sources.list.d/llvm-toolchain-bionic-7.list && \ wget -qO - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && \ echo "deb [arch=amd64] https://packages.microsoft.com/ubuntu/18.04/prod bionic main" | sudo tee /etc/apt/sources.list.d/msprod.list && \ wget -qO - https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - && \ sudo apt update sudo apt -y install clang-8 libssl-dev gdb libsgx-enclave-common libsgx-quote-ex libprotobuf10 libsgx-dcap-ql libsgx-dcap-ql-dev az-dcap-client open-enclave=0.17.1 # Azure CLI curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash # Mbed TLS and Pip sudo apt-get install -y libmbedtls-dev python3-pip pip3 install --upgrade pip # |platform| Client Python package dependencies git clone https://github.com/|github-org|/|github-repo|.git cd |github-repo| pip3 install -r requirements.txt cd .. # Opaque Systems `sequencefile` Python package git clone https://github.com/opaque-systems/sequencefile.git cd sequencefile sudo python3 setup.py install cd .. 2. Clone the |platform| Client GitHub repo and install the Python package. .. code-block:: bash :substitutions: cd |github-repo|/python-package sudo python3 setup.py install You're done! Try importing the :substitution-code:`|python-package|` Python package to check that your installation was successful. .. code-block:: :substitutions: $ python3 Python 3.8.7 (default, Dec 30 2020, 10:13:08) [Clang 12.0.0 (clang-1200.0.32.28)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import |python-package| as |python-package-short| Azure Login ----------- If you want to manage your Azure resources using |platform| Client, authenticate to Azure and set your subscription ID. Find your subscription ID by following `these instructions `_. .. code-block:: bash az login az account set -s