Skip to main content

Local Deployment Troubleshooting

This guide covers troubleshooting issues specific to local test deployments on development machines and workstations.

Prerequisites Issues

Docker Not Installed or Not Running

Symptom

docker ps
# Command 'docker' not found
# OR
# Cannot connect to the Docker daemon

Solution

Linux:

# Install Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# Add user to docker group
sudo usermod -aG docker $USER

# Log out and back in, then test
docker ps

macOS:

# Install via Homebrew
brew install --cask docker

# Or download Docker Desktop from docker.com
# Start Docker Desktop application

Windows:

  • Download and install Docker Desktop from docker.com
  • Ensure WSL 2 is installed and configured
  • Start Docker Desktop

Docker Compose Not Available

Symptom

docker compose version
# docker: 'compose' is not a docker command

Solution

Docker Compose v2 (plugin):

# Linux
sudo apt-get update
sudo apt-get install docker-compose-plugin

# Verify
docker compose version

Docker Compose v1 (standalone):

# If v2 not available, use v1
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# Verify
docker-compose version

# Update run.sh to use docker-compose instead of docker compose

Missing jq or golang

Symptom

./run.sh -l
# bash: jq: command not found
# OR
# bash: go: command not found

Solution

Ubuntu/Debian:

sudo apt-get update
sudo apt-get install -y jq golang-go

macOS:

brew install jq go

Fedora/RHEL:

sudo yum install -y jq golang

Certificate Issues

mkcert Not Installed

Symptom

./run.sh -s opendso.local
# bash: mkcert: command not found

Solution

Linux:

# Option 1: Install via package manager (if available)
sudo apt install mkcert

# Option 2: Install manually
cd /tmp
wget https://github.com/FiloSottile/mkcert/releases/latest/download/mkcert-v*-linux-amd64
chmod +x mkcert-v*-linux-amd64
sudo mv mkcert-v*-linux-amd64 /usr/local/bin/mkcert

# Verify
mkcert -version

macOS:

brew install mkcert
brew install nss # For Firefox support

# Verify
mkcert -version

Certificate Generation Fails

Symptom

./run.sh -s opendso.local
# Error: failed to create CA
# OR
# mkcert: ERROR: no browsers found

Solution

# Install mkcert root CA
mkcert -install

# Check CA location
mkcert -CAROOT

# If Firefox not recognizing:
# Install NSS tools
sudo apt-get install libnss3-tools # Linux
brew install nss # macOS

# Reinstall CA
mkcert -install

Browser Certificate Warning

Symptom

Browser shows "Your connection is not private" or "NET::ERR_CERT_AUTHORITY_INVALID"

Solution

Chrome/Edge:

  1. Click "Advanced"
  2. Click "Proceed to opendso.local (unsafe)"
  3. Or: Ensure mkcert root CA is trusted
    mkcert -install
  4. Restart browser

Firefox:

  1. Firefox uses its own certificate store
  2. Ensure NSS tools installed:
    sudo apt-get install libnss3-tools  # Linux
    brew install nss # macOS
  3. Reinstall CA:
    mkcert -install
  4. Restart Firefox

Safari:

  • mkcert handles Safari automatically on macOS
  • If issues persist:
    1. Open Keychain Access
    2. Search for "mkcert"
    3. Double-click the certificate
    4. Expand "Trust"
    5. Set "When using this certificate" to "Always Trust"

Host File Configuration Issues

Can't Edit Hosts File (Permission Denied)

Symptom

echo "127.0.0.1 opendso.local" >> /etc/hosts
# bash: /etc/hosts: Permission denied

Solution

Linux/macOS:

# Use sudo
sudo nano /etc/hosts

# Add entries:
192.168.1.100 opendso.local
192.168.1.100 api.opendso.local
# ... etc

# Save and exit (Ctrl+X, Y, Enter)

# Verify
cat /etc/hosts | grep opendso.local

Windows:

  1. Open Notepad as Administrator
  2. File → Open → C:\Windows\System32\drivers\etc\hosts
  3. Add entries
  4. Save

DNS Not Resolving to Hosts File

####Symptom

ping opendso.local
# ping: opendso.local: Name or service not known

Solution

Check hosts file:

cat /etc/hosts | grep opendso.local

Flush DNS cache:

Linux:

sudo systemctl restart systemd-resolved
# OR
sudo systemd-resolve --flush-caches

macOS:

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

Windows:

ipconfig /flushdns

Test resolution:

nslookup opendso.local
getent hosts opendso.local # Linux

Port Conflict Issues

Port Already in Use

Symptom

docker compose logs api
# Error: listen EADDRINUSE: address already in use :::3000

Diagnosis

# Check what's using the port
sudo netstat -tulpn | grep :3000
sudo lsof -i :3000

# Or with ss
ss -tulpn | grep :3000

# Check all listening ports
sudo netstat -tulpn | grep LISTEN

Solution

Option 1: Stop the conflicting service

# Find the process
sudo lsof -i :3000
# Example output: node 12345 user ...

# Kill it
sudo kill 12345

# Or stop via systemctl if it's a service
sudo systemctl stop <service-name>

Common Port Conflicts

PortCommon ServiceSolution
80System Nginx, ApacheStop system web server
443System Nginx, ApacheStop system web server
3000Node.js development serversStop other Node apps
8080Jenkins, TomcatStop conflicting service
4222Other NATS instancesStop other NATS
27017System MongoDBStop system MongoDB

Service Access Issues

Can't Access Web Interface

Symptom

Browser can't reach https://api.opendso.local or other services

Checklist

1. Verify hosts file:

cat /etc/hosts | grep opendso.local
# Should show: 192.168.1.YOUR_IP opendso.local

2. Check container is running:

docker ps | grep api
# Should show running container

3. Check container logs:

docker compose logs api
# Look for startup errors

4. Verify port mapping:

docker ps --format 'table {{.Names}}\t{{.Ports}}'
# Should show port mappings like 0.0.0.0:443->443/tcp

5. Test local connectivity:

# Test from host
curl -k https://localhost:443

# Test container directly
docker exec api curl -f http://localhost:3000/health

6. Check firewall:

# Linux
sudo ufw status
sudo iptables -L

# macOS
# System Preferences → Security & Privacy → Firewall

# Linux Temporarily disable firewall for testing
sudo ufw disable # Re-enable after: sudo ufw enable

Service Returns 502 Bad Gateway

Symptom

Nginx or reverse proxy returns 502

Diagnosis

# Check if backend service is running
docker ps | grep gms-api

# Check backend logs
docker-compose logs gms-api

# Test backend directly
docker exec gms-api curl http://localhost:3000/health

Solution

# Restart backend service
docker compose restart gms-api

# Check depends_on in compose.yaml
services:
reverse-proxy:
depends_on:
- api

# Ensure proper network connectivity
docker network inspect opendso

Resource Issues

Out of Disk Space

Symptom

# Error: no space left on device
docker compose up -d

Diagnosis

# Check disk space
df -h

# Check Docker usage
docker system df
docker system df -v

Solution

# Clean up Docker resources
docker system prune -a --volumes

# Remove specific items
docker container prune # Stopped containers
docker image prune -a # Unused images
docker volume prune # Unused volumes

# Check space again
df -h

Docker Desktop Out of Memory

Symptom

Containers crash or can't start, Docker Desktop shows memory warning

Solution

Docker Desktop (Mac/Windows):

  1. Open Docker Desktop
  2. Settings → Resources
  3. Increase Memory limit (recommend 8GB minimum for full stack)
  4. Increase CPU limit if needed
  5. Apply & Restart

Linux:

# Check system memory
free -h

# Monitor Docker usage
docker stats

# Set container memory limits in compose.yaml
services:
api:
deploy:
resources:
limits:
memory: 1G

Slow Performance

Causes

  • Insufficient Docker resources
  • Too many services running
  • Slow disk I/O
  • Background processes

Solutions

# Check resource usage
docker stats

# Run only needed services
./run.sh -p nats -p api -c # Instead of -p all

# Close other applications
# Restart Docker Desktop

# Check system resources
top
htop

Network Issues

Docker Network Doesn't Exist

Symptom

docker compose up -d
# Error: network opendso_test not found

Solution

# Check networks
docker network ls

# Create network manually if needed
docker network create opendso

# Or let compose create it
docker compose up -d

Containers Can't Communicate

Symptom

Service logs show connection errors to other services

Diagnosis

# Check all containers are on same network
docker network inspect opendso

# Test connectivity
docker exec gms-api ping nats-main
docker exec gms-api nc -zv nats-main 4222

Solution

# Ensure network is defined in compose.yaml
services:
api:
networks:
- opendso
nats:
networks:
- opendso

networks:
opendso:
name: opendso

# Recreate containers
./run.sh -p all -d
./run.sh -p all -c

Configuration Issues

Environment File Not Found

Symptom

./run.sh -p all -c
# Error: Docker environment file does not exist; exiting execution

Solution

# Check file exists
ls -la ../config/docker/.env

# If missing, clone config repo
cd ..
git clone https://github.com/openenergysolutions/circuit-config-docker-compose.git config

# Verify
ls -la config/docker/.env

Models Directory Empty

Symptom

./run.sh -p all -c
# Error: No feeders are present in ../models

Solution

# Check models exist
ls -la ../models/circuit/

# If empty, clone models repo
cd ..
git clone https://github.com/openenergysolutions/circuit-docker-compose.git models

# Verify
ls -la models/circuit/recloser/

Reset and Clean Start

Complete Reset

If all else fails, start fresh:

# 1. Stop everything
cd opendso-docker-compose
./run.sh -p all -d -f

# 2. Remove volumes
docker volume prune -f

# 3. Remove network
docker network rm opendso

# 4. Clean Docker system
docker system prune -a --volumes

# 5. Remove certificates
rm -rf ../certs/

# 6. Regenerate certificates
./run.sh -s opendso.local

# 7. Update hosts file (manually)
sudo nano /etc/hosts
# Add displayed entries

# 8. Start services
./run.sh -p all -c

Browser-Specific Issues

Caching Issues

Symptom

Frontend app (edo-adr) shows old version after update

Solution

Chrome/Edge:

  1. Open DevTools (F12)
  2. Hard refresh (Ctrl+Shift+R)

Firefox:

  1. Open DevTools (F12)
  2. Hard refresh (Ctrl+Shift+R)

Quick Fixes Summary

ProblemQuick Fix
Certificate warningmkcert -install and restart browser
Can't reach serviceCheck hosts file, verify container running
Port conflictsudo lsof -i :<port> and kill process
Out of diskdocker system prune -a --volumes
Slow performanceIncrease Docker Desktop resources
Network errordocker network inspect opendso_test
Container won't startdocker compose logs <service>

Next Steps