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は、外部オブジェクトストレージソリューションにファイルストレージを複製する機能を備えています。たとえば、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 upgradeUbuntuでaptを使用してDocker、Docker Compose、およびNginxをインストールします:
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin nginxPicoShareのためのクラウドストレージバックアップを作成する
S3互換のクラウドストレージプロバイダーに移動し、新しいストレージバケットを作成します。この場合、私はDigitalOcean Spacesを使用しているので、ダッシュボード画面でCreate -> Spaces Object Storageをクリックします。

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

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

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

DigitalOceanダッシュボードの左側のサイドバーをスクロールし、APIカテゴリをクリックします。
Spaces Keysタブをクリックし、Generate New Keyを選択します。
新しいキーの名前を提供し、Create Access Keyをクリックします。
ページから「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インターフェースのパスワードとして機能します。

注意: 別のターミナルセッションでcat /dev/urandom | tr -dc 'A-Za-z0-9' | fold -w 32 | head -n 1を実行することで、自分のランダムパスワードを生成できます。
「LITESTREAM_BUCKET」変数の値をSpacesバケットの名前に変更します。

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

「LITESTREAM_ACCESS_KEY_ID」と「LITESTREAM_SECRET_ACCESS_KEY_ID」変数の値をDigitalOcean 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 coreElectronic 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
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のランディングページを読み込みます。

ページの右上隅にあるLog Inボタンをクリックします。
Passphraseテキストボックスに「PS_SHARED_SECRET」の値を提供し、Authenticateをクリックしてログインします。

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

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

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

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

Createをクリックして、PicoShareインスタンスの一時的なゲストリンクを生成します。
ゲストリンクの右側にあるCopy Iconをクリックし、クリップボードの内容を意図した受取人に送信します。

Linuxを使用してオンラインでファイルを共有するためにPicoShareを展開し保護することは、オンラインでのデジタルプライバシーを取り戻すための最初のステップに過ぎません。SimpleLoginを使用して独自のメールエイリアスサーバーをホストすることで、さらに自分を保護する方法を学びましょう。
画像クレジット: Alejandro Escamilla via UnsplashおよびPicoShare Github。すべての変更とスクリーンショットはRamces Redによるものです。