194 lines
6.4 KiB
Markdown
194 lines
6.4 KiB
Markdown
---
|
||
navigation: true
|
||
title: Pingvin
|
||
main:
|
||
fluid: false
|
||
---
|
||
:ellipsis{left=0px width=40rem top=10rem blur=140px}
|
||
# Pingvin
|
||
|
||
::alert{type="info"}
|
||
🎯 __Objectifs :__
|
||
- Installer Pingvin
|
||
- Exposer Pingvin
|
||
::
|
||
|
||
[Pingvin](https://github.com/stonith404/pingvin-share) est un outil permettant de partager rapidement des fichiers, à la manière de WeTransfer. Ses nombreuses options de partage (mot de passe, durée d'expiration, personnalisation du lien...) en font l'outil idéal pour partager rapidement des fichiers. Pingvin permet également de créer des _demandes de dépot_, c'est à dire un lien partageable à envoyer à quelqu'un de votre choix pour qu'il puisse téléverser ses fichiers afin que vous puissiez les récupérer.
|
||
|
||

|
||
|
||
## Installation
|
||
---
|
||
Ouvrez Dockge, cliquez sur `compose`, appelez la stack `pingvin` puis copiez collez ceci :
|
||
|
||
```yaml
|
||
services:
|
||
pingvin-share:
|
||
container_name: pingvin
|
||
image: stonith404/pingvin-share
|
||
restart: unless-stopped
|
||
ports:
|
||
- 3600:3000
|
||
volumes:
|
||
- /docker/pingvin/data:/opt/app/backend/data
|
||
- /docker/pingvin/data/img:/opt/app/frontend/public/img
|
||
- /docker/pingvin/uploads:/opt/app/backend/uploads # chemin du dossier dans lequel vous souhaitez stocker les fichiers uploadés dans pingvin. A changer selon vos préférences.
|
||
depends_on:
|
||
clamav:
|
||
condition: service_healthy
|
||
networks:
|
||
- swag
|
||
|
||
clamav:
|
||
restart: unless-stopped
|
||
image: clamav/clamav
|
||
networks:
|
||
- swag
|
||
|
||
networks:
|
||
swag:
|
||
name: swag_default
|
||
external: true
|
||
```
|
||
::alert{type="info"}
|
||
:::list{type="info"}
|
||
- Ici nous partons du principe que le nom du réseau de Swag est `swag_default`.
|
||
:::
|
||
::
|
||
|
||
::alert{type="success"}
|
||
✨ __Astuce :__ ajoutez le label de watchtower dans chaque conteneur afin d'automatiser les mises à jour
|
||
|
||
```yaml
|
||
services:
|
||
filebrowser:
|
||
#...
|
||
labels:
|
||
- com.centurylinklabs.watchtower.enable=true
|
||
|
||
clamav:
|
||
#...
|
||
labels:
|
||
- com.centurylinklabs.watchtower.enable=true
|
||
::
|
||
|
||
Déployez le conteneur et rendez-vous sur `http://ipduserveur:3600`. Et voilà, votre instance File Browser en webui est disponible !
|
||
|
||
::alert{type="danger"}
|
||
:::list{type="danger"}
|
||
- __En cas d'échec :__ vérifiez les règles de votre pare-feu.
|
||
:::
|
||
::
|
||
|
||
## Exposer Immich avec Swag
|
||
---
|
||
Tout l'intérêt d'une telle solution, c'est de pouvoir y accéder à distance et sur tout vos appareils. Pour cela, nous allons exposer Pingvin via Swag.
|
||
|
||
::alert{type="info"}
|
||
📋 __Au préalable :__
|
||
<br/><br/>
|
||
Nous partons du principe que vous avez le sous-domaine `pingvin.mondomaine.fr` avec un `CNAME` qui pointe vers `mondomaine.fr` dans votre [zone DNS](/generalites/dns). Et que bien sûr, [à moins que vous utilisiez Cloudflare Zero Trust](/serveex/securite/cloudflare), le port `443` de votre box pointe bien sur le port `443` de votre serveur via [les règles NAT](/generalites/nat).
|
||
::
|
||
|
||
Dans les dossiers de Swag, créez le fichier `pingvin.subdomain.conf`.
|
||
|
||
::alert{type="success"}
|
||
:::list{type="success"}
|
||
- __Astuce :__ vous pouvez utiliser [File Browser](/serveex/files/file-browser) pour naviguer dans vos fichier et éditer vos documents au lieu d'utiliser les commandes du terminal.
|
||
:::
|
||
::
|
||
|
||
```shell
|
||
sudo vi /docker/swag/config/nginx/proxy-confs/pingvin.subdomain.conf
|
||
```
|
||
Entrez en modification avec la touche `i` et collez la configuration ci-dessous :
|
||
|
||
```nginx
|
||
## 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 `Echap puis sauvegardez et quittez en tapant `:x` puis en appuyant sur `Entrée`.
|
||
|
||
Et voilà, vous avez exposé Pingvin !
|
||
|
||
## Sécuriser Pingvin avec Authentik
|
||
|
||
Vous pouvez protéger cette app avec Authentik de façon native en suivant les instructions ci-dessous.
|
||
|
||
1. Dans votre espace admin authentik, créez un fournisseur OAuth2/OpenID.
|
||
|
||
2. Remplissez chaque section comme suit en remplaçant `mondomaine.fr` par votre domaine. Copiez quelque part le contenu des champs `ID du client` et `Secret du client`.
|
||
|
||

|
||

|
||

|
||
|
||
3. Enregistrez et créez une application `pingvin` comme suit.
|
||
|
||

|
||
|
||
4. Enregistrez et aller dans la liste de vos avant-postes. Ajoutez le fournisseur pingvin` à votre avant-poste.
|
||
|
||
5. Quittez authentik, et allez dans l'interface d'administration de Pingvin.
|
||
|
||
6. Dans la section _« Identifiant social »_ renseignez les champs suivant :
|
||
- `URI de découverte OpenID` avec `https://pingvin.mondomaine.fr/application/o/pingvin/.well-known/openid-configuration` (n'oubliez pas de remplacer `mondomaine.fr` par votre domaine)
|
||
- `Revendication du nom d’utilisateur OpenID` avec `preferred_username`
|
||
- `ID du client OpenID` avec l'ID que vous avez copié en étape 2.
|
||
- `Secret du client OpenID` avec le token que vous avez copié en étape 2.
|
||
|
||
Et voilà, désormais lorsque vous vous connectez à Pingvin, un bouton "Open ID" sera disponible en dessous de la mire de connexion.
|
||
|
||
|
||
|
||
|
||
|