# Cloud 4.0 Documentation and Implementation

# The Vision

## What is it?

The vision of Cloud 4.0 is to provide a secure, fault tolerance and an overall easy to manage system to provide computing needs and hosting services. One main goal is to provide extensibility and flexibility as the needs for computing will change overtime. It should be easy to provide new machines (physical and virtual) an environment that can be used to accomplish it's tasks.

## The Genesis Machine

The genesis machine will be at the heart of the entire operation. It will provide a PXE boot server that will serve a custom Debian environment. This will allow new virtual machines to be created easily and for existing machines to be updated easier. Instead of updating all machines manually, it will be a simple as restarting the virtual machine and getting the most up to date boot image.

The genesis machine will also provide some other services such as Smallstep, Gitea, Jenkins and more to allow for dockerized environments to be updated more securely and easier

## Custom Debian VMs  


All virtual machines will use a custom version of the debian-live project as their operating system. This is to streamline and simplify OS updates as previously stated

## Custom Docker Image

There will be a custom docker image that all docker containers will be required to used. This docker image will be able to connect with other services on the Genesis machine to provide a secure way to transfer configuration information. There will also be some custom software installed to help with configuring and bring up of the virtual machine.

### Config Hub

Config Hub will be a program that takes in some JSON data and will be able to generate a configuration file for a service based on a mustache template

### HealthCheck Hub

HealthCheck Hub will be a program that will aim to provide an easy way for docker containers to report how healthy they are. This information will be used to measure how healthy the server is

### Log Hub

Log Hub will be a program that takes the log data from the entire container and exports them as easy to ingest log messages

## End to End Encryption

Another goal is to provide End to End encryption from the edge node all the way to the respective machine. This means that we will no longer terminal SSL/TLS at the edge node as previously done

# Security

This chapter contains all of the security information for the system

# Hardware

This contains all of the hardware that is used in the server

# Overview

## Purpose

The purpose of this document is to provide a overview of all of the machines in use as well as backup machines. Each machine will be given its own section

## Machines

### Gateway

- Dell Poweredge R720 
    - RAM:
    - CPU:
    - Motherboard:
    - PSU:
    - HDD
    - GPU
    - Other
- Host OS 
    - XCP-NG

### Main

- HP Z970 Workstation 
    - RAM:
    - CPU:
    - Motherboard:
    - PSU:
    - HDD
    - GPU
    - Other
- Host OS 
    - XCP-NG

### Backup

- ???? 
    - RAM:
    - CPU:
    - Motherboard:
    - PSU:
    - HDD
    - GPU
    - Other
- Host OS 
    - Debian (Stable)

### GPUCluster

- ???? 
    - RAM:
    - CPU:
    - Motherboard:
    - PSU:
    - HDD
    - GPU
    - Other
- Host OS 
    - Debian (Stable)

## Networking

# Implementation

# Docker Virtual Machines

### About

A docker virtual machine is a virtual host where the sole purpose is to bring up a docker-compose stack. The docker-compose stack could be an application or a bundle of different applications.