Serveur de discussion.

Sig-Nature Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour/Bonsoir.
Je pense qu'il y a déjà peut-être eu des sujets similaires ou presque mais voilà, je vous pose directement la question ici et je ne tiens pas forcément à chercher une aiguille dans une motte de foin pour apprendre qu'elle est tordue/cassée (pour dire que je ne suis pas sûr que le sujet et les réponses correspondent forcément à mes attentes) et cela me permet de créer un autre bloc de discussion sans forcément me perdre à gauche ou à droite. Voici donc ce que je cherche, des informations pouvant me mener à ce but : créer une plateforme de discussion et l'héberger sur son propre serveur (support qui pouvant être hébergé par un simple PC connecté via le FAI (réseau domestique, ce qui est déjà assez correct pour débuter). Quelles sont les solutions possibles ? Programmer en quel langage ? Avez-vous une estimation du temps qu'il me faudra pour parvenir à un premier essai (ping/pong), c'est-à-dire d'envoyer et de recevoir des messages via un PC externe (hors du réseau domestique utilisé par le "serveur") ? Je me demande comment envoyer et recevoir via un programme que je peux créer et qui pour un début, pourra ressembler à une console de commande qui, déjà, serait impressionnant pour mon niveau de programmation actuel (nul). .exe ou .deb ? Dites-moi tout ! :)
Cordialement.
A voir également:

8 réponses

Utilisateur anonyme
 
Bonjour

Peux tu définir ce que tu appelles FAI et réseau domestique?
Parce que selon comment on lit ta phrase ça paraît ambigu.

0
Sig-Nature Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Le FAI est un acronyme pour "Fournisseur d'Accès Internet". Le PC qui devra héberger la plateforme de discussion sera normalement connecté via... internet grâce au... FAI. Normalement, je peux créer une ouverture dans le réseau domestique grâce à une configuration du NAT, qui normalement, en utilisant mon adresse IP publique avec le port correspondant, permettra une connexion via l'application/site. Comment ? Je ne sais pas. Il faut déjà que je crée cette plateforme de discussion. Je pense que de créer un site peut être plus complexe qu'une application/programme bien que la création du site, permet une mise en confiance plus facile (ne nécessite pas une installation sur le PC d'autrui). Après comme, je l'ai énoncé, je n'ai pas de connaissances approfondies en programmation que ce soit en PHP ou en C/C++ etc.. J'ai entendu parler du python mais je n'ai pas d'idée concernant les étapes à suivre si ce n'est ce que j'ai exposé. Concernant ce que j'ai trouvé sur internet, j'ai eu des trouvailles peu intéressantes... "Créer votre application grâce à blah blah blah" en gros, il me suggère d'utiliser une application pour créer l'application selon les bases de données qu'ils vont utiliser pour mettre en place les demandes fournies. Ce que j'veux, c'est d'accéder à la partie qui se trouve avant cette suggestion, c'est-à-dire la programmation à l'état brut.
0
Utilisateur anonyme
 
Ok
C’est ce que j’avais cru comprendre.
Mais bon dire que tu passes par un FAI parce que tu veux que ton pc soit sur un réseau « domestique » est plus ou moins incorrect. On peut très faire un local avec un simple switch et sans aucun lien avec internet.
Donc une précision était nécessaire.

Bref.
Avant de réinventer la roue, sais tu qu’il existe de nombreuses solutions gratuites qui font ça très bien?
0
Sig-Nature Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai modifié mon message précédent, juste pour te prévenir. Oui, il est possible de faire ce que tu dis mais cela ne me permet pas du tout d'essayer l'application, une fois, prête à l'essai, de la façon qui me convient. J'prends la 3G/4G par /h via SMS, j'obtiens une adresse IP aléatoire et j'essayerai de me connecter sur mon adresse IP publique/port. Plus simple que de créer un réseau virtuel ou j'dois fake un truc qui n'est pas forcément sûr... Ma solution citée est plus rapide et efficace. Le but de ma demande, ce n'est pas forcément de discuter avec quelqu'un qui est connecté sur mon réseau domestique... mais bel et bien hors de mon LAN avec une application que je veux créer.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
Avant même de commencer à développer, il te faut une infrastructure adéquate.
Si ton FAI propose une IP fixe, alors oui comme tu le dis, il te faut router un port externe vers un PC de ton réseau local. Par contre soit conscient que ça crée une faille dans la sécurité de ton réseau local.

Mais si ton FAI ne propose pas d’IP fixe, il va te falloir mettre en œuvre des solutions pour faire en sorte que ton serveur soit tout le temps accessible, comme par exemple un nom de domaine ou un vpn, c’est payant.

Après il va te falloir écrire une application « serveur »et une application « client ».
Tu devra choisir un protocole (tcp, udp, et que sais je encore internet n’est pas franchement mon rayon).

Il va aussi falloir définir tes critères de sécurité.
Si tu veux que tes informations soient protégées, il va te falloir chiffrer la discussion. Pour que ce soit efficace, il faut que la clé de chiffrement soit définie au moment de la connexion entre un client et le serveur, et qu’elle soit unique pour cette connexion. Mais si tu l’envoies en clair, ben n’importe qui peut la lire et donc déchiffrer tes messages. Donc par exemple, tu définis une clé aléatoire que tu chiffres avec une clé fixe. Une fois cette clé aléatoire acquise, tu parles avec elle. Mais si quelqu’un hacke, ta clé fixe?….

Enfin, tu dis que tu ne sais pas coder, il va aussi de falloir apprendre….
Là je dirais que le langage importe peu. On peut faire ce type d’application avec à peu près tout langage. Mais ça demande un peu de maîtrise.
Donc des semaines de cours, puis de projets de plus en plus compliqués pour apprendre tout ce qui est nécessaire à ton projet final.

Bref, rien d’impossible, mais pas pour demain.
C’est pourquoi je te demande si tu as étudié les solutions existantes.
0
Sig-Nature Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
J'pense qu'au niveau du réseau, je possède quelques idées concernant les solutions à prendre pour maintenir cette "faille" fermée. Je souhaite simplement savoir si il y a un moyen de créer une application/site de façon assez rapide et efficace. Pour te renseigner concernant l'ouverture du port, il est possible avec des routeurs adaptés de filtrer les connexions selon les adresses MAC, selon l'IP, selon certaines identifications (portail) etc.. Ce n'est pas forcément une connexion que j'vais permettre aussi facilement. Je souhaite simplement avoir un cursus à suivre pour parvenir à ce que je veux faire.
0
Utilisateur anonyme
 
Je t’en ai déjà donné les grandes lignes.

Quand tu auras de bonnes bases dans un langage, que tu sauras faire une application client serveur locale, que tu sauras chiffrer tes données, je pense que tu sauras poser les questions précises pour transposer ça sur internet.
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Bonjour,

Il existe déjà des solutions gratuites et open souce pouvant être hébergées sur son propre serveur.

Par exemple :
- Mattermost (client mobile dispo)
- Rocket.chat (client mobile dispo)
- Synapse (serveur matrix) + Element (client Web/Android/iOS)

Ces applications peuvent être déployées facilement grâce à Docker.
J'utilise Traefik comme intermédiaire (proxy inversé) entre les visiteurs et les services que j'héberge, il permet notamment de gérer HTTPS via Let's Encrypt.

Si tu tiens absolument à développer toi-même, tu peux faire quelque-chose de relativement simple sous la forme d'un site Web avec un "chat" ou "forum", c'est le genre d'exercice que tout développeur Web fait durant sa formation. Le transport des messages sera sécurisé par HTTPS (mais ça ne sera pas du E2EE).
Si tu tiens à faire du E2EE, c'est très complexe à mettre en place, il suffit de se renseigner sur le fonctionnement des applications comme Signal pour se rendre compte que ça nécessite toute une infrastructure et des protocoles personnalisés.

Pour résumer, tu n'es pas (encore) développeur, et ton projet ne semble pas apporter de nouveauté par rapport à ce qui existe déjà (apps citées ci-dessus). Dans ce cas, zappe la partie développement et saute directement sur la partie administrateur serveur / déploiement d'une application existante.

Là encore, l'administration de serveur ne s'improvise pas en quelques heures...

Un petit "cursus" comme tu l'as demandé :

1. Apprendre l'administration d'un système Linux de ton choix :
- Installation et configuration de base
- Gestion des utilisateurs / groupes / permissions
- Gestion des stockages (RAID, LVM, LUKS, les différents systèmes de fichiers)
- Gestion de la configuration réseau (NetworkManager, netplan, ...)
- Gestion du pare-feu (firewalld ou ufw)
- Gestion des services (systemd / systemctl, timers, ...)
- Apprendre à faire des sauvegardes / snapshots (rsync, rclone, duplicity, duplicati, ...)
- Gestion des registres

2. Mettre en place son premier serveur HTTP pour publier plusieurs sites
Le sujet ici n'est pas d'apprendre le HTML/CSS, une simple page affichant "Site par défaut", "Site 1", "Site 2", etc... en noir sur blanc, suffira.
- Installation du serveur HTTP (Nginx ou Apache).
Objectif : http://ip-locale/ affiche la page HTML "Site par défaut" depuis tout autre ordinateur le même réseau
- Créer la redirection de port afin que http://ip-publique/ affiche la page HTML depuis l'extérieur
- Acquérir un nom de domaine. Il existe des extensions à 1€ ou 2€ la première année, parfait pour des tests (attention au prix de renouvellement si tu as l'intention de le garder)
- Configuration DNS et pointage IP du domaine. Objectif: http://example.com/ affiche la page HTML depuis l'extérieur
- Si IP dynamique : apprendre à gérer ce "problème"
- Apprendre le concept de "virtualhost", comment cela est rendu possible, et déploiement de deux autres sites (www1.example.com et www2.example.com)
- Mise en place du HTTPS : créer la redirection de port (443), installation d'un client ACME (certbot recommandé), obtention et configuration automatique du certificat pour chaque domaine / sous-domaine (certbot s'intègre automatiquement avec Nginx et Apache)

3. Créer d'une application Web ultra minimaliste (en Python par exemple) et la déployer derrière Apache/Nginx avec HTTPS. Le but n'est pas de faire du développement Web, une page qui affiche l'heure suffira largement. Le but est d'apprendre le déploiement de ce type d'application, assurer leur exécution en continu avec PM2 / Gunicorn, apprendre à configurer Apache/Nginx en proxy inversé

4. Apprendre Docker. Un bon exercice est de parvenir à transformer l'application développée précédemment sous la forme d'une image Docker, exécuter l'application via Docker et la rendre accessible via Apache / Nginx.
0