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.















