Pingvin Share | Installation

Voraussetzungen

Docker
Docker-Compose
Portainer

 

Inhaltsverzeichnis

Was ist Pingvin Share

Pingvin Share ermöglicht es Benutzer auf einfache weise große Dateien anderen Personen zu Verfügung zu stellen. Wer kennt es nicht, das die Fotos, Dokumente,Videos oder Programme zu groß sind, um diese per Mailanhang zu versenden. Auch hat nicht jeder eine Cloud zur Hand, oder misstraut den großen Anbietern wie Google, Microsoft und Konsorte, gerade wenn es um sensible Daten geht. Pingvin ist Opensource und steht für jeden frei zur Verfügung. Zudem lässt sich der freie Virenscanner ClamAV integrieren. Somit ist das Risiko minimiert, aus versehen mit Viren kompromittierte Dateien zu versenden.

  • Teilen von Dateien über einen Link
  • Teinehmer einladen um Daten hoch zu laden
  • Teilen via E-Mail
  • Ablaufdatum
  • Passwortschutz
  • Zugriffslimit
  • Benutzerkonto mit 2FA TOTP
  • Authentifizierung über Github, Google, Microsoft, Discor, OpenID
  • Benutzer kann sein Konto löschen
  • Dateien versenden oder empfangen

Weitere Details und einen Überblick gibt es am Ende dieses Beitrags in einem Video.

Zudem lohnt es sich direkt auf Github beim Entwicker vorbei zu schauen, da Pingvin sich in Entwicklung befindet.

Hinweis
Eine persönliche Wunschliste findet ihr unter dem Menüpunkt –> „Was mir noch fehlt“

Vergleichbar kommerzielle Produkte sind: WeTransfer | SwissTransfer | TransferXL und weitere…

Installation unter Portainer

Wir navigieren zum Menü

Stack –> Add stack –> Webeditor

Dort fügen wir per Copy & Paste die konfig.yaml ein

Pingvin.yaml mit ClamAV (Virenscanner)

vim
				version: '3.8'
services:
  pingvin-share:
    image: stonith404/pingvin-share
    container_name: pingvin-share
    restart: unless-stopped
    ports:
      - 3000:3000
    volumes:
      - /opt/docker/pingvin/Config/pingvin:/opt/app/backend/data
      - /opt/docker/pingvin/Config/pingvin/images:/opt/app/frontend/public/img
    depends_on:
      clamav:
        condition: service_healthy
  clamav:
    restart: unless-stopped
    image: clamav/clamav
			

Pingvin.yaml ohne ClamAV

vim
				version: '3.8'
services:
  pingvin-share:
    image: stonith404/pingvin-share
    container_name: pingvin-share
    restart: unless-stopped
    ports:
      - 3000:3000
    volumes:
      - /opt/docker/pingvin/Config/pingvin:/opt/app/backend/data
      - /opt/docker/pingvin/Config/pingvin/images:/opt/app/frontend/public/img
# Optional: If you add ClamAV, uncomment the following to have ClamAV start first.
#    depends_on:
#      clamav:
#        condition: service_healthy
# Optional: Add ClamAV (see README.md)  
# ClamAV is currently only available for AMD64 see https://github.com/Cisco-Talos/clamav/issues/482
#  clamav:
#    restart: unless-stopped
#    image: clamav/clamav
			

Individuelle Konfiguration

Volumes:

Anpassen an den jeweiligen lokalen Speicherort.
Das ist der Teil vor dem : alles danach darf nicht verändert werden, denn dabei handelt es sich um den Speicherpfad im Container selber.

Die erste Zeile ist der Speicherpfad für die Dateien welche hochgeladen werden.
Die Zweite Zeile für das Frontend, also die Startseite von Pingvin.

  • /opt/docker/pingvin/Config/pingvin:/opt/app/backend/data
  • /opt/docker/pingvin/Config/pingvin/images:/opt/app/frontend/public/img

In meinem Fall ist der Opensource Virenscanner ClamAV aktiviert. Der läuft als separater Container und scannt alle hoch geladenen Dateien nach Schadsoftware.

Hinweis!
Bitte zu beachten, das ClamAV die Systemleistung zusätzlich belastet.

Port:

– 3000:3000

Wichtig!
Hier muss darauf geachtet werden, das die Ports nicht verändert werden dürfen. Normalerweise lässt sich der linke öffentliche Port ändern, sollte dieser durch einen anderen Container bereits belegt sein. Bei Pingvin darf dieser jedoch nicht geändert werden, ansonsten funktioniert anschließend der Freigabelink nicht.

Ist die Konfiguration fertig angepasst, geht auf –> Deploy the stack

Erreichbar ist Pingvin Share nun über https://deineIP:3000

Der erste Benutzer ist zugleich der Admin.

Hinweis
Bitte beachte, in der Standard Konfiguration kann sich jeder registrieren. Das ist zu beachten, sollte Pingvin öffentlich erreichbar sein und man vielleicht keine ungebetenen Gäste haben möchte.

Daten Volumen und externer Speicher

In der Standard Installation, werden alle hoch geladenen Dateien direkt auf der Systemplatte gespeichert. Will man das nicht, lassen sich separate Speicher einbinden.

In allen folgenden Bespielen ist der Mount Point /mnt/Pingving

Achtung!
mein Mountpoint hat in den folgenden Bespielen einen Schreibfehler. Pingving sollte natürlich Pingvin lauten ohne „g“. Auf die Funktionalität hat das natürlich keine Auswirkungen, aber es ist ein Schönheitsfehler.

Natürlich ist es euch überlassen, wenn ihr wo anders einen Mount Point erstellen wollt.

Im folgenden beschreibe ich das einbinden einer:

  • Hetzner StorageBox
  • SMB Freigabe in einen Proxmox LXC Container
  • SMB Freigabe in eine Proxmox VM
  • Meine SMB Freigabe ist ein TrueNAS Server

Hetzner StorageBox für Pingvin

StorageBox in Portainer integrieren

Detailliert habe ich das in folgenden Beitrag beschrieben.

Proxmox Pingvin und SMB Freigabe

LXC Container Mount

In meinem Fall habe ich ein LXC Debian 12 Container in dem Docker + Pingvin läuft.
Ich habe auf Proxmox auch TrueNAS laufen und hab von dort eine SMB Freigabe eingebunden. Identisch dazu, lassen sich natürlich auch andere externe SMB Freigabe einbinden.

 

SMB in Proxmox mounten

Zuerst muss eine SMB Freigabe in Prxmox mountet werden.

Die ID kann frei gewählt werden und ist der Name wie eure SMB Freigabe in Proxmox angezeigt werden soll.
Der Rest ist selbsterklärend.

Rechenzentrum –> Storage –> Hinzufügen –> SMB/CIFS

SMB Freigabe in den LXC Container mounten

Im LXC Container:
–> Ressourcen –> Hinzufügen –> Mount Point

Mountet wird die SMB Freigabe wieder direkt in /mnt/Pingving/ des LXC Container.

SMB Freigabe in der VM mounten

Das geschieht direkt in der VM selber und nicht wie bei LXC in Proxmox.

In diesem Fall unter Ubuntu.

Zuerst verbindet man sich direkt per SSH auf die VM.

Zuerst müssen die cifs-utils installiert werden:

vim
				sudo apt install cifs-utils
			

Dann erstellen wir einen Mountpoint am Ort meiner Wahl:

vim
				sudo mkdir /mnt/Pingving
			

Mountbefehl Schema:

vim
				//Hostname-oder-IP-des-Server/Freigabename /mnt/Pingving cifs rw,_netdev,auto,nofail,user,username=Benutzername-der-Freigabe,password=Benutzer-Passwort,uid=1000,gid=1000,file_mode=0644,dir_mode=0755 0 0
			
  • TrueNAS Hostname: truenas.local (oder IP Adresse)
  • Benutzer: pshare
  • Homeverzeichnis: …/Pingvin-Share
  • Loakler Mountpoint auf meinem PC: /mnt/Pingving
vim
				//truenas.local/Pingvin-Share /mnt/Pingving cifs rw,_netdev,auto,nofail,user,username=pshare,password=12345678,uid=1000,gid=1000,file_mode=0644,dir_mode=0755 0 0
			

Kopiert das in euer Terminal und bestätigt mit Enter und schaut ob unter /mnt/Pingving/ die Freigabe eingebunden wurde, bzw. hoffentlich keine Fehlermeldung kommt.

Hat alles geklappt, fügen wir die obigen Zeilen in die fstab Datei ein.

vim
				sudo nano /etc/fstab
			

Einfach am Ende einfügen.

Strg + X zum abspeichern und schließen.

Nun sollte die Freigabe bei einem Neustart automatisch eingebunden werden.

Speicherpfad nachträglich ändern

Solltet ihr Pingvin bereits in betrieb und konfiguriert haben, so reicht es für einen Umzug den Container zu stoppen, die original Ordner in /mnt/Pingving/ an den neuen Ort zu verschieben/kopieren, in der yaml den Pfad an zu passen und den Container zu starten.

 

Die yaml in Portainer updaten

Stacks –> pingvin-share –> Editor Änderungen vornehmen und auf –> Update the stack

Was mir noch fehlt

Stand April 2024

  • Festplatten Quota. Im Moment kann man so lange Dateien hochladen, bis die Festplatte voll ist.
  • Upload Limit. Aktuell kann nur Instanzweit die Größe einer Datei festgelegt werden. Hier wäre es schön, wenn man doch etwas mehr Spielraum hätte die Benutzer individuell zu konfigurieren, mit zugewiesenem Speicherplatz und Dateigröße.
  • Bei einer öffentlicher Registrierung wäre es sinnvoll, wenn eine Aktivierungsmail verschickt würde, um das Benutzerkonto zu aktivieren. Aktuell kann man sich mit Fake Daten/Mail anmelden.

Video Funktionsübersicht

Quellen

Schreibe einen Kommentar