IPFS惑星間ファイルシステムでサイトを公開します

この記事では、直接およびIPNS経由で利用できる静的サイトを起動する方法を説明します。 DNSを使用して、サイトに通常のドメイン名が付けられます。 ドメイン名を使用して、グローバルおよびローカルゲートウェイを介してサイトに直接アクセスできます。


条件:


  1. IPFSはサーバーにインストールされています
  2. ドメインがあり、DNSレコードの編集が可能です

思い出させてください:InterPlanetary File Systemは、新しい分散ファイル共有ネットワーク(HTTPサーバー、 コンテンツ配信ネットワーク )です。 それについての話は、記事「IPFS Interplanetary File System」で始めました。

画像


次の行のため、ドメイン名には1行に1つのダッシュのみを含めることができます。


const DomainRegexpStr = "^([a-z0-9]+(-[a-z0-9]+)*\\.)+[az]{2,}$" 

ドメイン名が正しいことを確認します。 ドメイン制限は、プル要求「より包括的なホスト名正規表現パターンの修正を使用する」を受け入れるまで機能します。



1つのサイト


  1. サイトディレクトリには最小セットが必要です。


    1. インデックスファイル「index.html」(存在しない場合、IPFSはディレクトリの内容を表示します)
    2. 検索エンジン "robots.txt"の手順(ロボットが知性を発揮したときに思い出し、IPFSコンソールでエラーを見た)
    3. ウェブサイトのアイコン「favicon.ico」(別のブラウザが指定されていない場合、ブラウザは自動的にリクエストします)

  2. 設定では、行を変更します


     "Gateway": "/ip6/127.0.0.1/tcp/8080",  "Gateway": "/ip6/0.0.0.0/tcp/80", 

    設定の編集は、Webインターフェースipfs daemonコマンドでクライアントを起動した後に使用可能)またはファイル~/.ipfs/configで利用可能です


    設定を編集した後、クライアントを再起動する必要があります。


    そのため、インターネットからゲートウェイへのアクセスを開きます。


  3. クライアントを起動します。


     >ipfs daemon 

    見る: WindowsでIPFSを実行する


  4. サイトコンテンツを含むディレクトリを公開する


     ipfs add -r [  ] >ipfs add -r ..\ivan386.imtqy.com 18.17 KB / ? [-------------------------------------=------------------------------ added QmP2FJJXBjeVqm5DgJ4Q4ZjC5G9A3e74FRTFMV43kHP5p8 ivan386.imtqy.com/favicon.ico ... 80.25 KB / ? [-------------------------------------------------------------------- added QmXzx3rvzdRhLXPtzayG7abQzpyeH3JsyXWNt8CFqKy3Yv ivan386.imtqy.com/index.html ... added QmUsr9A8ggX79UKfQRTRCFX6FU9HrrWstHNyED5ygqgShA ivan386.imtqy.com 

    最後の1つは、必要なルートディレクトリマルチキャッシュになります


  5. ディレクトリハッシュをIDにバインドする


     ipfs name publish [ ] >ipfs name publish QmNjE3iwCqY7729972CHRdFp3bGPosWoFHJ9YsTzea5icT Published to QmVBRmftY9ytHZ1z39b65gtEMY8Tq4Ri8AtmQeqULXPnm5: QmNjE3iwCqY7729972CHRdFp3bGPosWoFHJ9YsTzea5icT 

    ここでは、応答で最初にIDを入力


  6. DNSコントロールパネルに移動し、TXTレコードを追加します


     @ TXT dnslink=/ipns/< id> @ TXT dnslink=/ipns/QmVBRmftY9ytHZ1z39b65gtEMY8Tq4Ri8AtmQeqULXPnm5 


しばらくすると(DNS更新が発生したとき)、コンテンツはサイトアドレスおよび< >/ipns/< >のゲートウェイで利用可能になります


サイトが頻繁に更新される場合は、IDを介した公開を使用する必要があります。 コンテンツの公開に使用されるIPFSクライアントは、短時間だけ常時オンまたはオフにする必要があります。 オフラインの日、私のクライアントはバインディングIDを忘れました->マルチハッシュ。 どうやら、バインディングはDHTにのみ保存されているようです。


これらの条件が適切でない場合、 multicashを使用できます 。


そこで、1つのサイトを公開しました。


確認する


次のコマンドを使用して、ドメインの正しい動作を確認できます。


  ipfs name resolve -r < > >ipfs name resolve -r ipfs.io /ipfs/QmaYRrBpZQRjonxBpBBSLvYmy893ySPpXpHCakhomaQtkU 

複数のサイト


いくつかの異なるサイトを公開する必要がある場合があります。


これを行うには:


  1. サイトディレクトリを1つに配置し、サイトのルートディレクトリをIDに公開およびバインドします。
  2. 各dnslinkディレクトリのレコードをDNS TXTに追加します。


     @ TXT dnslink=/ipns/< id>/<  > @ TXT dnslink=/ipns/QmVBRmftY9ytHZ1z39b65gtEMY8Tq4Ri8AtmQeqULXPnm5/magnet-converter 


代替方法


  1. dnslinkが設定されている別のドメインにリンクできます。


     @ TXT dnslink=/ipns/<  >[/<    >] @ TXT dnslink=/ipns/ipfs.io 

  2. dnslinkでは、ディレクトリまたはファイルにマルチキャッシュを同様に指定できます。


     @ TXT dnslink=/ipfs/<>[/<    >] 

    1. カタログへ


       @ TXT dnslink=/ipfs/Qmce1EkrLpAV4gPxE75c68PhDWFCmEsedWkYVNNVU6Ut1S  @ TXT dnslink=/ipfs/QmUsr9A8ggX79UKfQRTRCFX6FU9HrrWstHNyED5ygqgShA/magnet-converter 

    2. ファイルごと


       @ TXT dnslink=/ipfs/QmXzx3rvzdRhLXPtzayG7abQzpyeH3JsyXWNt8CFqKy3Yv  @ TXT dnslink=/ipfs/Qmce1EkrLpAV4gPxE75c68PhDWFCmEsedWkYVNNVU6Ut1S/index.html 


    これらは永続的なリンクになります。 この方法は、めったに変更されないコンテンツの公開に適しています。 この場合、コンテンツのマルチハッシュはすぐに利用でき、IPFSネットワーク上にそのコピーがあればすぐに利用できます。


    したがって、この公開方法では、サイトのコンテンツを更新するときに、DNSレコードも更新する必要があります。



ローカルゲートウェイ


ユーザーがローカルゲートウェイを介してサイトに自動的に接続するには、A DNSレコードを追加することをお勧めします。


  this-is-ipfs-site-use-local-gate A 127.0.0.1 

これにより、ユーザーは、ローカルゲートウェイ経由でサイトをロードする単純なproxy.pacに接続できます。


 function FindProxyForURL(url, host) { if ( shExpMatch(url, "http:*") && dnsResolve("this-is-ipfs-site-use-local-gate."+host) == "127.0.0.1" ){ return "PROXY 127.0.0.1:8080; DIRECT" } return "DIRECT" } 

代替手段: サイトをlocalhost(ローカルIPFSゲートウェイ)に切り替えます


グローバルゲートウェイ


IPFSホスティングを使用できます。 これを行うには、DNSに2つのエントリを追加します。


 _dnslink TXT dnslink=/ipns/< id>/<  > @ CNAME gateway.ipfs.io 

ただし、すべてのDNSホスティングがCNAMEをルートドメインに設定できるわけではありません。


この場合、IPFSクライアントはデフォルト設定で動作できます。 誰かが私たちのサイトに連絡するとすぐに、gateway.ipfs.ioサーバー上のIPFSクライアントが私たちからサイトのコンテンツをコピーし、それをゲートウェイ経由で送信します。 このオプションは、サーバーがNATの背後にある場合に便利です。 ただし、グローバルゲートウェイにも輻輳があることを忘れないでください。


おわりに


そのように、サイトをより現代的な方法でアクセス可能にします。 現在では、直接利用できるだけでなく、分散IPFSネットワークでも利用できます。


テスト用のWebサイト: ivan386.ml
グローバルゲートウェイ経由: ipfs.io/ipns/ivan386.ml
ローカルゲートウェイ経由: 127.0.0.1 : 8080/ipns/ivan386.ml


クライアントを修正してリリースしました :


  1. punycodeと互換性があります。
  2. すべてのGETリクエストのEtag。
  3. Windowsの隠しファイルの正しい検出。

ソース


  1. WebサイトのIPFS
  2. ipfsコマンドリファレンス
    1. ipfs dns
    2. ipfs名
  3. IPFS惑星間ファイルシステム
  4. 手遅れになる前にインターネットがIPFSを必要とする理由
  5. 人間の顔でIPFSで作業する
  6. パック機能
  7. マルチハッシュ
  8. GoでのIPFSの実装

継続


Windows用のIPFS惑星間ファイルシステムでサイトをホストします



Source: https://habr.com/ru/post/J316468/


All Articles