@ -13,9 +13,9 @@
Architecture overview
Architecture overview
= Storage
= = Storage
== IPFS Cluster image:emblem-web.png[link="https://cluster.ipfs.io/",window="_blank"]
=== IPFS Cluster image:emblem-web.png[link="https://cluster.ipfs.io/",window="_blank"]
Automated data availability and redundancy on https://cluster.ipfs.io/[IPFS^].
Automated data availability and redundancy on https://cluster.ipfs.io/[IPFS^].
@ -25,7 +25,7 @@ It is being used for both tutors and students to publish content on a *decentral
Information will be *auto-deleted* after approximatelly *24 hours* of not being used. +
Information will be *auto-deleted* after approximatelly *24 hours* of not being used. +
== minio cluster image:emblem-web.png[link="https://min.io/",window="_blank"]
=== minio cluster image:emblem-web.png[link="https://min.io/",window="_blank"]
High Performance, cloud Native Object Storage. +
High Performance, cloud Native Object Storage. +
@ -36,44 +36,44 @@ More than 750 organizations, including Microsoft Azure, use MinIO’s S3 Gateway
It is being used for both tutors and students to save content on a *centralized* manner! +
It is being used for both tutors and students to save content on a *centralized* manner! +
Information storage is *permanent*. +
Information storage is *permanent*. +
== MariaDB Galera Cluster image:emblem-web.png[link="https://mariadb.com/kb/en/what-is-mariadb-galera-cluster/",window="_blank"]
=== MariaDB Galera Cluster image:emblem-web.png[link="https://mariadb.com/kb/en/what-is-mariadb-galera-cluster/",window="_blank"]
https://mariadb.org/[MariaDB^] Galera Cluster is a virtually synchronous multi-master cluster for MariaDB. +
https://mariadb.org/[MariaDB^] Galera Cluster is a virtually synchronous multi-master cluster for MariaDB. +
Provide *Active-active* multi-master topology. +
Provide *Active-active* multi-master topology. +
Used for user/admin authorization and authentication.
Used for user/admin authorization and authentication.
== A replica set in MongoDB image:emblem-web.png[link="https://docs.mongodb.com/manual/replication/#replication-in-mongodb",window="_blank"]
=== A replica set in MongoDB image:emblem-web.png[link="https://docs.mongodb.com/manual/replication/#replication-in-mongodb",window="_blank"]
https://www.mongodb.com[MongoDB^] is a document database designed for ease of development and scaling.
https://www.mongodb.com[MongoDB^] is a document database designed for ease of development and scaling.
Used for labroom and swarmlab services administration and scheduling. +
Used for labroom and swarmlab services administration and scheduling. +
== ShareDB image:emblem-web.png[link="https://github.com/share/sharedb",window="_blank"]
=== ShareDB image:emblem-web.png[link="https://github.com/share/sharedb",window="_blank"]
ShareDB is a realtime database backend based on Operational Transformation (OT) of JSON documents
ShareDB is a realtime database backend based on Operational Transformation (OT) of JSON documents
= Devel
= = Devel
== slim image:emblem-web.png[link="http://www.slimframework.com/",window="_blank"]
=== slim image:emblem-web.png[link="http://www.slimframework.com/",window="_blank"]
Slim is a https://www.php.net/[PHP^] micro framework that helps you quickly write powerful APIs.
Slim is a https://www.php.net/[PHP^] micro framework that helps you quickly write powerful APIs.
Used for main api of swarmlab.io +
Used for main api of swarmlab.io +
Slim was used for a fast and powerful router that maps route callbacks to specific HTTP request methods and URIs. +
Slim was used for a fast and powerful router that maps route callbacks to specific HTTP request methods and URIs. +
== nodejs image:emblem-web.png[link="https://nodejs.org/en/",window="_blank"]
=== nodejs image:emblem-web.png[link="https://nodejs.org/en/",window="_blank"]
Nodejs is an asynchronous event-driven JavaScript runtime, Node.js is designed to build scalable network applications.
Nodejs is an asynchronous event-driven JavaScript runtime, Node.js is designed to build scalable network applications.
Used for event-driven programming and for Sockets and WebSockets.
Used for event-driven programming and for Sockets and WebSockets.
== vue.js image:emblem-web.png[link="https://vuejs.org/",window="_blank"]
=== vue.js image:emblem-web.png[link="https://vuejs.org/",window="_blank"]
Vue is a progressive JavaScript framework for building user interfaces. +
Vue is a progressive JavaScript framework for building user interfaces. +
It is designed from the ground up to be incrementally adoptable, and can easily scale between a library and a framework depending on different use cases. +
It is designed from the ground up to be incrementally adoptable, and can easily scale between a library and a framework depending on different use cases. +
It consists of an approachable core library that focuses on the view layer only, and an ecosystem of supporting libraries that helps you tackle complexity in large Single-Page Applications. +
It consists of an approachable core library that focuses on the view layer only, and an ecosystem of supporting libraries that helps you tackle complexity in large Single-Page Applications. +
Used for the main user interface of swarmlab.io. +
Used for the main user interface of swarmlab.io. +
== python image:emblem-web.png[link="https://www.python.org/",window="_blank"]
=== python image:emblem-web.png[link="https://www.python.org/",window="_blank"]
Python is an interpreted, high-level, general-purpose programming language. +
Python is an interpreted, high-level, general-purpose programming language. +
Python's design philosophy emphasizes code readability with its notable use of significant whitespace. +
Python's design philosophy emphasizes code readability with its notable use of significant whitespace. +
@ -81,60 +81,60 @@ Its language constructs and object-oriented approach aim to help programmers wri
Used along with ansible for maintenance and administration of the machines making up the cluster of swarmlab.io. +
Used along with ansible for maintenance and administration of the machines making up the cluster of swarmlab.io. +
se sinrgasia me tin ansible gia tin diachirissi ton michanon
se sinrgasia me tin ansible gia tin diachirissi ton michanon
== php image:emblem-web.png[link="https://www.php.net",window="_blank"]
=== php image:emblem-web.png[link="https://www.php.net",window="_blank"]
PHP is a popular general-purpose scripting language that is especially suited to web development. +
PHP is a popular general-purpose scripting language that is especially suited to web development. +
Fast, flexible and pragmatic, PHP powers everything from your blog to the most popular websites in the world. +
Fast, flexible and pragmatic, PHP powers everything from your blog to the most popular websites in the world. +
Used with slim for creation of the main API.
Used with slim for creation of the main API.
== codemirror image:emblem-web.png[link="https://codemirror.net/",window="_blank"]
=== codemirror image:emblem-web.png[link="https://codemirror.net/",window="_blank"]
CodeMirror is a versatile text editor implemented in JavaScript for the browser. +
CodeMirror is a versatile text editor implemented in JavaScript for the browser. +
Used for the online editors for interraction with tutors and students. +
Used for the online editors for interraction with tutors and students. +
== oauth2 image:emblem-web.png[link="https://oauth.net/2/",window="_blank"]
=== oauth2 image:emblem-web.png[link="https://oauth.net/2/",window="_blank"]
OAuth 2.0 is the industry-standard protocol for authorization. +
OAuth 2.0 is the industry-standard protocol for authorization. +
OAuth 2.0 focuses on client developer simplicity while providing specific authorization flows for web applications, desktop applications, mobile phones, and living room devices. +
OAuth 2.0 focuses on client developer simplicity while providing specific authorization flows for web applications, desktop applications, mobile phones, and living room devices. +
This specification and its extensions are being developed within the IETF OAuth Working Group. +
This specification and its extensions are being developed within the IETF OAuth Working Group. +
This protocol is being used for the connection of users and services. +
This protocol is being used for the connection of users and services. +
= System admin and devel
= = System admin and devel
== docker image:emblem-web.png[link="https://www.docker.com/",window="_blank"]
=== docker image:emblem-web.png[link="https://www.docker.com/",window="_blank"]
Docker provides the ability to package and run an application in a loosely isolated environment called a container. +
Docker provides the ability to package and run an application in a loosely isolated environment called a container. +
Used for all the services implementations. +
Used for all the services implementations. +
== docker-compose image:emblem-web.png[link="https://docs.docker.com/compose/",window="_blank"]
=== docker-compose image:emblem-web.png[link="https://docs.docker.com/compose/",window="_blank"]
Compose is a tool for defining and running multi-container Docker applications. +
Compose is a tool for defining and running multi-container Docker applications. +
Used for development, configuration and testing of the services before deployment to the swarm. +
Used for development, configuration and testing of the services before deployment to the swarm. +
== Bash image:emblem-web.png[link="https://www.gnu.org/software/bash/",window="_blank"]
=== Bash image:emblem-web.png[link="https://www.gnu.org/software/bash/",window="_blank"]
A lot of bash scripting was used (low-level) tasks concerning the Linux operating system.
A lot of bash scripting was used (low-level) tasks concerning the Linux operating system.
== ansible image:emblem-web.png[link="https://www.ansible.com/",window="_blank"]
=== ansible image:emblem-web.png[link="https://www.ansible.com/",window="_blank"]
Ansible is an open-source software provisioning, configuration management, and application-deployment tool. +
Ansible is an open-source software provisioning, configuration management, and application-deployment tool. +
Used for administration of the machines of the general cluster of swarmlab.io as well as its subclusters. +
Used for administration of the machines of the general cluster of swarmlab.io as well as its subclusters. +
== keycloak image:emblem-web.png[link="https://www.keycloak.org/",window="_blank"]
=== keycloak image:emblem-web.png[link="https://www.keycloak.org/",window="_blank"]
Open Source Identity and Access Management +
Open Source Identity and Access Management +
Used as backend for authentication to provide secure services in our sso implementation. +
Used as backend for authentication to provide secure services in our sso implementation. +
= Deploy
= = Deploy
== Docker swarm image:emblem-web.png[link="https://docs.docker.com/engine/swarm/",window="_blank"]
=== Docker swarm image:emblem-web.png[link="https://docs.docker.com/engine/swarm/",window="_blank"]
Docker swarm is a container orchestration tool, its allow to manage multiple containers deployed across a cluster. +
Docker swarm is a container orchestration tool, its allow to manage multiple containers deployed across a cluster. +
@ -142,22 +142,22 @@ Used for orchestration of swarmlab.io services. +
= Colaboration
= = Colaboration
== gittea image:emblem-web.png[link="https://gitea.com/",window="_blank"]
=== gittea image:emblem-web.png[link="https://gitea.com/",window="_blank"]
A self-hosted Git service used for the git-repo management used by students and tutors. +
A self-hosted Git service used for the git-repo management used by students and tutors. +
== jitsi image:emblem-web.png[link="https://jitsi.org/",window="_blank"]
=== jitsi image:emblem-web.png[link="https://jitsi.org/",window="_blank"]
A secure, flexible, and completely free video conferencing. +
A secure, flexible, and completely free video conferencing. +
Used for the online virtual meetings attended by students and tutors. +
Used for the online virtual meetings attended by students and tutors. +
= service access
= = service access
== noVNC image:emblem-web.png[link="https://novnc.com/info.html",window="_blank"]
=== noVNC image:emblem-web.png[link="https://novnc.com/info.html",window="_blank"]
A open source VNC client - it's is both a VNC client JavaScript library as well as an application built on top of that library. +
A open source VNC client - it's is both a VNC client JavaScript library as well as an application built on top of that library. +
noVNC runs in any modern browser including mobile browsers (iOS and Android). +
noVNC runs in any modern browser including mobile browsers (iOS and Android). +
@ -165,7 +165,7 @@ noVNC runs in any modern browser including mobile browsers (iOS and Android). +
Used to access a unix graphic environment for the services provided through a normal browser. +
Used to access a unix graphic environment for the services provided through a normal browser. +
== ttyd image:emblem-web.png[link="https://tsl0922.github.io/ttyd/",window="_blank"]
=== ttyd image:emblem-web.png[link="https://tsl0922.github.io/ttyd/",window="_blank"]
Terminal over the web. +
Terminal over the web. +