# Swarmlab Hybrid #### **Welcome to Swarmlab.io** ##### **On demand Labrooms** ##### **Ready-to-Use Virtual Labs one click away.** ### Table of contents 1. [Features](#introduction) 2. [System requirements ](#systemrequirements) 3. [Prerequisites](#prerequisites) 4. [Installation](#installation) 5. [More info](#moreinfo) ### **An open source work/study-from-home application.** Swarmlab provides you with all the required tools, tools to teach work or try out demos in a completely virtual environment. Swarmlab is a collection of services that aims to: - provide **teachers** and professors with online remote tools to do their lessons - give **students** the opportunity to study real life examples in their chosen area of expertise - allow **developers** to fully test and debug their applications and provide POC’s Swarmlab, up and running since 2020, is already used for teaching purposes in a university and has proven itself as a powerful tool in the post covid remote-based situation. Source code is available at https://git.swarmlab.io:3000 under the AGPL licence. ### Ready to run out-of-the-box As of now the services provided by swarmlab are: #### Labrooms(virtual classrooms in the form of model applications to be tweaked at will) - linux → base linux system – designed for use as a base to further develop your app - MPI → Instances of Ubuntu Linux with MPICH — portable implementation of Message Passing Interface (MPI) standard. Designed for MPI program development and deployment. - Node.js - sec → a basic linux-based os with security tools – designed as a template for apps #### Storage to automatically create a cluster of databases. #### Proof Of Concept (POC) options - datacollector → using provided services a fully developed application may collect data from a swarm and use it for further analysis #### Microservices - Jupyter - numpy - scipy - nodejs - nginx - haproxy - gns3 - wireshark - snmpsim - xelatexthesis - ansible - etherpad - codeserver (vscode) - redisserver - mongoserver - mongoclient (GUI) to be continued… ## System requirements **Before** you create and configure a hybrid deployment using the swarmlab-agent client, your Local Machines need to meet certain requirements. > If you don't meet those requirements, you won't be able to complete the steps within the swarmlab-agent client and you won't be able to configure a hybrid deployment between your Local Enviroment and Swarmlab Online Enviroment. #### A Server (Virtual or Physical) - You must have super user privileges (root/sudo) - Docker Engine- Community version 18 or later is required. - Docker Engine is supported on x86_64 (or amd64), armhf, and arm64 architectures. #### RAM - Absolute minimum to run the daemon and some very light containers - 512MB - Minimum for “comfortable” usage – 2GB #### CPU - Minimum: 2 - Recommended 4+ #### Disk Space - 10 GB for internal requirements. - The amount of additional disk space soloemnly depends on you intended use. :warning: Since Docker uses hypervisor the host NEEDS TO HAVE VIRTUALIZATION ENABLED! ## Prerequisites * node version >15 ```sh curl -sL https://deb.nodesource.com/setup_15.x | sudo -E bash - sudo apt-get install -y nodejs ``` * docker ```sh curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt update sudo apt install -y docker-ce sudo usermod -aG docker [USERNAME] # Please replace [USERNAME] with the user you want to run docker on ``` :information_source: for kali specifically please visit the following link to install docker. https://linuxhint.com/install_docker_kali_linux/ * docker-compose ```sh sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose ``` * pm2 ```sh sudo npm install -g pm2 ``` * wireguard ```sh sudo apt install wireguard jq ``` ## Installation ### for *nix - Clone the repo ```sh git clone --recurse-submodules https://git.swarmlab.io:3000/zeus/swarmlab-hybrid.git ``` - Install it! ```sh cd swarmlab-hybrid ./install.sh <-- run it without root privileges ``` - Open URL __http://localhost:3088__ in browser ### for Windows http://docs.swarmlab.io/SwarmLab-HowTos/swarmlab/docs/swarmlab/docs/install/install-docker.html#windows-10-with-wsl-version2-enabled ### if you wish to keep the environment contained And instructions on how to use them here. :information_source: Default password: swarmlab PLEASE CHANGE PASSWORD IMEDIATELLY AFTER FIRST LAUNCH!!! ### Fix "x509: certificate signed by unknown authority" issue http://docs.swarmlab.io/SwarmLab-HowTos/swarmlab/docs/swarmlab/docs/install/install-docker.html#fix-x509-certificate-signed-by-unknown-authority-issue ### Fix "server certificate verification failed. CAfile:..." issue http://docs.swarmlab.io/SwarmLab-HowTos/swarmlab/docs/swarmlab/docs/install/install-docker.html#fix-server-certificate-verification-failed-cafile ### More Info You can find our docs in http://docs.swarmlab.io/SwarmLab-HowTos/swarmlab/docs/swarmlab/docs/index.html