Skip to content

Commit 27ac0b1

Browse files
authored
Merge pull request #80 from OpenMined/feature/postgres
Feature/postgres
2 parents d539b82 + 53040f0 commit 27ac0b1

File tree

7 files changed

+256
-177
lines changed

7 files changed

+256
-177
lines changed

tutorials/4. Multitenancy/README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Multitenancy Tutorial
2+
3+
In this tutorial you will learn how to use an ACA-Py instance in multi-tenant mode. This will include:
4+
5+
* Managing subwallets (create, update, delete)
6+
* Interacting with the ACA-Py instance as a subwallet
7+
* Establishing a mediator
8+
9+
**Note: This tutorial also uses a postgres db for the wallet storage of the multi-tenant agent. It is highly recommended to have a look through the docker-compose.yml file to see the additional configuration needed for this (see wallets-db service). As well as the additional ACA-Py flags used by the multitenant-agent service**

tutorials/4. Multitenancy/docker-compose.yml

Lines changed: 41 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -71,52 +71,70 @@ services:
7171
ports:
7272
- ${MEDIATOR_JUPYTER_PORT}:8888
7373
- ${MEDIATOR_WEBHOOK_PORT}:${MEDIATOR_WEBHOOK_PORT}
74-
ngrok-basewallet:
74+
wallets-db:
75+
image: postgres:11
76+
container_name: wallets-db
77+
command: postgres -c listen_addresses='*'
78+
environment:
79+
POSTGRES_PASSWORD: dbpass
80+
POSTGRES_USER: postgres
81+
POSTGRES_DB: wallets
82+
volumes:
83+
- ./resources/init.sql:/docker-entrypoint-initdb.d/init.sql
84+
networks:
85+
- indy_demo
86+
tty: true
87+
ngrok-multitenant:
7588
image: wernight/ngrok
76-
command: ngrok http basewallet-agent:${BASEWALLET_HTTP_PORT} --log stdout
89+
command: ngrok http multitenant-agent:${MULTITENANT_HTTP_PORT} --log stdout
7790
networks:
7891
- indy_demo
79-
basewallet-agent:
92+
multitenant-agent:
8093
build:
8194
context: ../../
8295
dockerfile: dockerfiles/agents/Dockerfile.ngrok
8396
environment:
84-
- NGROK_NAME=ngrok-basewallet
85-
- ADMIN_URL=http://basewallet-agent:${BASEWALLET_ADMIN_PORT}
86-
- AGENT_NAME=${BASEWALLET_AGENT_NAME}
87-
- ADMIN_PORT=${BASEWALLET_ADMIN_PORT}
88-
- HTTP_PORT=${BASEWALLET_HTTP_PORT}
89-
- WEBHOOK_URL=${BASEWALLET_WEBHOOK_URL}
90-
- AGENT_ENDPOINT=${BASEWALLET_AGENT_ENDPOINT}
91-
- WALLET_SEED=${BASEWALLET_WALLET_SEED}
92-
- WALLET_NAME=${BASEWALLET_WALLET_NAME}
93-
- WALLET_KEY=${BASEWALLET_WALLET_KEY}
97+
- NGROK_NAME=ngrok-multitenant
98+
- ADMIN_URL=http://multitenant-agent:${MULTITENANT_ADMIN_PORT}
99+
- AGENT_NAME=${MULTITENANT_AGENT_NAME}
100+
- ADMIN_PORT=${MULTITENANT_ADMIN_PORT}
101+
- HTTP_PORT=${MULTITENANT_HTTP_PORT}
102+
- WEBHOOK_URL=${MULTITENANT_WEBHOOK_URL}
103+
- AGENT_ENDPOINT=${MULTITENANT_AGENT_ENDPOINT}
104+
- WALLET_SEED=${MULTITENANT_WALLET_SEED}
105+
- WALLET_NAME=${MULTITENANT_WALLET_NAME}
106+
- WALLET_KEY=${MULTITENANT_WALLET_KEY}
94107
- WALLET_TYPE=${WALLET_TYPE}
95-
- ACAPY_ADMIN_INSECURE_MODE=${BASEWALLET_ADMIN_SECURE}
108+
- ACAPY_ADMIN_INSECURE_MODE=${MULTITENANT_ADMIN_SECURE}
96109
- GENESIS_URL=${GENESIS_URL}
97110
- ACAPY_MULTITENANT=true
98111
- ACAPY_MULTITENANT_JWT_SECRET="password"
99112
- ACAPY_MULTITENANT_ADMIN=true
113+
- ACAPY_WALLET_STORAGE_TYPE=postgres_storage
114+
- ACAPY_WALLET_STORAGE_CONFIG={"url":"wallets-db:5432","wallet_scheme":"MultiWalletSingleTable"}
115+
- ACAPY_WALLET_STORAGE_CREDS={"account":"postgres","password":"dbpass","admin_account":"postgres","admin_password":"dbpass"}
100116
ports:
101-
- ${BASEWALLET_HTTP_PORT}:${BASEWALLET_HTTP_PORT}
102-
- ${BASEWALLET_ADMIN_PORT}:${BASEWALLET_ADMIN_PORT}
117+
- ${MULTITENANT_HTTP_PORT}:${MULTITENANT_HTTP_PORT}
118+
- ${MULTITENANT_ADMIN_PORT}:${MULTITENANT_ADMIN_PORT}
119+
depends_on:
120+
- wallets-db
103121
networks:
104122
- indy_demo
105-
basewallet-notebook:
123+
multitenant-notebook:
106124
build:
107125
context: ../../
108126
dockerfile: dockerfiles/controllers/Dockerfile.basiccontroller
109127
args:
110-
- jupyter_port=${BASEWALLET_JUPYTER_PORT}
128+
- jupyter_port=${MULTITENANT_JUPYTER_PORT}
111129
depends_on:
112-
- basewallet-agent
130+
- multitenant-agent
113131
networks:
114132
- indy_demo
115133
volumes:
116-
- ./notebooks/basewallet:/workspace
134+
- ./notebooks/multitenant:/workspace
117135
ports:
118136
- "8888:8888"
119-
- ${BASEWALLET_WEBHOOK_PORT}:${BASEWALLET_WEBHOOK_PORT}
137+
- ${MULTITENANT_WEBHOOK_PORT}:${MULTITENANT_WEBHOOK_PORT}
120138
external-notebook:
121139
build:
122140
context: ../../
@@ -133,5 +151,7 @@ services:
133151
- "8889:8888"
134152
- ${EXTERNAL_WEBHOOK_PORT}:${EXTERNAL_WEBHOOK_PORT}
135153

154+
155+
136156
networks:
137157
indy_demo:

tutorials/4. Multitenancy/manage

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ EOF
6262
# -----------------------------------------------------------------------------------------------------------------
6363
# Default Settings:
6464
# -----------------------------------------------------------------------------------------------------------------
65-
DEFAULT_CONTAINERS="ngrok-external external-agent ngrok-basewallet basewallet-agent basewallet-notebook external-notebook ngrok-mediator mediator-agent mediator-notebook "
65+
DEFAULT_CONTAINERS="ngrok-external external-agent ngrok-multitenant multitenant-agent multitenant-notebook external-notebook ngrok-mediator mediator-agent mediator-notebook wallets-db"
6666

6767
# -----------------------------------------------------------------------------------------------------------------
6868
# Functions:
@@ -129,18 +129,18 @@ configureEnvironment() {
129129
export EXTERNAL_JUPYTER_PORT="8889"
130130
export EXTERNAL_ADMIN_SECURE="true"
131131

132-
# BASEWALLET-agent
133-
export BASEWALLET_AGENT_NAME="BASEWALLET"
134-
export BASEWALLET_ADMIN_PORT=8021
135-
export BASEWALLET_HTTP_PORT=8020
136-
export BASEWALLET_WEBHOOK_PORT=8022
137-
export BASEWALLET_WEBHOOK_URL=${BASEWALLET_WEBHOOK_URL:-http://$DOCKERHOST:$BASEWALLET_WEBHOOK_PORT}
138-
export BASEWALLET_AGENT_ENDPOINT=${BASEWALLET_AGENT_ENDPOINT:-http://$DOCKERHOST:$BASEWALLET_HTTP_PORT}
139-
export BASEWALLET_WALLET_SEED="IAGENT_seed_00000000000000000000"
140-
export BASEWALLET_WALLET_KEY="BASEWALLET_key_00000000000000000000000"
141-
export BASEWALLET_WALLET_NAME="BASEWALLET Wallet"
142-
export BASEWALLET_JUPYTER_PORT="8888"
143-
export BASEWALLET_ADMIN_SECURE="true"
132+
# MULTITENANT-agent
133+
export MULTITENANT_AGENT_NAME="MULTITENANT"
134+
export MULTITENANT_ADMIN_PORT=8021
135+
export MULTITENANT_HTTP_PORT=8020
136+
export MULTITENANT_WEBHOOK_PORT=8022
137+
export MULTITENANT_WEBHOOK_URL=${MULTITENANT_WEBHOOK_URL:-http://$DOCKERHOST:$MULTITENANT_WEBHOOK_PORT}
138+
export MULTITENANT_AGENT_ENDPOINT=${MULTITENANT_AGENT_ENDPOINT:-http://$DOCKERHOST:$MULTITENANT_HTTP_PORT}
139+
export MULTITENANT_WALLET_SEED="IAGENT_seed_00000000000000000000"
140+
export MULTITENANT_WALLET_KEY="MULTITENANT_key_00000000000000000000000"
141+
export MULTITENANT_WALLET_NAME="MULTITENANT Wallet"
142+
export MULTITENANT_JUPYTER_PORT="8888"
143+
export MULTITENANT_ADMIN_SECURE="true"
144144

145145
# MEDIATOR-agent
146146
export MEDIATOR_AGENT_NAME="MEDIATOR"

0 commit comments

Comments
 (0)