Wie ipfs-Node-Besitzer Dtube-Channel unterstützen können und was der Channelbesitzer dafür tun muss.steemCreated with Sketch.

in #deutsch7 years ago

Unter einem der Letzten Viedeos von @sempervideo habe ich angemerkt, dass ipfs ein guter Weg wäre um @sempervideo zu unterstützen.
Zu diesem Zweck habe ich eine Methode, des ipns grob skizziert. Und was soll ich sagen ... ich habe rumprobiert und die detaillierte Anleitung findet ihr hier:

Was der Channelbesitzer tun muss

Wie man Viedeos über ipfs auf Dtube hochladen kann wurde schon von @sempervideo
in Dtube: Videos schneller hochladen hervorragend erklärt.

Um es euren Unterstützern einfacher zu machen, all eure Videos vor-zuhalten empfiehlt es sich alle Videos in einen Ordner zu packen und mit ipns (ja mit n nicht mit f, das steht für interplanetary name service)
darauf zu verweisen. So könnt ihr den Ordner ändern aber der Verweis bleibt gleich.

Als erstes wird der Ordner mit dem Befehl

ipfs add -r C:\Pfad\zu\Ordner

hinzugefügt.
Nach Eingabe dieses Befehls wird eine liste von Hashes ausgegeben
der Letzte ist der Ordnerhash.

Um das auf den Ordner verweisen vom eigentlichen Node zu trennen empfiehlt es sich mit
ipfs key gen --type=rsa --size=2048 myipfspublishkey
einen seperaten Key zu erstellen. Diesen sollte man sichern (Nutzerordner\.ipfs\keystore\myipfspublishkey) , denn nur mit diesem Key ist es möglich den Verweis zu verändern.
Nun muss auf den Ordnerhash verwiesen werden. Dies gelingt mit
ipfs name publish --key=myipfspublishkey Ordnerhash
Die Ausgabe sieht folgendermaßen aus:
Published to ipnshash: /ipfs/Ordnerhash

Der ipnshash ist der Verweis.
Um ihn zu testen kann man https://ipfs.io/ipns/ipnshash in einem Browser öffnen (es kann eine weile dauern bis es reagiert).
Hier ist darauf zu achten /ipns und nicht /ipfs dem hash voranzustellen.

Nun könnt ihr den ipnshash mit der Community teilen und hoffen :)

Wenn der Ordner erweitert wurde muss das folgende getan werden:

  1. Der Ordner muss mit dem Befehl
    ipfs add -r C:\Pfad\zu\Ordner
    erneut hinzugefügt werden.

  2. Der alte Ordnerhash sollte vom eigenen Node entfernt werden
    dazu wird zu nächst der alte Ordnerhash mit
    ipfs name resolve ipnshash
    abgefragt und mit
    ipfs pin rm Alterordnerhash
    vom eigenen Node entfernt werden.

  3. Nun wird auf den neuen Ordnerhash verwiesen.
    ipfs name publish --key=myipfspublishkey Ordnerhash
    Dies führt zum gleichen ipnshash wie zuvor.

Was der ipfs-Node-Besitzer tun kann

Um unterstützen zu können benötigt man einen ipfs-Node.
Die kostenschonende Variante ist ein Raspberry pi.
Hierzu hat @sempervideo wiedereinmal ein fulminantes Video erstellt.
Raspberry Pi: IPFS-Node installieren

Ergänzend solltet ihr in der ~/.ipfs/config im Abschnitt Reprovider Strategy von "all" auf "pinned" ändern, so wird nur das an das Netzwerk verteilt was wirklich gepinnt wurde.
Zudem könnt ihr im Abschnitt Datastore mit Parameter StorageMax definieren, wie viel Speicher ihr dem Netzwerk zur Verfügung stellen wollt.
Standardmäßig ist StorageMax auf "10GB" gesetzt.

Der einfachste Weg für den Unterstützer ist nun mit dem Befehl
ipfs pin add /ipns/ipnshash
den Videoordner hinzuzufügen.
Um es automatisiert zu aktualisieren kann dieser Befehl als cronjob hinzugefügt werden.

Hier ist der Nachteil, dass der vorherige Ordnerhash weiterhin auf dem Node vorhanden ist.
Um das zu verhindern, sollte das folgende Shellscript von Anfang an verwendet werden.

#!/bin/bash
# usage: ./pin_update <ipns-foulder-hash> <folder-name>

IPFS=ipfs


mkdir -p ${HOME}/.ipns_pin_update_old_hashes
oldhashfile=${HOME}/.ipns_pin_update_old_hashes/$2

new_ipfs_hash=`$IPFS name resolve $1`



if [ -f $oldhashfile ];then
    old_ipfs_hash=`cat $oldhashfile`
    if [ $old_ipfs_hash != $new_ipfs_hash ];then
        $IPFS pin update $old_ipfs_hash $new_ipfs_hash
        echo $new_ipfs_hash > $oldhashfile
        echo "Ordner wurde aktuallisiert."
    else
        echo "Ordner ist bereits aktuell."
    fi
else
    echo "script wird das erste mal ausgeführt"
    $IPFS pin add $new_ipfs_hash
    echo $new_ipfs_hash > $oldhashfile
    echo "Ordner wurde hinzugefügt."
fi

Zunächst müsst ihr den Text auf eurem Node beispielsweise mit nano pin_update speichern
und mit chmod +x pin_update ausführbar machen.

Das erste mal solltet ihr es direkt im Terminal ausführen, um zu sehen, dass es funktioniert.
Mit dem Befehl ./pin_update ipns-hash Ordnername (es kann eine Weile dauern bis es reagiert).
Der Ordnername ist frei wählbar muss aber dann beibehalten werden.
Es empfiehlt sich den Channel-Namen zu verwenden.

Ihr solltet es ein zweites mal ausführen, das Script wird euch dann mitteilen, dass der Ordner bereits aktuell ist.

Will man das ganze automatisieren so geht dies mit einem Cronjob.
Mit crontab -e kann nun folgende Zeile am Ende hinzugefügt werden:

0 5 * * * /path/to/script ipnshash ordnername

Diese führt zu einer täglichen Aktualisierung um 5 Uhr.
Ist man vollkommen übermotiviert, so kann man auch zu jeder vollen Stunde mit

0 * * * * /path/to/script ipnshash Ordnername

aktualisieren.
Es ist vermutlich nicht empfehlenswert, wenn jeder die Aktualisierung zur vollen Stunde durchführt.
Also wählt anstelle der 0 eine zufällige Zahl zwischen 0 und 59.

An dieser Stelle noch eine kleine Wahrung an alle ipfs-Node-Besitzer.
Der Channel-Besitzer ist so in der Lage jegliche Datei indirekt zu eurem Node hinzuzufügen.
Für alle Sempervideofans:
Sprecher kann Bilder von seinen Kollegen hinzufügen.
Für die daraus resultierenden Schäden übernehme unter keinen Umständen die Verantwortung ;)

Sort:  

Für den Firefox gibt es ja das Addon "IPFS Companion"

Bin ich nun damit auf d.tube unterwegs und mir gefällt ein Video von Sempervideo so sehr, dass ich es weiterverteilen möchte, reicht ein Rechtsklick auf das Video und ich erhalte die Option: "Upload to IPFS"

Dann taucht das Video nach dem Download nach kurzer Zeit auch in meinem Node auf ;-)
Wäre noch ne simple Alternative dazu gezielt guten Inhalt weiterzuverbeiten.

LG Djahn

Ich nutze das Addon auch selbst.
Es gibt leider einige Nachteile dabei das so zu handhaben.
So ist der übliche Rechner auf dem ein Browser läuft nicht 24/7 an.
Außerdem kann es ganz schön nerven das alles Manuell hinzuzufügen.

Die Vorteile der Raspberry pi-Methode:

  1. 24/7/365 online kosten gerademal ca. 5€ Strom
  2. Alle Videos des Channels werden darauf heruntergeladen und wenn nun ein anderer Node im selben Lan eines der Videos anfordert wird es direkt vom Raspberry pi übertragen.
  3. Man konfiguriert es einmal und dann läuft es halt :)

Es gäbe natürlich noch die Möglichkeit der Kombination dieser beiden Methoden.
Man konfiguriert einen Raspberry pi als ipfs-Node und gibt Gateway und API an das interne Netzwerk frei, dann konfiguriert man "IPFS Companion" so dass er den pi nutzt. So hat man den 24/7-Nachteil behoben.

Interessanter Vorschlag. Es gibt auch die Möglichkeit, Cluster zu bilden, weiß jetzt nicht genau wie das vom Aufwand ist, aber auch eine Möglichkeit.

Sehr schöne und hilfreiche Anleitung. Danke dafür.

Ich beschäftige mich noch nicht lange mit Steemit und IPFS. Ich habe auch noch keine fertige Meinung darüber.
Daher eine Frage als Node Betreiber:
Hat man so die Möglichkeit nur Inhalte von ausgewählten Quellen auf dem eigenen Node zu speichern?

Schön, dass dir der Artikel gefällt.

Also bisher weiß ich nicht wirklich nach welchen Kriterien ipfs automatisch Daten auf einen Node zwischenspeichert. Ich nehme an wenn man ihn als Gateway verwendet könnte er Daten vorhalten, die nicht manuell gepinned worden sind. Wie dem auch sei.

Wenn du auf der sicheren Seite sein willst gibt es eine Möglichkeit dem Node das anbieten von Daten einzuschränken.
In der ~/.ipfs/config im Abschnitt Reprovider Strategy von "all" auf "pinned" ändern, so wird nur das dem Netzwerk angeboten, was wirklich gepinnt wurde.
So verhinderst du, dass von dir nicht gewollter Content über deinen Node verbreitet wird.

Congratulations @jackchase! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes received

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

Hallo das kingt seher gut ;) mal lust zu reden? https://discord.gg/fK37PJb

Congratulations @jackchase! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

Click here to view your Board

Support SteemitBoard's project! Vote for its witness and get one more award!

Congratulations @jackchase! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!