Files
2026-06-09 18:40:21 +02:00

3.8 KiB


📸 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
Repository 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é)

# 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

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

🔗 Pages Liées