<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Terraform on U-REI.com</title><link>https://u-rei.com/tags/terraform/</link><description>Recent content in Terraform on U-REI.com</description><generator>Hugo</generator><language>ja-JP</language><copyright>2023-2026 Kosuke Uchida</copyright><lastBuildDate>Mon, 10 Aug 2026 23:00:00 +0900</lastBuildDate><atom:link href="https://u-rei.com/tags/terraform/index.xml" rel="self" type="application/rss+xml"/><item><title>Vaultwarden運用まとめ: GCP/Terraform/Tailscale/GitHub Actionsで宣言的に管理する構成</title><link>https://u-rei.com/posts/2026/08/2026-08-09-vaultwarden-gcp-terraform-declarative-ops/</link><pubDate>Mon, 10 Aug 2026 23:00:00 +0900</pubDate><guid>https://u-rei.com/posts/2026/08/2026-08-09-vaultwarden-gcp-terraform-declarative-ops/</guid><description>&lt;p&gt;パスワードマネージャーを自前ホストするなら、Bitwarden 互換の軽量サーバー実装である Vaultwarden が定番の選択肢だ。ただ、動かすだけなら Docker Compose 一発で済むところを、ぼくのプロジェクトでは GCP + Terraform + GitHub Actions + Tailscale を組み合わせて、それなりに作り込んだ運用基盤にしている。&lt;/p&gt;
&lt;p&gt;意識したことはいくつかあり、主には可用性・信頼性・セキュリティだ。&lt;strong&gt;Vaultwarden の &lt;code&gt;/admin&lt;/code&gt; パネルは「招待リンクを見る」以外の用途では触らない。&lt;/strong&gt; サインアップ制限、2段階認証の許可手段、SMTP、管理パネルそのものの保護方式まで、設定はすべて環境変数・Terraform・GitHub Actions のどこかに書いてあり、git の差分として残る。この記事ではその全体像を、インフラ層 → コンテナ設定 → ネットワーク境界 → デプロイパイプライン → バックアップの順に紹介する。&lt;/p&gt;
&lt;h1 id="全体構成"&gt;全体構成&lt;/h1&gt;
&lt;pre class="mermaid"&gt;flowchart TD
GHA[&amp;#34;GitHub Actions&amp;lt;br/&amp;gt;(WIF, 承認ゲート付き)&amp;#34;] --&amp;gt;|IAPトンネル経由でデプロイ| Caddy
subgraph VM[&amp;#34;GCP e2-micro VM (asia-northeast1)&amp;#34;]
Caddy[&amp;#34;Caddy&amp;lt;br/&amp;gt;:80 / :443&amp;#34;]
VW[&amp;#34;Vaultwarden&amp;lt;br/&amp;gt;(docker internal)&amp;#34;]
TSServe[&amp;#34;tailscale serve&amp;lt;br/&amp;gt;tailnet経由の /admin&amp;#34;]
Disk[(&amp;#34;Persistent Disk&amp;lt;br/&amp;gt;SQLite / 添付 / 鍵&amp;#34;)]
Timer[&amp;#34;systemd timer&amp;#34;]
Caddy --&amp;gt;|reverse_proxy| VW
Caddy --&amp;gt;|&amp;#34;:8080 (127.0.0.1のみ)&amp;#34;| TSServe
VW -.-&amp;gt;|データ永続化| Disk
Timer --&amp;gt;|毎日rsync| NAS
end
NAS[(&amp;#34;自宅 Synology NAS&amp;#34;)]&lt;/pre&gt;
&lt;h1 id="1-インフラ-gcpに最安構成でしかし守るべき所は守る"&gt;1. インフラ: GCPに最安構成で、しかし守るべき所は守る&lt;/h1&gt;
&lt;p&gt;Terraform でプロビジョニングしているのは以下の通り(&lt;code&gt;terraform/main/&lt;/code&gt;)。&lt;/p&gt;</description></item></channel></rss>