Sélectionner Une Page

K7, Serveur Médias

MEDIAS

K7 est un serveur multimédia auto-hébergé pour un petit cercle de famille et d'amis et développé par Kaybi.

Le nom vient de la prononciation française/ka.sɛt/ (cassette). L'idée est de ramener cette sensation d'étagère à la maison : cassettes audio, VHS, tout ce qui vous appartient et local.

Démo

Accédez à la démo en direct ici. Seule la connexion "invité" est disponible, les fonctionnalités nécessitant un compte complet ne sont donc pas accessibles.

Caractéristiques

(extrait du GitHub)

Noyau

  • Open source (AGPL-3.0) - votre serveur, vos règles, pas de verrouillage du fournisseur
  • Simple à déployer - aucune pile complexe requise
  • Films, séries télévisées et musique : une étagère pour tout ce que vous possédez déjà localement (d'autres types peuvent arriver)
  • Authentification locale + 2FA en option + OIDC en option - fonctionne hors ligne à la maison, branchez votre fournisseur d'identité lorsque vous avez besoin de SSO
  • Mode invité - accès limité en option sans compte personnel (contrôlé par l'administrateur)
  • Transcodage (ffmpeg, HLS) - jouer n'importe où, même lorsque le client ou le réseau ne peut pas gérer le fichier d'origine
  • Fédération - liez deux instances K7 (la vôtre et celle d'un ami) pour partager et diffuser des médias et des métadonnées distants sans dupliquer les fichiers

Clients

  • Web, Android (téléphone + TV), Windows, iOS, Mac - même interface utilisateur partout (Blazor WASM ou MAUI + Blazor)
  • Entièrement navigable au clavier - navigation spatiale sur l'ensemble de l'application
  • Télécommande - piloter la lecture sur un appareil (téléviseur, téléphone, navigateur) à partir d'un autre client connecté sur le même serveur
  • Chromecast (Web et Android uniquement) - diffuse des vidéos et de la musique sur n'importe quel appareil pris en charge
  • OpenSubsonic - connectez des applications comme Symfonium ou Feishin avec un mot de passe d'application (Paramètres -> Clients externes)
  • Les versions iOS et Mac existent mais ne sont pas testées par le mainteneur (pas de matériel Apple)

Personnalisation

  • Valeurs par défaut à l'échelle du serveur : l'administrateur peut définir des valeurs par défaut pour presque toutes les personnalisations (mise en page d'accueil, lecteur vidéo, lecture, sélection de piste, etc.) ; chaque utilisateur peut les remplacer dans ses propres paramètres
  • Page d'accueil personnalisée - épinglez ce qui compte pour vous au lieu d'un tableau de bord unique
  • Filtres multimédias globaux : masquez le contenu que vous ne souhaitez jamais voir sur l'ensemble de l'application
  • Préférences de lecture : qualité, sous-titres, saut d'intro, vignettes de la barre de recherche, etc., afin que chaque session de visionnage semble correcte
  • Restrictions de bibliothèque et de profil : affinez qui peut accéder à quoi au-delà des simples règles de partage
  • Métadonnées modifiables avec verrous de champ - corrigez ou remplacez les titres, les descriptions et plus encore, verrouillez les champs individuels afin que les actualisations des métadonnées n'écrasent pas vos modifications

Votre espace

  • Listes de lecture, collections, historique, statistiques, avis - un seul endroit pour « votre » coin de l'étagère, pas enfoui dans les écrans d'administration
  • Listes de lecture dynamiques - listes basées sur des règles (genre, année, nombre de lectures, artiste, etc.) qui se réévaluent à mesure que votre bibliothèque s'agrandit, comme une mixtape qui se met à jour
  • Téléchargements hors ligne - prenez des médias sur des clients natifs et synchronisez la progression lorsque vous êtes de nouveau en ligne

Découverte musicale (AudioMuse AI)

  • Intégration facultative avec AudioMuse AI auto-hébergé - radios d'ambiance, pistes similaires, chemins sonores et listes de lecture créées à partir d'une invite de texte, ainsi qu'une recherche en langage naturel dans la bibliothèque
  • Maintient la découverte assistée par l'IA sur l'infrastructure que vous contrôlez ; désactivée par défaut jusqu'à ce que vous connectiez votre serveur AudioMuse

Social

  • Sync Play - regardez ou écoutez ensemble à distance, comme si vous étiez sur le même canapé
  • Profils partagés - suivez une série en couple (ou n'importe quel groupe) avec des statistiques et un historique fusionnés sur chaque compte
  • Contrôles de visibilité - séparez ce que vous partagez et ce que vous acceptez de voir, par type de contenu (historique de lecture, avis, collections, listes de lecture, listes de lecture dynamiques) de et vers qui vous voulez : personne, votre serveur local, serveurs fédérés, personnes spécifiques

Administration

  • Tableau de bord, diagnostics, tâches d'arrière-plan - voyez ce que fait le serveur sans SSH
  • Notifications sortantes - règles de webhook personnalisables (filtres d'événements, modèles de charge utile) pour brancher K7 sur vos propres outils
  • Outil d'importation - migrez depuis Plex, Jellyfin, Spotify et plus encore (outils/K7.Importer).

1. Configuration Console

1.1. Application personnalisée

Cliquez sur l’icône + en haut à droite de la page d’accueil au dessus des tuiles et sélectionnez Installer une application personnalisée.

1.2. Onglet YAML

La fenêtre des paramètres de votre application s’ouvre et cliquez sur l'onglet, en haut à droite, avec pour libellé YAML.

1.3. Copier-Coller le YAML

Copier-coller dans la fenêtre, à la place de ce qui est inscrit, le code de configuration ci-dessous (ouvrir la bascule). 

YAML

K7

networks:
  k7-server:
    name: k7-server
    ipam: {}
    external: false
services:
  k7-server:
    cpu_shares: 90
    command: []
    container_name: k7-server
    depends_on:
      postgres:
        condition: service_healthy
        required: true
    deploy:
      resources:
        limits:
          memory: 
          cpus: "1.00"
        reservations:
          memory: 256MB
          cpus: "0.00"
      placement: {}
    devices:
      - /dev/dri:/dev/dri
    entrypoint: null
    environment:
      Database__Name: K7
      Database__Password: zima
      Database__Port: "5432"
      Database__Provider: Postgres
      Database__Server: postgres
      Database__UserID: postgres
      K7_SETUP_TOKEN: i0HUpw9nOuSIH0PTqLz4xmQlBzB4ARwn
      PGID: "1000"
      PUID: "999"
      Paths__Config: /data/config
      Paths__Logs: /data/logs
      Paths__Metadatas: /data/metadatas
      Paths__Transcoding: /data/transcoding
      Security__ApiKeys__HashSecret: kVvjBYelv18zKP5mN2xvY07TgAyshdhC
      Security__ForceHttps: "false"
    hostname: k7-server
    healthcheck:
      test:
        - CMD
        - curl
        - -fsS
        - http://127.0.0.1:7080/health
      timeout: 5s
      interval: 30s
      retries: 3
      start_period: 40s
    image: ghcr.io/kaybi-gh/k7:latest
    labels:
      icon: https://raw.githubusercontent.com/kaybi-gh/K7/d917bc217f5c1a85e03a9291d0d62ddf93ac158f/branding/logo.svg
    networks:
      - k7-server
    ports:
      - mode: ingress
        target: 7080
        published: "7080"
        protocol: tcp
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    volumes:
      - type: bind
        source: /DATA/AppData/k7/data
        target: /data
      - type: bind
        source: /media/MEDIAS
        target: /media
  postgres:
    cpu_shares: 90
    command: []
    container_name: k7-postgres
    deploy:
      resources:
        limits:
          memory: 3.76GB
          cpus: "1.00"
        reservations:
          memory: 256MB
          cpus: "0.00"
      placement: {}
    entrypoint: null
    environment:
      POSTGRES_DB: K7
      POSTGRES_PASSWORD: zima
      POSTGRES_USER: postgres
    hostname: k7-postgres
    healthcheck:
      test:
        - CMD-SHELL
        - pg_isready -U postgres
      timeout: 3s
      interval: 5s
      retries: 5
    image: postgres:17-alpine@sha256:742f40ea20b9ff2ff31db5458d127452988a2164df9e17441e191f3b72252193
    labels:
      icon: https://raw.githubusercontent.com/kaybi-gh/K7/d917bc217f5c1a85e03a9291d0d62ddf93ac158f/branding/logo.svg
    networks:
      - k7-server
    ports:
      - mode: ingress
        host_ip: 127.0.0.1
        target: 5432
        published: "5432"
        protocol: tcp
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    volumes:
      - type: bind
        source: /DATA/AppData/k7/postgres-data
        target: /var/lib/postgresql/data
        bind:
          create_host_path: true
x-casaos:
  author: self
  category: self
  hostname: 
  icon: https://raw.githubusercontent.com/kaybi-gh/K7/d917bc217f5c1a85e03a9291d0d62ddf93ac158f/branding/logo.svg
  index: /
  is_uncontrolled: false
  main: k7-server
  port_map: "7080"
  scheme: http
  store_app_id: k7
  title:
    custom: K7
x-default-restart-security:
  restart: unless-stopped
  security_opt:
    - no-new-privileges:true
name: k7_server

Ne cliquez pas sur Installer, mais sur l'onglet de gauche Formulaire

1.4. Paramètres de K7 server

Sur l'onglet k7-server

1. Au niveau de Volumes

Liez le(s) Volume(s) et/ou dossier(s), en local (ou sur une machine externe), ou sont stockés vos médias (en cliquant sur l'icône dossier). Indiquez face aux lignes de montage l'indication du type de média ou thématique dans la colonne "Conteneur" avec le signe "/" devant. Par exemple : /video ou /films ou /musique etc.

2. Au niveau de Environnement / Variables

Générez sur la page de ce lien deux clés. Puis, remplacez par vos propres clés sur les lignes :

K7_SETUP_TOKEN et Security__ApiKeys__HashSecret

Copier-coller sur un bloc-note le K7_SETUP_TOKEN, vous en aurez besoin pour la première connexion.

Indiquez aussi vos PGID et PUID (autorisation d'accès aux dossiers médias).

En dépliant la console avec le curseur "Avancé (Afficher plus)", vous pouvez si vous le souhaitez augmenter la mémoire maximale allouée.

Cependant, vous pouvez laisser le réglage par défaut afin de ne pas monopoliser les ressources matérielles.

1.5. Installer

Cliquez sur Installer et patientez le temps de l’installation.

Puis, cliquez sur la nouvelle tuile créée pour ouvrir une nouvelle page web.

Si vous avez installé et activé ZFW, créez une règle pour le port 7080 (si vous n'utilisez pas le Proxy Inversé).

2. Interface Web

2.1. Compte Administrateur

Sur la nouvelle page web de K7, créez votre Compte Administrateur en remplissant les champs Nom et Mot de passe. Puis, pour finir copier-coller le K7_SETUP_TOKEN créé au point 1.4.

2.2. Bibliothèques

Pour provisionner et peupler vos bibliothèques, cliquez sur le bouton central "Configurer les bibliothèques".

Ce raccourci vous dirige directement dans la section Administration ⇾ Contenu ⇾ Bibliothèque

Cliquez sur le bouton, en haut à droite : + Nouvelle librairie et sélectionnez le type de librairie et, Suivant

Complétez et personnalisez la fiche de la bibliothèque que vous allez choisir.

Cliquez à présent sur la fenêtre "Chemin du dossier". Et, sélectionnez parmi les dossiers ou volumes dont vous avez personnalisé le chemin à l'étape 1.4, le répertoire choisi. Pour cette démo, nous retrouvons les chemins personnalisés : /series, /films et /musique.

Puis, cliquez sur Suivant.

Vérifiez l'ensemble des informations (vous pouvez encore revenir en arrière) et Créer la librairie.

Revenez, à présent sur l'onglet Accueil et patientez le temps de... et, profitez de K7.

morgyann

morgyann

Curieux de nature, j’ai découvert le monde des serveurs et plus particulièrement les applications Docker en apprenant au fil des essais et des ressources partagées sur le web. En retour, je partage ce que je connais et plus particulièrement à l'intention des débutants.

Vous pouvez me retrouver sur Forum des NAS sur lequel je participe régulièrement.

Soutenons l'utilisation des applications open source et leurs développeurs.