<feed xmlns='http://www.w3.org/2005/Atom'>
<title>hetzner-infra/git, branch master</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.yyamashita.com/hetzner-infra/'/>
<entry>
<title>Move forward proxy from Squid to Caddy (port 80/443)</title>
<updated>2026-07-02T14:08:58+00:00</updated>
<author>
<name>yyamashita</name>
<email>yyamashita@hetzner.yyamashita.com</email>
</author>
<published>2026-07-02T14:08:58+00:00</published>
<link rel='alternate' type='text/html' href='http://git.yyamashita.com/hetzner-infra/commit/?id=1a7b5adf8484ec0f2b6feb350b578142e186ab26'/>
<id>1a7b5adf8484ec0f2b6feb350b578142e186ab26</id>
<content type='text'>
Replace standalone Squid container with caddy-forwardproxy plugin so the
proxy shares Caddy's existing ports and TLS. HTTP on :80 and HTTPS on :443.
Auth is read from the same vpn/users.conf at Caddy startup via entrypoint.sh.
DNS: add proxy to setup-route53.py WEB_SUBDOMAINS.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Replace standalone Squid container with caddy-forwardproxy plugin so the
proxy shares Caddy's existing ports and TLS. HTTP on :80 and HTTPS on :443.
Auth is read from the same vpn/users.conf at Caddy startup via entrypoint.sh.
DNS: add proxy to setup-route53.py WEB_SUBDOMAINS.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add HTTPS forward proxy service (Squid on port 8443)</title>
<updated>2026-07-02T13:58:56+00:00</updated>
<author>
<name>yyamashita</name>
<email>yyamashita@hetzner.yyamashita.com</email>
</author>
<published>2026-07-02T13:58:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.yyamashita.com/hetzner-infra/commit/?id=88be3b3f503d4674d764a7265edb2d4e380ae738'/>
<id>88be3b3f503d4674d764a7265edb2d4e380ae738</id>
<content type='text'>
- proxy/: Squid container with HTTPS port, Basic auth from vpn/users.conf
- caddy/Caddyfile: add proxy.yyamashita.com block (RSA cert for compat)
- git/hooks: add proxy/deploy.sh to post-receive hook
- CLAUDE.md: document proxy setup and client config

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- proxy/: Squid container with HTTPS port, Basic auth from vpn/users.conf
- caddy/Caddyfile: add proxy.yyamashita.com block (RSA cert for compat)
- git/hooks: add proxy/deploy.sh to post-receive hook
- CLAUDE.md: document proxy setup and client config

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add strongSwan IKEv2 VPN service</title>
<updated>2026-06-30T13:29:07+00:00</updated>
<author>
<name>yyamashita</name>
<email>yyamashita@hetzner.yyamashita.com</email>
</author>
<published>2026-06-30T13:29:07+00:00</published>
<link rel='alternate' type='text/html' href='http://git.yyamashita.com/hetzner-infra/commit/?id=58f7917662ff92a3712289acccff8310c8f1baff'/>
<id>58f7917662ff92a3712289acccff8310c8f1baff</id>
<content type='text'>
- vpn/: Dockerfile, docker-compose.yml, swanctl.conf.tpl, entrypoint.sh
- install.sh: Caddy 証明書流用 + コンテナ起動
- renew-cert.sh: 証明書更新 + swanctl ホットリロード
- caddy/Caddyfile: vpn.yyamashita.com 追加（Let's Encrypt 証明書取得用）
- post-receive: vpn/deploy.sh を追加
- setup-route53.py: WEB_SUBDOMAINS に vpn を追加

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- vpn/: Dockerfile, docker-compose.yml, swanctl.conf.tpl, entrypoint.sh
- install.sh: Caddy 証明書流用 + コンテナ起動
- renew-cert.sh: 証明書更新 + swanctl ホットリロード
- caddy/Caddyfile: vpn.yyamashita.com 追加（Let's Encrypt 証明書取得用）
- post-receive: vpn/deploy.sh を追加
- setup-route53.py: WEB_SUBDOMAINS に vpn を追加

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add microblog service</title>
<updated>2026-06-19T06:19:00+00:00</updated>
<author>
<name>yyamashita</name>
<email>yyamashita@hetzner.yyamashita.com</email>
</author>
<published>2026-06-19T06:19:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.yyamashita.com/hetzner-infra/commit/?id=6e41cc1b7a6769608cacb456bae21aa0d7704f59'/>
<id>6e41cc1b7a6769608cacb456bae21aa0d7704f59</id>
<content type='text'>
- Caddy: route blog.yyamashita.com → microblog-app:3000
- git: add microblog post-receive hook and update work tree path to /app/microblog
- DNS: add blog subdomain to Route 53 WEB_SUBDOMAINS

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Caddy: route blog.yyamashita.com → microblog-app:3000
- git: add microblog post-receive hook and update work tree path to /app/microblog
- DNS: add blog subdomain to Route 53 WEB_SUBDOMAINS

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add microblog repo and Claude session</title>
<updated>2026-06-19T05:53:33+00:00</updated>
<author>
<name>yyamashita</name>
<email>yyamashita@hetzner.yyamashita.com</email>
</author>
<published>2026-06-19T05:53:33+00:00</published>
<link rel='alternate' type='text/html' href='http://git.yyamashita.com/hetzner-infra/commit/?id=93bd9a1d92e62c453230f0c1cc1058e745b30f40'/>
<id>93bd9a1d92e62c453230f0c1cc1058e745b30f40</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add hetzner-admin: SSH-based server management web UI</title>
<updated>2026-06-19T04:39:27+00:00</updated>
<author>
<name>yyamashita</name>
<email>yyamashita@hetzner.yyamashita.com</email>
</author>
<published>2026-06-19T04:39:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.yyamashita.com/hetzner-infra/commit/?id=50e887cb22ca375e66f7948033e05f596c9f43f5'/>
<id>50e887cb22ca375e66f7948033e05f596c9f43f5</id>
<content type='text'>
Basic Auth protected web UI with buttons to restart services and reboot.
SSH key with authorized_keys command= restriction limits executable commands.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Basic Auth protected web UI with buttons to restart services and reboot.
SSH key with authorized_keys command= restriction limits executable commands.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add mosquitone-admin repo and Claude session</title>
<updated>2026-06-09T16:30:42+00:00</updated>
<author>
<name>yyamashita</name>
<email>yyamashita@hetzner.yyamashita.com</email>
</author>
<published>2026-06-09T16:30:42+00:00</published>
<link rel='alternate' type='text/html' href='http://git.yyamashita.com/hetzner-infra/commit/?id=a7890e22d52677de267e0d4c79f2c7627f3a96c4'/>
<id>a7890e22d52677de267e0d4c79f2c7627f3a96c4</id>
<content type='text'>
Register mosquitone-admin as a managed git repo with post-receive checkout
hook, and add yyamashita:mosquitone-admin to the Claude Code session list.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Register mosquitone-admin as a managed git repo with post-receive checkout
hook, and add yyamashita:mosquitone-admin to the Claude Code session list.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "Add cron job registration to install.sh"</title>
<updated>2026-06-02T01:41:52+00:00</updated>
<author>
<name>yyamashita</name>
<email>yyamashita@hetzner.yyamashita.com</email>
</author>
<published>2026-06-02T01:41:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.yyamashita.com/hetzner-infra/commit/?id=72ff02cf231c60314ca4557c576f513088830e40'/>
<id>72ff02cf231c60314ca4557c576f513088830e40</id>
<content type='text'>
This reverts commit 5e9ed4fe05eda672293dbfe6bf10da6d9635261b.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 5e9ed4fe05eda672293dbfe6bf10da6d9635261b.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add cron job registration to install.sh</title>
<updated>2026-06-02T01:39:33+00:00</updated>
<author>
<name>yyamashita</name>
<email>yyamashita@hetzner.yyamashita.com</email>
</author>
<published>2026-06-02T01:39:33+00:00</published>
<link rel='alternate' type='text/html' href='http://git.yyamashita.com/hetzner-infra/commit/?id=5e9ed4fe05eda672293dbfe6bf10da6d9635261b'/>
<id>5e9ed4fe05eda672293dbfe6bf10da6d9635261b</id>
<content type='text'>
Registers daily scrape (05:00 JST) and recap email (08:00 JST) jobs
for tokyo-livehouse-events via idempotent crontab install.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Registers daily scrape (05:00 JST) and recap email (08:00 JST) jobs
for tokyo-livehouse-events via idempotent crontab install.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add Postfix+OpenDKIM MTA with txt-based domain management</title>
<updated>2026-06-01T12:14:58+00:00</updated>
<author>
<name>yyamashita</name>
<email>yyamashita@hetzner.yyamashita.com</email>
</author>
<published>2026-06-01T12:14:58+00:00</published>
<link rel='alternate' type='text/html' href='http://git.yyamashita.com/hetzner-infra/commit/?id=c55ae2d5daf229b12556d6283ba4e5e8161a5eb5'/>
<id>c55ae2d5daf229b12556d6283ba4e5e8161a5eb5</id>
<content type='text'>
- mail/ ディレクトリ追加: Postfix + OpenDKIM の Docker コンテナ
- mail/domains.txt で送信ドメインを管理（現在: golive.yyamashita.com）
- install.sh が domains.txt から KeyTable/SigningTable を動的生成
- setup-route53.py で SPF/DKIM/DMARC を Route 53 に一括設定
- post-receive フックに mail/deploy.sh を追加

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- mail/ ディレクトリ追加: Postfix + OpenDKIM の Docker コンテナ
- mail/domains.txt で送信ドメインを管理（現在: golive.yyamashita.com）
- install.sh が domains.txt から KeyTable/SigningTable を動的生成
- setup-route53.py で SPF/DKIM/DMARC を Route 53 に一括設定
- post-receive フックに mail/deploy.sh を追加

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
