---
title: Koillection
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, tracking, collections, livres, vinyles, bd, php, symfony]
confidence: high
contested: false
sources: [https://selfh.st/apps/koillection, https://github.com/benjaminjonard/koillection]
---

# Koillection

> Un gestionnaire de collections physiques auto-hébergé, conçu pour inventorer livres, vinyles, BD, jeux vidéo, films, timbres et tout autre type de collection.

| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://koillection.github.io/ |
| **GitHub** | https://github.com/benjaminjonard/koillection |
| **License** | MIT |
| **Langage principal** | PHP (Symfony) |
| **Étoiles GitHub** | ⭐1.2k |
| **Dernière MAJ** | 2026-06-01 (v1.8.1) |
| **Catégorie** | [[cat-tracking]] |

## Description

Koillection est un projet français (par Benjamin Jonard) qui permet de gérer **n'importe quel type de collection physique** depuis une interface web soignée. Contrairement à des solutions comme Discogs ou Goodreads qui se concentrent sur un médium particulier, Koillection est volontairement générique : vous pouvez créer une collection de vinyles, une autre de mangas, une autre de jeux Switch, et tout administrer depuis la même instance. Chaque collection peut avoir ses propres champs personnalisés, ses tags, et ses statuts (possédé, recherché, prêté, perdu…).

L'application est bâtie sur **Symfony** (PHP 8+) et expose une **API REST complète** via API Platform, ce qui ouvre la porte à des intégrations tierces (Home Assistant, scripts personnels, applications mobiles). Le rendu visuel est moderne grâce à Twig, et l'interface est traduite en **plus de 10 langues** dont le français (à 100%). Les utilisateurs peuvent laisser des notes, des avis, et obtenir des statistiques détaillées sur leur collection (valeur estimée, répartition par genre, par année d'acquisition…).

Le point différenciant est la gestion des **scrapers HTML/JSON personnalisés** : il n'y a pas de source de métadonnées imposée, vous pouvez écrire vos propres extracteurs (JMESPath pour JSON, sélecteurs CSS pour HTML) pour récupérer automatiquement titre, auteur, année, photo et description depuis n'importe quel site web. Cela permet par exemple de cataloguer ses DVDs depuis Allociné, ses mangas depuis MangaUpdates, ou ses vinyles depuis Discogs.

## Installation
### Via Docker (recommandé)
```yaml
services:
  koillection:
    container_name: koillection
    image: koillection/koillection:latest
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      - koillection-images:/app/public/uploads/images
    environment:
      - APP_ENV=prod
      - APP_SECRET=changez-moi-en-production
      - DATABASE_URL=postgresql://koillection:secret@db:5432/koillection
    depends_on:
      db:
        condition: service_healthy

  db:
    image: postgres:18-alpine
    restart: unless-stopped
    environment:
      - POSTGRES_DB=koillection
      - POSTGRES_USER=koillection
      - POSTGRES_PASSWORD=secret
    volumes:
      - koillection-db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U koillection"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  koillection-db:
  koillection-images:
```

### Installation manuelle
1. Pré-requis : PHP 8.0+, Composer, PostgreSQL ≥10 ou MySQL ≥8 / MariaDB ≥10.
2. Cloner : `git clone https://github.com/benjaminjonard/koillection.git`
3. Installer les dépendances : `composer install`
4. Configurer `.env.local` avec vos paramètres de BDD
5. Lancer les migrations : `php bin/console doctrine:migrations:migrate`
6. Démarrer le serveur web (Nginx + PHP-FPM) ou `symfony serve` en dev

## Configuration

- **Premier utilisateur** créé lors de l'inscription initiale devient automatiquement administrateur.
- Configurer le fuseau horaire et la langue par défaut dans `config/packages/translation.yaml`.
- Activer/désactiver l'inscription publique depuis le panneau d'administration.
- Définir des **scrapers** personnalisés via l'admin (HTML ou JSON) pour automatiser la récupération de métadonnées.
- L'API Platform expose les endpoints REST sous `/api` — sécurisez-les si l'instance est publique.

## Alternatives
### Open source
- [[app-dvinyl]] — focus médias physiques avec valorisation automatique via Discogs/Hardcover/TMDB
- [[app-koillection]] *(cette fiche)* — équivalent plus générique et personnalisable
- **Grocy** — gestion d'inventaire domestique (alimentaire et objets) avec scanner de codes-barres
- **Collectorz** — solutions payantes, parfois gratuites pour un usage personnel
- **Grouvee** — pour les collectionneurs de jeux vidéo
### Propriétaires
- **Discogs** — référence pour les vinyles, mais base de données centralisée
- **Goodreads** / **Storygraph** — pour les livres, avec composante sociale
- **Delicious Library** — solution Mac pour cataloguer tous types de médias

## Sécurité

- **Sauvegarder la base de données avant chaque mise à jour**, l'auteur insiste sur ce point dans son README.
- Stocker les **uploads d'images** sur un volume persistant (sinon perte au rebuild du conteneur).
- En production, **changer `APP_SECRET`** par une valeur aléatoire forte (32+ caractères).
- Placer derrière un reverse proxy avec HTTPS (Let's Encrypt automatique via Traefik/Caddy).
- Restreindre l'accès à l'API REST si l'inscription publique est ouverte (rate limiting, clé API).

## Ressources
- Site officiel : https://koillection.github.io/
- Dépôt GitHub : https://github.com/benjaminjonard/koillection
- Wiki : https://github.com/koillection/koillection/wiki
- Traductions Crowdin : https://crowdin.com/project/koillection
- Discussion Reddit : https://www.reddit.com/r/selfhosted/comments/w5d445/

## Pages Liées
- [[cat-tracking]]
- [[recettes-docker-compose]]
