---
title: SnapOtter
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, photos, gallery, light, self-hosted, web]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Photos, https://github.com/Snap-Otter/snapotter]
---

# 📸 SnapOtter

> **Alternative légère à Immich** : galerie photos minimaliste pour qui veut juste stocker, organiser et partager des photos sans la complexité d'un Immich ou d'un PhotoPrism.

## 📋 Informations Générales

| Attribut | Valeur |
|----------|--------|
| **Nom** | SnapOtter |
| **Slug** | app-snapotter |
| **Description** | Galerie photos simple et légère type Immich |
| **Site officiel** | [snapotter.app](https://snapotter.app) |
| **Repository** | [Snap-Otter/snapotter](https://github.com/Snap-Otter/snapotter) |
| **Stars** | 1 526 ⭐ |
| **Licence** | MIT |
| **Langage principal** | TypeScript, Node.js |
| **Catégorie** | Photos |
| **Tags** | [catalogue, photos, gallery, light, self-hosted, web] |

## 📝 Description

**SnapOtter** se positionne comme une **alternative volontairement dépouillée** à Immich. Pas de reconnaissance faciale embarquée, pas de ML lourd, pas de cluster Kubernetes : juste une galerie photos qui marche, avec un upload simple, une timeline, des albums, du partage public. Idéal pour les homelabs modestes ou les utilisateurs qui trouvent Immich trop complexe.

Fonctionnalités : **upload drag & drop** multi-fichiers, **timeline chronologique**, **albums manuels**, **tags simples**, **partage public par lien** (avec expiration optionnelle), **auth multi-utilisateur** (basique), **EXIF parsing** (date, géoloc), **carte géographique**, **recherche textuelle**, **app mobile** (PWA installable), **backup/restore** natifs.

L'**avantage clé** : déploiement **en 5 minutes**, **consommation RAM très faible** (200-300 Mo contre 4+ Go pour Immich), pas de GPU requis, démarrage quasi instantané. Parfait pour un Pi 4 ou un vieux NUC.

## 🚀 Installation

### Via Docker (recommandé)

```yaml
# docker-compose.yml
services:
  snapotter:
    image: ghcr.io/snap-otter/snapotter:latest
    container_name: snapotter
    restart: unless-stopped
    environment:
      - DATABASE_URL=postgresql://snapotter:***@db:5432/snapotter
      - JWT_SECRET=***
    volumes:
      - /mnt/photos:/data/photos
      - snapotter-db:/var/lib/postgresql/data
    ports:
      - 8084:8080

  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_PASSWORD: ***
      POSTGRES_USER: snapotter
      POSTGRES_DB: snapotter
    volumes:
      - snapotter-db:/var/lib/postgresql/data
```

### Installation manuelle

```bash
git clone https://github.com/Snap-Otter/snapotter.git
cd snapotter
npm install
npm run build && npm start
```

## ⚙️ Configuration

- **Base PostgreSQL** : volume séparé pour la persistance des métadonnées.
- **Dossier photos** : montage du dossier source, l'app y stocke les uploads.
- **Auth** : JWT secret à générer (`openssl rand -hex 32`).
- **Stockage** : aucun transcodage, garde les originaux intacts.

## 🔗 Alternatives

- **[[app-immich]]** — Plus complet, mais beaucoup plus lourd
- **[[app-lychee]]** — Encore plus minimaliste (PHP), mature
- **[[app-piwigo]]** — Très mature, riche en plugins

## 🔒 Sécurité

- **JWT secret** : long et aléatoire, jamais committé.
- **HTTPS obligatoire** : reverse proxy Traefik/Caddy.
- **Backups** : volume Postgres + dossier photos.
- **Rate limiting** : à configurer en reverse proxy (éviter brute-force upload).

## 📚 Ressources

- [Site officiel](https://snapotter.app)
- [Repository GitHub](https://github.com/Snap-Otter/snapotter)
- [Documentation](https://github.com/Snap-Otter/snapotter/wiki)

## 🔗 Pages Liées
- [[cat-photos]]
- [[app-immich]]
- [[app-lychee]]
- [[app-piwigo]]
- [[app-traefik]]
- [[recettes-docker-compose]]
- [[securisation-home-lab]]
