1. 서버에 가상 호스트를 설정하여 여러 도메인을 한 대의 서버에서 운영할 수 있습니다. 2. 컨테이너 기술을 활용하여 각 서비스를 격리된 환경에서 운영할 수 있습니다. 3. 서버 리버스 프록시를 이용하여 서버에 들어오는 요청을 각 서비스로 라우팅할 수 있습니다. 4. 서버의 리소스를 효율적으로 활용하기 위해 서비스 간의 우선순위를 설정할 수 있습니다.
はじめに
インディーハッカーとして複数のサービスを運営し、収益化を試みていますが、AWSサーバーの利用料金が負担になっていました。より安価な代替案を探している中、家で使用していないゲーム用PCをサーバーとして活用してみることにしました。
このPCは約5年前に、20万ウォン程度かけて購入した機器で、同じ仕様をAWSで使用するには最低でも月に60万ウォン以上かかります。さらに、私が運営しているサービスのほとんどはユーザーがいないため、トラフィックをほとんど使用しません。それならば、このサーバーでDockerを活用して複数のサービスを効率的に運用できないか?
構成
段階的にアプローチすると理解しやすいです。まず、最も基本的な構成を見てみましょう。
1. UbuntuサーバーでDockerを使用して複数のサービスを実行
-
Ubuntuサーバーで各サービスをDockerコンテナーで実行します。
-
Nginxを使用してトラフィックを適切に分散します。
-
これだけでも外部アクセスなしで社内ネットワークレベルのサービス運用が可能です。
2. Nginxを活用したサービスの区別
-
Nginxの設定ファイルでserver_nameを使用して各サービスを分離すると、トラフィックを適切なDockerコンテナーにルーティングできます。
-
設定例:
3. 外部からIPでアクセス可能に設定
- 外部から直接サーバーにアクセスするには公開IPをサーバーに接続する必要があります。
- ルーターを使用する場合、ポートフォワーディングを設定して外部トラフィックをサーバーに誘導します。
- 設定例: ルーターで80、443ポートをサーバーにフォワーディング
4. ドメイン接続 (AWS Route 53などの活用)
- AWS Route 53などのサービスを使用すると、IPの代わりにドメインアドレスを使用できます。
- DNS設定でAレコードを自宅ネットワークの公開IPに設定するだけです。
5. CNAMEを活用したIP変更対応
- 固定IPがない場合、CNAMEレコードを使用するとIPの変更に簡単に対応できます。
- 例えば、api.example.comをmyserver.example.com(固定ドメイン)に接続すると、実際のIP変更時にはmyserver.example.comのAレコードだけを変更すれば済みます。
6. HTTPS適用 (Let’s Encryptの活用)
-
Let’s Encryptを使用すると無料でSSL証明書を取得できます。
-
Certbotを使用して自動更新を設定すると、別途費用なしで安全なHTTPS環境を維持できます。
-
基本的なSSL設定例:
server { listen 443 ssl; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; }
結論
ここで全ての詳細設定を取り上げてはいませんが、コスト削減のためにローカルPCをサーバーとして活用する方法が十分に可能であることを示したかったです。
AWSは拡張性と安定性に優れていますが、初期費用が大きいです。一方でローカルPCを活用するとコストを節約しながら複数のサービスを直接運営できます。
この方法は個人プロジェクトや小規模サービスの運営に適しています。最初はこのように運営して、トラフィックが増加し収益が確保されたらAWSなどのクラウド環境に拡張するのが良い戦略だと思います。
