Disponible pour un stage / une alternance

Je construis et j'héberge
mes propres services web.

Ricky Paradot, étudiant en BTS SIO option SLAM au Lycée Dick Ukeiwe. Je développe en Node.js et Python — de l'API jusqu'au serveur mail — avec le goût du code fiable, pas seulement fonctionnel.

rvkxse.com / architecture auto-hébergé
Internet · HTTPS
Router Panel reverse proxy · OTP Telegram
statut en direct…

01 / À propos

Développeur en formation,
bâtisseur par habitude.

Je m'appelle Ricky Paradot, étudiant en BTS Services Informatiques aux Organisations, option SLAM (Solutions Logicielles et Applications Métiers), au Lycée Dick Ukeiwe.

Cette option me forme au développement d'applications : conception, algorithmique, bases de données et programmation orientée objet. En parallèle des cours, j'ai construit tout un écosystème auto-hébergé sous rvkxse.com : un cloud personnel, une messagerie complète avec son propre serveur SMTP, un gestionnaire de mots de passe déverrouillé par clé physique, un compte unifié et le reverse proxy qui relie le tout.

J'intègre régulièrement des API tierces (Discord, Telegram, paiement...) pour automatiser des tâches ou étendre mes projets. Ce qui m'intéresse : comprendre comment les systèmes communiquent entre eux (API, webhooks, protocoles mail, bases de données) et les sécuriser correctement.

nom
Ricky Paradot
formation
BTS SIO — SLAM
établissement
Lycée Dick Ukeiwe
langages
JavaScript, Python
focus
Full-stack, API & self-hosting
statut
Disponible — stage / alternance

02 / Projets

Ce que j'ai construit

Un écosystème auto-hébergé sous rvkxse.com — cloud, messagerie, serveur SMTP, coffre-fort de mots de passe, compte unifié et reverse proxy.

écosystème rvkxse.com — 6 services
01Messagerie · Auto-hébergé

RVKXSE Mail — boîte mail complète

Webmail 100 % autonome, sans service tiers : envoi direct vers les serveurs MX avec signature DKIM, réception via un serveur SMTP maison, alias, réinitialisation de mot de passe, interface d'administration et notifications push (PWA installable).

  • Node.js
  • Express
  • SMTP / DKIM
  • SQLite
  • Web Push / PWA
dashboard.rvkxse.com ↗
aperçu du code
// mailer.js (aperçu)
const { SMTPServer } = require('smtp-server');
const nodemailer = require('nodemailer');

// envoi direct vers le MX du destinataire, signé DKIM
const [mx] = await dns.resolveMx(domain);
await nodemailer.createTransport({
  host: mx.exchange, port: 25,
  dkim: { domainName: 'rvkxse.com', /*...*/ }
}).sendMail(message);

// réception : serveur SMTP maison
new SMTPServer({ onData: storeIncoming });
02Sécurité · Auto-hébergé
Écran de déverrouillage de RVKXSE Vault par clé physique

RVKXSE Vault — gestionnaire de mots de passe

Gestionnaire de mots de passe self-hosted, déverrouillé par une clé de sécurité physique (FIDO2 / WebAuthn, compatible Ledger). Chiffrement côté client : le serveur ne voit jamais les mots de passe en clair. Générateur de codes TOTP (2FA) intégré.

  • Node.js
  • Express
  • WebAuthn / FIDO2
  • Web Crypto
  • TOTP
vault.rvkxse.com ↗
aperçu du code
// webauthn-client.js (aperçu)
const options = await api('/auth/login/options');

// la clé physique (FIDO2 / Ledger) signe le défi
const assertion = await navigator.credentials.get({
  publicKey: decodeOptions(options)
});
await api('/auth/login/verify', encode(assertion));

// le coffre est déchiffré côté navigateur
const vault = await decryptVault(blob, key);
03Cloud · Full-stack

Workspace — cloud personnel

Application web pour héberger et gérer ses fichiers en ligne : upload, organisation en dossiers, comptes utilisateurs et gestion des rôles et permissions (admin / utilisateur), partage sécurisé. Authentification JWT, API REST Node.js / Express.

  • Node.js
  • Express
  • SQLite
  • JWT / bcrypt
  • Gestion des rôles
workspace.rvkxse.com ↗
aperçu du code
// server.js (extrait)
const express = require('express');
const jwt = require('jsonwebtoken');

app.post('/api/upload', authenticateToken,
  upload.single('file'), async (req, res) => {
    const file = await storeFile(req.file, req.user.id);
    await runQuery(db,
      "INSERT INTO files (...) VALUES (...)", [/*...*/]);
});

app.put('/api/users/:id/role', requireAdmin,
  async (req, res) => { /* gestion des rôles */ });
04Réseau · Infrastructure

Router Panel — reverse proxy

Reverse proxy multi-sous-domaines qui distribue le trafic de rvkxse.com vers chaque application. Configuration des routes à chaud, journalisation des requêtes, et panel d'administration sécurisé par code OTP envoyé sur Telegram.

  • Node.js
  • HTTP / HTTPS
  • Reverse proxy
  • OTP Telegram
  • Logs
infrastructure interne
aperçu du code
// router.js (aperçu)
const routes = config.load('routes.json');

http.createServer((req, res) => {
  const host = req.headers.host.split(':')[0];
  const target = routes[host]; // dashboard., vault., ...
  if (!target) return notFound(res);
  log(req);
  proxy(req, res, target.port);
}).listen(443);

// panel admin protégé par OTP envoyé sur Telegram
05Infrastructure · Mail

RVKXSE SMTP — serveur d'envoi

Serveur SMTP submission (port 587, AUTH) qui génère des comptes SMTP réutilisables dans n'importe quelle application ou script (Nodemailer, PHPMailer...). Envoi direct vers les MX avec signature DKIM, sans relais externe, et limitation de débit contre les abus.

  • Node.js
  • smtp-server
  • DKIM
  • Rate limiting
  • CLI
service SMTP · port 587
aperçu du code
// smtpServer.js (aperçu)
const server = new SMTPServer({
  secure: false, // STARTTLS sur le port 587
  authMethods: ['PLAIN', 'LOGIN'],
  onAuth(auth, session, cb) {
    const acc = verifyAccount(auth.username, auth.password);
    acc ? cb(null, { user: acc.id })
        : cb(new Error('Invalid credentials'));
  },
  onData: relayDirectMx // + signature DKIM
});
server.listen(587);
06Compte unifié · Full-stack

RVKXSE Account — panel de compte global

Espace de compte centralisé qui regroupe tous les services de l'écosystème (Mail, Cloud...) associés à l'identifiant Telegram de l'utilisateur. Registre des applications et services, panel d'administration et gestion des comptes.

  • Node.js
  • Express
  • SQLite
  • API Telegram
  • Panel admin
account.rvkxse.com ↗
aperçu du code
// server.js (aperçu)
app.get('/api/services', requireAuth, async (req, res) => {
  // services liés à l'ID Telegram du compte
  const services = await getServicesFor(req.user.telegramId);
  res.json(services.map(s => ({
    name: s.name,    // MAIL, CLOUD...
    url: s.url,
    status: s.status
  })));
});

03 / Compétences

Ma boîte à outils

Acquises en cours de SLAM et surtout en autonomie, en construisant et en faisant tourner mes propres services.

Langages

  • JavaScript
  • Node.js
  • Python
  • SQL
  • HTML / CSS
  • Java

Frameworks & libs

  • Express
  • JWT / bcrypt
  • Nodemailer
  • smtp-server
  • WebAuthn
  • Web Push

API

  • API REST
  • API Telegram
  • API Discord
  • Webhooks

Bases de données

  • SQLite
  • MySQL
  • MCD / Merise

Infra & outils

  • Reverse proxy
  • Auto-hébergement
  • Linux
  • Windows Server
  • Git / GitHub
  • VS Code

Sécurité

  • Chiffrement côté client
  • 2FA : TOTP / OTP
  • Clés FIDO2
  • Signature DKIM
  • Sécurité web / API

04 / Synthèse

Tableau de synthèse

Les compétences du bloc 1 du BTS SIO mobilisées dans chaque réalisation.

RéalisationC1C2C3C4C5C6
RVKXSE Mail✓✓✓✓✓
RVKXSE Vault✓✓✓✓
Workspace✓✓✓✓
Router Panel✓✓✓✓
RVKXSE SMTP✓✓✓✓
RVKXSE Account✓✓✓
Portfolio✓✓
  • C1Gérer le patrimoine informatique
  • C2Répondre aux incidents et aux demandes d'assistance et d'évolution
  • C3Développer la présence en ligne de l'organisation
  • C4Travailler en mode projet
  • C5Mettre à disposition des utilisateurs un service informatique
  • C6Organiser son développement professionnel

05 / Veille

Veille technologique

Sujet suivi : l'authentification des emails (SPF, DKIM, DMARC) — directement lié à mon serveur mail, et devenu obligatoire chez les grands fournisseurs.

Pourquoi ce sujet

Sans authentification, n'importe qui peut envoyer un mail « de la part » d'un domaine : c'est la base du phishing. SPF liste les serveurs autorisés à envoyer pour un domaine, DKIM signe chaque message avec une clé privée, et DMARC indique au destinataire quoi faire si ces vérifications échouent.

Gmail, Yahoo puis Outlook refusent ou classent en spam les messages qui ne respectent pas ces règles. Pour un serveur auto-hébergé comme le mien, c'est la condition pour que les mails arrivent.

Mise en pratique sur rvkxse.com

Mon serveur mail et mon serveur SMTP signent chaque message sortant avec DKIM avant de l'envoyer directement au serveur MX du destinataire. Le formulaire de contact de ce site passe lui aussi par ce serveur.

Je vérifie le résultat dans les en-têtes Authentication-Results des messages reçus (dkim=pass, spf=pass).

Chronologie

  1. DKIM standardisé par l'IETF (RFC 6376).
  2. SPF mis à jour (RFC 7208).
  3. DMARC publié (RFC 7489).
  4. Google et Yahoo imposent SPF, DKIM et DMARC aux expéditeurs de gros volumes.
  5. Microsoft (Outlook.com) applique des exigences similaires.

Sources


06 / Parcours

Formation & expériences

BTS SIO — Option SLAM

Lycée Dick Ukeiwe

Formation orientée développement d'applications : algorithmique, programmation orientée objet, conception de bases de données (Merise / MCD), gestion de projet et cybersécurité appliquée. Elle m'a donné les bases pour concevoir mes propres outils web et intégrer des API tierces (Discord, Telegram) dans mes projets.

Stage / alternance — à venir

en recherche

Je recherche un stage ou une alternance en développement. Cette partie sera complétée avec l'entreprise, les missions réalisées et les compétences mobilisées.

On en discute ?

Ouvert aux opportunités de stage ou d'alternance. N'hésite pas à me contacter.

envoyé via smtp.rvkxse.com:587 · signé DKIM

ou directement :