Giter VIP home page Giter VIP logo

teleporter-compose's Introduction

Discord

Teleporter Compose

Teleporter Compose is a project that enables easy deployment of development environments using Docker Compose. This repository contains the necessary files to configure and launch multiple Docker containers.

Screenshot of Teleporter Compose homepage

Prerequisites

Tip

For our educational purposes, we are using Docker Desktop, which is available on Linux, macOS (Intel & Apple Silicon chips), and Windows. An alternative could be Podman Desktop, although it remains untested at the moment.

Documentation

The project documentation is available in the docs/ directory.

Features

This project leverages Docker Compose to manage various applications and services, all of which are accessible via a centralized homepage at localhost. This homepage not only provides access to the different web services hosted by the Compose setup but also monitors and displays the status of launched and usable servers (e.g., PHP, MariaDB).

Below is a list of the containers configured for this project, divided into application containers and core containers.

Application Containers

Application Containers

  1. VSCode Server

    • Container Name: teleporter-vscode
    • Image: linuxserver/code-server:4.21.2
    • Description: A web-based Visual Studio Code instance.
    • Key Features:
      • Supports a list of pre-installed extensions.
      • Integrates with local code directory.
  2. Web Server (Caddy)

    • Container Name: teleporter-caddyserver
    • Image: caddy:2.7.6
    • Description: A versatile web server for hosting web applications.
    • Key Features:
      • Health checks to ensure server reliability.
      • Customizable through Caddyfile and environment variables.
  3. Backup

    • Container Name: teleporter-backup
    • Image: docker:dind
    • Description: Manages backup operations for the system.
    • Key Features:
      • Integrates with MariaDB, PostgreSQL, and MongoDB.
      • Utilizes custom backup scripts.
  4. DBMS Access (Adminer)

    • Container Name: teleporter-adminer
    • Image: adminer:4.8.1
    • Description: A database management tool for MariaDB.
    • Key Features:
      • Pre-configured with MariaDB settings.
      • Uses Dracula theme for UI.
  5. DBMS Access (pgAdmin)

    • Container Name: teleporter-pgadmin4
    • Image: dpage/pgadmin4:8.5
    • Description: A web-based PostgreSQL administration tool.
    • Key Features:
      • Default email and password configured.
      • Integrates with local servers.json file.
  6. DBMS Access (PHPmyAdmin)

    • Container Name: teleporter-phpmyadmin
    • Image: oclock/teleporter-phpmyadmin:dd7d23c5eea0cc4d01c658a82405123cb86a2ef6
    • Description: Another database management tool, primarily for MySQL/MariaDB.
    • Key Features:
      • Configured with root user access.
      • Automatically restarts on failure.
  7. DBMS Access (MongoExpress)

    • Container Name: teleporter-mongo-express
    • Image: mongo-express:1.0.2-20-alpine3.19
    • Description: A web-based MongoDB administration interface.
    • Key Features:
      • Admin access enabled.
      • Base URL configured for easy access.
  8. DBMS (MariaDB)

    • Container Name: teleporter-mariadb
    • Image: mariadb:11.3.2
    • Description: Provides MariaDB database services.
    • Key Features:
      • Pre-configured with root password.
      • Health checks to ensure database availability.
  9. DBMS (MongoDB)

    • Container Name: teleporter-mongodb
    • Image: mongo:7.0
    • Description: Provides MongoDB database services.
    • Key Features:
      • Configured with root user credentials.
      • Health checks to ensure database availability.
  10. DBMS (PostgreSQL)

    • Container Name: teleporter-postgres
    • Image: postgres:16.2
    • Description: Provides PostgreSQL database services.
    • Key Features:
      • Configured with default password.
      • Always restarts on failure.
  11. PHP Environment

    • Container Name: teleporter-php
    • Image: php:8.3-fpm-alpine
    • Description: Provides a PHP runtime environment.
    • Key Features:
      • Integrates with local web directory.
      • Supports FPM for fast processing.
Core Containers

Core Containers

  1. Dashboard (Homepage)

    • Container Name: teleporter-homepage
    • Image: ghcr.io/gethomepage/homepage:v0.9.1
    • Description: Provides a central dashboard for the Teleporter system.
    • Key Features:
      • Customizable user interface based on environment variables.
      • Integrates with VPN setup.
  2. Reverse Proxy (HAProxy)

    • Container Name: teleporter-haproxy
    • Image: haproxy:lts-alpine
    • Description: A high-performance reverse proxy server.
    • Key Features:
      • Customizable with HAProxy configuration.
      • Integrates with VPN setup for seamless routing.
  3. Terminal

    • Container Name: teleporter-terminal
    • Image: oclock/teleporter-terminal:bdc685e9f5b1a9ef3565b93c2a3ee2bdf95fe74e
    • Description: Provides terminal access within a web interface.
    • Key Features:
      • Supports various environment configurations.
      • Integrates with Docker socket for extended functionalities.
  4. WireGuard VPN

    • Container Name: teleporter-vpn
    • Image: oclock/teleporter-vpn:dd7d23c5eea0cc4d01c658a82405123cb86a2ef6
    • Description: Provides secure VPN access using WireGuard.
    • Key Features:
      • Configurable via environment variables.
      • Health checks to ensure VPN connectivity.
  5. File Browser

    • Container Name: teleporter-filebrowser
    • Image: oclock/teleporter-filebrowser:dd7d23c5eea0cc4d01c658a82405123cb86a2ef6
    • Description: A simple file browser for managing files within the system.
    • Key Features:
      • No authentication required.
      • Integrates with local CODE_DIR and CONFIG_DIR.
  6. AutoHeal Service

    • Container Name: teleporter-autoheal
    • Image: willfarrell/autoheal
    • Description: Monitors and automatically restarts failing containers.
    • Key Features:
      • Uses Docker socket for container management.
      • Always restarts on failure.
  7. Template Config

    • Container Name: teleporter-templating-config
    • Image: oclock/teleporter-templating-config:6f879ed7ceac341c56f42db742e4d8b210907365
    • Description: Manages templated configurations.
    • Key Features:
      • Configurable via environment variables.
      • Integrates with local config directory.

Installation

  1. Clone the repository to your local machine:

    git clone https://github.com/O-clock-Dev/teleporter-compose.git
    cd teleporter-compose
  2. Start the containers:

    docker compose up

Usage

Starting the Containers

To start the containers, use the following command:

docker compose up

Stopping the Containers

To stop the containers, use the following command:

docker compose down

Recreating the Containers

If you need to recreate the containers (for example, after a configuration change), use the following command:

docker compose up --force-recreate

Project Structure

This repository contains the main configuration and associated files for Docker Compose. The primary compose.yml file uses include directives to incorporate specific configurations for application containers and services.

  • compose.yml: Main configuration file for Docker Compose.
    • include.app.compose.yaml: Includes descriptions for application containers.
    • include.core.compose.yaml: Includes descriptions for core services.
  • code/: Default directory for your coding files.
  • config/: Configuration files used for application and service containers.
  • .docker/: Configuration files used for containers.
  • data/: Local configuration files for applications.

Configuration

Environment Variables

The existing local.env file contains the following variables to help you customize your experience: CODE_DIR, CONFIG_DIR, BACKUP_DIR, LANG, TZ, WEB_DIR, WEB_PUBLIC_DIR.

Usage of local.env File

The local.env file allows you to configure various aspects of the development and production environment. Here are some examples of what you can do with these variables:

  • AUTOHEAL_CONTAINER_LABEL and AUTOHEAL_START_PERIOD: Configure auto-healing for Docker containers to monitor and automatically restart failing containers.
  • CODE_DIR: Define the working directory for local code used in the app (e.g., VSCode or Caddy).
  • CONFIG_DIR: Define the data folder that contains items like config files.
  • BACKUP_DIR: Where automatic BDD backups goes.
  • LANG and TZ: Set the language and timezone for the containers, which is essential for applications that depend on locale settings.
  • VPN_LOCAL_IP, VPN_NETWORK, VPN_WILDCARD, and VPN_PRIV_IP: Configure VPN settings to enable secure access to your local network via WireGuard. Requires .env to fully function; check the VPN Configuration section.
  • VSCODE_EXTENSIONS_LIST: Specify a list of Visual Studio Code extensions to install automatically, enhancing the development experience.
  • WEB_DIR and WEB_PUBLIC_DIR: Define directories for web files, making it easier to deploy and manage web applications.

Usage of default.env File

The file contains all settings. It's not recommanded to update this file, you should use local.env instead.

VPN Configuration

Note

This configuration is necessary to customize the names displayed on the Teleporter Compose homepage interface.

To access the VPN functionality of the VPN container (WireGuard), you need to generate a .env file yourself. Below is an example of what the .env file might look like (do not include the actual values or change them):

FULL_NAME=John Doe
FIRST_NAME=John
LAST_NAME=Doe
PROMO=johnlennon
VPN_NAME=john-doe
KEY_PUB=WGprivatekey
KEY_PRIV=WGpubkey
KEY_VPN_SERVER=WGserverpubkey
IP_PRIV=10.0.0.244
VPN_SERVER=hostnameOrIp
VPN_SERVER_PORT=44222
VPN_LOCAL_PORT=44222

Caution

Ensure that this file is properly configured with your own details and stored securely, as it contains sensitive information needed to establish a secure VPN connection.

Volumes

Volumes are used to persist data between container restarts. You can configure volumes in the compose files.

Contribution

Contributions are welcome! Please follow the steps below to contribute:

  1. Fork the repository.
  2. Create a branch for your feature (git checkout -b feature/my-feature).
  3. Commit your changes (git commit -am 'Add a new feature').
  4. Push your branch (git push origin feature/my-feature).
  5. Open a Pull Request.

License

This project is licensed under the AGPLv3 License. See the LICENSE file for more details.

teleporter-compose's People

Contributors

profy12 avatar hommedegout avatar clementgoclock avatar nunomars avatar dependabot[bot] avatar

Stargazers

 avatar Guillaume avatar  avatar

Forkers

clementgoclock

teleporter-compose's Issues

Try out Neko (browser in browser)

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

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)

Images preview

This kind of application could help us resolve the need of sharing screen (for support) as seen in this issue #57

Passer des IPv4 fixes à label ou hostname

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.

VPN do not works anymore

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.

Séparation compose core / app

Il faut différencier nos deux fichiers compose selon leur criticité et donc ceux qui les modifieront :

  • une partie core avec avec tous les containers associés au fonctionnement vital du teleporteur compose (vpn, haproxy, homepage, terminal, filebrowser, templateconfig, autoheal).
  • une partie 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).

Organization of branches, commits, releases and images

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.

  • Branches :
    • main, protégée, uniquement sur PR et pas de force push
    • develop, protégée, PR aussi comme le fonctionnement actuel sur main.
  • Commit :
  • Release :
    • Automatisée via release-please : très sympa, génère tout automatiquement après une PR de release, utilise aussi des labels, génere les releases notes, etc. Se base sur conventional commit
      • Totalement soumis à débat, c'est pas forcément le plus simple à mettre en place bien que dès qu'on maîtrise ça roue tout seul !
  • Images Docker :
    • Build & push bien évidemment automatisés via workflow GHA
    • Différenciation entre develop et latest
    • Dès que la PR pour merger dans la branche principale et la release automatique alors la latest est simplement marquée sur la dernière image develop validée

N'hésitez pas à commenter et à ajouter d'autres idées !

J'ai demandé à un LLM (Claude 3 Opus) de me donner d'autres suggestions et voilà sa sortie :

Utilisation des GitHub Actions pour l'automatisation

  • Tests automatisés : Mettez en place des GitHub Actions pour exécuter automatiquement les tests unitaires et d'intégration à chaque pull request sur les branches develop et main. Cela garantira que seul du code passant tous les tests sera fusionné.
  • Vérifications de style de code : Intégrez des actions pour vérifier le respect des conventions de codage à chaque commit, afin de maintenir une haute qualité de code.

Amélioration de la gestion des issues et pull requests

  • Modèles d'issues et PR : Définissez des templates pour les issues et pull requests afin de standardiser leur soumission, avec des champs obligatoires, des checklists et des labels par défaut.
  • Bot de gestion : Utilisez un bot comme ceux proposés par Probot pour automatiser certaines tâches répétitives (gestion des conflits, assignation de reviewers, fermeture d'issues inactives...).

Revue de code et collaboration

  • Pair programming : Encouragez la pratique du pair programming, en particulier pour les tâches complexes, en tirant parti d'outils de codage collaboratif intégrés à GitHub.
  • Webhooks et notifications : Mettez en place des webhooks pour relier votre dépôt à des outils de communication (Slack, Teams...) et recevoir des notifications en temps réel sur l'activité du dépôt

Documentation et wiki

  • Documentation des fonctionnalités : Veillez à ce que chaque fonctionnalité clé soit documentée dans le wiki du dépôt, pour aider les nouveaux contributeurs à prendre en main le projet.
  • Documentation d'API : Si votre projet expose des API, utilisez des outils comme Swagger ou Postman pour générer une documentation interactive des API, liée à votre dépôt.

A la fin, il est sympa, il nous souhaite bonne chance. :D

Liste des fonctionnalités / technos

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.

Utilitaires

  • VPN KO

  • File Browser OK

  • Terminal OK

  • Vscode OK

  • Live share KO

Bases de données

  • Mysql OK
  • MongoDB OK
  • PostgreSQL OK
  • Adminer OK
  • PhpMyAdmin OK
  • Mongo express OK
  • PgAdmin4 OK

Serveurs web

  • Caddy

Passer les data en volume Docker

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.

PostgreSQL environment

PostgreSQL is not ready for use : server seems to be running, cli not, and pgadmin disapear from configuration.

Some students needs it.

Préparation à l'ouverture du code (Open Source)

Que ce soit OSS ou FOSS on peut déjà réfléchir à l'ouverture du code.

Réflexion à savoir sur :

  • LICENCE
    • aGPL3, pour combler le loophole dans GPL pour l'utilisation du soft en SaaS (autorise la non publication du code modifié)
  • CONTRIBUTING et autres pour le travail avec la communauté, en équipe
  • Passage à l'Anglais, langue de référence (au moins, ça n'empêche pas de mettre en français aussi en dessous)
  • Unbranding : passer en variable d'environnement tout ce qui permet de brander, enlever tout ce qui est spécifique à O'clock (exemple: logo dans homepage)
  • Ouverture du code : nouveau repo et suppression de l'historique des commits qui pourrait en donner trop sur l'interne O'Clock. Moins chronophage de partir sur une codebase propre sans historique. Le projet étant encore assez récent le manque d'info dans l'historique ne se fera pas trop sentir.
  • Workflow : génération de release, depandabot, scan du code et utilisation des SARIF, etc.

Autre ?


Edit:

ToDo list:

  • License
  • Contributing
  • Unbranding
  • Code opening : cleaning
  • Workflow

compose: indentation des listes

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.

Rendre vpn.env optionnel au lancement

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.

Docker image version, do not use latest anymore

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.

Environnement node

L'exécution du processus node est pour l'instant mal définie, je pense à quelque chose comme ça :

  • il nous faut deux services, un de back et un de front, chacun son container.
  • utiliser le terminal et teleport teleporteur-node pour lancer le process -> le shell est un peu pourri à voir ...
  • il faut utiliser un routage par vhost pour l'accessibilité distante, peut être deux services un node-front.prenom-nom.localhost et node-back.prenom-nom.localhost.
  • on proxifie ces deux services dans haproxy sans check (pour éviter les effets up and down), vers le port 3000 de chaque container.

Change landing page http port

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.

Documentation sur l'installation de Docker Desktop

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 ;)

Rebuild une image Vpn alpine

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

MySQL cli

Il faut ajouter un cli mysql pour administrer la BDD mariadb.

Deux options :

  • soit directement dans le container MariaDB, ce qui assure la compatibilité client/serveur, et l'authent locale.
  • soit dans le terminal, avec un .my.cnf

Dans les deux cas une authentification préenregistrée avec un .my.cnf sera un gain de temps pour tout le monde.

Intégration WebRTC, partage d'écran

Un besoin important de la part de l'équipe péda est la possibilité de visualiser l'écran de l'apprenant :

  • l'accompagnement de certains apprenants en difficulté nécessite un contrôle visuel
  • le teleporter compose permet d'utiliser les fonctionnalité du navigateur, et donc webrtc, et donc la possibilité d'un partage d'écran.
  • un lien vers Chrome remote Desktop peut déjà rassurer les foules : https://remotedesktop.google.com/?pli=1
  • A voir comment améliorer l'intégration de chrome remote pour faciliter la prise en main.
  • Eventuellement un autre produit équivalent (rustdesk etc).

Automatic start of docker compose services

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).

Step by Step, process de mise en place et documentation

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.

Windows

Installation de Docker

Ignorer cette partie la pour l'instant et attaquer au 8

  1. Lancer un invite de commande en mode administrateur
  2. Saisir : wsl -install
  3. Redémarrer le PC
  4. Un terminal Ubuntu s'ouvre au lancement, créer un user et un mot de passe
  5. sudo apt update
  6. sudo apt upgrade
  7. Fermer le terminal
  1. Télécharger Docker et lancer l'installer :
  2. Tout laisser coché par défaut et lancer l'installation
  3. Redémarrer le PC
  4. patcher Docker sur la derniere version ( en bas a droite de la fenêtre il proposera de la télécharger et l'installer)
  5. redemarrer le PC

Mise en place du Téléporteur

  1. Lancer Docker
  2. Télécharger l'archive teleporteur-compose-x.x.zip
  3. Extraire l'archive
  4. désactiver tout antivirus temporairement
  5. Lancer Start Teleporter - Windows.bat
  6. Smart Screen peut apparaitre, cliquer sur Informations complémentaires et Exécuter quand même
  7. Lors du build une fenêtre d'autorisation de réseau public et privé apparait, cliquer sur autoriser.
  8. Le build est terminé des que [ls.io-init] done. apparait dans les lignes de commandes
  9. Ne surtout pas fermer la fenêtre d'invite de commande à la fin de l'installation
  10. Lancer le navigateur internet et taper dans la barre d'adresse localhost

MacOS

Installation de Docker

  1. Télécharger Docker et lancer l'installer :
  2. Tout laisser coché par défaut et lancer l'installation
  3. patcher Docker sur la derniere version ( en bas a droite de la fenêtre il proposera de la télécharger et l'installer)

Mise en place du Téléporteur

  1. Lancer Docker
  2. Télécharger l'archive teleporteur-compose-x.x.zip
  3. Extraire l'archive
  4. désactiver tout antivirus temporairement
  5. Ouvrir un terminal
  6. se déplacer dans le dossier de téléchargement avec cd ~/downloads/teleporteur-compose-x.x (remplacer x.x par la version actuelle téléchargée)
  7. autoriser le lancement de script avec chmod +x start-teleporter.sh
  8. lancer le script avec sh start-teleporter.sh

Linux (ubuntu)

  1. Lancer un terminal
  2. executer sudo usermod -aG kvm $USER
  3. in progress...

DB backups

🇫🇷
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.

Edit@Translation:

🇬🇧

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?

Amélioration du terminal

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:

  • #15
  • Rajouter un MOTD sympatôche
  • Quelques commandes en plus : welcome & backup
  • etc

Redémarrer haproxy lorsque la conf template a été changée

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.

Branch for Docker build

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.

Génération dynamique de la liste des étudiants

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)

Clean folder organization

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

light VPN image

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.