mirror of https://github.com/nucypher/nucypher.git
initial docker development setup
parent
52a4aaffbd
commit
e70d781ccb
29
README.md
29
README.md
|
@ -12,18 +12,18 @@
|
|||
|
||||
----
|
||||
|
||||
The NuCypher network uses the [Umbral](https://github.com/nucypher/pyUmbral)
|
||||
threshold proxy re-encryption scheme to provide cryptographic access control
|
||||
for distributed apps and protocols.
|
||||
Applications can use the NuCypher network to facilitate end-to-end encrypted
|
||||
data sharing via sharing policies. Access permissions are baked into the
|
||||
underlying encryption, and access can only be explicitly granted by the data owner.
|
||||
Consequently, the data owner has ultimate control over access to their data.
|
||||
At no point is the data decrypted nor can the underlying private keys be
|
||||
The NuCypher network uses the [Umbral](https://github.com/nucypher/pyUmbral)
|
||||
threshold proxy re-encryption scheme to provide cryptographic access control
|
||||
for distributed apps and protocols.
|
||||
Applications can use the NuCypher network to facilitate end-to-end encrypted
|
||||
data sharing via sharing policies. Access permissions are baked into the
|
||||
underlying encryption, and access can only be explicitly granted by the data owner.
|
||||
Consequently, the data owner has ultimate control over access to their data.
|
||||
At no point is the data decrypted nor can the underlying private keys be
|
||||
determined by the NuCypher network.
|
||||
|
||||
01. Alice, the data owner, grants access to her encrypted data to
|
||||
anyone she wants by creating a policy and uploading it to
|
||||
01. Alice, the data owner, grants access to her encrypted data to
|
||||
anyone she wants by creating a policy and uploading it to
|
||||
the NuCypher network.
|
||||
|
||||
02. Using her policy's public key, any entity can encrypt data on Alice's behalf.
|
||||
|
@ -39,9 +39,9 @@ re-encrypt data in exchange for payment in fees and token rewards.
|
|||
Thanks to the use of proxy re-encryption,
|
||||
Ursulas and the storage layer never have access to Alice's plaintext data.
|
||||
|
||||
04. Bob, a data recipient, sends an access request to the NuCypher network.
|
||||
If Bob was granted an access policy by Alice,
|
||||
the data is re-encrypted for his public key,
|
||||
04. Bob, a data recipient, sends an access request to the NuCypher network.
|
||||
If Bob was granted an access policy by Alice,
|
||||
the data is re-encrypted for his public key,
|
||||
and he can subsequently decrypt it with his private key.
|
||||
|
||||
More detailed information:
|
||||
|
@ -81,6 +81,8 @@ and accept bug reports.
|
|||
If you're interested in contributing code, please check out our [Contribution Guide](https://docs.nucypher.com/en/latest/guides/contribution_guide.html)
|
||||
and browse our [Open Issues](https://github.com/nucypher/nucypher/issues) for potential areas to contribute.
|
||||
|
||||
Get up and running quickly by using our [docker development setup](dev/docker/README.md)
|
||||
|
||||
# Security
|
||||
|
||||
If you identify vulnerabilities with _any_ nucypher code, please email security@nucypher.com with relevant information to your findings.
|
||||
|
@ -98,3 +100,4 @@ Please see our [documentation](https://docs.nucypher.com) to get started.
|
|||
We ask that you please respect testnet machines and their owners.
|
||||
If you find a vulnerability that you suspect has given you access to a machine against the owner's permission, stop what you're doing and immediately email security@nucypher.com.
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
version: '3'
|
||||
|
||||
# runs 3 ursulas, each on a different "host", similar to real world
|
||||
# similar to real world conditions
|
||||
|
||||
# ex. docker-compose -f 3-ursulas.yml up
|
||||
|
||||
services:
|
||||
nucypher-dev:
|
||||
volumes:
|
||||
- ../..:/code
|
||||
ports:
|
||||
- 11500
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: dev/docker/Dockerfile
|
||||
image: dev:nucypher
|
||||
container_name: nucypher-dev
|
||||
ursula1:
|
||||
volumes:
|
||||
- ../..:/code
|
||||
ports:
|
||||
- 11500
|
||||
image: dev:nucypher
|
||||
command: nucypher ursula run --dev --federated-only --rest-host 172.28.1.1 --rest-port 11500
|
||||
networks:
|
||||
nucypher_net:
|
||||
ipv4_address: 172.28.1.1
|
||||
container_name: ursula1
|
||||
ursula2:
|
||||
volumes:
|
||||
- ../..:/code
|
||||
ports:
|
||||
- 11500
|
||||
image: dev:nucypher
|
||||
depends_on:
|
||||
- ursula1
|
||||
command: nucypher ursula run --dev --federated-only --rest-host 172.28.1.2 --rest-port 11500 --teacher-uri 172.28.1.1:11500
|
||||
networks:
|
||||
nucypher_net:
|
||||
ipv4_address: 172.28.1.2
|
||||
container_name: ursula2
|
||||
ursula3:
|
||||
volumes:
|
||||
- ../..:/code
|
||||
ports:
|
||||
- 11500
|
||||
image: dev:nucypher
|
||||
depends_on:
|
||||
- ursula1
|
||||
command: nucypher ursula run --dev --federated-only --rest-host 172.28.1.3 --rest-port 11500 --teacher-uri 172.28.1.1:11500
|
||||
networks:
|
||||
nucypher_net:
|
||||
ipv4_address: 172.28.1.3
|
||||
container_name: ursula3
|
||||
networks:
|
||||
nucypher_net:
|
||||
ipam:
|
||||
driver: default
|
||||
config:
|
||||
- subnet: 172.28.0.0/16
|
|
@ -0,0 +1,20 @@
|
|||
FROM python:3.7.0
|
||||
ENV PYTHONUNBUFFERED 1
|
||||
|
||||
# Update
|
||||
RUN apt update -y && apt upgrade -y && apt install gcc libffi-dev wget git -y
|
||||
|
||||
EXPOSE 11500
|
||||
|
||||
RUN mkdir /code
|
||||
WORKDIR /code
|
||||
ADD . /code
|
||||
|
||||
# install reqs and solc
|
||||
RUN pip install --upgrade pip \
|
||||
&& pip install pipenv \
|
||||
&& pip3 install -r dev-requirements.txt --src /usr/local/src \
|
||||
&& ./scripts/installation/install_solc.sh
|
||||
|
||||
# finish install with some local volume ops
|
||||
CMD ["./dev/docker/scripts/install/entrypoint.sh"]
|
|
@ -0,0 +1,34 @@
|
|||
FROM postgres:latest
|
||||
ENV PYTHONUNBUFFERED 1
|
||||
|
||||
# Update
|
||||
RUN apt update -y && apt upgrade -y
|
||||
RUN apt install gcc libffi-dev wget git -y
|
||||
|
||||
USER postgres
|
||||
RUN /etc/init.d/postgresql start &&\
|
||||
psql --command "CREATE USER docker WITH SUPERUSER PASSWORD 'nucypher';" &&\
|
||||
createdb -O nucypher nucypher
|
||||
|
||||
|
||||
USER root
|
||||
# Expose port range
|
||||
EXPOSE 11500
|
||||
|
||||
RUN mkdir /code
|
||||
WORKDIR /code
|
||||
ADD . /code/
|
||||
|
||||
|
||||
# pip stuff
|
||||
RUN pip install --upgrade pip
|
||||
RUN pip install pipenv
|
||||
|
||||
# pip install
|
||||
RUN pipenv install --dev --system
|
||||
RUN pip3 install -e .
|
||||
|
||||
RUN ./scripts/install_solc.sh
|
||||
|
||||
# will rarely get run.
|
||||
CMD ["echo", "Ursula up"]
|
|
@ -0,0 +1,34 @@
|
|||
### Developing with Docker
|
||||
|
||||
The intention of the Docker configurations in this directory is to enable anyone to develop and test NuCypher on all major operating systems with minimal prerequisites and installation hassle.
|
||||
|
||||
#### quickstart
|
||||
|
||||
* install [Docker](https://docs.docker.com/install/)
|
||||
* install [Docker Compose](https://docs.docker.com/compose/install/)
|
||||
* cd to dev/docker (where this README is located)
|
||||
* `docker-compose up` **this must be done once to complete install**
|
||||
|
||||
|
||||
Then you can do things like:
|
||||
* run the tests:
|
||||
`docker run -it dev:nucypher pytest`
|
||||
* start up an ursula:
|
||||
`docker run -it dev:nucypher nucypher ursula run --dev --federated-only"`
|
||||
* open a shell:
|
||||
`docker run -it dev:nucypher bash`
|
||||
|
||||
* try some of the scripts in `dev/docker/scripts/`
|
||||
|
||||
**tested on (Ubuntu 16, MacOS 10.14, Windows 10)*
|
||||
|
||||
From there you can develop, modify code, test as normal.
|
||||
|
||||
### other cases
|
||||
|
||||
* run a network of three independent Ursulas
|
||||
`docker-compose -f 3-ursulas.yml up`
|
||||
* get the local ports these ursulas will be exposed on
|
||||
`docker ps`
|
||||
* to stop them...
|
||||
`docker-compose -f 3-ursulas.yml stop`
|
|
@ -0,0 +1,13 @@
|
|||
version: '3'
|
||||
|
||||
services:
|
||||
nucypher-dev:
|
||||
volumes:
|
||||
- ../..:/code
|
||||
ports:
|
||||
- 11500
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: dev/docker/Dockerfile
|
||||
image: dev:nucypher
|
||||
container_name: nucypher-dev
|
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
|
||||
# runs inside docker container with access to local volume.
|
||||
# this is needed for local development
|
||||
# so that the local repository is accessed
|
||||
# by shared volume and is executable by 'nucypher' cli
|
||||
|
||||
if [ ! -e /code/nucypher.egg-info ]; then
|
||||
echo "First time install..."
|
||||
pip3 install -e .
|
||||
fi
|
|
@ -0,0 +1 @@
|
|||
docker-compose run --entrypoint "bash" nucypher-dev
|
|
@ -0,0 +1,2 @@
|
|||
#!/bin/bash
|
||||
docker run -it dev:nucpyher bash
|
|
@ -0,0 +1 @@
|
|||
docker run -it dev:nucypher pytest $args
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
args="$@"
|
||||
docker run -it dev:nucpyher pytest $args
|
|
@ -0,0 +1 @@
|
|||
docker run -it dev:nucypher nucypher ursula run --dev --federated-only
|
|
@ -0,0 +1,2 @@
|
|||
#!/bin/bash
|
||||
docker run -it dev:nucypher nucypher ursula run --dev --federated-only
|
Loading…
Reference in New Issue