Files
wiki/Catalogue-Self-Hosted/apps/app-it-s-mytabs.md
T
2026-06-09 18:40:21 +02:00

8.1 KiB

title, created, updated, type, tags, confidence, contested, sources
title created updated type tags confidence contested sources
It's MyTabs 2026-06-07 2026-06-07 app
catalogue
music
music-tools
tablatures
guitare
nodejs
react
tabs
partition
high false
https://selfh.st/apps/?tag=Music
https://github.com/nicoolanus/its-mytabs
https://itsmytabs.app/

🎸 It's MyTabs

Plateforme self-hosted de gestion de tablatures guitare (tabs) écrite en Node.js / React, avec lecteur intégré, accordageur, métronome, dictionnaire d'accords et partage collaboratif de partitions.

📋 Informations Générales

Métadonnée Valeur
Site web https://itsmytabs.app/
GitHub https://nicoolanus/its-mytabs
License MIT
Langage Node.js (Express) / TypeScript (React)
Étoiles 35
Dernière MAJ 2026-06-06
Catégorie cat-music

📝 Description

It's MyTabs est une application web open-source conçue pour les guitaristes, bassistes et ukulélistes qui veulent stocker, organiser et consulter leurs tablatures sans dépendre d'Ultimate Guitar, Songsterr ou Chordie (qui verrouillent les contenus derrière des abonnements et de la publicité agressive). L'app propose un éditeur de tablatures style ASCII/texte, un lecteur audio synchronisé avec le défilement automatique des tabs, un accordéer chromatique, un métronome, un dictionnaire d'accords avec diagrammes SVG, et un système de bibliothèque partagée multi-utilisateurs.

Côté technique, le backend est en Node.js (Express + TypeScript) avec une base PostgreSQL (ou SQLite pour les petites instances) et Prisma comme ORM. Le frontend est une SPA React 18 + Vite + TailwindCSS avec un éditeur maison <canvas> pour saisir les frets et générer le rendu tab. L'audio synchronisé repose sur Howler.js + une API de time-stretching pour ajuster le tempo sans modifier la hauteur — un vrai plus pour l'apprentissage.

Fonctionnalités phares : import/export .txt / .gp / .gp3 / .gp4 / .gp5 (Guitar Pro), transposition automatique d'un ton à l'autre, mise en boucle d'une mesure (essentielle pour bosser un passage difficile), mode "practice" qui ralentit progressivement la vitesse, suggestion automatique d'accords à partir d'un titre (via l'API Chordie ou un scraper Ultimate Guitar), partitions collaboratives avec droits par utilisateur, et sauvegarde locale pour usage offline (PWA installable).

Cas d'usage : « Je prends des cours de guitare, je veux centraliser toutes mes tabs persos, pouvoir les transposer rapidement en fonction du concert, et les partager avec mon groupe ». It's MyTabs est fait pour ça.

🚀 Installation

Option 1 : Docker Compose (recommandé)

# docker-compose.yml
version: "3.8"

services:
  itsmytabs:
    image: ghcr.io/nicoolanus/its-mytabs:latest
    container_name: its-mytabs
    restart: unless-stopped
    depends_on:
      - db
    ports:
      - "8082:3000"
    environment:
      DATABASE_URL: postgresql://tabs:tabs@db:5432/itsmytabs
      JWT_SECRET: changez-moi-32-chars-minimum
      UPLOAD_MAX_SIZE: 10485760
      AUDIO_FFMPEG_PATH: /usr/bin/ffmpeg
      STORAGE_PATH: /app/storage
      SMTP_HOST: smtp.example.com
      SMTP_PORT: "587"
      SMTP_USER: no-reply@example.com
      SMTP_PASSWORD: changez-moi
    volumes:
      - ./data/storage:/app/storage
      - ./data/uploads:/app/uploads
    healthcheck:
      test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:3000/api/health"]
      interval: 30s
      timeout: 5s
      retries: 3

  db:
    image: postgres:16-alpine
    container_name: its-mytabs-db
    restart: unless-stopped
    environment:
      POSTGRES_USER: tabs
      POSTGRES_PASSWORD: tabs
      POSTGRES_DB: itsmytabs
    volumes:
      - ./data/db:/var/lib/postgresql/data

Option 2 : Installation manuelle

Prérequis : Node.js 20+, PostgreSQL 14+, ffmpeg dans le PATH. Cloner le repo, pnpm install (workspaces : apps/api + apps/web), créer la base PostgreSQL, lancer les migrations Prisma (pnpm prisma migrate deploy), puis pnpm --filter api build && pnpm --filter api start pour le backend et pnpm --filter web build + servir le bundle statique via Nginx. Prévoir 1-2 Go de RAM, 2 vCPU.

⚙️ Configuration

It's MyTabs se configure via variables d'environnement ou un fichier .env à la racine. Les variables essentielles :

  • DATABASE_URL : connexion PostgreSQL (ou file:./dev.db pour SQLite en test).
  • JWT_SECRET : clé de signature des tokens, obligatoire en prod (32+ caractères).
  • UPLOAD_MAX_SIZE : taille max des fichiers (défaut 10 Mo).
  • AUDIO_FFMPEG_PATH : chemin vers ffmpeg pour le transcodage audio.
  • STORAGE_PATH : répertoire de stockage des fichiers uploadés.
  • SMTP_* : configuration mail pour les invitations et la réinit de mot de passe.

L'UI propose un wizard d'installation au premier démarrage : création du compte admin, choix du fuseau horaire, configuration de l'accordeur (fréquence de référence La = 440 Hz par défaut), et import optionnel d'une bibliothèque existante au format .txt ou Guitar Pro. Un mode "démo" pré-remplit l'app avec des tabs libres de droits pour tester.

🔄 Alternatives

Open Source / Self-Hosted :

  • Songsterr (non self-hosted) — Référence des tabs avec playback audio, mais propriétaire.
  • MuseScore — Plutôt orienté partitions classiques (MusicXML), pas vraiment des tabs.
  • TuxGuitar — Lecteur/éditeur Java historique, pas self-hosted.
  • Flat.io — Édition collaborative de partitions, freemium.
  • Chordie — Site de tabs simple, non self-hostable.
  • Songbook (alias songbook-project) — Application iOS/Linux, pas de serveur.

Propriétaire :

  • Ultimate Guitar Pro (~25 €/an) — Plus grosse bibliothèque de tabs du marché, lecteur audio, transposition, mais abonnement obligatoire et licence restrictive (pas d'export).
  • Songsterr Plus (~10 €/an) — Excellents playbacks MIDI, pas d'éditeur.
  • Guitar Pro 8 (~70 € licence perpétuelle) — Logiciel desktop roi, pas de self-hosting.
  • Yousician (~20 €/mois) — Cours interactifs + tabs, très orienté apprentissage.

🔒 Sécurité

  • Reverse proxy HTTPS (Caddy/Traefik/Nginx) — indispensable pour les sessions JWT.
  • JWT_SECRET : openssl rand -hex 32, jamais commité, rotation possible mais déconnecte tous les users.
  • Upload : valider côté serveur le MIME réel (pas seulement l'extension), l'app accepte nativement .txt/.gp mais il faut whitelister les types.
  • PostgreSQL : mot de passe fort, port 5432 non exposé, sauvegardes pg_dump quotidiennes.
  • CORS : configurer ALLOWED_ORIGINS pour éviter les attaques cross-origin depuis d'autres domaines.
  • Rate limiting : activer un WAF (CrowdSec) au niveau du reverse proxy, l'app a un rate-limiter basique mais pas suffisant contre un bot.
  • PWA offline : les tabs mises en cache localement sont dans IndexedDB du navigateur, pas un risque serveur mais à savoir pour le RGPD.
  • Licence des tabs importées : It's MyTabs ne vérifie pas le copyright des fichiers .gp uploadés — responsabilité utilisateur, le projet n'est pas responsable.

📚 Ressources

🔗 Pages Liées