Infra Setup Guide
This guide helps you set up, run, and manage the infra app in your local development environment.
Folder Structure
The infra app is located at:
apps/infra
├── README.md
├── ansible
│ ├── agent
│ ├── createvm
│ ├── deletevm
│ ├── postgres
│ └── workspace
├── docker-compose.yml
├── dredd-hooks.js
├── dredd.yml
├── infra.md
├── logs
├── loki-config.dev.yml
├── loki-config.prod.yml
├── nest-cli.json
├── openapitools.json
├── package.json
├── prometheus.yml
├── promtail-config.yml
├── sdk-config.json
├── sdk-tsconfig.json
├── src
│ ├── ansible
│ ├── api
│ ├── app.module.ts
│ ├── background
│ ├── common
│ ├── config
│ ├── db
│ ├── interceptors
│ ├── logger
│ ├── main.ts
│ ├── middlewares
│ └── redis
├── test
│ ├── app.e2e-spec.ts
│ └── jest-e2e.json
├── tsconfig.build.json
└─ ─ tsconfig.json
Make sure you review the .env.example file and update the actual .env file as needed after setup.
Setup Instructions
To set up the infra app and its dependencies:
./setup.sh
This will:
- Copy
.env.exampleto.envfor multiple apps including infra - Install all project dependencies via
yarn install - Start global services (e.g. MySQL, Redis, etc.)
- Run Prisma setup for
infraandcentralapps
Start Infra (with PM2)
To start the infra app along with others using PM2:
./start.sh
This will:
- Start all apps including
infrain watch mode using PM2 - Launch global services (if not already running)
You can access Infra at:
http://localhost:13001
Stop Infra and All Apps
To gracefully stop all running apps and services:
./stop.sh
This will:
- Stop and delete PM2 processes for all apps
- Bring down global services (Docker containers)
Viewing Logs
To view logs specifically for the infra app:
yarn infra:dev:logs
Notes
- Ensure you have
yarnandDockerinstalled locally. - The
.envfile is required to run the app. If missing, rerun./setup.sh.
Environment Variables
Create a .env file inside the apps/infra directory by copying the provided .env.example file:
cp apps/infra/.env.example apps/infra/.env
Then update the variables as needed. Here's a reference of the important environment variables used by the Infra service:
# Development/Local Environment
AGENT_ENV=local
NODE_ENV=development
# GitLab Configuration
GITLAB_BASE_URL=https://builder-git.geekyants.com/api/v4
GITLAB_TOKEN=random-token
GITLAB_SOURCE_GROUP_ID=3
GITLAB_TARGET_GROUP_ID=5
# Server Port
PORT=13001
# Loki (Logging)
LOKI_PORT=13100
LOKI_HOST=http://localhost:13100
LOKI_API_TOKEN=admin
# Nexus Configuration
NEXUS_BASE_URL=https://nexus.blr0.geekydev.com
NEXUS_REGISTRY_URL=https://nexus-docker-hosted.blr0.geekydev.com
NEXUS_USERNAME=admin
NEXUS_PASSWORD=random-password
# Caddy Remote Access
CADDY_HOST=IP_ADDRESS
CADDY_PORT=10022
CADDY_USER=root
# API Token for Internal Use
API_TOKEN=your-super-secret-token
# SSH Configuration
WORKSPACE_PVT_SSH_KEY_PATH="/Users/user/.ssh/id_rsa"
MASTER_PUBLIC_SSH_KEY="ssh-rsa AAAAB3NzaC1..."
# VM Service
VM_API_TOKEN=random_token
VM_API_BASE_URL=http://IP_ADDRESS:3000/api/vms
# MySQL Configuration
MYSQL_DATABASE=infra_api
MYSQL_USER=root
MYSQL_PASSWORD=goldtree9
MYSQL_ROOT_PASSWORD=goldtree9
MYSQL_PORT=13306
MYSQL_HOST=127.0.0.1
DATABASE_URL="mysql://root:goldtree9@127.0.0.1:13306/infra_api"
# Redis Configuration
REDIS_HOST=127.0.0.1
REDIS_PORT=16379
REDIS_PASSWORD=goldtree9
REDIS_TLS_ENABLED=false
# Optional: SSH Keys for Agent
AGENT_CLONE_PVT_KEY1="-----BEGIN OPENSSH PRIVATE KEY-----\n...<snipped>...\n-----END OPENSSH PRIVATE KEY-----"
AGENT_CLONE_PVT_KEY=""
Note: Never commit
.envfiles with secrets or tokens to version control. Keep them safe and secure.