中学生による自宅サーバーの実践・アーキテクチャとその始め方

に公開
2

はじめに

こんにちは、TechFishです!
私は普段、現役中学生として勉強しながら、自宅サーバーを運用しています。自宅サーバー歴はもうすぐ3年目になります。これから自宅サーバーを始めようと思っている方、興味を持っている方に向けて、僕なりの経験をもとに、伝えたいことやアドバイス、そして私が今やっていることをまとめてみました。

techな内容が見たい方は、実際私はどんなことをしているのかセクションへ。

最初に伝えたいこと

自宅サーバーは、とても奥が深く、同時にとても楽しい趣味です。
サーバーひとつ動かすことで、いろんなシステムやサービスを自分で構築・運用できますし、同じ趣味を持つコミュニティも活発です。知識を深めていくほど、新しい発見や挑戦が尽きません。

自宅サーバーとは?

自宅サーバーとは、その名の通り「自宅で自分が管理・運用するサーバー」のことです。
レンタルサーバーやクラウドサービスと違い、ハードウェアもソフトウェアも全て自分で管理します。機器選びからOSのインストール、ネットワーク設定、セキュリティまで、全部自分の手で行うのが自宅サーバーの醍醐味です。

自宅サーバーのメリット

  • 自分で全部管理できるから、とにかく勉強になる!
    ネットワークやLinux、セキュリティの知識が自然と身につきます。
  • 自分だけのサービスを作れる!
    Webサイト公開、ファイル共有、ゲームサーバー、スマートホーム連携など、アイデア次第で何でもできます。
  • 実践的な経験が積める!
    IT系の仕事や進学を目指している人にも役立つスキルが身につきます。
  • クラウドに比べて圧倒的に安く済むことも
    サーバーのスペックや用途によっては、月額コストがとても低く抑えられます。

自宅サーバーのデメリット

  • 電気代がかかる
    常時稼働させるので、どうしても電気代は増えます。省エネ機器の導入や稼働時間の工夫も一つのポイントです。
  • 全て自分でメンテナンスする必要がある
    トラブル時の対応やアップデート、バックアップ、故障対応など、全部自分の責任です。

実際私はどんなことをしているのか

(ここからtech)

このアーキテクチャ図は私が動かしているサービス群のほんの一部ですが、紹介させてください。

まず、このアーキテクチャで一番の特徴は、Webセキュリティ層が3層あるということです。

  • Cloudflare
  • CrowdSec
  • Anubis

CrowdSecについては、以下の記事でまとめていますので、ぜひご覧ください。
https://zenn.dev/techfish4/articles/423d07cee5070d

皆さん御存知のCloudflareでキャッシュを返したりDDoS対策をしています。
CrowdSecは、ModSecurityの次世代版のような位置づけで、クラウドと連携して動作するWAFです。Anubisでは、クライアント上で計算を行うことでロボットを検出し、弾いています。

そして、私の個人サイトやDiscordBotはCI/CD (Jenkins)でデプロイを行っています。また、DiscordBotは個人サイト上の秘密の管理画面から管理できるようになっています。秘密の管理画面への認証はAuthentikサーバーを使用しています。また、Jenkinsへのログインはローカルネットワーク上からしかできないようになっています。

リポジトリは、自宅サーバー内のGitea上に保管されています。
しかし、自然災害などが起きてデータが消えるとせっかく作った個人サイトが無くなってしまうので、Gitea上のtechfish.dev用リポジトリはGitHubにミラーが置いてあります。

また、自作のDiscordBot用にSentry互換のエラートラッキングサーバーが設置されています。

個人サイトのお問い合わせページ上で送信されたお問い合わせは、すべてDiscordへWebhookで送信されるようになっています。また、スパム対策としてCloudflare Turnstileを導入しています。

アーキテクチャ図上のDiscordBotは、GitHub上でオープンソースになっているので、ぜひ御覧ください。
https://github.com/techfish-11/SwiftlyTTS

図以外では、以下のようなものを動かしています。

  • 知人との連絡用チャットサーバー
  • NTPサーバー (spectrum 2)
  • DNSキャッシュサーバー
  • Zabbixサーバー
  • Grafanaサーバー
  • DiscordBotサーバー
  • VPNサーバー
  • NAS
  • NextCloudサーバー
  • Flightradar24データフィーダー
  • 映像配信用サーバー
  • uptime kumaサーバー
  • 知人への貸出用マイクラサーバー

もちろん、自分で開発したサービスを運用するのもアリです。

自宅サーバーを始めるうえで伝えたいこと

僕が一番伝えたいのは、

「始めるきっかけは何でもOK」

ということです。

僕の場合、最初は「無料のマイクラレンタルサーバーが人がいないと勝手に停止してしまって不満だった」ので自宅サーバーに挑戦しました。でも今は、マイクラサーバー以外にもWebサイト運営や自動化システム、セキュリティ学習など、いろんな使い方をしています。

最初は何気ないきっかけでも、サーバーを動かしていると「こんなこともできるんだ!」という発見がどんどん増えていきます。Webサーバーを建ててみたり、アクセスが増えたらセキュリティを強化してみたり。トラブルや課題も多いですが、そのたびに調べて、試行錯誤して、成長できるのが自宅サーバーの面白さです。

とりあえずProxmoxVEなり立ててみて、実際にやってみてください。

自宅サーバークッキング(Webサーバー編)

ここで紹介するサーバーは、マンションなどの回線でもできるように書いてあります

  1. ラズパイだったりミニPCだったり古いPCなどを用意します
  2. Linux系OS(Ubuntu Server)をインストールします
    • ここで、GUIを入れないのがポイントです。CLIを触ったことがない方はGUIから始めるのもありですが、CLIに慣れれるように頑張りましょう
  3. コマンドを打って、Webサーバーをインストールしましょう
    apt update && apt upgrade -y && apt install nginx -y
  4. /var/www/html/index.htmlを作成し、自分のWebサイトを書きます
  5. Cloudflareアカウントを作成し、ドメインを買いましょう。
  6. ZeroTrust画面に行って、トンネルを作成し、手順に従ってサーバーにトンネルをインストールしましょう
  7. パブリックホストを設定して完成です。

まとめ

  • 自宅サーバーは「やってみたい!」という気持ちがあれば誰でも始められる楽しい趣味です。
  • 最初の一歩は小さくてもOK。ラズパイや古いPCでも十分始められます。
  • 困ったときはネットやコミュニティで情報交換してみましょう。きっと助けてくれる仲間がいます!
  • とりあえずProxmoxVEやってみて

ぜひ、自分だけのサーバーライフを楽しんでください!

Discussion

🐶ハッカードッグ🐶🐶ハッカードッグ🐶

マジですごいです...
いつも記事ありがとうございます!!
netstatの記事に最近助けられました笑

techfishtechfish

コメントありがとうございます!
netstatは結構間違えやすいですよね...