<p dir="auto">IPFS ist ein Planeten weites Dateisystem das als neue Ebene des Internets dienen soll. Ganz ähnlich dem World Wide Web. Allerdings wurde IPFS auf Basis eines Peer to Peer Modells entwickelt mit dem Gedanken ein modernes und dezentrales "Internet" zu schaffen. IPFS läuft auf jedem Computer. Selbst auf einem Raspberry Pi.
<p dir="auto">Zur Zeit unterstützt IPFS ausschließlich statische Inhalte. So lange eine Webseite nur Client seitiges Javascript benutzt ist es kein Problem. Server seitiges Javascript funktioniert im Moment aber noch nicht. Es gibt ein dynamisches Benennungs System, das IPNS. Damit lassen sich die eigenen Online Inhalte aktualisieren ohne alte links zu ändern oder einen neuen erstellen zu müssen.
<p dir="auto">IPFS ist aber nicht nur für Webseiten sondern für jede Art von Datei gedacht und ist kostenlos.
<p dir="auto">Man muss jedoch beachten das alles was man auf einen schreibgeschützten IPFS-Gateway hochlädt, von dem uploader fixiert werden muss. Anderenfalls werden die hochgeladenen Daten möglicherweise bei der nächsten Säuberungs Aktion mit gelöscht. Solche Aktionen werden regelmäßig durchgeführt.
<p dir="auto">Darüber hinaus lebt das IPFS von freiwillig bereitgestelltem Speicherplatz. Die in den Settings standardmäßig eingestellten 10 Gb die maximal verwendet werden dürfen, sollten eigentlich niemandem wehtun.
<p dir="auto"><br />
<p dir="auto">Auf einem frisch installiertem Debian oder Ubuntu Server führt man nun folgende Kommandos also root aus:
<p dir="auto">Zuerst müssen die Packetlisten aktualisiert werden:
<blockquote> <code>apt-get update
<p dir="auto">Nun werden alle Programme installiert die benötigt werden:
<blockquote> <code>apt-get install tar wget nano screen
<p dir="auto">Anschließend muss die aktuelle Version von IPFS herunter geladen werden.
<p dir="auto">Dazu einfach diesem Link folgen: <a href="https://dist.ipfs.io/#go-ipfs" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">IPFS Download. Dort mit der rechten Maustaste den Link für die passende Architektur kopieren und mit dem Befehl wget in das Terminal Fenster eingeben.
<p dir="auto">Bei der aktuellen Version (v0.4.13 für amd64) sieht das dann z.B. so aus:
<blockquote> <code>wget https://dist.ipfs.io/go-ipfs/v0.4.13/go-ipfs_v0.4.13_linux-amd64.tar.gz
<p dir="auto"> Nun muss IPFS entpackt und installiert werden. Der Dateiname muss gegebenenfalls angepasst werden:
<blockquote> <code>tar xfv go-ipfs_v0.4.13_linux-amd64.tar.gz
<blockquote> <code>cd go-ipfs
<blockquote> <code>./install.sh
<p dir="auto">Da man aus Sicherheitsgründen ein Programm nicht als root Benutzer laufen lassen sollte, muss jetzt noch ein neuer Benutzer angelegt werden.:
<blockquote> <code>adduser ipfs
<p dir="auto">Anschließend wechselt man zu dem neuen Benutzer:
<blockquote> <code>su ipfs
<p dir="auto">Zur besseren Kontrolle der Dateien empfehle ich einen eigenen Ordner für IPFS zu benutzen.
<blockquote><code>mkdir ~/ipfs
<p dir="auto">Anschließend muss man IPFS noch mitteilen das es den neuen Pfad benutzen soll. Dazu öffnet man mit
<blockquote><code>nano ~/.profile
<p dir="auto">die .profile Datei und fügt am Ende
<blockquote><code>export IPFS_PATH=/home/ipfs/ipfs
<p dir="auto">hinzu.
<p dir="auto">Damit der Pfad sofort wirksam wird, führt man das Kommando <code>export IPFS_PATH=/home/ipfs/ipfs noch einmal in der Kommandozeile aus.
<p dir="auto">
<p dir="auto">Jetzt starten wir das erste mal IPFS:
<blockquote> ipfs init --emty-repo || true
<p dir="auto">Ist der Startvorgang abgeschlossen, kann man mit STRG+C den Prozess erst mal wieder beenden.
<p dir="auto">Den erzeugten Hash speichert man sich irgendwo sicher in einer Datei ab.
<p dir="auto"><br />
<p dir="auto">Zunächst schalten wir MulticastDNS ab:
<blockquote> <code>ipfs config --json Discovery.MDNS.Enabled false
<p dir="auto">Anschließend erzeugen wir noch einen Adressfilter (alles muss in eine Zeile):
<blockquote> <code>ipfs config --json Swarm.AddrFilters '[ "/ip4/10.0.0.0/ipcidr/8", "/ip4/100.64.0.0/ipcidr/10", "/ip4/169.254.0.0/ipcidr/16", "/ip4/172.16.0.0/ipcidr/12", "/ip4/192.0.0.0/ipcidr/24", "/ip4/192.0.0.0/ipcidr/29", "/ip4/192.0.0.8/ipcidr/32", "/ip4/192.0.0.170/ipcidr/32", "/ip4/192.0.0.171/ipcidr/32", "/ip4/192.0.2.0/ipcidr/24", "/ip4/192.168.0.0/ipcidr/16", "/ip4/198.18.0.0/ipcidr/15", "/ip4/198.51.100.0/ipcidr/24", "/ip4/203.0.113.0/ipcidr/24", "/ip4/240.0.0.0/ipcidr/4" ]'
<p dir="auto">Damit der Gateway beschreibbar wird, muss jetzt noch die Konfigurationsdatei editiert werden. Dazu stellt man sicher das man als user ipfs angemeldet ist. Dazu einfach <code>whoami in die Konsole eingeben. Steht danach was anders als <code>ipfs wechselt man den Benutzer mit <code>su ipfs.
<p dir="auto">Nun wird die Konfigurationsdatei geöffnet:
<blockquote> <code>nano ~/.ipfs/config
<p dir="auto">Als erstes ändert man die folgende Zeile:
<blockquote> <code>"Gateway": "/ip4/127.0.0.1/tcp/8080",
<p dir="auto">in
<blockquote> <code>"Gateway": "/ip4/0.0.0.0/tcp/8080",
<p dir="auto">Jetzt muss man bis zur Gateway Sektion scrollen. Diese muss man ändern das sie wie folgt aussieht:
<blockquote> <code> "Gateway": {
<blockquote><code> "HTTPHeaders": {
<blockquote><code> "Access-Control-Allow-Headers": [
<blockquote><code> "X-Requested-With",
<blockquote><code> "Access-Control-Expose-Headers",
<blockquote><code> "Range"
<blockquote><code> ],
<blockquote><code> "Access-Control-Allow-Methods": [
<blockquote><code> "GET",
<blockquote><code> "POST"
<blockquote><code> ],
<blockquote><code> "Access-Control-Allow-Origin": [
<blockquote><code> "*"
<blockquote><code> ],
<blockquote><code> "Access-Control-Expose-Headers": [
<blockquote><code> "Location",
<blockquote><code> "Ipfs-Hash"
<blockquote><code> ],
<blockquote><code> "X-Special-Header": [
<blockquote><code> "Access-Control-Expose-Headers: Ipfs-Hash"
<blockquote><code> ]
<blockquote><code> },
<blockquote><code> "PathPrefixes": [],
<blockquote><code> "RootRedirect": "",
<blockquote><code> "Writable": true
<blockquote><code> },
<p dir="auto">Jetzt startet der Gateway mit schreib rechten und erlaubt CORS für cross-Domain Anfragen. So kann man eine Datei aus dem eigenen Gateway direkt weitergeben.
<p dir="auto">z.B. so:
<p dir="auto"><span><a href="http://eigeneip-oder-dynDNS-Adresse:8080/ipfs/" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">http://eigeneip-oder-dynDNS-Adresse:8080/ipfs/[hashwert der datei]
<p dir="auto"><br />
<p dir="auto">Die TCP Ports 8080 und 4001 müssen in der Firewall und/oder dem Router noch geöffnet/weitergeleitet werden.
<p dir="auto"><br />
<p dir="auto">Es gibt nun 2 Wege IPFS laufen zu lassen.
<p dir="auto">1. Man startet mit diesem Befehl IPFS bei jedem Systemstart automatisch:
<blockquote> <code>sed -i -e '$i /bin/su ipfs -c "/usr/local/bin/ipfs daemon --migrate --enable-gc --enable-pubsub-experiment &"\n' /etc/rc.local
<p dir="auto"><br />
<p dir="auto">2. Man Erstellt eine Batchdatei die man bei jedem Systemstart manuell startet:
<blockquote><code>nano start_ipfs.sh
<p dir="auto">Diese muss dann so aussehen:
<blockquote><code>#/bin/bash
<blockquote><code>screenName="ipfs-daemon"
<blockquote><code>screen -d -m -S $screenName
<blockquote><code>screenCommand="ipfs daemon --migrate --enable-gc --enable-pubsub-experiment"
<blockquote><code>screen -S $screenName -X screen $screenCommand
<blockquote><code>echo Der IPFS Daemon ist in der screen Sitzung "ipfs-daemon" gestartet. Um die screen Sitzung zu betreten bitte "screen -r ipfs-daemon" ausführen. Zum verlassen der Sitzung die Tastenkombination "STRG + A + D" benutzen.
<p dir="auto">Die Datei muss noch ausführbar gemacht werden:
<blockquote><code>chmod +x start_ipfs.sh
<p dir="auto">Jetzt kann man den IPFS Daemon starten:
<blockquote><code>./start_ipfs.sh
<p dir="auto">Anschließend kann man mit:
<blockquote><code>screen -r ipfs-daemon
<p dir="auto">in die Screen Sitzung wechseln. Mit STRG+ A + D kommt man wieder raus ohne die Screen Sitzung zu beenden. IPFS läuft auch weiterhin.
<p dir="auto">Die Methode mir Screen hat zwar den Vorteil das der IPFS Daemon weiter läuft wenn man die SSH Verbindung trennt, der Nachteil daran ist aber das man die Screensizung erst wieder beenden muss bevor man den IPFS Daemon wieder über den obigen Befehl starten kann.
<p dir="auto">Alternativ kann man auch mit <code>screen -r ipfs-daemon wieder in die Sitzung switchen (wenn man noch nicht drin ist) und den Daemon manuell mit dem Befehl <code>ipfs daemon --migrate --enable-gc --enable-pubsub-experiment starten.
<p dir="auto">Wer das ganze mit Screen etwas Komfortabler gestalten möchte, dem empfehle ich den <a href="https://wiki.ubuntuusers.de/Screen/#Statuszeile-einblenden" target="_blank" rel="nofollow noreferrer noopener" title="This link will take you away from hive.blog" class="external_link">Wiki Artikel von ubuntuusers.de.
<p dir="auto">Gratulation, damit hast du deinen ganz eigenen IPFS Gateway!
Congratulations @depritv! You received a personal award!
Click here to view your Board
Do not miss the last post from @steemitboard:
Congratulations @depritv! You received a personal award!
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!