@ -0,0 +1,11 @@ |
|||
name: swarmlab |
|||
title: swarmlab |
|||
version: docs |
|||
nav: |
|||
- modules/ROOT/nav.adoc |
|||
- modules/register/nav.adoc |
|||
- modules/install/nav.adoc |
|||
- modules/quickstart/nav.adoc |
|||
- modules/hybrid/nav.adoc |
|||
- modules/venus/nav.adoc |
|||
- modules/myservices/nav.adoc |
@ -0,0 +1,46 @@ |
|||
= Quickstart |
|||
Swarmlab |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
|
|||
|
|||
This is where your wondeful journey in the vast world of Swarmlab begins. |
|||
|
|||
== Senario 1 |
|||
|
|||
* you are a *teacher* and want to prepare your lesson |
|||
** create exercises and examples |
|||
** share them with your students |
|||
* you are a *student* and want to try your newly acquired knowledge on some project |
|||
* you are a *Developer* and would like to denug your application or a real world senario |
|||
** you want to provide POC |
|||
* you are a *user* and just want to try out stuff |
|||
** you want to play around with examples but are too scared to do so on your system |
|||
|
|||
Well this is where you start! |
|||
|
|||
=== link:hybrid/start-labroom.html[start labroom] |
|||
=== link:hybrid/start-storage.html[start storage] |
|||
=== link:hybrid/start-microservices.html[start service] |
|||
|
|||
|
|||
== Senario 2 |
|||
|
|||
You have already completed senario 1 (using swarmlab or you own resources) and would now like to collaborate with others. |
|||
|
|||
* as a teacher you would like to share the lesson you have prepared and work on it throughout the semester |
|||
* as a developer you want to coordinate with your team |
|||
* as a student you want to communicate and cooperate with your friends |
|||
|
|||
Lets begin! |
|||
|
|||
=== create network |
|||
=== invite |
|||
=== share |
|||
==== app |
|||
==== volume |
|||
|
|||
|
After Width: | Height: | Size: 80 KiB |
@ -0,0 +1 @@ |
|||
* xref:index.adoc[Welcome] |
@ -0,0 +1,105 @@ |
|||
= Welcome to Swarmlab! |
|||
|
|||
image::ROOT:swarmlab.png[swarmlab,150,float=right] |
|||
|
|||
Swarmlab provides the user with the unique abillity to *create Labrooms* (or other applications) and *share* them as project images expanding the simple ideas to full-blown systems. |
|||
|
|||
An all of that using only the browser and the command line of their system. |
|||
|
|||
== Intro |
|||
|
|||
You will be connected to the Swarmlab Cloud (hence HYBRID) but you will be able to use your own storage(move files around, delete/copy etc),your own networking and computational power(cpu/graphics etc) and create a system exactly the way you need it. |
|||
|
|||
This way you will be able to : |
|||
|
|||
* create images for testing. |
|||
* Run them using docker. |
|||
* Share them for others to use and develop. |
|||
* Finally browse the cloud for shared images to integrate into your project and make it even better. |
|||
|
|||
== Ready to run out-of-the-box |
|||
|
|||
Normally the docker dataflow is as described in the following images: |
|||
|
|||
image:https://git.swarmlab.io:3000/zeus/swarmlab-hybrid/raw/branch/master/docs/images/docker-build.png[] |
|||
image:https://git.swarmlab.io:3000/zeus/swarmlab-hybrid/raw/branch/master/docs/images/docker-run.png[] |
|||
|
|||
== Services |
|||
|
|||
[cols="a,a"] |
|||
|=== |
|||
|Hybrid |VEnus Network Unification Service |
|||
|
|||
|*We have created an ever-growing database of readilly accessible labrooms you can choose from* |
|||
|
|||
Ready to use, on demand virtual labs/microservices |
|||
|
|||
* Run and manage said rooms and application |
|||
* Create Labrooms/Applications/Microservices |
|||
** create once - scale up or down without rebuilding |
|||
|
|||
* on-demand |
|||
** sandbox environments |
|||
** Virtual Labrooms |
|||
** Virtual Classrooms |
|||
** Proof-of-Concept (POC) |
|||
|
|||
* Move Labs between environments |
|||
|
|||
|
|||
|*VENUS makes collaboration easier* |
|||
|
|||
Build the network you require on demand and without effort. |
|||
|
|||
You can Create and manage |
|||
|
|||
* on-demand network environments using any cloud over any network |
|||
* Connect multiple computers through a network. |
|||
* Share your Labrooms/Applications/Microservices with your friends |
|||
* Move Labs between networks |
|||
* anything else that might suit your needs in a dynamic and Scalable Distributed Architecture |
|||
|
|||
Swarmlab-Venus provides |
|||
|
|||
* Secure and state-of-the-art cryptography - integrated across all connections |
|||
* Manage the entire network as a service |
|||
* Architecture/Platform Agnostic |
|||
* Manage user network access |
|||
* Network traffic analysis |
|||
|
|||
|
|||
|=== |
|||
|
|||
|
|||
[cols="a,a,grid=none"] |
|||
|==== |
|||
| |
|||
|
|||
**** |
|||
*Focus on Your project code,* |
|||
|
|||
*Not in servers and Lab settings* |
|||
|
|||
[source,sh] |
|||
---- |
|||
Chose the labroom you need and ... you are ready |
|||
---- |
|||
**** |
|||
|
|||
| |
|||
**** |
|||
*Focus on Your lab project,* |
|||
|
|||
*Not in lab and Network settings* |
|||
|
|||
|
|||
[source,sh] |
|||
---- |
|||
Chose the labroom you need and deploy it to your participants |
|||
|
|||
Write your docs and lab code in your prefered language and share it!. |
|||
---- |
|||
**** |
|||
|
|||
|=== |
|||
|
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 47 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 778 B |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 9.1 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 97 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 80 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 668 B |
After Width: | Height: | Size: 9.0 KiB |
After Width: | Height: | Size: 653 B |
After Width: | Height: | Size: 686 B |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 23 KiB |
@ -0,0 +1,9 @@ |
|||
* xref:overview.adoc[Hybrid] |
|||
** xref:overview-hybrid.adoc[Private/Local] |
|||
*** xref:start-labroom.adoc[Labroom] |
|||
*** xref:start-storage.adoc[Storage] |
|||
*** xref:start-microservices.adoc[Microservices] |
|||
|
|||
** xref:manage-instanches.adoc[Instances] |
|||
*** xref:manage-instanchesi-connect.adoc[connect] |
|||
|
@ -0,0 +1,77 @@ |
|||
= Instanches |
|||
Swarmlab |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
:experimental: |
|||
|
|||
|
|||
This is the area where you can *View and Manage your running Instances* |
|||
|
|||
== View your running Instances |
|||
|
|||
You can easily browse throught the running *instances* in the list using the search bar at the top. |
|||
|
|||
.view containers |
|||
image::hybrid:manage-instanches.png[Manage instanches,700,float=center] |
|||
|
|||
|
|||
== Info |
|||
|
|||
To request more info about the *instance* we use the more icon |
|||
image:hybrid:more.png[Info] |
|||
|
|||
=== info-menou |
|||
|
|||
.info menou |
|||
image::hybrid:more-menou.png[info,700,float=center] |
|||
|
|||
|
|||
=== Connect/Stop/Logs |
|||
|
|||
image:hybrid:more-buttons.png[float=right] |
|||
|
|||
* We can *connect* to the instance by using the btn:[connect] button |
|||
* We can *stop* it by using the btn:[stop] button |
|||
* We can *show* the log messages by using the btn:[log] button |
|||
* We can *list* exposed ports outside the Docker Networks by using the btn:[link] button |
|||
* We can get info about the *network* with the btn:[network] button image:hybrid:more-network.png[] (see below). |
|||
|
|||
=== Console |
|||
|
|||
The *Console* window shows the log messages for the running instance |
|||
|
|||
.console |
|||
image::hybrid:console.png[Console,700,float=center] |
|||
|
|||
=== network-info |
|||
|
|||
To request more info about the *network* we use the network icon |
|||
image:hybrid:more-network.png[Network] |
|||
|
|||
.network info |
|||
image::hybrid:more-network-info.png[info,700,float=center] |
|||
|
|||
== manage network |
|||
|
|||
image:hybrid:more-network-info-info.png[network,300,float=right] |
|||
|
|||
Networks can be configured to provide complete isolation for containers, which enable building applications that work together securely. |
|||
|
|||
You can add containers to one or more networks. A container with attachments to multiple networks can connect with all of the containers on all of those networks. This lets you build a “hub” of sorts. |
|||
|
|||
=== multiple network |
|||
|
|||
To add more *networks* we use the network icon |
|||
image:hybrid:more-network.png[Network] |
|||
|
|||
image::hybrid:more-network-update.png[Networkupdate,float=center] |
|||
|
|||
You can use kbd:[Ctrl] to select multiple networks |
|||
|
|||
After we have selected the desired *networks* we can *update* them by using the btn:[update] icon |
|||
|
|||
|
|||
|
@ -0,0 +1,74 @@ |
|||
= Instanches |
|||
Swarmlab |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
:experimental: |
|||
|
|||
|
|||
This is the area where you can *connect to running Instances* |
|||
|
|||
To request more info about the *instance* we use the more icon |
|||
image:hybrid:more.png[Info] |
|||
|
|||
== Connect |
|||
|
|||
image:hybrid:more-buttons.png[float=right] |
|||
|
|||
* We can *connect* to instance by using the btn:[connect] button |
|||
|
|||
.connect |
|||
image::hybrid:manage-instanches-connect.png[network,float=center] |
|||
|
|||
== Directory Maps |
|||
|
|||
In general, Docker containers are ephemeral, running just as long as it takes for the command issued in the container to complete. By default, any data created inside the container is only available from within the container and only while the container is running. |
|||
|
|||
=== Mounts |
|||
|
|||
image:hybrid:types-of-mounts-volume.png[300,float=right] |
|||
|
|||
Bind mounts have been around since the early days of Docker |
|||
|
|||
A bind mount is a file or folder stored anywhere on the container host filesystem, mounted into a running container. |
|||
|
|||
The file or directory is referenced by its absolute path on the host machine |
|||
|
|||
The file or directory does not need to exist on the Docker host already. It is created on demand if it does not yet exist. Bind mounts are very performant, but they rely on the host machine’s filesystem having a specific directory structure available. |
|||
|
|||
=== Swarmlab maps |
|||
|
|||
Directory maps can be used to share files between a host system and the Docker container |
|||
|
|||
.directory maps |
|||
image::hybrid:manage-instanches-maps.png[maps,float=center] |
|||
|
|||
|
|||
|
|||
== X apps |
|||
|
|||
App with GUI |
|||
|
|||
Open a terminal and Run: |
|||
|
|||
[source,bash] |
|||
---- |
|||
xhost +local:docker |
|||
---- |
|||
|
|||
== Video |
|||
|
|||
=== Connect and maps |
|||
|
|||
**** |
|||
TIP: Learn how to connect to an Instance using the terminal |
|||
|
|||
video::564842745[vimeo] |
|||
|
|||
TIP: Learn how to connect to Instance using a browser |
|||
|
|||
video::564844891[vimeo] |
|||
**** |
|||
|
@ -0,0 +1,17 @@ |
|||
= Private/Local |
|||
Swarmlab |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
|
|||
This is the area where you will find the available *Instances* and run the desired one. |
|||
|
|||
== xref:hybrid:start-labroom.adoc[Labrooms] |
|||
|
|||
== xref:hybrid:start-storage.adoc[Storage] |
|||
|
|||
== xref:hybrid:start-microservices.adoc[MicroServices] |
|||
|
|||
|
@ -0,0 +1,23 @@ |
|||
= hybrid |
|||
Swarmlab |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
|
|||
This is the area where you will find the available *labrooms* and join the desired one. |
|||
|
|||
|
|||
== xref:hybrid:start-labroom.adoc[Private/Local] |
|||
A labroom is a contained environment created to suit your unique needs. |
|||
|
|||
== xref:hybrid:start-storage.adoc[Storage] |
|||
If you would like to store data for your work we provide storage options. |
|||
|
|||
== xref:hybrid:manage-instanches.adoc[Instances] |
|||
This is the area where you can View and Manage your running Instances |
|||
|
|||
== Builders |
|||
Build your own virtual machine using a fiendly environment and no code at all! |
|||
Get started here. |
@ -0,0 +1,72 @@ |
|||
= Private/Local |
|||
Swarmlab |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
|
|||
|
|||
This is the area where you will find the available *labrooms* and join the desired one. |
|||
|
|||
== Labroom |
|||
|
|||
A labroom is a contained environment created to suit your unique needs. |
|||
|
|||
You can easily browse throught the available *labrooms* in the list using the search bar at the top. |
|||
|
|||
.browsing-labroom |
|||
image::hybrid:browsing-labroom.png[Browsing labrooms,700,float=center] |
|||
|
|||
== Download |
|||
|
|||
After we have located the desired *labroom* we can *Download* it by using the cloud |
|||
image:hybrid:cloud_icon_down.png[Download] icon. |
|||
|
|||
== Delete |
|||
|
|||
The trash |
|||
image:hybrid:trash_icon.png[Download] |
|||
icon deletes the *labroom.* |
|||
|
|||
== Info |
|||
|
|||
To request more info about the *labroom* we use the info icon |
|||
image:hybrid:info_icon.png[Info] |
|||
|
|||
== Start |
|||
|
|||
We can *start* it by using the *thumb-down* |
|||
image:hybrid:thumb-down.png[thumb-down] |
|||
icon |
|||
|
|||
=== Scale |
|||
|
|||
Set the number of containers to run for a *labroom* |
|||
and *start* it by using the *UP* icon (The *Expose Port* can be left blank) |
|||
|
|||
.scale |
|||
image::hybrid:scale.png[Console,700,float=center] |
|||
|
|||
== Stop |
|||
|
|||
We can *stop* it by using the *thumb-up* |
|||
image:hybrid:thumb-up.png[thumb-up] |
|||
icon |
|||
|
|||
== Console |
|||
|
|||
The *Console* window shows the log messages for the running Labroom |
|||
|
|||
.console |
|||
image::hybrid:console.png[Console,700,float=center] |
|||
|
|||
== Video |
|||
|
|||
=== Start Labroom |
|||
|
|||
**** |
|||
TIP: Learn how to get started with Labrooms |
|||
|
|||
video::564651940[vimeo] |
|||
**** |
@ -0,0 +1,63 @@ |
|||
= Private/Local |
|||
Swarmlab |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
|
|||
|
|||
This is the area where you will find the available *MicroServices* and join the desired one. |
|||
|
|||
== Microservices |
|||
|
|||
In case you need additional services for your project you can launch them here. |
|||
|
|||
.browsing-MicroServices |
|||
image::hybrid:browsing-microservices.png[Browsing labrooms,700,float=center] |
|||
|
|||
== Download |
|||
|
|||
After we have located the desired *MicroService* we can *Download* it by using the cloud |
|||
image:hybrid:cloud_icon_down.png[Download] icon. |
|||
|
|||
== Delete |
|||
|
|||
The trash |
|||
image:hybrid:trash_icon.png[Download] |
|||
icon deletes the *MicroService* |
|||
|
|||
== Info |
|||
|
|||
To request more info about the *MicroService* we use the info icon |
|||
image:hybrid:info_icon.png[Info] |
|||
|
|||
== Start |
|||
|
|||
We can *start* it by using the *thumb-down* |
|||
image:hybrid:thumb-down.png[thumb-down] |
|||
icon |
|||
|
|||
|
|||
== Stop |
|||
|
|||
We can *stop* it by using the *thumb-up* |
|||
image:hybrid:thumb-up.png[thumb-up] |
|||
icon |
|||
|
|||
== Console |
|||
|
|||
The *Console* window shows the log messages for the runningmicroservice |
|||
|
|||
.console |
|||
image::hybrid:console.png[Console,700,float=center] |
|||
|
|||
== Video |
|||
|
|||
=== Start microservice |
|||
|
|||
**** |
|||
TIP: Learn how to start using a Microservice |
|||
|
|||
video::564701215[vimeo] |
|||
**** |
@ -0,0 +1,76 @@ |
|||
= Private/Local |
|||
Swarmlab |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
|
|||
|
|||
This is the area where you will find the available *storages* and join the desired one. |
|||
|
|||
== Storage |
|||
|
|||
If you would like to store data for your work we provide storage options. |
|||
|
|||
.browsing-storage |
|||
image::hybrid:browsing-storage.png[Browsing labrooms,700,float=center] |
|||
|
|||
== Download |
|||
|
|||
After we have located the desired *storage* we can *Download* it by using the cloud |
|||
image:hybrid:cloud_icon_down.png[Download] icon. |
|||
|
|||
== Delete |
|||
|
|||
The trash |
|||
image:hybrid:trash_icon.png[Download] |
|||
icon deletes the *storage* |
|||
|
|||
== Info |
|||
|
|||
To request more info about the *storage* we use the info icon |
|||
image:hybrid:info_icon.png[Info] |
|||
|
|||
== Start |
|||
|
|||
We can *start* it by using the *thumb-down* |
|||
image:hybrid:thumb-down.png[thumb-down] |
|||
icon |
|||
|
|||
=== Shard Keys |
|||
|
|||
*start* it by using the *UP* icon |
|||
|
|||
**** |
|||
TIP: When sharding a cluster, a vital step is the creation of shard keys. |
|||
|
|||
The “shard key” is used to distribute the Cluster collection’s documents across all the shards. |
|||
|
|||
image::hybrid:browsing-storage-sudo.png[Console,700,float=center] |
|||
|
|||
Open a terminal window and execute the above command. |
|||
**** |
|||
|
|||
== Stop |
|||
|
|||
We can *stop* it by using the *thumb-up* |
|||
image:hybrid:thumb-up.png[thumb-up] |
|||
icon |
|||
|
|||
== Console |
|||
|
|||
The *Console* window shows the log messages for the running storage |
|||
|
|||
.console |
|||
image::hybrid:console.png[Console,700,float=center] |
|||
|
|||
== Video |
|||
|
|||
=== Start Storage |
|||
|
|||
**** |
|||
TIP: Learn how to get started with storages |
|||
|
|||
video::564701215[vimeo] |
|||
**** |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 74 KiB |
@ -0,0 +1,5 @@ |
|||
* xref:overview.adoc[Install] |
|||
** xref:install-hybrid.adoc[Hybrid] |
|||
** xref:install-venus.adoc[Venus] |
|||
** xref:install-docker.adoc[Docker] |
|||
|
@ -0,0 +1,145 @@ |
|||
= Docker |
|||
Swarmlab |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
|
|||
|
|||
== Why Docker |
|||
|
|||
We will use docker because Docker *makes development efficient*. |
|||
|
|||
The usage of docker gives a very big advantage and that’s the write once ship many. |
|||
|
|||
The development team will write an application/service and use docker to make it a container that will surely have all the requirements for the user to run it on any machine that has docker installed even inside another docker container, thus giving the ability of nested virtualization |
|||
|
|||
|
|||
[TIP] |
|||
==== |
|||
Enabling the creation of a |
|||
https://www.redhat.com/en/topics/devops/what-is-ci-cd[CI/CD pipeline^] |
|||
|
|||
image:install:cicd.jpg[] |
|||
==== |
|||
|
|||
|
|||
== Linux/*Nix Installation of docker |
|||
|
|||
[source,sh] |
|||
---- |
|||
sudo -l # To ensure that we can run apt as root |
|||
sudo apt-get update # To update our repos/references on apt |
|||
sudo apt install -y lsb-release |
|||
sudo apt install -y curl |
|||
curl -V # Ensure that curl is installed and in a modern version |
|||
sudo apt install software-properties-common |
|||
|
|||
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # To add the gpg key on our keyring |
|||
|
|||
echo \ |
|||
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \ |
|||
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null |
|||
# Add the official repo on apt or any other package manager |
|||
|
|||
sudo apt install -y docker-ce # Actually installing docker |
|||
sudo usermod -aG docker $USER # Add current user to the docker group |
|||
su - ${USER} # Reload our shell |
|||
|
|||
docker --version # See the docker version |
|||
docker run hello-world # Test if docker really works |
|||
---- |
|||
|
|||
|
|||
== Windows 10 with wsl version2 enabled |
|||
|
|||
TIP: You must have wsl version2 installed and enabled (https://docs.microsoft.com/en-us/windows/wsl/install-win10[Install wsl^]) |
|||
|
|||
Step 1: Download the Docker Desktop for Windows from https://docs.docker.com/desktop/windows/install/ |
|||
|
|||
Step 2: Execute the installer via powershell or by just cklicking on the installer.exe file |
|||
|
|||
[source,sh] |
|||
---- |
|||
cd .\Downloads\ |
|||
.\"Docker Desktop Installer.exe" |
|||
---- |
|||
|
|||
Step 3: Accept anything the installer ask for |
|||
|
|||
Step 4: Log out and Log in, after you are prompted to do so |
|||
|
|||
Step 5: Open the docker engine app |
|||
|
|||
Step 6: Go to docker app settings → Resources → WSL Integration |
|||
|
|||
Step 7: Click on the refresh button |
|||
|
|||
Step 8: Enable docker for the wsl installation that you want. |
|||
|
|||
Step 9: Click on apply and restart |
|||
|
|||
Step 10: Open the wsl shell and type: |
|||
|
|||
[source,sh] |
|||
---- |
|||
docker --version |
|||
docker run hello-world |
|||
---- |
|||
|
|||
== Fix "x509: certificate signed by unknown authority" issue |
|||
|
|||
On Error: |
|||
|
|||
[source,sh] |
|||
---- |
|||
Get https ://registry.vlabs.uniwa.gr:5080/v2/: x509: certificate |
|||
|
|||
Pulling ... |
|||
ERROR: Get https://registry.vlabs.uniwa.gr:5080/v2/: x509: certificate signed by unknown authority |
|||
---- |
|||
|
|||
run |
|||
|
|||
[source,sh] |
|||
---- |
|||
sudo su |
|||
touch set-ca.sh |
|||
---- |
|||
|
|||
copy-paste lines |
|||
|
|||
[source,sh] |
|||
---- |
|||
registry_address=hub.swarmlab.io |
|||
registry_port=5443 |
|||
mkdir -p /etc/docker/certs.d/$registry_address:$registry_port |
|||
openssl s_client -showcerts -connect $registry_address:$registry_port < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /etc/docker/certs.d/$registry_address:$registry_port/ca.crt |
|||
|
|||
registry_port=5480 |
|||
mkdir -p /etc/docker/certs.d/$registry_address:$registry_port |
|||
openssl s_client -showcerts -connect $registry_address:$registry_port < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /etc/docker/certs.d/$registry_address:$registry_port/ca.crt |
|||
---- |
|||
|
|||
exec file |
|||
|
|||
[source,sh] |
|||
---- |
|||
sudo bash ./set-ca.sh |
|||
---- |
|||
|
|||
|
|||
== docker-compose |
|||
|
|||
You also need to install Docker Compose |
|||
|
|||
[source,sh] |
|||
---- |
|||
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/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 |
|||
---- |
|||
|
|||
|
|||
|
@ -0,0 +1,279 @@ |
|||
= Hybrid |
|||
Swarmlab |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
:experimental: |
|||
|
|||
|
|||
== System requirements |
|||
|
|||
[cols="1,2"] |
|||
|=== |
|||
|OS |A *Linux Server* (Virtual or Physical) |
|||
|
|||
or |
|||
|
|||
*Windows 10* with Windows Subsystem for Linux |
|||
|
|||
|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.* |
|||
|=== |
|||
|
|||
TIP: Since Docker uses hypervisor the host NEEDS TO HAVE VIRTUALIZATION ENABLED! |
|||
|
|||
== Prerequisites |
|||
|
|||
=== node version >15 |
|||
|
|||
[source,sh] |
|||
---- |
|||
curl -sL https://deb.nodesource.com/setup_15.x | sudo -E bash - |
|||
sudo apt-get install -y nodejs |
|||
---- |
|||
|
|||
=== docker |
|||
|
|||
[source,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 |
|||
---- |
|||
|
|||
TIP: for kali specifically please visit the following link to |
|||
https://linuxhint.com/install_docker_kali_linux/[install docker^] |
|||
|
|||
=== docker-compose |
|||
|
|||
[source,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 |
|||
|
|||
[source,sh] |
|||
---- |
|||
sudo npm install -g pm2 |
|||
---- |
|||
|
|||
|
|||
|
|||
== Install |
|||
|
|||
=== Linux |
|||
|
|||
|
|||
==== Clone the repo |
|||
|
|||
[source,sh] |
|||
---- |
|||
git clone --recurse-submodules https://git.swarmlab.io:3000/zeus/swarmlab-hybrid.git |
|||
---- |
|||
|
|||
==== Install it! |
|||
|
|||
[source,sh] |
|||
---- |
|||
cd swarmlab-hybrid |
|||
./install.sh <-- run it without root privileges |
|||
---- |
|||
|
|||
|
|||
|
|||
=== Windows |
|||
|
|||
|
|||
* https://docs.microsoft.com/en-us/windows/wsl/install-win10[Install wsl^] |
|||
|
|||
* Download https://hub.docker.com/editions/community/docker-ce-desktop-windows/[Docker Desktop Stable 2.3.0.2^] or a later release. |
|||
|
|||
* Install |
|||
|
|||
Ensure you have completed the steps described in the Prerequisites section before installing the Docker Desktop Stable 2.3.0.2 release. |
|||
|
|||
Follow the usual installation instructions to install Docker Desktop. If you are running a supported system, Docker Desktop prompts you to enable WSL 2 during installation. Read the information displayed on the screen and enable WSL 2 to continue. |
|||
|
|||
* Start Docker Desktop from the Windows Start menu. |
|||
|
|||
From the Docker menu, select menu:Settings[General] |
|||
|
|||
image:install:wsl2-enable.png[] |
|||
|
|||
* Select the Use WSL 2 based engine check box. |
|||
|
|||
If you have installed Docker Desktop on a system that supports WSL 2, this option will be enabled by default. |
|||
|
|||
[source,sh] |
|||
==== |
|||
Click Apply & Restart. |
|||
==== |
|||
|
|||
* Ensure the distribution runs in WSL 2 mode. WSL can run distributions in both v1 or v2 mode. |
|||
|
|||
To check the WSL mode, run: |
|||
|
|||
[source,sh] |
|||
---- |
|||
wsl.exe -l -v |
|||
---- |
|||
|
|||
To upgrade your existing Linux distro to v2, run: |
|||
|
|||
[source,sh] |
|||
---- |
|||
wsl.exe --set-version (distro name) 2 |
|||
---- |
|||
|
|||
To set v2 as the default version for future installations, run: |
|||
|
|||
[source,sh] |
|||
---- |
|||
wsl.exe --set-default-version 2 |
|||
---- |
|||
|
|||
When Docker Desktop restarts, go to menu:Settings[Resources > WSL Integration] |
|||
|
|||
image:install:wsl2-choose-distro.png[] |
|||
|
|||
* WSL 2 Choose Linux distro |
|||
|
|||
[source,sh] |
|||
==== |
|||
Click Apply & Restart. |
|||
==== |
|||
|
|||
The Docker-WSL integration will be enabled on your default WSL distribution. |
|||
|
|||
* To change your default WSL distro, run |
|||
|
|||
[source,sh] |
|||
---- |
|||
wsl --set-default <distro name>. |
|||
---- |
|||
|
|||
[NOTE] |
|||
==== |
|||
|
|||
For example, to set Ubuntu as your default WSL distro, run wsl --set-default ubuntu. |
|||
Optionally, select any additional distributions you would like to enable the Docker-WSL integration on. |
|||
|
|||
The Docker-WSL integration components running in your distro depend on glibc. This can cause issues when running musl-based distros such as Alpine Linux. Alpine users can use the alpine-pkg-glibc package to deploy glibc alongside musl to run the integration. |
|||
==== |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
==== Fix network issues |
|||
|
|||
[source,sh] |
|||
---- |
|||
# Delete auto-generated files |
|||
rm /etc/resolv.conf || true |
|||
rm /etc/wsl.conf || true |
|||
---- |
|||
|
|||
.Enable changing /etc/resolv.conf |
|||
[source,sh] |
|||
---- |
|||
# Enable changing /etc/resolv.conf |
|||
# Enable extended attributes on Windows drives |
|||
cat <<EOF > /etc/wsl.conf |
|||
[network] |
|||
generateResolvConf = false |
|||
|
|||
[automount] |
|||
enabled = true |
|||
options = "metadata" |
|||
mountFsTab = false |
|||
EOF |
|||
|
|||
# Use google nameservers for DNS resolution |
|||
cat <<EOF > /etc/resolv.conf |
|||
nameserver 8.8.8.8 |
|||
nameserver 8.8.4.4 |
|||
EOF |
|||
---- |
|||
|
|||
.Exit Linux WSL |
|||
|
|||
.cmd as admin: |
|||
|
|||
[source,sh] |
|||
---- |
|||
wsl --shutdown |
|||
netsh winsock reset |
|||
netsh int ip reset all |
|||
netsh winhttp reset proxy |
|||
ipconfig /flushdns |
|||
---- |
|||
|
|||
Windows menu:Search[Network Reset] |
|||
|
|||
[source,sh] |
|||
==== |
|||
Restart Windows |
|||
==== |
|||
|
|||
|
|||
.Install Hybrid |
|||
**** |
|||
|
|||
.Clone the repo |
|||
[source,sh] |
|||
---- |
|||
git clone --recurse-submodules https://git.swarmlab.io:3000/zeus/swarmlab-hybrid.git |
|||
---- |
|||
|
|||
.Install it! |
|||
[source,sh] |
|||
---- |
|||
cd swarmlab-hybrid |
|||
./install.sh <-- run it without root privileges |
|||
---- |
|||
**** |
|||
|
|||
|
|||
|
|||
== start/stop service |
|||
|
|||
TIP: Linux and Windows |
|||
|
|||
=== start |
|||
|
|||
[source,sh] |
|||
---- |
|||
./start |
|||
---- |
|||
|
|||
=== stop |
|||
|
|||
[source,sh] |
|||
---- |
|||
./stop |
|||
---- |
|||
|
|||
[source,sh] |
|||
==== |
|||
Open URL http://localhost:3088 in browser |
|||
==== |
|||
|
@ -0,0 +1,276 @@ |
|||
= Venus |
|||
Swarmlab |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
|
|||
|
|||
== System requirements |
|||
|
|||
[cols="1,2"] |
|||
|=== |
|||
|OS |A *Linux Server* (Virtual or Physical) |
|||
|
|||
or |
|||
|
|||
*Windows 10* with Windows Subsystem for Linux |
|||
|
|||
|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 |
|||
|5 GB for internal requirements. |
|||
|
|||
The amount of additional disk space soloemnly *depends on you intended use.* |
|||
|=== |
|||
|
|||
TIP: Since Docker uses hypervisor the host NEEDS TO HAVE VIRTUALIZATION ENABLED! |
|||
|
|||
== Prerequisites |
|||
|
|||
=== node version >15 |
|||
|
|||
[source,sh] |
|||
---- |
|||
curl -sL https://deb.nodesource.com/setup_15.x | sudo -E bash - |
|||
sudo apt-get install -y nodejs |
|||
---- |
|||
|
|||
=== docker |
|||
|
|||
[source,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 |
|||
---- |
|||
|
|||
TIP: for kali specifically please visit the following link to |
|||
https://linuxhint.com/install_docker_kali_linux/[install docker^] |
|||
|
|||
=== docker-compose |
|||
|
|||
[source,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 |
|||
|
|||
[source,sh] |
|||
---- |
|||
sudo npm install -g pm2 |
|||
---- |
|||
|
|||
=== wireguard |
|||
|
|||
[source,sh] |
|||
---- |
|||
sudo apt install wireguard jq |
|||
---- |
|||
|
|||
|
|||
== Install |
|||
|
|||
=== Linux |
|||
|
|||
==== Clone the repo |
|||
|
|||
[source,sh] |
|||
---- |
|||
git clone --recurse-submodules https://git.swarmlab.io:3000/swarmlab/venus-client.git |
|||
---- |
|||
|
|||
==== Install it! |
|||
|
|||
[source,sh] |
|||
---- |
|||
cd venus-client |
|||
./install.sh <-- run it without root privileges |
|||
---- |
|||
|
|||
|
|||
=== Windows |
|||
|
|||
* https://docs.microsoft.com/en-us/windows/wsl/install-win10[Install wsl^] |
|||
|
|||
* Download https://hub.docker.com/editions/community/docker-ce-desktop-windows/[Docker Desktop Stable 2.3.0.2^] or a later release. |
|||
|
|||
* Install |
|||
|
|||
Ensure you have completed the steps described in the Prerequisites section before installing the Docker Desktop Stable 2.3.0.2 release. |
|||
|
|||
Follow the usual installation instructions to install Docker Desktop. If you are running a supported system, Docker Desktop prompts you to enable WSL 2 during installation. Read the information displayed on the screen and enable WSL 2 to continue. |
|||
|
|||
* Start Docker Desktop from the Windows Start menu. |
|||
|
|||
From the Docker menu, select menu:Settings[General] |
|||
|
|||
image:install:wsl2-enable.png[] |
|||
|
|||
* Select the Use WSL 2 based engine check box. |
|||
|
|||
If you have installed Docker Desktop on a system that supports WSL 2, this option will be enabled by default. |
|||
|
|||
[source,sh] |
|||
==== |
|||
Click Apply & Restart. |
|||
==== |
|||
|
|||
* Ensure the distribution runs in WSL 2 mode. WSL can run distributions in both v1 or v2 mode. |
|||
|
|||
To check the WSL mode, run: |
|||
|
|||
[source,sh] |
|||
---- |
|||
wsl.exe -l -v |
|||
---- |
|||
|
|||
To upgrade your existing Linux distro to v2, run: |
|||
|
|||
[source,sh] |
|||
---- |
|||
wsl.exe --set-version (distro name) 2 |
|||
---- |
|||
|
|||
To set v2 as the default version for future installations, run: |
|||
|
|||
[source,sh] |
|||
---- |
|||
wsl.exe --set-default-version 2 |
|||
---- |
|||
|
|||
When Docker Desktop restarts, go to menu:Settings[Resources > WSL Integration] |
|||
|
|||
image:install:wsl2-choose-distro.png[] |
|||
|
|||
* WSL 2 Choose Linux distro |
|||
|
|||
[source,sh] |
|||
==== |
|||
Click Apply & Restart. |
|||
==== |
|||
|
|||
The Docker-WSL integration will be enabled on your default WSL distribution. |
|||
|
|||
* To change your default WSL distro, run |
|||
|
|||
[source,sh] |
|||
---- |
|||
wsl --set-default <distro name>. |
|||
---- |
|||
|
|||
[NOTE] |
|||
==== |
|||
|
|||
For example, to set Ubuntu as your default WSL distro, run wsl --set-default ubuntu. |
|||
Optionally, select any additional distributions you would like to enable the Docker-WSL integration on. |
|||
|
|||
The Docker-WSL integration components running in your distro depend on glibc. This can cause issues when running musl-based distros such as Alpine Linux. Alpine users can use the alpine-pkg-glibc package to deploy glibc alongside musl to run the integration. |
|||
==== |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
==== Fix network issues |
|||
|
|||
[source,sh] |
|||
---- |
|||
# Delete auto-generated files |
|||
rm /etc/resolv.conf || true |
|||
rm /etc/wsl.conf || true |
|||
---- |
|||
|
|||
.Enable changing /etc/resolv.conf |
|||
[source,sh] |
|||
---- |
|||
# Enable changing /etc/resolv.conf |
|||
# Enable extended attributes on Windows drives |
|||
cat <<EOF > /etc/wsl.conf |
|||
[network] |
|||
generateResolvConf = false |
|||
|
|||
[automount] |
|||
enabled = true |
|||
options = "metadata" |
|||
mountFsTab = false |
|||
EOF |
|||
|
|||
# Use google nameservers for DNS resolution |
|||
cat <<EOF > /etc/resolv.conf |
|||
nameserver 8.8.8.8 |
|||
nameserver 8.8.4.4 |
|||
EOF |
|||
---- |
|||
|
|||
.Exit Linux WSL |
|||
|
|||
.cmd as admin: |
|||
|
|||
[source,sh] |
|||
---- |
|||
wsl --shutdown |
|||
netsh winsock reset |
|||
netsh int ip reset all |
|||
netsh winhttp reset proxy |
|||
ipconfig /flushdns |
|||
---- |
|||
|
|||
Windows menu:Search[Network Reset] |
|||
|
|||
[source,sh] |
|||
==== |
|||
Restart Windows |
|||
==== |
|||
|
|||
.Install Hybrid |
|||
**** |
|||
.Clone the repo |
|||
[source,sh] |
|||
---- |
|||
git clone --recurse-submodules https://git.swarmlab.io:3000/swarmlab/venus-client.git |
|||
---- |
|||
|
|||
.Install it! |
|||
[source,sh] |
|||
---- |
|||
cd venus-client |
|||
./install.sh <-- run it without root privileges |
|||
---- |
|||
**** |
|||
|
|||
== start/stop service |
|||
|
|||
TIP: Linux and Windows |
|||
|
|||
=== start |
|||
|
|||
[source,sh] |
|||
---- |
|||
./start |
|||
---- |
|||
|
|||
=== stop |
|||
|
|||
[source,sh] |
|||
---- |
|||
./stop |
|||
---- |
|||
|
|||
[source,sh] |
|||
==== |
|||
Open URL http://localhost:3088 in browser |
|||
==== |
@ -0,0 +1,45 @@ |
|||
= Install |
|||
Swarmlab |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
|
|||
Before you have all of the powerfull tools of Swarmalb at your grasp you will have to install it! |
|||
|
|||
[TIP] |
|||
==== |
|||
Swarmlab is available for *Linux* (Virtual or Physical) and |
|||
*Windows 10* with Windows Subsystem for Linux |
|||
==== |
|||
|
|||
== xref:install:install-hybrid.adoc[Hybrid] |
|||
|
|||
* On demand Labrooms |
|||
* Ready-to-Use Virtual Labs one click away |
|||
|
|||
xref:ROOT:index.adoc#_services[show Features] |
|||
|
|||
== xref:install:install-venus.adoc[Venus] |
|||
|
|||
* on-demand network environments using any cloud over any network |
|||
* Build the network you require on demand and without effort |
|||
|
|||
xref:ROOT:index.adoc#_services[show Features] |
|||
|
|||
== xref:install:install-docker.adoc[Docker] |
|||
|
|||
Swarmlab uses containers to connect services and create on-demand virtual labs to test or run your application |
|||
|
|||
[TIP] |
|||
==== |
|||
Docker is a platform that gives the developer the ability to separate/containerize applications from both the infrastructure and the host system/os |
|||
==== |
|||
|
|||
* Docker provides the ability to 'pack' your application on a container which is partially isolated system |
|||
* Every container has the same kernel with the host os |
|||
|
|||
|
|||
|
|||
|
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 80 KiB |
@ -0,0 +1,12 @@ |
|||
* xref:overview.adoc[MyServices] |
|||
** xref:overview-labroom.adoc[Labrooms] |
|||
*** xref:linux.adoc[Linux] |
|||
*** xref:mpi.adoc[MPI] |
|||
*** xref:nodevuejs.adoc[Node+Vue] |
|||
|
|||
** xref:overview-storage.adoc[Storage] |
|||
*** xref:storage-mongo-replica.adoc[Mongo replica] |
|||
|
|||
** xref:overview-services.adoc[Microservices] |
|||
*** xref:jupyter.adoc[Jupyter] |
|||
*** xref:node.adoc[Node] |
@ -0,0 +1,113 @@ |
|||
= Jupyter |
|||
Swarmlab |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
:experimental: |
|||
|
|||
This is the area where you will quide you to use service *Jupyter* |
|||
|
|||
== Default Configuration |
|||
|
|||
.Linux network |
|||
image::swarmlab-network.png[linux network,700,float=center] |
|||
|
|||
=== Working Directory (root user) |
|||
|
|||
[source,bash] |
|||
---- |
|||
/ |
|||
---- |
|||
|
|||
=== Default user (root user) |
|||
|
|||
[source,bash] |
|||
---- |
|||
root |
|||
---- |
|||
|
|||
== Unprivileged user |
|||
|
|||
=== user |
|||
|
|||
[source,bash] |
|||
---- |
|||
jovyan (uid=1000, configurable, see options) in group users (gid=100) |
|||
---- |
|||
|
|||
=== home |
|||
|
|||
user has ownership over the |
|||
|
|||
[source,bash] |
|||
---- |
|||
/home/jovyan and /opt/conda paths |
|||
---- |
|||
|
|||
== Directory Map |
|||
|
|||
You can find it in *Hybrid*: menu:Instances[More > Connect > Directory Maps] |
|||
|
|||
== Ports |
|||
|
|||
You can find it in *Hybrid*: menu:Instances[More > Ports] |
|||
|
|||
== Logs |
|||
|
|||
You can find it in *Hybrid*: menu:Instances[More > Logs] |
|||
|
|||
== Connect |
|||
|
|||
TIP: Connect Info in *Hybrid*: menu:Instances[More > Connect > Open a terminal and Run] |
|||
|
|||
=== Connect via exec |
|||
|
|||
Open a terminal and Run: |
|||
|
|||
[source,bash] |
|||
---- |
|||
docker exec -it microservice-jupyter26_masterservice_1 /bin/sh |
|||
---- |
|||
|
|||
|
|||
=== Connect via WEB |
|||
|
|||
You can find it in *Hybrid*: menu:Instances[More > Web] |
|||
|
|||
|
|||
== Jupyter Setup |
|||
|
|||
* Miniforge Python 3.x in /opt/conda with two package managers |
|||
* conda: cross-platform, language-agnostic binary package manager |
|||
* mamba: reimplementation of the conda package manager in C++ |
|||
* notebook, jupyterhub and jupyterlab packages |
|||
* tini as the container entrypoint and a start-notebook.sh script as the default command |
|||
* TeX Live for notebook document conversion |
|||
* git, vi (actually vim-tiny), nano (actually nano-tiny), tzdata, and unzip |
|||
* altair, beautifulsoup4, bokeh, bottleneck, cloudpickle, conda-forge::blas=*=openblas, cython, dask, dill, h5py, matplotlib-base, numba, numexpr, pandas, patsy, protobuf, pytables, scikit-image, scikit-learn, scipy, seaborn, sqlalchemy, statsmodel, sympy, widgetsnbextension, xlrd packages |
|||
* ipympl and ipywidgets for interactive visualizations and plots in Python notebooks |
|||
* Facets for visualizing machine learning datasets |
|||
|
|||
|
|||
== Video |
|||
|
|||
=== Start Jupyter |
|||
|
|||
**** |
|||
TIP: Learn how to start Jupyter |
|||
|
|||
video::565791748[vimeo] |
|||
**** |
|||
|
|||
=== Stop Jupyter |
|||
|
|||
**** |
|||
TIP: Learn how to stop Jupyter |
|||
|
|||
video::565796816[vimeo] |
|||
**** |
|||
|
|||
|
|||
|
@ -0,0 +1,178 @@ |
|||
= Linux |
|||
Swarmlab |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
:experimental: |
|||
|
|||
This is the area where you will quide you to use labroom *Linux* |
|||
|
|||
== Default Configuration |
|||
|
|||
.Linux network |
|||
image::swarmlab-network.png[linux network,700,float=center] |
|||
|
|||
=== Working Directory |
|||
|
|||
[source,bash] |
|||
---- |
|||
/project |
|||
---- |
|||
|
|||
=== Default user |
|||
|
|||
[source,bash] |
|||
---- |
|||
docker |
|||
---- |
|||
|
|||
=== Default password |
|||
|
|||
[source,bash] |
|||
---- |
|||
docker |
|||
---- |
|||
|
|||
=== Default password4root |
|||
|
|||
[source,bash] |
|||
---- |
|||
pass |
|||
---- |
|||
|
|||
== Directory Map |
|||
|
|||
You can find it in *Hybrid*: menu:Instances[More > Connect > Directory Maps] |
|||
|
|||
== Ports |
|||
|
|||
You can find it in *Hybrid*: menu:Instances[More > Ports] |
|||
|
|||
== Logs |
|||
|
|||
You can find it in *Hybrid*: menu:Instances[More > Logs] |
|||
|
|||
== Connect |
|||
|
|||
TIP: Connect Info in *Hybrid*: menu:Instances[More > Connect > Open a terminal and Run] |
|||
|
|||
=== Connect via SSH |
|||
|
|||
[source,bash] |
|||
---- |
|||
ssh -p [port] docker@[IP] # [port] = Ports |
|||
---- |
|||
|
|||
=== Connect via exec |
|||
|
|||
Open a terminal and Run: |
|||
|
|||
[source,bash] |
|||
---- |
|||
docker exec -it -udocker hybrid-linux_master_1 /bin/bash |
|||
---- |
|||
|
|||
|
|||
== Find lab workers |
|||
|
|||
NOTE: Commands inside container |
|||
|
|||
[source,bash] |
|||
---- |
|||
ifconfig |
|||
|
|||
nmap -sP 172.130.0.0/24 # eth0 ip |
|||
---- |
|||
|
|||
or |
|||
|
|||
[source,bash] |
|||
---- |
|||
/project/bin/swarmlab-nmap |
|||
---- |
|||
|
|||
== Examples |
|||
|
|||
NOTE: Commands inside container |
|||
|
|||
you can find some examples in dir |
|||
|
|||
*/project/courses* |
|||
|
|||
[source,bash] |
|||
---- |
|||
├── fluentd |
|||
│ ├── files |
|||
│ │ ├── ansible.cfg |
|||
│ │ ├── fluent.conf |
|||
│ │ └── fluent-config-update.conf |
|||
│ ├── fluentd-config-update.yml |
|||
│ ├── fluentd-config-update.yml.sh |
|||
│ ├── fluentd-test-mongo.yml |
|||
│ ├── fluentd-test-mongo.yml.sh |
|||
│ ├── fluentd.yml |
|||
│ ├── fluentd.yml.sh |
|||
│ ├── inventory.yml |
|||
├── memory-visualization-examples |
|||
│ ├── bin |
|||
│ │ └── simple-array |
|||
│ ├── LICENSE |
|||
│ ├── Makefile |
|||
│ ├── README.md |
|||
│ ├── sources |
|||
│ │ └── simple-array.c |
|||
│ └── tags |
|||
├── mongodb-org-shell |
|||
│ ├── files |
|||
│ │ ├── ansible.cfg |
|||
│ │ └── mongo-update.sh |
|||
│ ├── inventory.yml |
|||
│ ├── mongodb-org-shell.yml |
|||
│ └── mongodb-org-shell.yml.sh |
|||
├── nodeAppServer |
|||
│ ├── app.js |
|||
│ ├── app.js.sh |
|||
│ ├── index.html |
|||
│ └── package.json |
|||
├── pipes |
|||
│ ├── makefifo.sh |
|||
│ ├── par-from-ch |
|||
│ ├── par-from-ch.c |
|||
│ ├── rf |
|||
│ ├── rf.c |
|||
│ ├── shell-pipe1.sh |
|||
│ ├── shell-pipe2.sh |
|||
│ ├── shell-pipe.sh |
|||
│ ├── wf |
|||
│ └── wf.c |
|||
└── pthread |
|||
├── CreationTermination |
|||
├── CreationTermination1 |
|||
├── CreationTermination1.c |
|||
├── CreationTermination1.c.sh |
|||
├── CreationTermination.c |
|||
└── CreationTermination.c.sh |
|||
|
|||
---- |
|||
|
|||
|
|||
== Video |
|||
|
|||
=== Start Linux |
|||
|
|||
**** |
|||
TIP: Learn how to start Linux |
|||
|
|||
video::565804352[vimeo] |
|||
**** |
|||
|
|||
=== Stop Linux |
|||
|
|||
**** |
|||
TIP: Learn how to stop Linux |
|||
|
|||
video::565807431[vimeo] |
|||
**** |
|||
|
@ -0,0 +1,167 @@ |
|||
= MPI |
|||
Swarmlab |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
:experimental: |
|||
|
|||
This is the area where you will quide you to use labroom *MPI* |
|||
|
|||
== Default Configuration |
|||
|
|||
.mpi network |
|||
image::swarmlab-network.png[mpi network,700,float=center] |
|||
|
|||
=== Working Directory |
|||
|
|||
[source,bash] |
|||
---- |
|||
/project |
|||
---- |
|||
|
|||
=== Default user |
|||
|
|||
[source,bash] |
|||
---- |
|||
docker |
|||
---- |
|||
|
|||
=== Default password |
|||
|
|||
[source,bash] |
|||
---- |
|||
docker |
|||
---- |
|||
|
|||
=== Default password4root |
|||
|
|||
[source,bash] |
|||
---- |
|||
pass |
|||
---- |
|||
|
|||
== Directory Map |
|||
|
|||
You can find it in *Hybrid*: menu:Instances[More > Connect > Directory Maps] |
|||
|
|||
== Ports |
|||
|
|||
You can find it in *Hybrid*: menu:Instances[More > Ports] |
|||
|
|||
== Logs |
|||
|
|||
You can find it in *Hybrid*: menu:Instances[More > Logs] |
|||
|
|||
== Connect |
|||
|
|||
TIP: Connect Info in *Hybrid*: menu:Instances[More > Connect > Open a terminal and Run] |
|||
|
|||
=== Connect via SSH |
|||
|
|||
[source,bash] |
|||
---- |
|||
ssh -p [port] docker@[IP] # [port] [IP] = info from Ports |
|||
---- |
|||
|
|||
=== Connect via exec |
|||
|
|||
Open a terminal and Run: |
|||
|
|||
[source,bash] |
|||
---- |
|||
docker exec -it -udocker hybrid-mpi_master_1 /bin/bash |
|||
---- |
|||
|
|||
|
|||
== Find lab workers |
|||
|
|||
NOTE: Commands inside container |
|||
|
|||
[source,bash] |
|||
---- |
|||
ifconfig |
|||
|
|||
nmap -sP 172.130.0.0/24 # eth0 ip |
|||
---- |
|||
|
|||
or |
|||
|
|||
[source,bash] |
|||
---- |
|||
/project/bin/swarmlab-nmap |
|||
---- |
|||
|
|||
|
|||
|
|||
== HelloWorld Example |
|||
|
|||
NOTE: Commands inside container |
|||
|
|||
=== Create hosts file |
|||
|
|||
[source,bash] |
|||
---- |
|||
/project/bin/swarmlab-nmap > /project/hosts |
|||
---- |
|||
|
|||
=== Compile |
|||
|
|||
[source,bash] |
|||
---- |
|||
mpicc -o /project/mpi_hello_world examples/mpi_hello_world.c |
|||
---- |
|||
|
|||
=== run the HelloWorld |
|||
|
|||
[source,bash] |
|||
---- |
|||
mpirun -n 10 -f /project/hosts /project/mpi_hello_world |
|||
---- |
|||
|
|||
=== copy files to all clients |
|||
|
|||
[source,bash] |
|||
---- |
|||
while read -r line; |
|||
do |
|||
scp /project/file docker@$line:/some_dir/file |
|||
done < /project/hosts |
|||
---- |
|||
|
|||
== MORE Examples |
|||
|
|||
NOTE: Commands inside container |
|||
|
|||
See examples directory |
|||
|
|||
|
|||
[source,bash] |
|||
---- |
|||
cd examples |
|||
make mpi_hello_world |
|||
make example ex=squares |
|||
... |
|||
---- |
|||
|
|||
|
|||
== Video |
|||
|
|||
=== Start MPI |
|||
|
|||
**** |
|||
TIP: Learn how to start MPI |
|||
|
|||
video::565804352[vimeo] |
|||
**** |
|||
|
|||
=== Stop MPI |
|||
|
|||
**** |
|||
TIP: Learn how to stop MPI |
|||
|
|||
video::565807431[vimeo] |
|||
**** |
|||
|
|||
|
@ -0,0 +1,79 @@ |
|||
= Node |
|||
Swarmlab |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
:experimental: |
|||
|
|||
This is the area where you will quide you to use microservice *Node* |
|||
|
|||
== Default Configuration |
|||
|
|||
|
|||
=== Working Directory |
|||
|
|||
[source,bash] |
|||
---- |
|||
/ |
|||
---- |
|||
|
|||
=== Default user |
|||
|
|||
[source,bash] |
|||
---- |
|||
root |
|||
---- |
|||
|
|||
== Directory Map |
|||
|
|||
You can find it in *Hybrid*: menu:Instances[More > Connect > Directory Maps] |
|||
|
|||
== Ports |
|||
|
|||
You can find it in *Hybrid*: menu:Instances[More > Ports] |
|||
|
|||
== Logs |
|||
|
|||
You can find it in *Hybrid*: menu:Instances[More > Logs] |
|||
|
|||
== Connect |
|||
|
|||
TIP: Connect Info in *Hybrid*: menu:Instances[More > Connect > Open a terminal and Run] |
|||
|
|||
=== Connect via exec |
|||
|
|||
Open a terminal and Run: |
|||
|
|||
[source,bash] |
|||
---- |
|||
docker exec -it microservice-nodejs_masterservice_1 /bin/sh |
|||
---- |
|||
|
|||
|
|||
|
|||
== Video |
|||
|
|||
=== Start Node |
|||
|
|||
**** |
|||
TIP: Learn how to start Node |
|||
|
|||
video::565819477[vimeo] |
|||
**** |
|||
|
|||
|
|||
=== Stop Node |
|||
|
|||
**** |
|||
TIP: Learn how to stop Node |
|||
|
|||
video::565820159[vimeo] |
|||
**** |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
@ -0,0 +1,150 @@ |
|||
= Node |
|||
Swarmlab |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
:experimental: |
|||
|
|||
This is the area where you will quide you to use labroom *Node VueJS* |
|||
|
|||
== Default Configuration |
|||
|
|||
.Linux network |
|||
image::swarmlab-network.png[linux network,700,float=center] |
|||
|
|||
=== Working Directory |
|||
|
|||
[source,bash] |
|||
---- |
|||
/project |
|||
---- |
|||
|
|||
=== Default user |
|||
|
|||
[source,bash] |
|||
---- |
|||
docker |
|||
---- |
|||
|
|||
=== Default password |
|||
|
|||
[source,bash] |
|||
---- |
|||
docker |
|||
---- |
|||
|
|||
=== Default password4root |
|||
|
|||
[source,bash] |
|||
---- |
|||
pass |
|||
---- |
|||
|
|||
== Directory Map |
|||
|
|||
You can find it in *Hybrid*: menu:Instances[More > Connect > Directory Maps] |
|||
|
|||
== Ports |
|||
|
|||
You can find it in *Hybrid*: menu:Instances[More > Ports] |
|||
|
|||
== Logs |
|||
|
|||
You can find it in *Hybrid*: menu:Instances[More > Logs] |
|||
|
|||
== Connect |
|||
|
|||
TIP: Connect Info in *Hybrid*: menu:Instances[More > Connect > Open a terminal and Run] |
|||
|
|||
=== Connect via SSH |
|||
|
|||
[source,bash] |
|||
---- |
|||
ssh docker@[IP] |
|||
---- |
|||
|
|||
=== Connect via exec |
|||
|
|||
Open a terminal and Run: |
|||
|
|||
[source,bash] |
|||
---- |
|||
docker exec -it -udocker hybrid-nodevuejs_master_1 /bin/bash |
|||
---- |
|||
|
|||
|
|||
== Find lab workers |
|||
|
|||
NOTE: Commands inside container |
|||
|
|||
[source,bash] |
|||
---- |
|||
ifconfig |
|||
|
|||
nmap -sP 172.130.0.0/24 # eth0 ip |
|||
---- |
|||
|
|||
or |
|||
|
|||
[source,bash] |
|||
---- |
|||
/project/bin/swarmlab-nmap |
|||
---- |
|||
|
|||
== Create a Project |
|||
|
|||
NOTE: Commands inside container |
|||
|
|||
Vue CLI Documentation |
|||
https://cli.vuejs.org/guide/creating-a-project.html#vue-create |
|||
|
|||
.Creating a Project |
|||
|
|||
[source,bash] |
|||
---- |
|||
vue create hello-world |
|||
---- |
|||
|
|||
=== Run it! |
|||
|
|||
[source,bash] |
|||
---- |
|||
npm run serve |
|||
---- |
|||
|
|||
=== Open it! |
|||
|
|||
[source,bash] |
|||
---- |
|||
http://IP:8080 # IP= eth0 |
|||
---- |
|||
|
|||
=== Find Published ports |
|||
|
|||
Info in *Hybrid*: menu:Instances[More > Ports] |
|||
|
|||
|
|||
|
|||
== Video |
|||
|
|||
=== Start Vue |
|||
|
|||
**** |
|||
TIP: Learn how to start Vue |
|||
|
|||
video::565804352[vimeo] |
|||
**** |
|||
|
|||
=== Stop Vue |
|||
|
|||
**** |
|||
TIP: Learn how to stop Vue |
|||
|
|||
video::565807431[vimeo] |
|||
**** |
|||
|
|||
|
|||
|
|||
|
@ -0,0 +1,15 @@ |
|||
= Labroom |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
:experimental: |
|||
|
|||
This is the area where you will quide you to use *Labrooms* |
|||
|
|||
== Labrooms |
|||
|
|||
Services organised in a network with scale dynatotita |
|||
|
|||
|
@ -0,0 +1,14 @@ |
|||
= MicroServices |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
:experimental: |
|||
|
|||
This is the area where you will quide you to use *MicroServices* |
|||
|
|||
|
|||
=== Microservices |
|||
|
|||
Diverse microservice collection you can attach to your labroom or storage, or maybe run them your own custom way! |
@ -0,0 +1,17 @@ |
|||
= Storage |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
:experimental: |
|||
|
|||
This is the area where you will quide you to use *Storage* |
|||
|
|||
|
|||
== Storage |
|||
|
|||
Storage to run |
|||
|
|||
After run can you attach network to it |
|||
|
@ -0,0 +1,24 @@ |
|||
= MyServices |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
:experimental: |
|||
|
|||
This is the area where you will quide you to use *Services* |
|||
|
|||
== Labrooms |
|||
|
|||
Services organised in a network with scale dynatotita |
|||
|
|||
|
|||
== Storage |
|||
|
|||
Storage to run |
|||
|
|||
After run can you attach network to it |
|||
|
|||
=== Microservices |
|||
|
|||
Diverse microservice collection you can attach to your labroom or storage, or maybe run them your own custom way! |
@ -0,0 +1,162 @@ |
|||
= Mongo |
|||
Swarmlab |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
:experimental: |
|||
|
|||
This is the area where you will quide you to use storage *Mongo* |
|||
|
|||
== Default Configuration |
|||
|
|||
.mongo network |
|||
image::replica-set-primary-with-two-secondaries.bakedsvg.png[linux network,700,float=center] |
|||
|
|||
More info here: https://docs.mongodb.com/manual/replication[mongo replication] |
|||
|
|||
=== Working Directory |
|||
|
|||
[source,bash] |
|||
---- |
|||
/ |
|||
---- |
|||
|
|||
=== Default user |
|||
|
|||
[source,bash] |
|||
---- |
|||
root |
|||
---- |
|||
|
|||
== Directory Map |
|||
|
|||
You can find it in *Hybrid*: menu:Instances[More > Connect > Directory Maps] |
|||
|
|||
== Ports |
|||
|
|||
You can find it in *Hybrid*: menu:Instances[More > Ports] |
|||
|
|||
== Logs |
|||
|
|||
You can find it in *Hybrid*: menu:Instances[More > Logs] |
|||
|
|||
== Connect |
|||
|
|||
TIP: Connect Info in *Hybrid*: menu:Instances[More > Connect > Open a terminal and Run] |
|||
|
|||
=== Connect via SSH |
|||
|
|||
|
|||
=== Connect via exec |
|||
|
|||
Open a terminal and Run: |
|||
|
|||
[source,bash] |
|||
---- |
|||
docker exec -it swarmlabmongo1 /bin/sh |
|||
---- |
|||
|
|||
|
|||
== Default Configuration |
|||
|
|||
=== Port |
|||
|
|||
[source,bash] |
|||
---- |
|||
27017 |
|||
---- |
|||
|
|||
=== Root Username |
|||
|
|||
[source,bash] |
|||
---- |
|||
swarmlab |
|||
---- |
|||
|
|||
=== Root Password |
|||
|
|||
[source,bash] |
|||
---- |
|||
swarmlab |
|||
---- |
|||
|
|||
=== Database |
|||
|
|||
[source,bash] |
|||
---- |
|||
app_swarmlab |
|||
---- |
|||
|
|||
|
|||
=== Database Usename |
|||
|
|||
[source,bash] |
|||
---- |
|||
app_swarmlab |
|||
---- |
|||
|
|||
=== Database Password |
|||
|
|||
[source,bash] |
|||
---- |
|||
app_swarmlab |
|||
---- |
|||
|
|||
=== ReplicaSet |
|||
|
|||
[source,bash] |
|||
---- |
|||
rs0 |
|||
---- |
|||
|
|||
== Test it! |
|||
|
|||
NOTE: Commands inside container |
|||
|
|||
[source,bash] |
|||
---- |
|||
MONGO_INITDB_ROOT_USERNAME=swarmlab |
|||
MONGO_INITDB_ROOT_PASSWORD=swarmlab |
|||
MONGO_INITDB_DATABASE=app_swarmlab |
|||
MONGO_INITDB_USERNAME=app_swarmlab |
|||
MONGO_INITDB_PASSWORD=app_swarmlab |
|||
MONGO_REPLICA_SET_NAME=rs0 |
|||
|
|||
mongo "mongodb://localhost:30001,localhost:30002,localhost:30003/$MONGO_INITDB_DATABASE" -u $MONGO_INITDB_USERNAME |
|||
mongo "mongodb://localhost:30001,localhost:30002,localhost:30003/app_swarmlab" -u app_swarmlab |
|||
---- |
|||
|
|||
or |
|||
|
|||
connect and run |
|||
|
|||
[source,bash] |
|||
---- |
|||
mongo |
|||
---- |
|||
|
|||
NOTE: Commands inside container |
|||
|
|||
|
|||
|
|||
== Video |
|||
|
|||
=== Start mongo |
|||
|
|||
**** |
|||
TIP: Learn how to start mongo |
|||
|
|||
video::565812815[vimeo] |
|||
**** |
|||
|
|||
=== Stop mongo |
|||
|
|||
**** |
|||
TIP: Learn how to stop mongo |
|||
|
|||
video::565813620[vimeo] |
|||
**** |
|||
|
|||
|
@ -0,0 +1 @@ |
|||
* xref:overview.adoc[Quickstart] |
@ -0,0 +1,45 @@ |
|||
= Quickstart |
|||
Swarmlab |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
|
|||
|
|||
This is where your wondeful journey in the vast world of Swarmlab begins. |
|||
|
|||
== Senario 1 |
|||
|
|||
* you are a *teacher* and want to prepare your lesson |
|||
** create exercises and examples |
|||
** share them with your students |
|||
* you are a *student* and want to try your newly acquired knowledge on some project |
|||
* you are a *Developer* and would like to denug your application or a real world senario |
|||
** you want to provide POC |
|||
* you are a *user* and just want to try out stuff |
|||
** you want to play around with examples but are too scared to do so on your system |
|||
|
|||
Well this is where you start! |
|||
|
|||
=== xref:hybrid:start-labroom.adoc[start labroom] |
|||
=== xref:hybrid:start-storage.adoc[start storage] |
|||
=== xref:hybrid:start-microservices.adoc[start service] |
|||
|
|||
|
|||
== Senario 2 |
|||
|
|||
You have already completed senario 1 (using swarmlab or you own resources) and would now like to collaborate with others. |
|||
|
|||
* as a teacher you would like to share the lesson you have prepared and work on it throughout the semester |
|||
* as a developer you want to coordinate with your team |
|||
* as a student you want to communicate and cooperate with your friends |
|||
|
|||
Lets begin! |
|||
|
|||
=== xref:venus:deploy.adoc[create network] |
|||
=== xref:venus:join.adoc[invite/join] |
|||
=== xref:venus:share-volume.adoc[volumes] |
|||
=== xref:venus:share-app.adoc[apps] |
|||
|
|||
|
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 16 KiB |
@ -0,0 +1 @@ |
|||
* xref:overview.adoc[Register] |
@ -0,0 +1,48 @@ |
|||
= The first steps |
|||
Swarmlab |
|||
:idprefix: |
|||
:idseparator: - |
|||
:!example-caption: |
|||
:!table-caption: |
|||
:page-pagination: |
|||
|
|||
|
|||
Before you have all of the powerfull tools of Swarmalb at your grasp you will have to create an account. |
|||
|
|||
[TIP] |
|||
==== |
|||
.GitHub |
|||
[example] |
|||
You may also login using your *GitHub* account without creating a Swarmlab account. |
|||
==== |
|||
|
|||
|
|||
== create an account |
|||
|
|||
To do that navigate to the home page at https://api-client.swarmlab.io:8088 |
|||
|
|||
You should have been greeted by our login screen! |
|||
|
|||
image::register:login.png[Login,500,float=center] |
|||
|
|||
To register click on the 'login with sso' option and accept the terms. |
|||
|
|||
image::register:terms.png[terms,float=center] |
|||
|
|||
== register |
|||
|
|||
Now you should be redirected to the login screen and you should be able to use the 'register' option at the bottom to make a new account! + |
|||
|
|||
|
|||
image::register:login_main.png[login,500,float=center] |
|||
|
|||
fill in the required details |
|||
|
|||
image::register:register_details.png[details,500,float=center] |
|||
|
|||
and follow the remaining instructions to activate your account. + |
|||
|
|||
== GitHub |
|||
|
|||
Sign in using your GitHub account without a pre-existing Swarmlab account |
|||
|
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 63 KiB |
After Width: | Height: | Size: 73 KiB |
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 9.1 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 519 B |
After Width: | Height: | Size: 401 B |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 69 KiB |
After Width: | Height: | Size: 787 B |
After Width: | Height: | Size: 592 B |
After Width: | Height: | Size: 515 B |
After Width: | Height: | Size: 32 KiB |