LinuxでPicoShareを使って大きなファイルをオンラインでホストし共有する方法

ノートパソコンの前に立つ人の写真。手には電話を持っている。

Picoshareは、Linux用の軽量で非常にアクセスしやすいファイル共有Webアプリです。自分のサーバーからファイルをアップロードして共有できる使いやすいインターフェースを提供します。この記事では、Picoshareをインストールし、Ubuntu LinuxでDockerを使用してファイルをオンラインで共有する方法を説明します。

目次

  • Picoshareを使用してオンラインでファイルを共有する理由
  • PicoShareの前提条件をインストールする
  • PicoShareをインストールして実行する
  • SSLリバースプロキシでPicoShareを保護する
  • PicoShareをテストし、最初のファイルをアップロードする

Picoshareを使用してオンラインでファイルを共有する理由

PicoShareの最大のセールスポイントの1つは、Linuxベースのプラットフォームで簡単に展開できることです。Dockerの助けを借りて、Linuxの依存関係やプログラムの互換性を心配することなく、PicoShareを使用してオンラインでファイルを共有できます。

PicoShareのもう1つのセールスポイントは、アップロードしたファイルをそのプラットフォームで操作しないことです。これにより、メディアをアップロードする際にサーバーがメディアを再エンコードしないことが保証されるため、画像や動画を共有するのに便利です。

サーバー上で動作しているPicoShareのスクリーンショット。

最後に、PicoShareは、外部オブジェクトストレージソリューションにファイルストレージを複製する機能を備えています。たとえば、Amazon S3互換のバケットをPicoShareサーバーにリンクし、サーバーの内容の1:1バックアップを作成できます。これにより、システム間で移行する際にデータを簡単に復元できます。

PicoShareの前提条件をインストールする

前提条件: このチュートリアルは、少なくとも2GBのRAMと50GBのディスクスペースを持つUbuntu 24.04マシンで実施されています。ドメイン名を持っていて、そのドメインの「A」レコードを作成できる必要があります。最後に、この記事では、S3互換のオブジェクトストレージバックエンドとしてDigitalOcean Spacesを使用します。

注意: ここでの手順はUbuntu用ですが、ほとんどのLinuxディストリビューションでも動作するはずです。

PicoShareをインストールする最初のステップは、ホストシステム用にDockerとNginxの両方を取得することです(他のLinuxディストリビューションの場合、こちらがLinuxシステムにDockerをインストールする方法です)。まず、Dockerプロジェクトのリポジトリの署名キーを取得します:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg |sudo gpg --dearmor-o/etc/apt/keyrings/docker.gpg  
sudochmod a+r /etc/apt/keyrings/docker.gpg

お気に入りのテキストエディタを使用して新しいaptリポジトリファイルを作成します:

sudonano/etc/apt/sources.list.d/docker.list

新しいリポジトリファイル内に次の行のコードを貼り付けます:

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu noble stable

リポジトリファイルを保存し、システムのリポジトリリストと現在のパッケージを更新します:

sudo apt update &&sudo apt upgrade

Ubuntuでaptを使用してDocker、Docker Compose、およびNginxをインストールします:

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin nginx

PicoShareのためのクラウドストレージバックアップを作成する

S3互換のクラウドストレージプロバイダーに移動し、新しいストレージバケットを作成します。この場合、私はDigitalOcean Spacesを使用しているので、ダッシュボード画面でCreate -> Spaces Object Storageをクリックします。

DigitalOceanダッシュボードの「Spaces Object Storage」メニュー項目の位置を示すスクリーンショット。

S3互換のストレージのデータセンターの場所を選択し、Enable CDNチェックボックスをオンにします。

DigitalOceanのCDNを使用するかどうかを設定するためのSpacesバケットの場所を示すスクリーンショット。

新しいSpacesバケットの名前を提供し、Create a Spaces Bucketをクリックして初期化します。

Spaces名のテキストボックスプロンプトと「Create a Spaces Bucket」ボタンの位置を示すスクリーンショット。

Origin EndpointテキストボックスのCopy Iconをクリックし、それを別のテキストファイルに貼り付けます。

SpacesのダッシュボードでのCopyアイコンの位置を強調表示するスクリーンショット。

DigitalOceanダッシュボードの左側のサイドバーをスクロールし、APIカテゴリをクリックします。

Spaces Keysタブをクリックし、Generate New Keyを選択します。

新しいキーの名前を提供し、Create Access Keyをクリックします。

ページから「Access Key」と「Secret Key」の両方をコピーし、テキストファイルに貼り付けます。

SpacesバケットのAccess KeyとSecret Keyの位置を示すスクリーンショット。

PicoShareをインストールして実行する

ユーザーのホームディレクトリ内にPicoShare用の新しいフォルダーを作成し、その中に入ります:

mkdir ~/picoshare &&cd ~/picoshare

お気に入りのテキストエディタを使用してPicoShareのComposeファイルを作成します:

nano ./docker-compose.yml

新しい.ymlファイル内に次のコードブロックを貼り付けます:

version: "3.2"  
services:  
  picoshare:  
    image: mtlynch/picoshare  
    environment:  
      - PORT=4001  
      - PS_SHARED_SECRET=RANDOM PASSWORD HERE  
      - LITESTREAM_BUCKET="YOUR BUCKET NAME"  
      - LITESTREAM_ENDPOINT="YOUR ORIGIN ENDPOINT HERE"  
      - LITESTREAM_ACCESS_KEY_ID="YOUR BUCKET ACCESS ID HERE"  
      - LITESTREAM_SECRET_ACCESS_KEY="YOUR BUCKET SECRET HERE"  
    ports:  
      - 4001:4001  
    command: -db /data/store.db  
    volumes:  
      - ./data:/data

「PS_SHARED_SECRET」変数の値を十分に長くランダムなパスワードに置き換えます。これはPicoShareのWebインターフェースのパスワードとして機能します。

PicoShareインスタンスのためにランダムに生成された共有パスワードを示すターミナル。

注意: 別のターミナルセッションでcat /dev/urandom | tr -dc 'A-Za-z0-9' | fold -w 32 | head -n 1を実行することで、自分のランダムパスワードを生成できます。

「LITESTREAM_BUCKET」変数の値をSpacesバケットの名前に変更します。

S3互換のバケットに適切な値を示すターミナル。

エンドポイントの地域とドメイン名の部分をコピーし、それを「LITESTREAM_ENDPOINT」変数の値として貼り付けます。

S3互換のエンドポイント変数の正しい形式を示すスクリーンショット。

「LITESTREAM_ACCESS_KEY_ID」と「LITESTREAM_SECRET_ACCESS_KEY_ID」変数の値をDigitalOcean SpacesバケットのAccess KeyとSecret Keyに置き換えます。

PicoShareインスタンスのためのSpaces Access KeyとSecret Keyを示すスクリーンショット。

docker-compose.ymlファイルを保存し、次のコマンドを実行してPicoShareインスタンスをビルドして実行します:

sudodocker compose up -d

余談: DockerとDocker Composeを使用して、LinuxマシンでMinecraftサーバーを迅速にホストすることもできます。

SSLリバースプロキシでPicoShareを保護する

この時点で、ローカルマシンのポート4001でPicoShareが実行されています。インターネット上で安全にアクセスするためには、すべての接続がSSLを介して暗号化されていることを確認する必要があります。

まず、PicoShareサーバーのIPv4アドレスを指すドメイン名の新しい「A」レコードを作成します。私の場合、「picoshare」という値の「A」レコードを作成します。

Ubuntuシステムに「core」スナップパッケージをインストールします:

sudo snap install core

Electronic Frontier Foundation (EFF)からcertbotスナップパッケージを取得します:

sudo snap install certbot --classic

お気に入りのテキストエディタを使用して新しいNginxサイト構成ファイルを作成します:

sudonano/etc/nginx/sites-available/picoshare

サイト構成ファイル内に次のコードブロックを貼り付けます:

server{  
  
server_name SUBDOMAIN.YOUR-ROOT.DOMAIN;  
  
location / {  
  proxy_passhttp://127.0.0.1:4001;  
  proxy_http_version 1.1;  
  proxy_redirect off;  
  proxy_set_header Upgrade $http_upgrade;  
  proxy_set_header Connection "upgrade";  
  proxy_set_header X-Forwarded-Proto https;  
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  proxy_set_header Host $host;  
  client_max_body_size 0m;  
}  
}

サイト構成ファイルを保存し、「/etc/nginx/sites-available/」ディレクトリから「/etc/nginx/sites-enabled/」フォルダーへのシンボリックリンクを作成します:

sudoln-s/etc/nginx/sites-available/picoshare /etc/nginx/sites-enabled/

Nginx構成ファイルにエラーがないか再確認し、systemctlを使用してNginxウェブサーバーデーモンを起動します:

ginx -t  
sudo systemctl enable--now nginx.service

Nginxの設定確認とNginxウェブサーバーを起動するためのsystemctlコマンドを示すターミナル。

EFFのcertbotユーティリティを使用してPicoShareサーバーを登録します:

sudo certbot register --agree-tos-m [email protected]

サーバーのドメイン名を指す新しいSSL証明書を生成します:

sudo certbot --nginx-d SUBDOMAIN.YOUR-ROOT.DOMAIN

知っておくと良いこと: OpenSSLを使用して独自のSSL証明書を生成することで、HTTPSがオンラインでデータを保護する方法を学びましょう。

PicoShareをテストし、最初のファイルをアップロードする

ウェブブラウザを開き、サブドメインに移動してPicoShareのランディングページを読み込みます。

VPS上で実行されているPicoShareのランディングページを示すスクリーンショット。

ページの右上隅にあるLog Inボタンをクリックします。

Passphraseテキストボックスに「PS_SHARED_SECRET」の値を提供し、Authenticateをクリックしてログインします。

PicoShareのログインプロンプトを示すスクリーンショット。

Uploadボタンをクリックして、サンプルファイルを選択することで、PicoShareサーバーにデータを保存できるか確認します。

内部ダッシュボードでのUploadボタンの位置を強調表示するスクリーンショット。

サーバーがユーザーに返す最初のリンクをコピーし、ファイルを共有したい相手に送ります。

PicoShareインスタンスでの最初の共有可能なリンクの位置を強調表示するスクリーンショット。

PicoShareでの一時的なゲストアップロードを有効にする

ユーザーがアップロードしたファイルに加えて、匿名ユーザーがサーバーに単一のファイルをアップロードできる一時的なリンクを作成することもできます。これは、誰かがファイルを共有する必要があるが、通常のクラウドサービスにファイルをアップロードできない場合に便利です。

PicoShareのホームページでGuest Linksカテゴリをクリックして始めます。

PicoShareダッシュボードでの「Guest Links」カテゴリの位置を示すスクリーンショット。

空のリンク概要テーブルの上にあるCreate Newボタンをクリックします。

ゲストアップロードリンクの基本的な詳細を提供します。私の場合、「MakeTechEasier」とラベルを付け、期限を「Never」に設定し、ファイルサイズ制限を100MB、全体の制限を10アップロードに設定します。

完成したGuest Linkフォームを示すスクリーンショット。

Createをクリックして、PicoShareインスタンスの一時的なゲストリンクを生成します。

ゲストリンクの右側にあるCopy Iconをクリックし、クリップボードの内容を意図した受取人に送信します。

Guest Links画面でのCopy Iconの位置を示すスクリーンショット。

Linuxを使用してオンラインでファイルを共有するためにPicoShareを展開し保護することは、オンラインでのデジタルプライバシーを取り戻すための最初のステップに過ぎません。SimpleLoginを使用して独自のメールエイリアスサーバーをホストすることで、さらに自分を保護する方法を学びましょう。

画像クレジット: Alejandro Escamilla via UnsplashおよびPicoShare Github。すべての変更とスクリーンショットはRamces Redによるものです。