【ITニュース解説】Deploy your own production-grade file server on a VPS for free in just a few steps
2025年09月06日に「Dev.to」が公開したITニュース「Deploy your own production-grade file server on a VPS for free in just a few steps」について初心者にもわかりやすいように丁寧に解説しています。
ITニュース概要
無料で本番レベルのファイルサーバーを構築する手順を解説。Spring Bootアプリを無料VPSにデプロイし、NginxとLet's EncryptでHTTPS接続を確立。Dockerまたはsystemdを使ったデプロイ方法を示す。
ITニュース解説
この記事が解説する内容は、システムエンジニアを目指す初心者でも、無料で使える仮想プライベートサーバー(VPS)を利用して、ファイルを安全に保存したり、ストリーミングしたり、削除したりできる「ファイルサーバー」を、実際にサービスとして運用できる水準の堅牢さやセキュリティ(プロダクショングレード)を備えて構築する方法である。
まず、VPSとは何かというと、これはインターネット上に存在する、あなた専用の仮想的なコンピュータのようなものだ。通常のパソコンと同じようにOS(多くの場合はLinux)が動作し、そこに様々なソフトウェアをインストールして使うことができる。この記事では、Oracle Cloud、AWS、Google Cloudといった大手クラウドサービスが提供している「無料枠」のVPSを活用する。これにより、費用をかけずにサーバー構築の貴重な経験を積むことが可能となる。
構築するファイルサーバーの全体像は次のようになる。中心となるのは「Spring Boot」というJava言語で書かれたアプリケーションだ。これはファイルのアップロード、ダウンロード、管理といった主要なロジックを担い、サーバー内部のポート8000で動作する。このSpring Bootアプリへのアクセスは直接行わず、「Nginx(エンジンエックス)」というソフトウェアを間に挟む。Nginxは「リバースプロキシ」という役割を果たす。これは、外部からのインターネット通信を一度受け取り、それを安全な形で内部のSpring Bootアプリに転送する仕組みだ。さらに、Nginxは「Let's Encrypt」というサービスを利用してHTTPS(SSL/TLS)通信を実現する。これにより、あなたのファイルサーバーとユーザーのブラウザ間の通信が暗号化され、データの盗聴や改ざんから保護され、安全性が格段に向上する。ファイル自体は、VPSのディスクに直接保存するか、必要に応じてクラウドのオブジェクトストレージ(AWS S3のようなサービス)に保存することもできる。
実際にサーバーを構築する手順は次の通りだ。
最初のステップは、ファイルサーバーの元となる「Spring Bootボイラープレート」をあなたの手元のパソコンに準備することである。ボイラープレートとは、基本的な機能がすでに実装されているひな形のようなもので、これを基に開発を進める。ダウンロード後、設定ファイル(application.properties)の中にあるファイルの保存パスや、一度にアップロードできるファイルの最大サイズなどを、あなたの要件に合わせて変更する。例えば、アップロードされたファイルをVPSのどのディレクトリに保存するかを指定する。その後、Javaのビルドツール(MavenまたはGradle)を使って、実行可能なJARファイル(Java Archive)を生成する。これがVPS上で動かすアプリケーション本体となる。
次に、無料VPSを選択し、そこに接続する。記事ではUbuntu 22.04というLinux OSを想定しているが、他のLinuxディストリビューションでも手順は似ている。SSH(Secure Shell)という安全な方法でVPSにリモート接続したら、まずシステムを最新の状態に更新し、Nginx、Certbot(Let's Encryptのクライアント)、UFW(ファイアウォール)などのサーバー運用に必要なツールをインストールする。
アプリケーションをVPS上で動かす方法には二つの選択肢がある。
一つは「ネイティブデプロイ」だ。これは、VPSに直接Java開発キット(JDK 21)をインストールし、先ほど手元のパソコンでビルドしたJARファイルをVPSにアップロードする方法である。そして「systemd」というLinuxのサービス管理ツールを使って、このJARファイルがVPSの起動時に自動的に立ち上がり、常に動作し続けるように設定する。もし何らかの理由でアプリが停止しても、systemdが自動的に再起動してくれるため、安定した運用が可能になる。
もう一つは「Dockerデプロイ」だ。Dockerは、アプリケーションとその実行に必要な環境(Javaなど)をすべて一つにまとめた「コンテナ」として動かす技術である。この方法の大きな利点は、VPSにJavaを直接インストールする必要がないことだ。まずVPSにDockerをインストールし、次にアップロードしたJARファイルと、コンテナの作り方を記述したDockerfileを使って、ファイルサーバーのDockerイメージをビルドする。ビルドしたイメージからコンテナを起動すれば、Spring Bootアプリがコンテナ内で独立して動作する。これにより、環境構築の手間が省け、異なる環境間でのアプリケーションの移行も容易になる。
アプリケーションがVPS上で起動したら、Nginxを設定する。Nginxの設定ファイルを作成し、外部からのアクセス(ウェブブラウザなど)をNginxが受け付け、それを内部でポート8000で動いているSpring Bootアプリに転送するように記述する。このとき、最大アップロードサイズなどもNginx側で設定しておく。設定が完了したら、Nginxを再読み込みして変更を適用する。
そして、最も重要なセキュリティ設定の一つがHTTPSの有効化である。これには「Let's Encrypt」という無料の証明書発行サービスを利用する。certbotというツールを使って、Nginxの設定に基づき、あなたのファイルサーバーのドメイン名に対してSSL/TLS証明書を自動的に取得・設定する。これにより、ウェブサイトのアドレスがhttp://からhttps://に変わり、通信が暗号化されるため、データの盗聴や改ざんを防ぐことができる。また、certbotは証明書の自動更新も設定してくれるため、期限切れの心配も少ない。ドメイン名を使用することが推奨されるのは、このHTTPS設定が容易になるためである。
最後に、VPSの「ファイアウォール(UFW)」を設定する。ファイアウォールは、許可された通信のみをサーバーに通し、それ以外の不要な通信をブロックすることで、サーバーを不正アクセスから保護する役割を持つ。この記事では、SSH(VPSへのリモート接続)とNginx(HTTPとHTTPS)からの通信のみを許可するように設定する。これにより、サーバーのセキュリティがさらに強化される。
これらの手順を完了すれば、あなたは無料で、かつ安全なファイルサーバーをVPS上に構築できることになる。構築後も、サーバーのログを確認したり、定期的なバックアップを設定したり、必要に応じてより信頼性の高いオブジェクトストレージと連携させたりするなど、運用上の考慮事項も理解しておくことが重要である。このガイドは、単にファイルサーバーを構築するだけでなく、VPSの基本的な操作、サーバーアプリケーションのデプロイ、Webサーバーの設定、セキュリティ強化といった、システムエンジニアとして必須の知識と経験を身につけるための貴重な機会となるだろう。