go back...
サーバーの構築・運用
/ July 11, 2025
サーバーの構築目的
サーバーを構築した主な目的は以下です。
- blogの一般公開
- webサービスのクローズド公開(Matrix Synapse、Elementなど)
Yunohostを選んだ理由
アプリごとに個別に運用するのではなく、複数のサービスを一元的にインストール・管理したかったため、Self-hosting Solutionsと言われる仕組みを用いることにしました。
Self-hosting Solutionsの中でも、以下を基準に見ていった結果、Yunohostを利用することにしました。
- Communityの活発さ
- Documentationの充実
サーバーのスペック・構成
できるだけ費用を抑えるために、lowendtalkで見つけたVPSにホストしました。 Matrix Synapseでは、VoIPも使う予定だったので、ロケーションは低遅延の場所にしました。

自動化、バックアップやセキュリティ
自動化の設定
root@racknerd-1eacad:~# crontab -l
50 4 * * 6 find /home/yunohost.backup/archives/ -mtime +8 -exec rm {} \;
0 5 * * 7 yunohost tools update
15 5 * * 6 yunohost tools upgrade system && yunohost tools upgrade apps
0 6 * * 6 /usr/bin/yunohost backup create
バックアップ
cronで、yunohostコマンドを用いて、バックアップを自動的に作成しています。 その後、ワークステーションで、rsyncを実行しローカルのストレージに保存しています。
セキュリティ
- ファイヤーウォール
- yunohostデフォルトのファイヤーウォールで管理
- SSH
- ポートを変更
- パスワードによるログインを無効化
- ルートのログイン無効化
- fail2banで対策
公開中のサービスのリンクや画像
認証が必要なページ
- ログインページ
- すべてのサービスは1つのパスワードで利用可能(SSO)
- ログイン後の画面
- Nextcloud: ファイルストレージや、カレンダー、連絡先管理に使用

- Element: メッセージのやり取り、通話のために利用

- Nextcloud: ファイルストレージや、カレンダー、連絡先管理に使用
公開ページ
Yunohostインストール・運用での苦労した点
ドキュメンテーションの作成
セルフホストしたサーバーを使う必要性や、使用方法を説明したドキュメンテーションを作成しました。 海外の情報しかなかったので、翻訳しつつ、ステップごとの画面遷移をクライアント(デスクトップ、iOS、Android)に合わせて準備することが大変でした。
ストレージの逼迫
バックアップをサーバー側で自動で取るように設定していましたが、サーバーのストレージが逼迫しサーバーがダウンすることがありました。
週に1回、ワークステーションへrsyncで移動させていますが、その際--remove-source-files を加えることで、移動完了した分は削除するように対応しました。
学んだ・用いたスキル
- サーバーの構築・運用: VPS(Debian)で、サービスの運用
- セキュリティ対策: SSHの設定、ファイヤーウォール、権限管理
- Linuxコマンド: CLIでの操作、editorでの設定編集、その他各種コマンド
- ネットワーク設定: DNS設定、ファイヤーウォール
- 自動化: cron