Skip to content

Obiente/Cloud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Obiente Cloud

A distributed Platform-as-a-Service (PaaS) for deploying and managing applications across multiple nodes

License Go Version Docker

Features

  • πŸš€ Multi-Node Deployments - Distribute applications across multiple servers
  • 🌐 Dynamic Routing - Automatic traffic routing with custom domains
  • πŸ”’ Integrated Auth - Built-in Zitadel authentication support
  • πŸ“Š Real-Time Monitoring - Track deployments with Prometheus and Grafana
  • πŸ”„ Auto Scaling - Automatic scaling based on load
  • πŸ’Ύ High Availability - Optional HA setup for production
  • 🎯 Smart Orchestration - Intelligent node selection and load balancing

Quick Start

Docker Compose (Local Development)

For development on worker nodes or single-machine setups:

# Clone the repository
git clone https://github.com/obiente/cloud.git
cd cloud

# Option 1: Use local DNS (default)
docker compose up -d

# Option 2: Use production DNS (recommended if you have a production deployment)
# Set production DNS server IP
export MAIN_DNS_IP=10.0.9.10  # Replace with your production DNS server IP

# Disable local DNS service (comment out lines 186-217 in docker-compose.yml)
# Or skip it: docker compose up -d --scale dns=0
docker compose up -d

# Check status
docker compose ps

DNS Configuration: By default, a local DNS server runs inside Docker on port 53 (not exposed to host, so no port conflict). It queries the dev database, so dev deployments resolve correctly. All containers automatically use this DNS server. To use production DNS instead, set MAIN_DNS_IP and MAIN_DNS_PORT - but note that production DNS queries the production database, so it won't resolve dev deployments. See DNS Development Guide for details.

Note: Worker nodes cannot deploy Docker Swarm stacks. Use docker compose for development on worker nodes.

Docker Swarm (Development - Uses Main Deployment DNS)

For development on manager nodes only (worker nodes cannot deploy stacks):

Recommended: Use the development deployment script:

# Deploy using existing images (default - no build/pull)
./scripts/deploy-swarm-dev.sh

# Build images locally and deploy
./scripts/deploy-swarm-dev.sh -b
# or
./scripts/deploy-swarm-dev.sh --build

# Pull images from registry and deploy
./scripts/deploy-swarm-dev.sh -p
# or
./scripts/deploy-swarm-dev.sh --pull

# Custom stack name
./scripts/deploy-swarm-dev.sh my-dev-stack

Manual deployment (alternative):

# Verify you're a manager node
docker node ls  # Should work, not show "not a manager" error

# Build images first (required before deploying)
export DOCKER_BUILDKIT=1
for service in api-gateway auth-service organizations-service billing-service deployments-service gameservers-service orchestrator-service vps-service support-service audit-service superadmin-service dns-service vps-gateway; do
  docker build -f apps/$service/Dockerfile -t ghcr.io/obiente/cloud-$service:latest .
done

# Merge and deploy
cat docker-compose.base.yml docker-compose.swarm.dev.yml | docker stack deploy -c - obiente-dev

# View logs
docker service logs -f obiente-dev_api-gateway

# Remove stack
docker stack rm obiente-dev

Note: The docker-compose.swarm.dev.yml file uses Swarm-specific features (overlay networks) and must be deployed with docker stack deploy, not docker compose. Only manager nodes can deploy stacks. Worker nodes should use regular docker compose (see above). See Development Deployment Guide for more details.

Docker Swarm (Production)

# Initialize Docker Swarm (if not already initialized)
docker swarm init

# Build and deploy (recommended - uses helper script)
./scripts/deploy-swarm.sh obiente docker-compose.swarm.yml

# Or build manually, then deploy:
export DOCKER_BUILDKIT=1
docker build -f apps/api/Dockerfile -t obiente/cloud-api:latest .
docker stack deploy -c docker-compose.swarm.yml obiente

# For multi-node deployments, push images to a registry or use docker save/load
# docker tag obiente/cloud-api:latest your-registry/obiente/cloud-api:latest
# docker push your-registry/obiente/cloud-api:latest

# Check status
docker service ls
docker stack services obiente

Important: Docker Swarm doesn't support building images during deployment. You must build images first, then deploy. On multi-node setups, ensure images are available on all nodes (use a registry or docker save/load).

See the Installation Guide for detailed instructions.

Documentation

πŸ“š Full Documentation

Quick Links

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      Obiente Cloud                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                        β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚    Go API    β”‚  β”‚    Traefik    β”‚  β”‚ Orchestrator β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚         β”‚                 β”‚                  β”‚         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚    PostgreSQL Cluster (HA) / Single Instance     β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                                        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Learn more: Architecture Overview

Use Cases

🏠 Self-Hosting for Hobbyists

Deploy your personal projects on your own infrastructure. Perfect for:

  • Home lab deployments
  • Personal project hosting
  • Learning distributed systems

🏒 Production IaaS

Sell Obiente Cloud as Infrastructure-as-a-Service:

  • Multi-tenant deployments
  • Custom domains per customer
  • Resource management and billing

πŸš€ Development Team

Use Obiente Cloud internally:

  • Staging and production environments
  • Testing distributed applications
  • CI/CD integration

Requirements

  • Docker: 24.0+
  • OS: Linux (Ubuntu 22.04+ recommended)
  • RAM: 4GB minimum (8GB+ recommended)
  • Storage: 20GB minimum

See Requirements for detailed specifications.

Project Structure

cloud/
β”œβ”€β”€ apps/
β”‚   └── api/                 # Go ConnectRPC API
β”œβ”€β”€ docs/                    # Documentation
β”œβ”€β”€ monitoring/              # Prometheus & Grafana configs
β”œβ”€β”€ docker-compose.yml       # Local development
β”œβ”€β”€ docker-compose.swarm.yml # Simple swarm deployment
└── docker-compose.swarm.ha.yml # HA production deployment

Development

# Install dependencies
go mod download

# Run API locally
cd apps/api
go run main.go

# Run tests
go test ./...

# Build Docker image
docker build -f apps/api/Dockerfile -t obiente/cloud-api:latest .

See Development Guide for more details.

Contributing

We welcome contributions! Please see our contributing guidelines:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

See Contributing Guide for details.

License

GNU Affero General Public License v3.0

Support


Made with ❀️ by the Obiente Team

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 3

  •  
  •  
  •