o-clock-dev / teleporter-compose Goto Github PK
View Code? Open in Web Editor NEWA containerized teleporter, to teleport student and teacher.
License: GNU Affero General Public License v3.0
A containerized teleporter, to teleport student and teacher.
License: GNU Affero General Public License v3.0
We should prepare the vscode, add the plugin devcontainer if missing and use devcontainer in order to use teleporter-terminal.
Afin de pouvoir router proprement sans utiliser de path, il nous faut capturer le trafic par sous domaine dans Haproxy.
A tester dans un premier temps sur Caddy.
Actuellement les IPs de chaque container sont fixés manuellement. Ca n'est pas nécéssaire et on peut fonctionner via discovery/label ou simplement via hostname qui sont déjà définies dans le compose.
Ces hostnames remontent dans tous les CT, pas de soucis de configuration donc.
Use SHA or inotify
presentation interne qui doit être déplacé ailleurs.
Go back and add docker requirement.
Since last week and add feature of multi promo, VPN rarelly works.
The VPN sometimes works but with a strange source port for the client : not the one specified.
for :
clement@fedora:~/work/repo/teleporter-compose$ tree -L 1 -d
.
├── backup
├── code
├── configs
├── containers-config
├── data
└── docs
data/configs/containers-config could be optimized
Thinking about a .docker
folder everything related to building docker images, don't know yet for the rest
Il faut ajouter un cli mysql pour administrer la BDD mariadb.
Deux options :
Dans les deux cas une authentification préenregistrée avec un .my.cnf sera un gain de temps pour tout le monde.
Beaucoup de craintes circulent sur l'installation des pré-requis, à savoir Docker (Desktop) sur les trois plateformes. J'imagine principalement pour Windows qui doit être le gros du troupeau.
Nous avons déjà fait quelques passes sur les trois OS, c'est plutôt simple comme installation, un exe/dmg, etc.
Je propose alors qu'on en discute ici, qu'on reprenne le temps de valider les installations sur tous les OS et faire de la documentation.
Après ça, ou pendant, on pourra trouver des cobayes pour tester et affiner.
Je vais créer un channel slack pour regrouper une partie des équipes pour qu'on puisse avoir une bonne communication et travailler ensemble notamment sur ce genre de sujets ;)
Suggestions pour passer à une approche d'une branche main pour les releases et d'une branche develop pour notre travail de groupe, PR, et aussi la génération d'image en version developpement et non directement sur latest pour ne pas faire passer en "prod" une image pas testée.
main
, protégée, uniquement sur PR et pas de force pushdevelop
, protégée, PR aussi comme le fonctionnement actuel sur main.develop
et latest
latest
est simplement marquée sur la dernière image develop
validéeN'hésitez pas à commenter et à ajouter d'autres idées !
A la fin, il est sympa, il nous souhaite bonne chance. :D
You should create a branch named docker-build to process our images build and push without requesting PR to main.
Then, PR to main will be used only when new images are ready, and compose files will be updated with the good sha1 tag in the same time.
C'est ici qu'apparaitra le détail du contenu du nouveau téléporteur au fur et à mesure de l'avancée du projet.
Ce qu'il est possible d'intégrer dans le nouveau format, et ce qui ne l'est pas et devra être installé à coté sur le poste.
VPN KO
File Browser OK
Terminal OK
Vscode OK
Live share KO
OK
OK
OK
OK
OK
OK
OK
Cette issue aura pour but de voir étapes par étapes le bon process pour la mise en place du nouveau téléporteur sur chaque plateforme
Ce post sera édité au fur et a mesure de l'avancée du projet pour un résultat final a transformer sur Stonly.
Installation de Docker
Ignorer cette partie la pour l'instant et attaquer au 8
- Lancer un invite de commande en mode administrateur
- Saisir :
wsl -install
- Redémarrer le PC
- Un terminal Ubuntu s'ouvre au lancement, créer un user et un mot de passe
sudo apt update
sudo apt upgrade
- Fermer le terminal
Mise en place du Téléporteur
[ls.io-init] done.
apparait dans les lignes de commandeslocalhost
Installation de Docker
Mise en place du Téléporteur
cd ~/downloads/teleporteur-compose-x.x
(remplacer x.x par la version actuelle téléchargée)chmod +x start-teleporter.sh
sh start-teleporter.sh
sudo usermod -aG kvm $USER
terminal should be available directly in the vscode running in the student poste.
Nous avions un port fixe, mais pour permettre une utilisation simultannée de plusieurs teleporter-compose, on va finallement le rendre dynamique.
We need to update the README.md with that new core/app/edu compose thing.
Also need to add teleporter-backup and check if some stuff changed around here.
Actuellement notre image VPN est un peu grosse (docker, wireguard + tools réseau) alors qu'elle est un élément critique. On va la simplifier en partant à priori d'une Alpine qui s'y prête mieux avec son orientation réseau et un simple wireguard.
En continuera à la builder pour l'entrypoint.
UX test with student show it's better to automatic start every services in the docker compose.
After the initial setup, student will have to only start Docker Desktop every Day (nothink to do with Docker engine).
We should test if vscode liveshare can be activated on the web version.
Neko website
Description
Welcome to Neko, a self-hosted virtual browser that runs in Docker and uses WebRTC technology. Neko is a powerful tool that allows you to run a fully-functional browser in a virtual environment, giving you the ability to access the internet securely and privately from anywhere. With Neko, you can browse the web, run applications, and perform other tasks just as you would on a regular browser, all within a secure and isolated environment. Whether you are a developer looking to test web applications, a privacy-conscious user seeking a secure browsing experience, or simply someone who wants to take advantage of the convenience and flexibility of a virtual browser, Neko is the perfect solution.
In addition to its security and privacy features, Neko offers the ability for multiple users to access it simultaneously. This makes it an ideal solution for teams or organizations that need to share access to a browser, as well as for individuals who want to use multiple devices to access the same virtual environment. With Neko, you can easily and securely share access to a browser with others, without having to worry about maintaining separate configurations or settings. Whether you need to collaborate on a project, access shared resources, or simply want to share access to a browser with friends or family, Neko makes it easy to do so.
Neko is also a great tool for hosting watch parties and interactive presentations. With its virtual browser capabilities, Neko allows you to host watch parties and presentations that are accessible from anywhere, without the need for in-person gatherings. This makes it easy to stay connected with friends and colleagues, even when you are unable to meet in person. With Neko, you can easily host a watch party or give an interactive presentation, whether it's for leisure or work. Simply invite your guests to join the virtual environment, and you can share the screen and interact with them in real-time.
Features
- Text Chat (With basic markdown support, discord flavor)
- Admin users (Kick, Ban & Force Give/Release Controls, Lock room)
- Clipboard synchronization (on supported browsers)
- Emote overlay
- Ignore user (chat and emotes)
- Persistent settings
- Automatic Login with custom url args. (add ?usr=&pwd= to the url.)
- Broadcasting room content using RTMP (to e.g. twitch or youtube...)
- Bidirectional file transfer (if enabled)
This kind of application could help us resolve the need of sharing screen (for support) as seen in this issue #57
this image has been remove, we should use Oclock depot
Il faut bien builder et faire valider les images docker, puis les tester localement.
Il faut reload le proxy haproxy lorsque le template à été changé, ça peut se faire en envoyant un signal au processus haproxy, peut être un truc à l'intérieur de haproxy qui automatise le reload, à avoir.
Il faut trouver aussi un moyen de lancer régulièrement teleporter-templating-config.
vscode n'a pas les droits en écriture.
L'exécution du processus node est pour l'instant mal définie, je pense à quelque chose comme ça :
teleport teleporteur-node
pour lancer le process -> le shell est un peu pourri à voir ...Que ce soit OSS ou FOSS on peut déjà réfléchir à l'ouverture du code.
Réflexion à savoir sur :
Autre ?
Edit:
ToDo list:
Some containers can wait up to 10 secondes before being killed by SIGKILL (SIGTERM didn't stop them before).
Check documentation : https://docs.docker.com/compose/compose-file/05-services/#stop_grace_period
Default port 80 is in conflict with an eventual already installed http aplication. So Application will not start and cause a bad experience to users.
We should bind by default another port like 1337, and redirect eventually port 80 to 1337 if port 80 is free in a second time.
Un besoin important de la part de l'équipe péda est la possibilité de visualiser l'écran de l'apprenant :
YAML semble indiquer de pas re-indenter sur un liste avec tiret -
, cependant dans tous les exemples de compose sur le dépôt fait par docker mais aussi dans la documentation il y'a une indentation (pas de 2).
Comme on a commencé la modification sur un compose et pas l'autre, il faut faire le choix et mettre tout le dépôt à la même enseigne.
Je propose de garder la méthode antérieure et reprendre celle de Docker.
L'idée est d'ajouter les nombreuses commandes utilises, ajouter aussi des alias pour faciliter la vie des étudiants.
On a déjà l'issue sur le cli mysql : #15
Le but est donc de s'amuser avec le terminal et de remonter ici ce qu'on peut ou doit rajouter ;)
ToDo:
Il reste quelques images buildées localement qu'il faut automatiser :
Il faut différencier nos deux fichiers compose selon leur criticité et donc ceux qui les modifieront :
core
avec avec tous les containers associés au fonctionnement vital du teleporteur compose (vpn, haproxy, homepage, terminal, filebrowser, templateconfig, autoheal).app
avec un fichier qui pourra être modifié/adapté selon les besoins et les évolutions pédagogiques (caddyserver, adminer, phpmyadmin, mongo-express, vscode-server, node, php, node, postgreSQL, MariaDB, MongoDB).For every container, i guess.
Dans les bookmarks (homepage) la liste des étudiants est fixe pour les besoins de la présentation. Il faut à terme la générer dynamiquement.
On devrait pouvoir récupérer les prénom et nom depuis l'API du VPN et donc leurs hostnames/IP puis générer cette liste de bookmarks.
Je ne sais pas trop où l'insérer mais puisqu'on a un ct de templating ça pourrait aller la dedans (et injecter cette liste dans homepage)
Actuellement les data de MySQL sont stockées dans un mount bind.
Il n'y a pas besoin d'accéder directement à ces fichiers sur le poste hôte, il serait plus intéressant de les mettre dans un volume pour assurer une persistance et un fonctionnement plus propre et OS independant.
Faire un custom pour le 503 quand un TP n'est pas en ligne pour afficher quelque chose de plus propre.
Actuellement vpn.env
est nécéssaire pour lancer le TP, il y est - vide - dans la code base pour permettre le lancement sans encombre au premier git clone
Cependant pour travailler c'est désagréable, il faut bien veiller à ne pas pousser son vpn.env
quand on commit. Il faut aussi faire un copy sur un fichier déjà présent, etc.
Il faudrait que le vpn.env
ne soit pas obligatoire pour lancer le compose.
Solution initiale : https://docs.docker.com/compose/environment-variables/set-environment-variables/
env_file:
- path: ./default.env
required: true # default
- path: ./override.env
required: false
Sensé marche dans la définition d'un service mais au niveau du compose (via l'include) docker compose explose (yep il pète, même pas un error ou warning, il pète).
A voir si c'est un bug ou une feature.
🇫🇷
Les bases de données doivent pourvoir être sauvegardées, il faut trouver un mécanisme de backup/restauration.
Les backups doivent être stockés dans un mount bind sur le poste apprenant, avec une rétention d'une semaine.
Pourquoi pas un stockage cloud par la suite.
🇬🇧
Databases must be able to be backed up, and a backup/restore mechanism must be found.
Backups should be stored in a mount bind on the learner workstation, with a retention period of one week.
Why not store them in the cloud afterwards?
PostgreSQL is not ready for use : server seems to be running, cli not, and pgadmin disapear from configuration.
Some students needs it.
L'image actuelle est sous Ubuntu, et sur un repo hors organisation, il faut une image plus légère, idéalement sous Alpine et la rapatrier sur le Repo de l'orga Oclock
As we saw in issue #63, we've experienced a certain regression.
Let's think about the gradual introduction of tests. Integration, regression, unit or functional, we'll see here.
We shoud avoid using the latest tag to push an image, every build should be associated to a unique version number or tag.
After that, compose files should refer a specific tag and not the latest tag.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.