8.5 KiB
title, description
| title | description |
|---|---|
| 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. |
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
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.
Installation
::steps{level="3"}
Déployer la stack
Ouvrez Dockge, cliquez sur compose, nommez la stack pingvin, puis copiez-collez ceci :
---
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
::note
À partir d'ici, nous partons du principe que le nom du réseau de Swag est swag_default.
::
::tip{icon=""} ✨ Astuce : ajoutez le label watchtower à chaque conteneur pour automatiser les mises à jour.
```yaml [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é !
::
::caution
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.
::note{icon=""}
📋 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.
::
::steps{level="3"}
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 :
---
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
::note
À 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.
::tip{icon="" to="/serveex/files/file-browser-quantum"}
✨ Astuce : vous pouvez utiliser File Browser Quantum pour naviguer dans vos fichiers et éditer vos documents plutôt que des commandes dans le terminal. ::
sudo nano /srv/docker/swag/config/nginx/proxy-confs/pingvin.subdomain.conf
Collez la configuration ci-dessous :
## 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 :kbd{value="Ctrl+O"}, puis :kbd{value="Enter"} pour enregistrer, et :kbd{value="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.
::steps{level="3"}
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 :
| Champ | Valeur |
|---|---|
| OpenID Connect | Activé |
| Discovery URI | L'URL de découverte OIDC de Pocket ID |
| Scope | openid email profile groups |
Terminé !
::
Et voilà ! Désormais, quand vous vous connectez à Pingvin, un bouton « Open ID » est disponible sous le formulaire de connexion.
::::tip{icon=""} ✨ Vous pouvez utiliser Authentik plutôt que Pocket ID :
:::collapsible{name="les étapes de configuration Authentik"} ::steps{level="4"}
Créer un provider OAuth2/OpenID
Dans l'espace d'administration d'Authentik, créez un provider OAuth2/OpenID.
Configurer le provider
Remplissez chaque section comme suit, en remplaçant mondomaine.fr par votre propre domaine. Copiez les champs Client ID et Client Secret en lieu sûr.
Créer l'application
Enregistrez et créez une application pingvin comme suit.
Ajouter le provider à votre outpost
Enregistrez et allez sur votre liste d'outposts. Ajoutez le provider pingvin à votre outpost.
Configurer les réglages OAuth de Pingvin
Quittez Authentik et allez dans l'interface d'administration de Pingvin. Dans la section « OAuth », renseignez les champs suivants :
OpenID discovery URIavechttps://pingvin.mondomaine.fr/application/o/pingvin/.well-known/openid-configuration(n'oubliez pas de remplacermondomaine.frpar votre propre domaine)OpenID username claimavecpreferred_usernameOpenID client IDavec l'ID copié à l'étape 2.OpenID client secretavec le token copié à l'étape 2.
Terminé !
::
:::
::::




