Blog

First Commit

2026年1月2日,Webサーバーの設置が完了しました.Webサーバーアプリを作るのにかかった時間をGitで確認すると4日でした.サーバーの構築では5日ほどかかってますね.

Webサーバー設置までの流れ

試行錯誤してDjangoに着陸

始めはBusyBox httpdを用いる想定でしたが,最終的にはDjangoを用いることになりました.それもあってサーバー構築もWebサーバーアプリの開発も右往左往しました.

Webサーバーを作るにあたり,

  • Typstから記事を作成したい,
  • 意味検索機能が欲しい,

という思いがありました.それをBusyBox httpdで実現するとなれば

  • Typstを執筆した後に静的ファイルをgenerateするスクリプトを組み,
  • ページの共通部分を安定して組み込むためにテンプレートを用意し,
  • クライアントサイドで検索クエリのEmbeddingをし,
  • 静的ファイルをgenerateするときに記事内容のEmbeddingをする,

という感じで色々やることが生まれます. もちろん,途中までこれらの実装していましたが,これらの機能はDjangoがほぼほぼ提供してくれてるものですから,Djangoに移行しました.

Djangoの懸念点はサーバーリソースをどれだけ食うか

Djangoへの移行の懸念点はサーバーリソースをどれだけ食うかでした.リクエストに合わせてのHTMLの生成を考えるとDjangoに軽いイメージはなかったのです. ですが,キャッシュが効くであろうと思えば,そこまで動的生成がサーバーのリソースを食うことはないでしょう.

Djangoを利用するとなれば,色々とサーバーにやらせたくなります.

  • Embedding処理,
  • TypstのFileをUploadしてWeb上から記事の管理,
  • 将来的にはWebアプリの公開,

などなど.この中で一番大きい不安部分はEmbedding処理です.

ベクトル化自体の処理もそれなりに重たいですが,それはBusyBox httpdで回そうとしていた時と比べてです. CPUリソースを奪ったとしてもたかが知れてます.EmbeddingのModelを上手く選定すればCPUリソースの節約もよりできるでしょう.

問題はメモリと記録メディアの容量です.PyTorchを利用する上でライブラリ自体の大きさも,OS自体の大きさも増えます.AlpineにはPyTorchが入らずArch Linuxを使うことになるからです.

ここらは処理をサーバーにいくらか任せる以上,避けられないところでしょう.とはいえ行っても記録メディア上では5GB,メモリ上では1GBだと考え,ギリギリ許容範囲と考えました.

ということでとりあえず設置.

デプロイ後のリソース消費見積りではメモリ400MB, ディスク3GB

Webサーバーを設置した後,コンテナの状況やバックアップの差分をみるとおおよそメモリでは400MB, 記録メディア上では3GBほど使ってました.

まぁ,仕方ないかなと.

全体のメモリ消費量は4GBだがよく頑張ってるほうだと思う

個人的にびっくりだったのは,現状,サーバーのメモリを4GBも消費してたことです.運用サービスはLXCコンテナで分離されており

  • Gitea
  • Netmaker
  • Nginx
  • Django
  • WebDAV

で,ここに軽微ですがこれに加えてサーバー運用のために

  • fail2ban
  • firewallや通信監理用のネットワークのゲートウェイとなってるコンテナ

が加わります.こうやって見返すと4GBはなかなか頑張ってるほうかも知れません.

以下はClaude Codeに調べさせた結果です.

> 現在のメモリの使用状況を調べて.必要があればSwapを広げたい.SSDだから速度低下もそこ
まで顕著ではないだろう.少なくとも個人サーバーでの用途なら問題なかろう.

● Bash(free -h)
● Bash(incus list -c n,s,m)
● Bash(swapon --show)

● メモリ使用状況

ホスト全体

| 項目 | サイズ | 使用 | 空き |
|------|--------|-------|-------------------|
| RAM | 1.9GB | 932MB | 1.0GB (available) |
| Swap | 6.0GB | 3.1GB | 2.9GB |

コンテナ別

| コンテナ | メモリ |
|------------|--------|
| blog | 256MB |
| netmaker | 239MB |
| gitea | 110MB |
| webdav | 46MB |
| nginx | 14MB |
| network-gw | 0.5MB |