Graine v0.2.1
TajPanel

Graine v0.2.1 — documentation technique

TajNet
Documentation

Nœud personnel souverain : IPFS, Tajcoin (TAJ), Guard, Discover et économie de contenu. Cette page centralise l'architecture, les routes API et la configuration du moteur.

Introduction

TajNet est un nœud souverain qui combine stockage IPFS, micro-paiements Tajcoin et un panel web pour publier, annoncer et monétiser du contenu sans cloud centralisé.

Nœud public de référence — 25 juin 2026

Premier TajNode en production : tajnet.cloud · TajPanel /panel/ · Futuremen HQ /futuremen/ · Contact info@tajnet.cloud · HTTPS Let's Encrypt

ComposantRôlePort par défaut
Core (Express)API REST, proxy Matomo, gateway UI8090
IPFS KuboStockage CID, pinning5001 API · 8080 gateway
TajcoinBlockchain locale, OP_RETURN, TAJ12107 RPC · 10712 P2P
MatomoAnalytics (localhost/LAN uniquement)8888
GuardSas payant avant upload/publishvia /api/guard/
DiscoverIndex des annonces blockchainvia /api/discover/
Base URL API

Local : http://localhost:8090 · Production : https://tajnet.cloud (Nginx + Let's Encrypt). Référence complète : docs/REFERENCE-API.md.

Démarrage rapide

Installation locale

git clone <url-du-depot> tajnet
cd tajnet
cp .env.example .env
docker compose up -d --build

Accès aux interfaces

URLDescriptionAccès WAN
/Cette documentationOui
/panel/TajPanel — tableau de bordOui (tajnet.cloud)
/editorÉditeur GrapesJSIdem
/wallet/Wallet MetaMaskIdem
/view/?txid=…Fiche contenu DiscoverOui
/futuremen/Futuremen HQ — chronique Discover (recherche + pagination)Oui
/pulse/Pulse — maillage TajNet LAN (FM-006)Non (localhost/LAN)
/ipfs/<CID>Gateway contenuOui
/matomo/Proxy analyticsNon (localhost/LAN)

Accès distant (tunnel SSH)

ssh -N -L 8090:127.0.0.1:8090 user@serveur
# Puis : http://localhost:8090
MetaMask obligatoire en WAN

Depuis Internet, les paiements TAJ (Guard, pinning, staking) passent par MetaMask. Le wallet fichier nœud (tajpanel) reste réservé à localhost.

État du nœud

Données en direct depuis GET /api/status (rafraîchi toutes les 20 s).

IPFS

Tajcoin

Zone client

Mode

Discover

Bloc Tajcoin

Architecture

Le moteur core/bridge.js orchestre les services et expose l'API REST.

Navigateur │ ▼ TajNet Core (:8090) ── express │ ├── /panel/ TajPanel (app.js) ├── /editor GrapesJS + publish (UI mobile : tiroirs bas) ├── /futuremen/ Chronique Discover live (API feed) ├── /wallet/ MetaMask auth ├── /view/ Fiche contenu + métriques ├── /matomo/ Proxy → Matomo (:8888) [LAN/local] ├── /ipfs/<CID> Gateway + compteur vues │ ├── /api/status État global ├── /api/guard/ Sas upload ├── /api/discover/ Index blockchain ├── /api/pin-service/ Pinning payant ├── /api/content-staking/ Investissement contenu ├── /api/content-metrics/ Vues & score └── /api/wallet/ Sessions MetaMask + wallet nœud │ ┌───────┴────────┐ ▼ ▼ IPFS :5001 Tajcoin :12107 (data/pins) (wallet.dat, OP_RETURN)

Structure du dépôt

tajnet/
├── core/              Moteur Express (bridge.js, lib/, routes/)
├── panel/
│   ├── landing/       Page d'accueil (/) — doc (full) ou thèmes (public)
│   │   ├── themes/    Thèmes music · heritage (édition public)
│   │   └── presets/   Profils JSON (lastfm, raspberry, …)
│   ├── src/           TajPanel (/panel/)
│   ├── editor/        Éditeur GrapesJS
│   ├── futuremen/     Futuremen HQ — chronique Discover live
│   ├── view/          Fiche contenu
│   └── wallet/        Wallet UI
├── data/              Persistance (Discover, pins, metrics, landing)
├── plugins/           Extensions (super-cv, bran-web)
├── scripts/           deploy-vps.sh, deploy-public-node.sh, enable-vps-domain.sh
└── docker-compose.yml

Interfaces & URLs

CheminFichier sourceDescription
/panel/landing/Documentation (édition full) ou landing thématique (public)
/panel/panel/src/Dashboard opérateur & visiteurs
/editorpanel/editor/Création pages HTML → IPFS (mobile ≤768 px)
/futuremen/panel/futuremen/Futuremen HQ — chronique Discover (/api/futuremen/feed)
/view/panel/view/Fiche contenu + réclamation lecteur
/wallet/panel/wallet/Connexion MetaMask, envoi TAJ
/api/…core/routes/API REST JSON

Headers HTTP utiles

HeaderUsage
X-Guard-SessionSession Guard validée (upload, publish)
X-Wallet-SessionSession wallet MetaMask
X-Forwarded-ForIP client (avec TRUST_PROXY=1)

Page d'accueil & thèmes

La route / sert une page HTML selon l'édition du nœud et le champ theme du profil landing (data/landing/profile.json).

ÉditionTAJNET_EDITIONPage /Futuremen
Full (dev / tajnet.cloud)full ou absentCette documentation/futuremen/ — siège HQ
Public (release GitHub)publicLanding i18n ou thèmeNon servi

Thèmes landing (édition public)

Si theme vaut music ou heritage, le core sert panel/landing/themes/<theme>/index.html au lieu de la doc ou de la landing i18n générique.

ThèmeNœud typeAgents FuturemenPreset
musiclastfm (IPFS hôte)Echo, Abel, Scriptorpanel/landing/presets/lastfm.profile.json
heritageraspberry (Tajcoin hôte ARM)Tamara, Olga, Annapanel/landing/presets/raspberry.profile.json

Appliquer un preset

# Sur le nœud cible (localhost ou via deploy-public-node.sh)
./scripts/apply-landing-preset.sh lastfm
./scripts/apply-landing-preset.sh raspberry [data_dir]

Le déploiement public applique automatiquement le preset selon le slug du fichier credentials (secrets/nodes/lastfm.env → thème music, etc.).

Personnalisation

  • Panel → Administration opérateur → Page d'accueil (localhost / tunnel SSH)
  • API : GET /api/landing/profile · PUT /api/landing/profile (localhost)
  • Champs clés : nodeName, heroTitle, primaryCtaUrl, theme, agents[]

Zones réseau & sécurité

Détection par IP client dans core/lib/request-local.js : localhost, lan (RFC1918) ou wan.

ZonePanel / éditeurWallet nœudMatomoPin local gratuit
localhostOuiOuiOuiOui
LANOuiNon*OuiNon
WANSi VPSJamaisJamaisNon

* Sauf WALLET_LOCAL_LAN=true (dev uniquement).

Variables réseau

VariableEffet
TAJNODE_MODE=vpsPanel, éditeur, wallet UI accessibles sur Internet
PUBLIC_PANEL=trueAlias de TAJNODE_MODE=vps
WAN_PANEL_ACCESS=truePanel WAN — Matomo reste LAN/local
WALLET_LOCAL_LAN=trueWallet nœud depuis LAN (jamais WAN)
TRUST_PROXY=1Détection IP derrière Nginx/Caddy
Routes bloquées sur WAN sans VPS

/panel/, /editor, /wallet/ → HTTP 403. Matomo /matomo/ → 403 sur WAN même avec WAN_PANEL_ACCESS=true.

Économie contenu

Quatre profils complémentaires autour du contenu épinglé sur le nœud. Un même acteur peut en cumuler plusieurs — par exemple un hébergeur qui crée son contenu, stake dessus pour le mettre en avant et perçoit à long terme les parts créateur, hébergeur et investisseur.

Créateur

Publie le contenu et ouvre la cagnotte (escrow à l'annonce). Reçoit 25 % de chaque réclamation versée au créateur.

Lecteur

Consulte le contenu épinglé et réclame sa part (25 % du lot, 0,125 TAJ sur 0,5 TAJ) — sans payer.

Contributeur

Aime le contenu et apporte le revenu : donateur (don pinning) ou investisseur (stake). Peut être un tiers — ou le créateur / l'hébergeur sur son propre contenu pour le booster.

Hébergeur

Nœud qui stocke et sert le contenu épinglé. Reçoit 25 % de chaque réclamation (HOST_REWARD_ACCOUNT).

Score contenu

Indicateur interne (visites, soutiens payants, réclamants). Alimente le rendement staking et le classement Discover.

Ratio de valorisation (boostScore = score ÷ vues) : TajNet met en avant les contenus les mieux valorisés par rapport à leur audience — un créateur-hébergeur qui investit sur son propre contenu peut remonter même avec peu de vues initiales.

Mise en avant Discover

Tri : d'abord cagnottes / réclamations disponibles, puis boostScore décroissant, puis hauteur de bloc.

Compteur de vues

  • +1 sur fiche /view/resolve
  • +1 sur accès direct gateway /ipfs/<CID> (hors iframe aperçu)
  • recordViewer n'incrémente pas les vues (attestation MetaMask seulement)

Répartition des revenus (0,5 TAJ)

Chaque réclamation depuis la cagnotte distribue 0,5 TAJ en quatre parts égales. Les contributeurs donateurs (don pinning) alimentent cette cagnotte — ce ne sont pas les bénéficiaires de la part « créateur ».

Part (25 %)Bénéficiaire
CréateurpublisherAddress — auteur du contenu publié
LecteurAdresse MetaMask qui consulte et réclame (sans avoir payé le pinning)
HébergeurNœud local (HOST_REWARD_ACCOUNT, défaut tajpanel)
InvestisseurStakes actifs (contributeur en mode investissement, prorata) — sinon réserve investisseur

Éligibilité réclamation

  1. Contenu épinglé localement (getLocalPin)
  2. Adresse a consulté le contenu (hasViewer)
  3. Cagnotte ≥ 0,5 TAJ
  4. Pas déjà réclamé pour cette adresse

Futuremen HQ — chronique live

Page corporate (timeline 2047, Michael & Olga) qui agrège le corpus Discover en direct depuis le nœud local et les nœuds partenaires (FUTUREMEN_NODE_URLS). Disponible uniquement en édition full (ex. tajnet.cloud/futuremen/).

AccèsDescription
/futuremen/Interface Futuremen HQ servie par le core
GET /api/futuremen/feedFlux JSON fusionné (dédoublonnage par contentCid)

Interface

  • Organigramme des 11 agents Futuremen (portraits officiels du siège)
  • Chronique triée par boostScore — badges nœud source, filtres par source
  • Recherche client-side (titre, description, nœud, CID, protocole, type) — tokens multiples
  • Pagination — 12 transmissions par page, navigation Précédent / Suivant
  • Liens vers Documentation (/) et TajPanel (/panel/) dans la nav, le hero et le footer
  • Liens fiche vers /view?txid=… sur l'origine publique (FUTUREMEN_PUBLIC_ORIGIN)
  • Bouton Rafraîchir — recharge le flux sans redéployer
  • Mobile : barre corporate masquée ; accès Docs / TajPanel conservé
  • Liens GitHub discrets en pied de page uniquement (tajnet-public, Taj-Coin)
  • Tracking Matomo injecté (MATOMO_PUBLIC_URL ou {DISCOVER_NODE_ENDPOINT}/matomo/)

Configuration multi-nœuds

FUTUREMEN_NODE_URLS=https://tajnet.cloud|São Paulo,http://127.0.0.1:8090|localhost
FUTUREMEN_PUBLIC_ORIGIN=https://tajnet.cloud
Agents lore

Scriptor (index), Echo (narration), Circuit (CID), Vortex (tri métriques) — voir brain/AGENTS.md.

API — Système & statut

MéthodeRouteDescription
GET/api/statusÉtat moteur, IPFS, Tajcoin, Matomo, discover, sécurité réseau
GET/api/pluginsListe des plugins
GET/api/landing/profileProfil page d'accueil
PUT/api/landing/profileMet à jour le profil — localhost

Champs notables de /api/status

ChampDescription
requestZonelocalhost | lan | wan
tajnodeModelocal | vps
localWalletAllowedWallet nœud autorisé pour cette requête
matomo.restrictedtrue sur WAN — admin Matomo bloqué ; trackingUrl / trackingSnippet restent disponibles
matomo.trackingSnippetSnippet public à copier (ne pas utiliser celui de l'admin tunnel localhost)
tls.fingerprintSha256Empreinte certificat HTTPS
landingProfil page d'accueil

API — IPFS & publication

MéthodeRouteDescription
POST/api/ipfs/uploadUpload fichier → CID — 402 sans Guard
POST/api/publishPublie page HTML GrapesJS + annonce
GET/api/editor/configConfig gateway, Matomo, Guard pour l'éditeur
GET/api/announce/statusCompte tajannounce, solde

Flux annonce : metadata JSON sur IPFS → transaction OP_RETURN (TAJ + type + CID).

API — Discover

MéthodeRouteDescription
GET/api/discover/statusÉtat index
GET/api/discover/entriesListe / recherche
GET/api/discover/entries/:txidDétail entrée
POST/api/discover/entries/:txid/pinPin local — localhost
POST/api/discover/entries/:txid/pin-requestSession pinning payant (contributeur donateur)
POST/api/discover/entries/:txid/viewAttestation consultation
GET/api/discover/entries/:txid/claim-eligibilityÉligibilité réclamation
POST/api/discover/entries/:txid/claimRéclamation récompense
GET/api/discover/pinsPins locaux
POST/api/discover/scanForce scan blocs

API — Staking & métriques

Content metrics — /api/content-metrics/

MéthodeRouteDescription
GET/statusÉtat store métriques
GET/:contentCidVues, score, boostScore, payeurs, réclamants

Content staking — /api/content-staking/

MéthodeRouteDescription
GET/statusPériodes (1m–12m), APY base, min stake
GET/content/:contentCidRésumé staking pour un CID
POST/previewEstimation rendement { contentCid, amount, periodId }
POST/requestCrée session staking (MetaMask requis)
GET/session/:idÉtat session
POST/session/:id/checkVérifie paiement + finalise
GET/stakesListe stakes (?contentCid= ou adresse)

Périodes : 1 mois (×1,0), 3 mois (×1,15), 6 mois (×1,35), 12 mois (×1,6). Min. STAKE_MIN_TAJ (défaut 1 TAJ).

API — Paiements & Guard

Guard — /api/guard/

MéthodeRouteDescription
GET/statusÉtat global, sessions, prix
POST/sessionCrée session paiement Guard
POST/payPaiement intégré wallet nœud
POST/checkScan blockchain session

Pin service — /api/pin-service/

MéthodeRouteDescription
POST/requestSession pinning { contentCid }
POST/payPaiement pinning
POST/session/:id/checkVérifie + exécute pin

Paiements unifiés — /api/payments/

MéthodeRouteDescription
GET/servicesCatalogue services payants
GET/optionsSolde compte tajpanel
POST/fundAlimente tajannounce ou tajpanel

Pin rewards — /api/pin-rewards/

MéthodeRouteDescription
GET/statusAuto-pay, escrow, compteurs
POST/claimRèglement réclamation visiteur

API — Wallet & admin opérateur

Wallet MetaMask — /api/wallet/

MéthodeRouteDescription
POST/auth/loginConnexion MetaMask
GET/auth/sessionSession courante
GET/localWallet nœud — localhost
POST/sendEnvoi TAJ

Admin localhost — /api/tajcoin/wallet/ & peers

MéthodeRouteDescription
GET/api/tajcoin/wallet/exportTélécharge wallet.dat
POST/api/tajcoin/wallet/importImport multipart wallet
GET/POST/DELETE/api/tajcoin/nodes/Gestion addnode dans tajcoin.conf
Super CV

GET /api/super-cv/search?q=&skills= — index sémantique de profils PDF/TXT.

Variables d'environnement

Fichier modèle : .env.example. Principales variables :

VariableDéfautDescription
TAJNET_EDITIONfullfull (doc + Futuremen) ou public (landing i18n / thèmes)
FUTUREMEN_NODE_URLSNœuds distants à fusionner dans le flux (url|label, virgules)
FUTUREMEN_PUBLIC_ORIGINtajnet.cloudOrigine canonique des liens fiche Discover
PANEL_PORT8090Port HTTP du core
IPFS_API_URL127.0.0.1:5001API Kubo
TAJCOIN_RPC_URL127.0.0.1:12107RPC Tajcoin
GUARD_PRICE_TAJ1Tarif session Guard
DISCOVER_ENABLEDfalseActive l'index Discover
PIN_REWARD_PER_CLAIM0.5Récompense max par réclamation
STAKE_MIN_TAJ1Mise minimale staking
STAKE_BASE_APY0.12APY de base (12 %)
TAJNET_WALLET_ACCOUNTtajpanelCompte paiements auto panel

Docker & VPS

Éditions & scripts

ÉditionScriptCible typePage /
Full./scripts/deploy-vps.sh saopauloVPS tajnet.cloudDocumentation + Futuremen HQ
Public./scripts/deploy-public-node.sh lastfmLAN — IPFS hôteThème music
Public./scripts/deploy-public-node.sh raspberryLAN — Tajcoin hôte ARMThème heritage

Credentials nœuds : secrets/nodes/<nom>.env (hors Git) — voir secrets/README.md.

Trois modes Docker courants

ModeCommande / fichierUsage
Tout embarquédocker-compose.embedded.ymlVPS sans daemons préinstallés
Daemons hôtedocker compose upIPFS + tajcoind déjà sur la machine
Déploiement VPS./scripts/deploy-vps.sh envrsync + tajcoind existant

VPS public

# .env sur le serveur
TAJNODE_MODE=vps
TRUST_PROXY=1
TLS_ENABLED=true
TLS_PORT=443
# Déploiement (Discover activé sur le VPS)
./scripts/deploy-vps.sh saopaulo.env
./scripts/enable-vps-domain.sh saopaulo.env tajnet.cloud admin@tajnet.cloud
./scripts/enable-vps-tls.sh saopaulo.env   # alternative : IP seule, certificat auto-signé

TLS & Matomo

HTTPS

VariableDescription
TLS_ENABLEDActive le serveur HTTPS
TLS_PORT8443 (local) ou 443 (VPS)
TLS_SANDomaines et IP du certificat

Génération : ./scripts/generate-tls-cert.sh — empreinte dans /api/status → tls.

Sans nom de domaine (VPS par IP)

Certificat auto-signé — voir README. En production, préférez un domaine + ./scripts/enable-vps-domain.sh (ex. tajnet.cloud).

Production (Let's Encrypt)

Nœud de référence : Nginx termine le TLS sur :443, TajNet core en HTTP sur :8090, TRUST_PROXY=1, DISCOVER_NODE_ENDPOINT=https://tajnet.cloud.

Matomo

  • Interne : MATOMO_URL + MATOMO_HOST_PORT (8888 local, souvent 8877 sur VPS)
  • Public : MATOMO_PUBLIC_URLhttps://domaine/matomo/
  • Proxy panel : /matomo/ — tracking WAN autorisé ; admin bloqué sur Internet
  • Pages trackées : publish éditeur, /futuremen/, Bran Web publish
  • Snippet fiable : TajPanel → Publication → Matomo, ou /api/status → matomo.trackingSnippet
  • Accès admin : tunnel SSH — le port Matomo est dans MATOMO_HOST_PORT (affiché en fin de deploy-vps.sh)
# Vérifier le port sur le VPS :
grep MATOMO_HOST_PORT /opt/tajnet/.env

# Tunnel (exemple port 8877) :
ssh -N -L 8090:127.0.0.1:8090 -L 8877:127.0.0.1:8877 user@serveur

Ressources

DocumentContenu
README.mdGuide utilisateur complet
docs/REFERENCE-API.mdRéférence API détaillée
.env.exampleToutes les variables
brain/tajnet.mdArchitecture & historique
Tajcoin/DOCKER.mdBlockchain en Docker
scripts/deploy-vps.shDéploiement édition full (Discover ON, Futuremen HQ)
scripts/deploy-public-node.shDéploiement édition public + preset landing
scripts/apply-landing-preset.shApplique un profil thème (lastfm, raspberry)
scripts/enable-vps-domain.shNginx + Let's Encrypt (domaine public)

TAJNET GRAINE v0.2.1 — tajnet.cloud · Souveraineté numérique