| Age | Commit message (Collapse) | Author | Lines |
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Logs to /home/yyamashita/vpn-logs/charon.log (readable without root)
to diagnose iPhone IKEv2 connection failures.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
fragmentation=no caused IP-level fragmentation (1808-byte packets) which is
blocked by mobile networks. Default IKE fragmentation (RFC 7383) works for
iOS/macOS with 2 fragments.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
fragment_size=0 was interpreted as minimum fragment size (resulting in
4 tiny fragments), not disabled. fragmentation=no in swanctl.conf is
the correct per-connection setting to disable IKE fragmentation entirely.
The server now sends a single large UDP packet; the OS kernel handles
IP fragmentation instead of the IKE layer.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Android (XREAL Beam Pro) fails to reassemble IKE fragments even though
FRAG_SUP is negotiated. IP-level fragmentation (handled by the OS kernel)
works better. Removing the intermediate cert broke macOS/iOS.
This config:
- Sends leaf cert + YE1 intermediate (so any client can verify the chain)
- fragment_size=0 disables IKE fragmentation; the 1776-byte IKE_AUTH
response is sent as one large UDP packet (OS handles IP fragmentation)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Android (XREAL Beam Pro) can't validate the server cert because it lacks
the Let's Encrypt YE1 hierarchy in its system trust store. The fix:
- Serve YE1 cert at https://vpn.yyamashita.com/ca.pem via Caddy
- Android VPN profile: set CA certificate to this downloaded cert
- install.sh / renew-cert.sh now extract and copy YE1 to caddy dir
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Android (XREAL Beam Pro) advertises FRAG_SUP but fails to reassemble
IKE fragments. The IKE_AUTH response was 1776 bytes (leaf + YE1 intermediate)
requiring fragmentation into 2 packets. Without x509ca mount, only the leaf
cert is sent (~886 bytes total), fitting in a single packet without fragmentation.
Android fetches the intermediate CA (YE1) via AIA extension before tunnel setup.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
- swanctl.conf.tpl: send_cert = always (fix Android cert verification failure)
- docker-compose.yml: mount intermediate CAs to /etc/swanctl/x509ca/
- install.sh: split server.crt into leaf + chain for proper chain distribution
- entrypoint.sh: run charon directly for Docker log visibility,
fix sysctl error handling, fix charon binary path
- strongswan.conf: increase IKE log level to 4 for debugging
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
network_mode: host では /proc/sys への書き込みが制限されるため、
sysctl の失敗を無視してホスト側の設定値を確認するよう変更。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
- 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 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
- 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 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
- caddy/Caddyfile: admin.yyamashita.com → hetzner-admin.yyamashita.com
- mail/dns/setup-route53.py: add A record for primary, CNAME records for
all web service subdomains pointing to hetzner.yyamashita.com
- CLAUDE.md: update access URL
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
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 <noreply@anthropic.com>
|
|
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 <noreply@anthropic.com>
|
|
Port 25 outbound is no longer blocked on Hetzner, so SES relay is
unnecessary. Remove relayhost, SASL auth config, and libsasl2-modules.
Postfix now delivers directly to recipient MX; inet_protocols=ipv4
already present to avoid IPv6 PTR issues.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
This reverts commit 5e9ed4fe05eda672293dbfe6bf10da6d9635261b.
|
|
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 <noreply@anthropic.com>
|
|
Required for smtp_sasl_auth_enable with Amazon SES.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
SES credentials are injected via .env file (not committed). entrypoint.sh
creates sasl_passwd at runtime from SES_ACCESS_KEY_ID / SES_SMTP_PASSWORD.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
smtp プロセスは chroot 環境で動くため /etc/resolv.conf が見えず
MX ルックアップが失敗していた。chroot (/var/spool/postfix/etc/) に
resolv.conf / hosts / services / nsswitch.conf をコピーして解決。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
127.0.0.11 は MX クエリを正しく処理できないため 8.8.8.8/1.1.1.1 に差し替える。
メールコンテナはコンテナ名解決が不要なため問題なし。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
- opendkim.conf / main.cf: localhost → 127.0.0.1 (getent がIPv6を優先し
Postfix の inet_protocols=ipv4 と競合していた)
- docker-compose.yml: dns: 8.8.8.8/1.1.1.1 を追加 (Docker embedded DNS が
MX クエリを解決できなかった)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
CNAME が既に存在するドメインへの TXT 追加は競合エラーになるため、
レコードを1件ずつ適用し、競合は SKIP してその他は継続する。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
/etc/opendkim が :ro マウントのため chmod/chown が失敗していた問題を修正。
opendkim.conf で UserID root に変更しコンテナ内でルートとして実行する。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Ubuntu 24.04 ホストに直接 apt install して opendkim-genkey を実行する。
Debian Bookworm の Docker 内では OpenSSL 3.x 互換性問題で失敗するため。
setup-route53.py: ホストゾーン自動検出・SERVER_IP 自動取得を追加。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
- 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 <noreply@anthropic.com>
|
|
- lighttpd.conf: exempt static files from CGI rewrite
- deploy.sh: add --build to rebuild image on config changes
- CLAUDE.md, Deploy.md: add cgit directory and deploy notes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
- server/authorized_keys: root SSH keys managed in repo
- server/requirements.md: list of required tools/packages
- git/install.sh: now also applies authorized_keys on install
- CLAUDE.md: repo overview for Claude Code
- Deploy.md: simplified
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
- caddy/: Caddyfile, docker-compose.yml, deploy.sh (hook runs this only)
- git/: repos.txt, hooks/*/post-receive, install.sh, server-setup.sh
- claude/: sessions.txt, systemd/claude-code@.service, sync.sh
Post-receive hook is now: checkout + bash caddy/deploy.sh
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
All bare repo creation is now driven by repos.txt in this repo.
install.sh replaces install-hooks.sh and handles both repo creation
and hook deployment. Other repos' server-setup.sh no longer manage
bare repos or hooks.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Add server-hooks/<repo>/post-receive for all repos and
scripts/install-hooks.sh to deploy them manually on the server.
Hooks are not auto-installed on git push for security.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Root's post-receive hook now calls scripts/sync-claude-services.sh to
manage yyamashita's systemd user services on git push. Sessions are
configured in claude-code-sessions.txt (user:repo format).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
root 実行時のセキュリティ制限と TTY なし問題を修正。
claude-agent ユーザーを作成し、script コマンドで疑似 TTY を確保する。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
--remote-control はサブコマンドではなくオプションフラグのため修正。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
systemd サービス (claude-infra/tokyo/whoisband) を生成・有効化するセットアップスクリプトを追加。
claude remote-control で各リポジトリの常駐セッションを起動し、claude.ai/code から接続できる。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
Requests with X-Crawler-Access header and the correct token
will have the X-Robots-Tag response header removed, allowing
trusted crawlers to index the site.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
|
|
|
|
|
|
|
|