Skip to main content

Uninstalling Server Components

Complete guide for removing Camouflage server deployments including Community Edition and Enterprise Edition components.

Community Edition

Community Edition runs as a single all-in-one Docker container. Follow these steps to safely remove it.

Quick Removal

# Stop the container
docker stop camouflage-ce

# Remove the container
docker rm camouflage-ce

# Remove the volume (WARNING: This deletes ALL data!)
docker volume rm camouflage_data

# Remove the image (optional)
docker rmi camouflagenetworks/camouflage-ce:latest

Backup Before Removal

IMPORTANT: Always backup your data before removing the volume!

# 1. Stop the container
docker stop camouflage-ce

# 2. Create a backup
docker run --rm \
-v camouflage_data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/camouflage-backup-$(date +%Y%m%d).tar.gz -C /data .

# 3. Verify backup
ls -lh camouflage-backup-*.tar.gz

# 4. Now safe to remove
docker rm camouflage-ce
docker volume rm camouflage_data

What Gets Backed Up

The backup contains:

  • ✅ SQLite database (all users, networks, nodes)
  • ✅ SSL certificates
  • ✅ Configuration files
  • ✅ VPN daemon states
  • ✅ Logs

Preserving Data for Later

If you might want to use the data again:

# Just stop and remove the container
docker stop camouflage-ce
docker rm camouflage-ce

# KEEP the volume intact
# Later, start a new container with the same volume:
docker run -d \
--name camouflage-ce \
-p 9443:9443 \
-p 61700:61700/udp \
-p 61701:61701/udp \
--cap-add=NET_ADMIN \
--cap-add=NET_RAW \
-v camouflage_data:/data \
camouflagenetworks/camouflage-ce:latest

Restoring from Backup

# 1. Create a new volume
docker volume create camouflage_data

# 2. Restore the backup
docker run --rm \
-v camouflage_data:/data \
-v $(pwd):/backup \
alpine tar xzf /backup/camouflage-backup-20260114.tar.gz -C /data

# 3. Start container with restored data
docker run -d \
--name camouflage-ce \
-p 9443:9443 \
-p 61700:61700/udp \
-p 61701:61701/udp \
--cap-add=NET_ADMIN \
--cap-add=NET_RAW \
-v camouflage_data:/data \
camouflagenetworks/camouflage-ce:latest

Enterprise Edition

Enterprise Edition consists of separate components that can be removed independently.

Relay Server

The relay server coordinates VPN connections.

Docker

# Stop and remove container
docker stop camouflage-relay
docker rm camouflage-relay

# Remove volumes (if any)
docker volume rm relay_data

# Remove image
docker rmi camouflagenetworks/camouflage-relay:latest

Docker Compose

# Stop and remove all services
docker-compose down

# Remove volumes (WARNING: Deletes data!)
docker-compose down -v

# Or remove specific service
docker-compose rm -s -v relay

Kubernetes

# Delete the entire namespace (removes everything)
kubectl delete namespace camouflage

# Or delete individual components
kubectl delete deployment camouflage-relay -n camouflage
kubectl delete service camouflage-relay -n camouflage
kubectl delete configmap relay-config -n camouflage
kubectl delete secret relay-secrets -n camouflage
kubectl delete pvc relay-data -n camouflage
Backup Kubernetes Data
# Backup ConfigMaps
kubectl get configmap relay-config -n camouflage -o yaml > relay-config-backup.yaml

# Backup Secrets
kubectl get secret relay-secrets -n camouflage -o yaml > relay-secrets-backup.yaml

# Backup PersistentVolumeClaim data
kubectl exec -n camouflage deployment/camouflage-relay -- tar czf - /data > relay-data-backup.tar.gz

Gateway

Gateways provide internet access for VPN clients.

Docker

# Stop and remove container
docker stop camouflage-gateway
docker rm camouflage-gateway

# Remove the image
docker rmi camouflagenetworks/camouflage-gateway:latest

Docker Compose

# Remove gateway service
docker-compose rm -s -v gateway

# Or remove all services
docker-compose down -v

Multiple Gateways

If you deployed multiple gateways:

# List all gateway containers
docker ps -a | grep camouflage-gateway

# Remove all gateways
docker ps -a | grep camouflage-gateway | awk '{print $1}' | xargs docker rm -f

# Remove all gateway images
docker images | grep camouflage-gateway | awk '{print $3}' | xargs docker rmi

CLI Tools

If you installed CLI tools separately:

# Remove binaries
sudo rm /usr/local/bin/camouflage-client
sudo rm /usr/local/bin/camouflage-daemon
sudo rm /usr/local/bin/camouflage-cli
sudo rm /usr/local/bin/camouflage-relay

# Remove configuration
rm -rf ~/.camouflage

Clean Docker Environment

Remove all Camouflage-related Docker resources:

# Stop all Camouflage containers
docker ps -a | grep camouflage | awk '{print $1}' | xargs docker stop

# Remove all Camouflage containers
docker ps -a | grep camouflage | awk '{print $1}' | xargs docker rm

# Remove all Camouflage images
docker images | grep camouflage | awk '{print $3}' | xargs docker rmi

# Remove all Camouflage volumes (WARNING: Deletes all data!)
docker volume ls | grep camouflage | awk '{print $2}' | xargs docker volume rm

# Remove all Camouflage networks
docker network ls | grep camouflage | awk '{print $1}' | xargs docker network rm

Verification

Verify complete removal:

Docker

# Check for running containers
docker ps | grep camouflage

# Check for stopped containers
docker ps -a | grep camouflage

# Check for images
docker images | grep camouflage

# Check for volumes
docker volume ls | grep camouflage

Kubernetes

# Check namespace
kubectl get namespace camouflage

# Check all resources
kubectl get all -n camouflage

# Check volumes
kubectl get pvc -n camouflage

Troubleshooting

Container Won't Stop

# Force stop
docker stop -t 1 camouflage-ce

# Or force kill
docker kill camouflage-ce

Volume Won't Delete

# Check what's using it
docker ps -a --filter volume=camouflage_data

# Force remove
docker volume rm -f camouflage_data

Permission Errors

# Ensure you have docker permissions
sudo usermod -aG docker $USER

# Or run with sudo
sudo docker rm camouflage-ce

Orphaned Resources

# Clean up orphaned volumes
docker volume prune

# Clean up unused images
docker image prune -a

# Clean up everything unused (CAREFUL!)
docker system prune -a --volumes

Migration to New Server

If you're moving to a new server instead of uninstalling:

Export from Old Server

# 1. Backup data
docker run --rm \
-v camouflage_data:/data \
-v $(pwd):/backup \
alpine tar czf /backup/camouflage-migration.tar.gz -C /data .

# 2. Copy to new server
scp camouflage-migration.tar.gz user@newserver:/tmp/

Import on New Server

# 1. Create volume
docker volume create camouflage_data

# 2. Restore backup
docker run --rm \
-v camouflage_data:/data \
-v /tmp:/backup \
alpine tar xzf /backup/camouflage-migration.tar.gz -C /data

# 3. Start container
docker run -d \
--name camouflage-ce \
-p 9443:9443 \
-p 61700:61700/udp \
-p 61701:61701/udp \
--cap-add=NET_ADMIN \
--cap-add=NET_RAW \
-v camouflage_data:/data \
camouflagenetworks/camouflage-ce:latest

# 4. Old server can now be safely decommissioned

Need Help?

If you encounter issues: