Skip to content

Commit 1f64cbe

Browse files
authored
Merge pull request #501 from MayurWitsLab/beckn-onix-v1.0-develop
Beckn onix v1.0 develop
2 parents 999727c + 155de84 commit 1f64cbe

File tree

1 file changed

+318
-9
lines changed

1 file changed

+318
-9
lines changed

install/setup.sh

Lines changed: 318 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,316 @@ fi
2121
echo -e "${YELLOW}Step 1: Setting up Beckn network services...${NC}"
2222

2323
# Check if install directory exists
24-
if [ ! -d "./install" ]; then
25-
echo -e "${RED}Error: install directory not found.${NC}"
24+
#if [ ! -d "./install" ]; then
25+
# echo -e "${RED}Error: install directory not found.${NC}"
26+
# exit 1
27+
#fi
28+
29+
# Make the installer executable
30+
chmod +x ./install/beckn-onix.sh
31+
32+
# Navigate to install directory and run setup
33+
cd install
34+
35+
# Auto-select option 3 (local setup) for the installer
36+
#echo -e "${GREEN}Running local network setup...${NC}"
37+
#echo "3" | ./beckn-onix.sh
38+
39+
cd ..
40+
41+
# Wait for services to stabilize
42+
echo -e "${YELLOW}Waiting for services to be ready...${NC}"
43+
sleep 15
44+
45+
# Step 2: Configure Vault for key management
46+
echo -e "${YELLOW}Step 2: Setting up Vault for key management...${NC}"
47+
48+
# Check if Vault is running, if not start it
49+
if ! docker ps | grep -q "vault"; then
50+
echo -e "${BLUE}Starting Vault container...${NC}"
51+
docker run -d \
52+
--name vault \
53+
--cap-add=IPC_LOCK \
54+
-e VAULT_DEV_ROOT_TOKEN_ID=root \
55+
-e VAULT_DEV_LISTEN_ADDRESS=0.0.0.0:8200 \
56+
-p 8200:8200 \
57+
hashicorp/vault:latest > /dev/null 2>&1
58+
59+
# Wait for Vault to be ready
60+
echo -e "${BLUE}Waiting for Vault to start...${NC}"
61+
for i in {1..30}; do
62+
if docker exec -e VAULT_ADDR=http://127.0.0.1:8200 vault vault status > /dev/null 2>&1; then
63+
echo -e "${GREEN}✓ Vault is ready${NC}"
64+
break
65+
fi
66+
if [ $i -eq 30 ]; then
67+
echo -e "${RED}Error: Vault failed to start${NC}"
68+
exit 1
69+
fi
70+
sleep 1
71+
done
72+
fi
73+
74+
# Configure Vault with error handling
75+
echo -e "${BLUE}Configuring Vault policies...${NC}"
76+
77+
# Enable AppRole auth
78+
if ! docker exec -e VAULT_ADDR=http://127.0.0.1:8200 -e VAULT_TOKEN=root vault \
79+
vault auth list 2>/dev/null | grep -q "approle"; then
80+
docker exec -e VAULT_ADDR=http://127.0.0.1:8200 -e VAULT_TOKEN=root vault \
81+
vault auth enable approle 2>/dev/null || {
82+
echo -e "${YELLOW}AppRole already enabled or error occurred${NC}"
83+
}
84+
fi
85+
86+
# Create policy
87+
echo 'path "beckn/*" { capabilities = ["create", "read", "update", "delete", "list"] }' | \
88+
docker exec -i -e VAULT_ADDR=http://127.0.0.1:8200 -e VAULT_TOKEN=root vault \
89+
vault policy write beckn-policy - > /dev/null 2>&1 || {
90+
echo -e "${YELLOW}Policy already exists or updated${NC}"
91+
}
92+
93+
# Create role
94+
docker exec -e VAULT_ADDR=http://127.0.0.1:8200 -e VAULT_TOKEN=root vault \
95+
vault write auth/approle/role/beckn-role \
96+
token_policies="beckn-policy" \
97+
token_ttl=24h \
98+
token_max_ttl=48h > /dev/null 2>&1 || {
99+
echo -e "${YELLOW}Role already exists or updated${NC}"
100+
}
101+
102+
# Get Vault credentials with error handling
103+
echo -e "${BLUE}Getting Vault credentials...${NC}"
104+
ROLE_ID=$(docker exec -e VAULT_ADDR=http://127.0.0.1:8200 -e VAULT_TOKEN=root vault \
105+
vault read -field=role_id auth/approle/role/beckn-role/role-id 2>/dev/null)
106+
107+
if [ -z "$ROLE_ID" ]; then
108+
echo -e "${RED}Error: Failed to get ROLE_ID from Vault${NC}"
26109
exit 1
27110
fi
28111

112+
SECRET_ID=$(docker exec -e VAULT_ADDR=http://127.0.0.1:8200 -e VAULT_TOKEN=root vault \
113+
vault write -field=secret_id -f auth/approle/role/beckn-role/secret-id 2>/dev/null)
114+
115+
if [ -z "$SECRET_ID" ]; then
116+
echo -e "${RED}Error: Failed to get SECRET_ID from Vault${NC}"
117+
exit 1
118+
fi
119+
120+
echo -e "${GREEN}✓ Got Vault credentials:${NC}"
121+
echo -e " ROLE_ID: ${ROLE_ID:0:20}..."
122+
echo -e " SECRET_ID: ${SECRET_ID:0:20}..."
123+
124+
# Enable KV v2 secrets engine
125+
docker exec -e VAULT_ADDR=http://127.0.0.1:8200 -e VAULT_TOKEN=root vault \
126+
vault secrets enable -path=beckn kv-v2 > /dev/null 2>&1 || {
127+
echo -e "${YELLOW}Secrets engine already enabled${NC}"
128+
}
129+
130+
echo -e "${GREEN}✓ Vault configured successfully${NC}"
131+
132+
# Seed the keys for BAP network
133+
echo -e "${BLUE}Seeding keys for BAP network...${NC}"
134+
docker exec -e VAULT_ADDR=http://127.0.0.1:8200 -e VAULT_TOKEN=root vault \
135+
vault kv put secret/keys/bap-network \
136+
signingPublicKey='1ct6/Xg6gHhT9QolufThbY4mWHYkIpXzh7YxMFM8MQE=' \
137+
signingPrivateKey='C2hPMyeN+1Vzn8+7F/MUHmR5jKFuSb7s6tf/U5qni8vVy3r9eDqAeFP1CiW59OFtjiZYdiQilfOHtjEwUzwxAQ==' > /dev/null 2>&1
138+
139+
if [ $? -eq 0 ]; then
140+
echo -e "${GREEN}✓ BAP network keys seeded successfully${NC}"
141+
else
142+
echo -e "${YELLOW}Warning: Failed to seed BAP network keys or keys already exist${NC}"
143+
fi
144+
145+
# Step 3: Check services status
146+
echo -e "${YELLOW}Step 3: Checking services status...${NC}"
147+
148+
# Check if services are running
149+
if docker ps | grep -q "registry"; then
150+
echo -e "${GREEN}✓ Registry is running${NC}"
151+
fi
152+
if docker ps | grep -q "gateway"; then
153+
echo -e "${GREEN}✓ Gateway is running${NC}"
154+
fi
155+
if docker ps | grep -q "bap-client"; then
156+
echo -e "${GREEN}✓ BAP services are running${NC}"
157+
fi
158+
if docker ps | grep -q "bpp-client"; then
159+
echo -e "${GREEN}✓ BPP services are running${NC}"
160+
fi
161+
if docker ps | grep -q "vault"; then
162+
echo -e "${GREEN}✓ Vault is running${NC}"
163+
fi
164+
165+
# Step 4: Create required directories
166+
echo -e "${YELLOW}Step 4: Creating required directories...${NC}"
167+
168+
# Create schemas directory for validation
169+
if [ ! -d "schemas" ]; then
170+
mkdir -p schemas
171+
echo -e "${GREEN}✓ Created schemas directory${NC}"
172+
else
173+
echo -e "${YELLOW}schemas directory already exists${NC}"
174+
fi
175+
176+
# Create logs directory
177+
if [ ! -d "logs" ]; then
178+
mkdir -p logs
179+
echo -e "${GREEN}✓ Created logs directory${NC}"
180+
else
181+
echo -e "${YELLOW}logs directory already exists${NC}"
182+
fi
183+
184+
# Create plugins directory if not exists
185+
if [ ! -d "plugins" ]; then
186+
mkdir -p plugins
187+
echo -e "${GREEN}✓ Created plugins directory${NC}"
188+
else
189+
echo -e "${YELLOW}plugins directory already exists${NC}"
190+
fi
191+
192+
# Step 5: Build adapter plugins
193+
echo -e "${YELLOW}Step 5: Building adapter plugins...${NC}"
194+
195+
if [ -f "./install/build-plugins.sh" ]; then
196+
chmod +x ./install/build-plugins.sh
197+
./install/build-plugins.sh
198+
if [ $? -eq 0 ]; then
199+
echo -e "${GREEN}✓ Plugins built successfully${NC}"
200+
else
201+
echo -e "${RED}Error: Plugin build failed${NC}"
202+
exit 1
203+
fi
204+
else
205+
echo -e "${RED}Error: install/build-plugins.sh not found${NC}"
206+
exit 1
207+
fi
208+
209+
# Step 6: Build the adapter server
210+
echo -e "${YELLOW}Step 6: Building Beckn-ONIX adapter server...${NC}"
211+
212+
if [ -f "go.mod" ]; then
213+
go build -o beckn-adapter cmd/adapter/main.go
214+
if [ $? -eq 0 ]; then
215+
echo -e "${GREEN}✓ Adapter server built successfully${NC}"
216+
else
217+
echo -e "${RED}Error: Failed to build adapter server${NC}"
218+
echo -e "${YELLOW}Please check Go installation and dependencies${NC}"
219+
exit 1
220+
fi
221+
else
222+
echo -e "${RED}Error: go.mod not found${NC}"
223+
exit 1
224+
fi
225+
226+
# Step 7: Create environment file
227+
echo -e "${YELLOW}Step 7: Creating environment configuration...${NC}"
228+
229+
# Check if we have Vault credentials
230+
if [ -z "$ROLE_ID" ] || [ -z "$SECRET_ID" ]; then
231+
echo -e "${RED}Error: Vault credentials not available${NC}"
232+
echo -e "${YELLOW}Please check Vault configuration and try again${NC}"
233+
exit 1
234+
fi
235+
236+
cat > .env <<EOF
237+
# Beckn-ONIX Environment Configuration
238+
# Generated on $(date)
239+
240+
# Service URLs
241+
export REGISTRY_URL=http://localhost:3000
242+
export GATEWAY_URL=http://localhost:4000
243+
export BAP_CLIENT_URL=http://localhost:5001
244+
export BAP_NETWORK_URL=http://localhost:5002
245+
export BPP_CLIENT_URL=http://localhost:6001
246+
export BPP_NETWORK_URL=http://localhost:6002
247+
export REDIS_URL=localhost:6379
248+
export MONGO_URL=mongodb://localhost:27017
249+
250+
# Adapter Configuration
251+
export ADAPTER_PORT=8080
252+
export ADAPTER_MODE=development
253+
254+
# Vault Configuration
255+
export VAULT_ADDR=http://localhost:8200
256+
export VAULT_TOKEN=root
257+
export VAULT_ROLE_ID=$ROLE_ID
258+
export VAULT_SECRET_ID=$SECRET_ID
259+
EOF
260+
261+
if [ -f ".env" ]; then
262+
echo -e "${GREEN}✓ Environment file created successfully${NC}"
263+
echo -e "${YELLOW} Vault ROLE_ID and SECRET_ID have been saved to .env${NC}"
264+
else
265+
echo -e "${RED}Error: Failed to create .env file${NC}"
266+
exit 1
267+
fi
268+
269+
# Display final status
270+
echo ""
271+
echo -e "${GREEN}========================================${NC}"
272+
echo -e "${GREEN}✅ Setup Complete!${NC}"
273+
echo -e "${GREEN}========================================${NC}"
274+
echo ""
275+
echo -e "${BLUE}Services Running:${NC}"
276+
echo -e " 📦 Registry: http://localhost:3000"
277+
echo -e " 🌐 Gateway: http://localhost:4000"
278+
echo -e " 🛒 BAP Client: http://localhost:5001"
279+
echo -e " 🛒 BAP Network: http://localhost:5002"
280+
echo -e " 🏪 BPP Client: http://localhost:6001"
281+
echo -e " 🏪 BPP Network: http://localhost:6002"
282+
echo -e " 💾 Redis: localhost:6379"
283+
echo -e " 🗄️ MongoDB: localhost:27017"
284+
echo ""
285+
echo -e "${GREEN}Next Steps:${NC}"
286+
echo -e "1. Run the adapter:"
287+
echo -e " ${YELLOW}source .env && ./beckn-adapter --config=config/local-dev.yaml${NC}"
288+
echo ""
289+
echo -e "2. Test the endpoints:"
290+
echo -e " ${YELLOW}./test_endpoints.sh${NC}"
291+
echo ""
292+
echo -e "3. Stop all services:"
293+
echo -e " ${YELLOW}cd install && docker compose down${NC}"
294+
echo ""
295+
echo -e "4. View logs:"
296+
echo -e " ${YELLOW}docker compose logs -f [service-name]${NC}"
297+
echo -e "${GREEN}========================================${NC}"#!/bin/bash
298+
299+
# Colors for output
300+
RED='\033[0;31m'
301+
GREEN='\033[0;32m'
302+
YELLOW='\033[1;33m'
303+
BLUE='\033[0;34m'
304+
NC='\033[0m' # No Color
305+
306+
echo -e "${BLUE}========================================${NC}"
307+
echo -e "${BLUE}Beckn-ONIX Complete Setup${NC}"
308+
echo -e "${BLUE}========================================${NC}"
309+
310+
# Check if Docker is running
311+
if ! docker info > /dev/null 2>&1; then
312+
echo -e "${RED}Error: Docker is not running. Please start Docker first.${NC}"
313+
exit 1
314+
fi
315+
316+
# Step 1: Run the Beckn network installer
317+
echo -e "${YELLOW}Step 1: Setting up Beckn network services...${NC}"
318+
319+
# Check if install directory exists
320+
#if [ ! -d "./install" ]; then
321+
# echo -e "${RED}Error: install directory not found.${NC}"
322+
# exit 1
323+
#fi
324+
29325
# Make the installer executable
30326
chmod +x ./install/beckn-onix.sh
31327

32328
# Navigate to install directory and run setup
33329
cd install
34330

35331
# Auto-select option 3 (local setup) for the installer
36-
echo -e "${GREEN}Running local network setup...${NC}"
37-
echo "3" | ./beckn-onix.sh
332+
#echo -e "${GREEN}Running local network setup...${NC}"
333+
#echo "3" | ./beckn-onix.sh
38334

39335
cd ..
40336

@@ -129,6 +425,19 @@ docker exec -e VAULT_ADDR=http://127.0.0.1:8200 -e VAULT_TOKEN=root vault \
129425

130426
echo -e "${GREEN}✓ Vault configured successfully${NC}"
131427

428+
# Seed the keys for BAP network
429+
echo -e "${BLUE}Seeding keys for BAP network...${NC}"
430+
docker exec -e VAULT_ADDR=http://127.0.0.1:8200 -e VAULT_TOKEN=root vault \
431+
vault kv put secret/keys/bap-network \
432+
signingPublicKey='1ct6/Xg6gHhT9QolufThbY4mWHYkIpXzh7YxMFM8MQE=' \
433+
signingPrivateKey='C2hPMyeN+1Vzn8+7F/MUHmR5jKFuSb7s6tf/U5qni8vVy3r9eDqAeFP1CiW59OFtjiZYdiQilfOHtjEwUzwxAQ==' > /dev/null 2>&1
434+
435+
if [ $? -eq 0 ]; then
436+
echo -e "${GREEN}✓ BAP network keys seeded successfully${NC}"
437+
else
438+
echo -e "${YELLOW}Warning: Failed to seed BAP network keys or keys already exist${NC}"
439+
fi
440+
132441
# Step 3: Check services status
133442
echo -e "${YELLOW}Step 3: Checking services status...${NC}"
134443

@@ -179,17 +488,17 @@ fi
179488
# Step 5: Build adapter plugins
180489
echo -e "${YELLOW}Step 5: Building adapter plugins...${NC}"
181490

182-
if [ -f "./build-plugins.sh" ]; then
183-
chmod +x ./build-plugins.sh
184-
./build-plugins.sh
491+
if [ -f "./install/build-plugins.sh" ]; then
492+
chmod +x ./install/build-plugins.sh
493+
./install/build-plugins.sh
185494
if [ $? -eq 0 ]; then
186495
echo -e "${GREEN}✓ Plugins built successfully${NC}"
187496
else
188497
echo -e "${RED}Error: Plugin build failed${NC}"
189498
exit 1
190499
fi
191500
else
192-
echo -e "${RED}Error: build-plugins.sh not found${NC}"
501+
echo -e "${RED}Error: install/build-plugins.sh not found${NC}"
193502
exit 1
194503
fi
195504

@@ -280,5 +589,5 @@ echo -e "3. Stop all services:"
280589
echo -e " ${YELLOW}cd install && docker compose down${NC}"
281590
echo ""
282591
echo -e "4. View logs:"
283-
echo -e " ${YELLOW}cd install && docker compose logs -f [service-name]${NC}"
592+
echo -e " ${YELLOW}docker compose logs -f [service-name]${NC}"
284593
echo -e "${GREEN}========================================${NC}"

0 commit comments

Comments
 (0)