Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
899096e
chore(docker): copy entire database directory instead of single schem…
alvagante Mar 11, 2026
fbef128
feat(integrations): add Proxmox integration and refactor settings pat…
alvagante Mar 10, 2026
119b8cc
feat(provisioning): add Proxmox VM/LXC provisioning UI and node lifec…
alvagante Mar 11, 2026
df4971b
chore: archive completed tasks and add remaining todos report
alvagante Mar 14, 2026
40af9c8
feat(proxmox): add node and resource discovery endpoints
alvagante Mar 14, 2026
f0e903e
fix(NodeHieraTab): change default foundFilter state to 'found'
alvagante Mar 14, 2026
801c4af
feat(proxmox): add storage and network discovery endpoints with impro…
alvagante Mar 14, 2026
01b3025
fix: apply review feedback - API safety, accessibility, type cleanup,…
Copilot Mar 14, 2026
6190de0
feat(db): Add DatabaseAdapter abstraction
alvagante Mar 15, 2026
7272659
feat: Database abstraction
alvagante Mar 15, 2026
89ad243
test: Tests and fixes
alvagante Mar 15, 2026
90a6fec
feat: add AWS, journal, config, and Proxmox UI
alvagante Mar 16, 2026
67a2cc3
feat: Aws and multi source facts
alvagante Mar 18, 2026
a0654de
fix: build fix
alvagante Mar 20, 2026
6f13c88
chore: IDI2026 live color changing
alvagante Mar 22, 2026
4165c37
docs: Add Azure support specs, lifecycle analysis, and security asses…
alvagante Mar 24, 2026
0a16b9c
feat(provisioning): Add destructive action safety controls
alvagante Mar 24, 2026
ebbeae2
feat(aws): Add multi-region support and improve credential handling
alvagante Mar 25, 2026
36dec42
feat(integrations): Standardize node identification across services
alvagante Mar 28, 2026
5cbcdbe
feat(integrations): Expand AWS facts collection and improve node reso…
alvagante Mar 28, 2026
feada4b
Potential fix for pull request finding
alvagante Mar 30, 2026
4d79419
Potential fix for pull request finding
alvagante Mar 30, 2026
b6705b6
Potential fix for pull request finding
alvagante Mar 30, 2026
c3dbe67
Potential fix for pull request finding
alvagante Mar 30, 2026
b8db9eb
chore(kirograph): Add KiroGraph integration and MCP configuration
alvagante Mar 30, 2026
dd9faea
fix: apply review feedback - placeholders, timer leaks, Proxmox URI/h…
Copilot Mar 30, 2026
9a6d9ec
refactor: consolidate database schema to migration-first approach
alvagante Mar 11, 2026
a7b6f1e
chore(docker): copy entire database directory instead of single schem…
alvagante Mar 11, 2026
645cf7c
fix: address PR review feedback - update tests, Dockerfile, and docs
Copilot Mar 14, 2026
2bbf1bb
refactor(config): remove IntegrationConfigService and database table
alvagante Apr 1, 2026
2e2cfd4
feat(dashboard): convert IntegrationConfigPage to read-only status da…
alvagante Apr 1, 2026
95c7bc1
feat(setup): convert all setup guides to env snippet wizards
alvagante Apr 1, 2026
b4289f8
refactor(frontend): remove integration config CRUD API functions and …
alvagante Apr 1, 2026
8a9c208
fix(tests): fix broken tests, lint errors, and type errors
alvagante Apr 1, 2026
6550b3d
test(v1-release-prep): add missing test coverage for core services an…
alvagante Apr 2, 2026
22a9b7d
docs(v1-release-prep): update all documentation for v1.0.0 release
alvagante Apr 2, 2026
b3370e9
chore(v1-release-prep): clean up dead code and unused dependencies
alvagante Apr 2, 2026
c8ed0d1
chore(v1-release-prep): bump version to 1.0.0 across all artifacts
alvagante Apr 2, 2026
274143d
chore(v1-release-prep): fix pre-commit hook issues
alvagante Apr 2, 2026
d98fcae
feat(v1-release-prep): update Docker configurations for v1.0.0
alvagante Apr 2, 2026
e313926
chore(v1-release-prep): audit and fix config settings consistency
alvagante Apr 2, 2026
6ae5d84
chore(v1-release-prep): final validation — all checks pass
alvagante Apr 2, 2026
ddd2b4e
chore: .gitignore update
alvagante Apr 4, 2026
2888685
Update backend/src/database/PostgresAdapter.ts
alvagante Apr 4, 2026
2421ea1
Update backend/src/database/ExecutionRepository.ts
alvagante Apr 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
211 changes: 171 additions & 40 deletions .env.docker
Original file line number Diff line number Diff line change
@@ -1,52 +1,183 @@
# Sample .env file for a docker setup where all the needed
# files are in your $(cwd)/pabawi dir which is mounted to /pabawi in the container
# =============================================================================
# Pabawi v1.0.0 — Docker Environment Configuration
# =============================================================================
# Copy this file to .env and customize for your Docker deployment.
# All configuration is loaded from this file at startup (.env is the single
# source of truth — there are no database-stored config overrides).
#
# Paths below use container-internal locations. If you mount host volumes,
# make sure the container paths match your docker-compose volume mappings.
# =============================================================================

# -----------------------------------------------------------------------------
# Application
# -----------------------------------------------------------------------------
PORT=3000
HOST=localhost
HOST=0.0.0.0
LOG_LEVEL=info
DATABASE_PATH=/pabawi/data/pabawi.db
DATABASE_PATH=/data/pabawi.db

# JWT Secret for authentication (REQUIRED in production)
# Generate with: openssl rand -base64 32
JWT_SECRET=your-secure-random-secret-here # pragma: allowlist secret

# CORS allowed origins (comma-separated)
# CORS_ALLOWED_ORIGINS=http://localhost:5173,http://localhost:3000

# -----------------------------------------------------------------------------
# Command Execution
# -----------------------------------------------------------------------------
COMMAND_WHITELIST_ALLOW_ALL=false
COMMAND_WHITELIST=["ls","pwd","whoami","uptime"]
# COMMAND_WHITELIST_MATCH_MODE=exact
BOLT_EXECUTION_TIMEOUT=300000
# Bolt project files — can be the control repo or a separate directory
BOLT_PROJECT_PATH=/bolt-project

# Provisioning safety — set to true to allow destructive actions
# (e.g., Proxmox VM/LXC destroy, AWS EC2 terminate)
ALLOW_DESTRUCTIVE_PROVISIONING=false

# -----------------------------------------------------------------------------
# PuppetDB integration
PUPPETDB_ENABLED=true
PUPPETDB_SERVER_URL=https://puppet.example.com
PUPPETDB_PORT=8081
PUPPETDB_TOKEN=
PUPPETDB_SSL_ENABLED=true
# You can generate certs for pabawi using scripts/generate-pabawi-cert.sh
PUPPETDB_SSL_CA=/pabawi/certs/ca.pem
PUPPETDB_SSL_CERT=/pabawi/certs/pabawi.pem
PUPPETDB_SSL_KEY=/pabawi/certs/pabawi-key.pem
PUPPETDB_SSL_REJECT_UNAUTHORIZED=true
# -----------------------------------------------------------------------------
PUPPETDB_ENABLED=false
# PUPPETDB_SERVER_URL=https://puppet.example.com
# PUPPETDB_PORT=8081
# PUPPETDB_TOKEN=
# PUPPETDB_SSL_ENABLED=true
# You can generate certs for Pabawi using scripts/generate-pabawi-cert.sh
# PUPPETDB_SSL_CA=/certs/ca.pem
# PUPPETDB_SSL_CERT=/certs/pabawi.pem
# PUPPETDB_SSL_KEY=/certs/pabawi-key.pem
# PUPPETDB_SSL_REJECT_UNAUTHORIZED=true
# PUPPETDB_TIMEOUT=30000
# PUPPETDB_RETRY_ATTEMPTS=3
# PUPPETDB_RETRY_DELAY=1000
# PUPPETDB_CACHE_TTL=300000
# PUPPETDB_CIRCUIT_BREAKER_THRESHOLD=5
# PUPPETDB_CIRCUIT_BREAKER_TIMEOUT=60000
# PUPPETDB_CIRCUIT_BREAKER_RESET_TIMEOUT=30000

# -----------------------------------------------------------------------------
# Puppetserver integration
PUPPETSERVER_ENABLED=true
PUPPETSERVER_SERVER_URL=https://puppet.example.com
PUPPETSERVER_PORT=8140
PUPPETSERVER_TOKEN=
PUPPETSERVER_SSL_ENABLED=true
# You can use the same cert used for PuppetBD or a different one
PUPPETSERVER_SSL_CA=/pabawi/certs/ca.pem
PUPPETSERVER_SSL_CERT=/pabawi/certs/pabawi.pem
PUPPETSERVER_SSL_KEY=/pabawi/certs/pabawi-key.pem
PUPPETSERVER_SSL_REJECT_UNAUTHORIZED=true
# -----------------------------------------------------------------------------
PUPPETSERVER_ENABLED=false
# PUPPETSERVER_SERVER_URL=https://puppet.example.com
# PUPPETSERVER_PORT=8140
# PUPPETSERVER_TOKEN=
# PUPPETSERVER_SSL_ENABLED=true
# PUPPETSERVER_SSL_CA=/certs/ca.pem
# PUPPETSERVER_SSL_CERT=/certs/pabawi.pem
# PUPPETSERVER_SSL_KEY=/certs/pabawi-key.pem
# PUPPETSERVER_SSL_REJECT_UNAUTHORIZED=true
# PUPPETSERVER_TIMEOUT=30000
# PUPPETSERVER_RETRY_ATTEMPTS=3
# PUPPETSERVER_RETRY_DELAY=1000
# PUPPETSERVER_INACTIVITY_THRESHOLD=3600
# PUPPETSERVER_CACHE_TTL=300000
# PUPPETSERVER_CIRCUIT_BREAKER_THRESHOLD=5
# PUPPETSERVER_CIRCUIT_BREAKER_TIMEOUT=60000
# PUPPETSERVER_CIRCUIT_BREAKER_RESET_TIMEOUT=30000

# -----------------------------------------------------------------------------
# Hiera integration
HIERA_ENABLED=true
HIERA_CONTROL_REPO_PATH=/pabawi/control-repo
HIERA_CONFIG_PATH=hiera.yaml
# -----------------------------------------------------------------------------
HIERA_ENABLED=false
# HIERA_CONTROL_REPO_PATH=/control-repo
# HIERA_CONFIG_PATH=hiera.yaml
# HIERA_ENVIRONMENTS=["production","staging"]
# HIERA_FACT_SOURCE_PREFER_PUPPETDB=true
# HIERA_FACT_SOURCE_LOCAL_PATH=
# HIERA_CATALOG_COMPILATION_ENABLED=false
# HIERA_CATALOG_COMPILATION_TIMEOUT=60000
# HIERA_CATALOG_COMPILATION_CACHE_TTL=300000
# HIERA_CACHE_ENABLED=true
# HIERA_CACHE_TTL=300000
# HIERA_CACHE_MAX_ENTRIES=10000
# HIERA_CODE_ANALYSIS_ENABLED=true
# HIERA_CODE_ANALYSIS_LINT_ENABLED=true
# HIERA_CODE_ANALYSIS_MODULE_UPDATE_CHECK=true
# HIERA_CODE_ANALYSIS_INTERVAL=3600000
# HIERA_CODE_ANALYSIS_EXCLUSION_PATTERNS=[]

# Bolt integration
COMMAND_WHITELIST_ALLOW_ALL=false
COMMAND_WHITELIST=["ls","pwd","whoami","uptime"]
BOLT_EXECUTION_TIMEOUT=300000
# Bolt project files can stay in the control repo or in a separate dir
BOLT_PROJECT_PATH=/pabawi/control-repo
# -----------------------------------------------------------------------------
# Ansible integration
# -----------------------------------------------------------------------------
ANSIBLE_ENABLED=false
# ANSIBLE_PROJECT_PATH=/ansible
# ANSIBLE_INVENTORY_PATH=inventory/hosts
# ANSIBLE_EXECUTION_TIMEOUT=300000

# -----------------------------------------------------------------------------
# SSH integration
# -----------------------------------------------------------------------------
SSH_ENABLED=false
# SSH_CONFIG_PATH=/ssh/config
# SSH_DEFAULT_USER=root
# SSH_DEFAULT_PORT=22
# SSH_DEFAULT_KEY=/ssh/id_rsa
# SSH_HOST_KEY_CHECK=true
# SSH_CONNECTION_TIMEOUT=30
# SSH_COMMAND_TIMEOUT=300
# SSH_MAX_CONNECTIONS=50
# SSH_MAX_CONNECTIONS_PER_HOST=5
# SSH_IDLE_TIMEOUT=300
# SSH_CONCURRENCY_LIMIT=10
# SSH_SUDO_ENABLED=false
# SSH_SUDO_COMMAND=sudo
# SSH_SUDO_PASSWORDLESS=true
# SSH_SUDO_PASSWORD= # pragma: allowlist secret
# SSH_SUDO_USER=root
# SSH_PRIORITY=50

# -----------------------------------------------------------------------------
# Proxmox integration
# -----------------------------------------------------------------------------
PROXMOX_ENABLED=false
# PROXMOX_HOST=proxmox.example.com
# PROXMOX_PORT=8006
# Token authentication (recommended)
# PROXMOX_TOKEN=user@realm!tokenid=token-value # pragma: allowlist secret
# Username/password authentication (alternative)
# PROXMOX_USERNAME=root@pam
# PROXMOX_PASSWORD=your-password-here # pragma: allowlist secret
# PROXMOX_REALM=pam
# PROXMOX_SSL_REJECT_UNAUTHORIZED=true
# PROXMOX_SSL_CA=/certs/proxmox-ca.pem
# PROXMOX_SSL_CERT=/certs/proxmox-cert.pem
# PROXMOX_SSL_KEY=/certs/proxmox-key.pem
# PROXMOX_TIMEOUT=30000
# PROXMOX_PRIORITY=7

# -----------------------------------------------------------------------------
# AWS integration
# -----------------------------------------------------------------------------
AWS_ENABLED=false
# Use AWS profiles or IAM roles when possible instead of static keys.
# If omitted, the AWS SDK default credential chain is used
# (env vars, ~/.aws/credentials, instance profile, etc.)
# AWS_ACCESS_KEY_ID=your-access-key-here # pragma: allowlist secret
# AWS_SECRET_ACCESS_KEY=your-secret-key-here # pragma: allowlist secret
# AWS_DEFAULT_REGION=us-east-1
# Query multiple regions (JSON array or comma-separated)
# AWS_REGIONS=["us-east-1","eu-west-1"]
# AWS_SESSION_TOKEN= # pragma: allowlist secret
# AWS_PROFILE=default
# AWS_ENDPOINT=

# SSH integration configuration
SSH_ENABLED=true
SSH_CONFIG_PATH=/pabawi/ssh/config
# SSH_DEFAULT_USER=al
# -----------------------------------------------------------------------------
# Streaming, Cache, and Queue (advanced — defaults are usually fine)
# -----------------------------------------------------------------------------
# STREAMING_BUFFER_MS=100
# STREAMING_MAX_OUTPUT_SIZE=10485760
# STREAMING_MAX_LINE_LENGTH=10000
# CACHE_INVENTORY_TTL=30000
# CACHE_FACTS_TTL=300000
# CONCURRENT_EXECUTION_LIMIT=5
# MAX_QUEUE_SIZE=50

ANSIBLE_ENABLED=true
ANSIBLE_PROJECT_PATH=/pabawi/ansible
ANSIBLE_INVENTORY_PATH=inventory/hosts
# -----------------------------------------------------------------------------
# UI
# -----------------------------------------------------------------------------
# UI_SHOW_HOME_PAGE_RUN_CHART=true
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,5 @@ bolt-project/data/
# Stress test generated files (large inventory files)
samples/stresstest/ansible/inventory/
samples/stresstest/bolt/inventory.yaml

.claude
Loading
Loading