Fichiers & partage

Pingvin

Installer Pingvin Share, une plateforme de partage de fichiers auto-hébergée pour envoyer des fichiers en toute sécurité sans passer par WeTransfer ou Google Drive.

Pingvin est un outil pour partager rapidement des fichiers, à la manière de WeTransfer. Ses nombreuses options de partage (mot de passe, durée d'expiration, lien personnalisé, etc.) en font l'outil idéal pour partager des fichiers rapidement. Pingvin peut aussi créer des demandes d'envoi, c'est-à-dire un lien partageable à envoyer à quelqu'un pour qu'il dépose ses fichiers et que vous les récupériez.

Interface web de Pingvin Share pour envoyer et partager des fichiers

Installation

Déployer la stack

Ouvrez Dockge, cliquez sur compose, nommez la stack pingvin, puis copiez-collez ceci :

compose.yaml
---
services:
  pingvin-share:
    container_name: pingvin
    image: stonith404/pingvin-share
    restart: unless-stopped
    ports:
      - 3600:3000
    volumes:
      - /srv/docker/pingvin/data:/opt/app/backend/data
      - /srv/docker/pingvin/data/img:/opt/app/frontend/public/img
      - /srv/docker/pingvin/uploads:/opt/app/backend/uploads # chemin du dossier où stocker les fichiers envoyés à pingvin. À adapter à votre convenance.
    depends_on:
      clamav:
        condition: service_healthy
    networks:
      - swag

  clamav: #antivirus pour les fichiers
    restart: unless-stopped
    image: clamav/clamav
À partir d'ici, nous partons du principe que le nom du réseau de SWAG est swag_default.
Astuce : ajoutez le label watchtower à chaque conteneur pour automatiser les mises à jour.
compose.yaml
services:
  pingvin-share:
    #...
    labels:
      - com.centurylinklabs.watchtower.enable=true

  clamav:
    #...
    labels:
      - com.centurylinklabs.watchtower.enable=true

Déployez le conteneur et allez sur http://ipdevotreserveur:3600. Et voilà ! Votre instance web Pingvin est en route !

Terminé !

Si ça ne marche pas : vérifiez les règles de votre pare-feu.

Exposer Pingvin avec SWAG

Tout l'intérêt d'une solution comme celle-ci est de pouvoir y accéder à distance, depuis tous vos appareils. Pour cela, nous allons exposer Pingvin à travers SWAG.

📋 Au préalable :

Nous partons du principe que vous avez le sous-domaine pingvin.mondomaine.fr avec un CNAME pointant vers mondomaine.fr dans votre zone DNS. Et bien sûr, à moins d'utiliser Cloudflare Zero Trust, que le port 443 de votre box est redirigé vers le port 443 de votre serveur via les règles NAT.

Ajouter le réseau de Pingvin à SWAG

Dans Dockge, allez sur la stack SWAG et modifiez le fichier compose pour y ajouter le réseau de pingvin :

compose.yaml
---
services:
  swag:
    container_name: # ...
      # ... 
    networks:             # Rattache le conteneur au réseau personnalisé 
      # ...           
      - pingvin            # Nom du réseau déclaré dans la stack

networks:                  # Définit le réseau personnalisé
  # ...
  pingvin:                 # Nom du réseau déclaré dans la stack
    name: pingvin_default  # Nom réel du réseau externe
    external: true         # Précise qu'il s'agit d'un réseau à chercher à l'extérieur
À partir d'ici, nous partons du principe que le nom du réseau de pingvin est pingvin_default. Vous pouvez vérifier que la connexion fonctionne en visitant le tableau de bord de SWAG sur http://ipdevotreserveur:81.

Redéployez la stack en cliquant sur « deploy » et attendez que SWAG soit complètement démarré.

Créer le fichier subdomain.conf

Dans les dossiers de SWAG, créez le fichier pingvin.subdomain.conf.

Astuce : vous pouvez utiliser File Browser Quantum pour naviguer dans vos fichiers et éditer vos documents plutôt que des commandes dans le terminal.
Terminal
sudo nano /srv/docker/swag/config/nginx/proxy-confs/pingvin.subdomain.conf

Collez la configuration ci-dessous :

pingvin.subdomain.conf
## Version 2023/12/19

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name pingvin.*;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;

    #if ($lan-ip = yes) { set $geo-whitelist yes; }
    #if ($geo-whitelist = no) { return 404; }
    if ($geo-blacklist = no) { return 404; }

    # enable for ldap auth (requires ldap-location.conf in the location block)
    #include /config/nginx/ldap-server.conf;

    # enable for Authelia (requires authelia-location.conf in the location block)
    #include /config/nginx/authelia-server.conf;

    # enable for Authentik (requires authentik-location.conf in the location block)
    #include /config/nginx/authentik-server.conf;

    location / {
        # enable the next two lines for http auth
        #auth_basic "Restricted";
        #auth_basic_user_file /config/nginx/.htpasswd;

        # enable for ldap auth (requires ldap-server.conf in the server block)
        #include /config/nginx/ldap-location.conf;

        # enable for Authelia (requires authelia-server.conf in the server block)
        #include /config/nginx/authelia-location.conf;

        # enable for Authentik (requires authentik-server.conf in the server block)
        #include /config/nginx/authentik-location.conf;

        include /config/nginx/proxy.conf;
        include /config/nginx/resolver.conf;
        set $upstream_app pingvin;
        set $upstream_port 3000;
        set $upstream_proto http;
        proxy_pass $upstream_proto://$upstream_app:$upstream_port;

    }
}

Appuyez sur Ctrl+O, puis Enter pour enregistrer, et Ctrl+X pour quitter.

Terminé !

Et voilà, vous avez exposé Pingvin !

Protéger Pingvin avec Pocket ID

Pingvin gère OIDC nativement, vous pouvez donc exiger une connexion Pocket ID avant de laisser qui que ce soit partager ou recevoir des fichiers, plutôt qu'avec (ou en plus de) les comptes propres à l'application.

Enregistrer Pingvin comme client OIDC

Enregistrez un client OIDC dans Pocket ID nommé pingvin, avec cette URL de callback :

https://pingvin.mondomaine.fr/api/oauth/callback/oidc

Activer le Social Login dans Pingvin

Dans Pingvin, allez dans Administration > Configuration > Social Login et renseignez :

ChampValeur
OpenID ConnectActivé
Discovery URIL'URL de découverte OIDC de Pocket ID
Scopeopenid email profile groups

Terminé !

Et voilà ! Désormais, quand vous vous connectez à Pingvin, un bouton « Open ID » est disponible sous le formulaire de connexion.

✨ Vous pouvez utiliser Authentik plutôt que Pocket ID :
Copyright © 2026