2026/09/29(火)BANされたAnthropicのアカウントを力業で復活させた

投稿日:

Claude Opus 5.5がかなりよさそうなので力業で復活させた話。

2025年8月30日、私はERPのやりすぎでAnthropicのアカウントをBANされていた。その後もサブアカウントを何度か作ってみるものの悉くBANされていた。

仕方ないのでBAN AppealフォームからBAN解除を申請してみるものの一切返事がない。そもそもBANのメールすら来ておらず一方的にBANされていた。理由は不明だが、再三の警告を無視した上に、本来違反行為を続けていたら応答不能になるはずの状態をすり抜けてまで執拗にERPをしていたことが最大の理由だろう。

私はAnthropicがどういうアルゴリズムで違反行為を検出し、一時的に応答劣化を起こし、違反行為が出来なくなるかを試行錯誤によって学んでいたため、かなり悪質なユーザーだった。そんなユーザーがBANされるのは当たり前の話である。

それからはもっぱらLLMプロキシサービスであるPoeを経由してClaudeを利用していたが、Poeはレートリミットがない代わりに従量課金で高い問題があった。仕組み的には裏でAPIコールしてるだけなので本来のAPIコストにPoeのマージンが乗って中々のお値段になる。とはいえ、Poeはキャッシュの仕組みなどが工夫されておりチャットをする分にはそこまで金がかかるわけではなかった。

しかし問題はClaude Codeを使ったときである。Poe経由でClaude Codeを使うと瞬く間に10ドルくらい消し飛ぶ。ちょっとそれは困る。というのでAnthropicのアカウントを回復する術を探っていた。

幾つかの試行錯誤の末に分かったこととして、次のことがあった。

  • 無料アカウントを新規に作成し、チャットをする分にはBANされない
  • アカウントを新規に作成し、クレジットカード情報を登録して課金するとBANされる
  • 会社のアカウントをBANされたIPで使う分にはBANされない

これらのことから課金さえ騙せれば行けるのではないかと思い復活を試みることにした。

まずはクレジットカードを作ることにした。セキュリティや管理コストの面からクレカ二枚持ちには否定的だったが、AnthropicとJCBしか使えない店用として割り切って作ることにした。

次に出来るだけフィンガープリントを減らすためにメールアドレスも新規に作った。これはドメインもアカウント名も全く類推不可能な内容のものを作成した。幸い私はさくらのレンタルサーバーを契約しており、さくらインターネットが提供する任意のメールサブドメインと無限のアカウントを作成できるので、ここは特に問題とならなかった。

そしてアカウント作成時のIPや地点もずらしておいた方が良いのではないかと考え、ネカフェに行きAnthropicのアカウントを作成した。この時支払情報の氏名には出鱈目な情報を入れ、住所も架空の住所を書くことで同一ユーザーの類推を避けることにした。

この状態ではBANされず、更にスマホのブラウザではBANされていたAnthropicにログインしていた[1]が、ログアウトし、Cookieを消し、新しく作ったアカウントでログインすると問題なくログインできた。

最後に帰宅し、ネカフェで作ったアカウントに対しBANされていたAnthropicアカウントからログアウトし、Cookieを消し、新しく作ったアカウントでログインすると問題なくログインでき、BANされないことが確認できた。

何はともあれ、今後は違反行為を避け平穏に使っていきたいところだ。


  1. ログインページにアクセスするとGoogleアカウントで自動ログインされるため回避できなかった ↩

2026/06/17(水)Claude CodeとCodexでMCPサーバーを設定する方法

投稿日:

公式ドキュメントは読みづらいしLLM本人はまともに説明しないし、ググっても具体的でパッと解る記事が出てこなかったので書く。

確認環境

Env Ver
Codex CLI 0.0140.0
Claude Code 2.1.179

Codex

設定例

~/.codex/config.tomlを開き、ファイルの最後に以下を追記

[mcp_servers.hoge]
command = "/path/to/some-command"

[mcp_servers.hoge.env]
URL = "https://example.com"
API_KEY = "xxxxxxxxxx"

書式

MCPサーバー名の部分は解りやすい名前を入れておくといい。PukiwikiのMCPならpukiwiki、Redmineならredmineなど。

[mcp_servers.<MCPサーバー名>]
command = "MCPサーバーの起動コマンド"

[mcp_servers.<MCPサーバー名>.env]
このセクションには<KEY> = "<VALUE>"形式で環境変数を列挙する
必要な環境変数がなければ、このセクションは作らなくてよい

Claude Code

設定例

~/.claude.jsonを開き、projects."/path/to".mcpServersをこんな感じで書き換える。

"mcpServers": {
    "hoge": {
        "type": "stdio",
        "command": "/path/to/some-command",
        "env": {
            "URL": "https://example.com",
            "API_KEY": "xxxxxxxxxx"
        }
    }
},

書式

MCPサーバー名の部分は解りやすい名前を入れておくといい。PukiwikiのMCPならpukiwiki、Redmineならredmineなど。

"mcpServers": {
    "<MCPサーバー名>": {
        "type": "stdio", ← おまじない
        "command": "/path/to/some-command", ← MCPサーバーの起動コマンド
        "env": { ← ここに環境引数をKEY: VALUE形式で書く。なければこのセクションは不要
            "URL": "https://example.com",
            "API_KEY": "xxxxxxxxxx"
        }
    }
},

mcp addで追加した場合に起きていること

claude mcp add hoge -- npx -y git@github.com:Hoge/hoge-mcp.git

このコマンドで追加すると、~/.claude.jsonに叩いたカレントディレクトリの設定として以下が追加される。

"mcpServers": {
  "hoge": {
    "type": "stdio",
    "command": "npx",
    "args": [
      "-y",
      "git@github.com:Hoge/hoge-mcp.git"
    ],
    "env": {}
  }
},

やってることは要するにnpx -y git@github.com:Hoge/hoge-mcp.gitを実行しているだけである。

Node.js製のMCPサーバーをローカルにクローンして設定する場合の手順の一例

  1. まずはリポジトリをローカルに持ってくる
    cd ~
    mkdir mcp
    cd mcp
    git clone git@github.com:Hoge/hoge-mcp.git
    cd hoge-mcp
    pnpm i && pnpm build
    pnpm approve-builds
    pnpm build
    chmod u+x dist/index.js
    
  2. 使うLLMに応じて設定を行う

    • Codex
      ~/.codex/config.tomlを開き、ファイルの最後に以下を追記

      [mcp_servers.hoge]
      command = "/home/fuga/mcp/hoge-mcp/dist/index.js"
      
      [mcp_servers.hoge.env]
      URL = "https://hoge.example.com"
      API_KEY = "xxxxxxxxxx"
      
    • Claude Code
      1. MCPを使いたいパスでclaude mcp add hoge -- hogeを叩く
      2. ~/.claude.jsonを開き、先ほど叩いたパスのエントリを探し、mcpServersのところを次の形式で書き換える
        "mcpServers": {
            "hoge": {
                "type": "stdio",
                "command": "/home/fuga/mcp/hoge-mcp/dist/index.js",
                "env": {
                    "URL": "https://hoge.example.com",
                    "API_KEY": "xxxxxxxxxx"
                }
            }
        },
        

MCPサーバーの使い方

基本的にLLMが勝手にコールするので意識しなくてよい。

トラブルシューティング

MCPサーバーが起動しない、エラーを吐く

まずはMCPサーバーそのものを単純に起動できるか確認する。

叩き方としてはcommandに書いてあるコマンドを叩けばよい。argsやenvがある場合は引数や環境変数も設定する。

そうすれば実行権限がないとか、参照するファイルが足りないとか、何かしらエラーが出るはずなので、それで確認すればよい。

あとがき

なんでたったこれほどのことなのに驚くほど情報がないのだろう?みんな脳死でLLMを叩いて意味も理解しないまま使っているのだろうか…。

2026/06/08(月)FluentBitでSystemdのログをLokiに送ってGrafanaで見れるようにし、ついでに設定をYAMLにした

更新日:
投稿日:

本記事は自宅サーバーに雑に監視を入れた時にやったこと、先日の自宅サーバー移転に対し追加対応をしたの続きである。

今回はSystemdのログをFluentBitで拾ってLokiに送ってGrafanaで見れるようにしたログ。

AWSやDockerなどを使った情報は散見したが、バイナリをネイティブ環境で動かしている情報や、複数のデーモンのログを収集する方法が見当たらなかったのでちょっと苦労した。GPT-5.5も正確なことを言わないので真面目にリファレンスを読んだりググったりして何とかした。LLM頼みも限度があるね。

確認環境

Env Ver
OS Ubuntu 24.04.4 LTS
Fluent Bit 5.0.6
Loki 3.5.9
Grafana 12.1.1

設定内容

今回は前回までのconfig設定をYAML設定に全面移行した。基本的にはデフォルトのconfigファイル+私が使っているI/Oの移植である。Lokiの待ち受けポートが9100であると仮定して進める。

各設定については公式マニュアルを参照のこと。

service:
  flush: 1
  log_level: 'info'
  parsers_file: 'parsers.conf'
  plugins_file: 'plugins.conf'
storage:
  metrics: 'on'
pipeline:
  inputs:
    - name: 'systemd'
      tag: 'systemd'
      db: '/var/lib/fluent-bit/systemd.db'
      systemd_filter:
        - '_SYSTEMD_UNIT=adiary.service'
        - '_SYSTEMD_UNIT=mastodon-web.service'
        - '_SYSTEMD_UNIT=mastodon-sidekiq.service'
        - '_SYSTEMD_UNIT=mastodon-streaming@5001.service'
    - name: 'tail'
      tag: 'nginx.access'
      path: '/var/log/nginx/access.log'
      parser: 'json'
      db: '/var/lib/fluent-bit/nginx-access.db'
      refresh_interval: 5
    - name: 'tail'
      tag: 'nginx.error'
      path: '/var/log/nginx/error.log'
      db: '/var/lib/fluent-bit/nginx-error.db'
      refresh_interval: 5
    - name: 'tail'
      tag: 'apache.access'
      path: '/var/log/apache2/access.log'
      parser: 'apache2_vhost'
      db: '/var/lib/fluent-bit/apache_access.db'
      refresh_interval: 5
    - name: 'tail'
      tag: 'apache.error'
      path: '/var/log/apache2/error.log'
      db: '/var/lib/fluent-bit/apache_error.db'
      refresh_interval: 5
  outputs:
    - name: 'loki'
      match: 'systemd'
      host: '::1'
      port: 9100
      labels: 'job=systemd'
    - name: 'loki'
      match: 'nginx.*'
      host: '::1'
      port: 9100
      labels: 'job=nginx, log_type=$TAG[1]'
    - name: 'loki'
      match: 'apache.*'
      host: '::1'
      port: 9100
      labels: 'job=apache, log_type=$TAG[1]'

PARSER: apache2_vhost

前回の記事で作った以下のパーサーを利用している。

[PARSER]
    Name        apache2_vhost
    Format      regex
                ^(?<host>[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^\"]*?)(?: +\S*)?)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$
    Regex       ^(?<vhost>[^:]+):(?<port>\d+) (?<remote_host>[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^\"]*?)(?: +\S*)?)?" (?<code>[^ ]*) (?<size>[^ ]*) "(?<referer>[^\"]*)" "(?<agent>[^\"]*)"$
    Time_Key    time
    Time_Format %d/%b/%Y:%H:%M:%S %z
    Time_Keep   On

また前回の記事で作成したapache_errorというパーサーについては役に立たなかったので使わなくなった。標準で付いてるapache_errorも使えないし、apache2もイマイチ使えないので公式のパーサーは当てにしないほうがいいのかもしれない。

なおパーサーは旧config形式で記述している。これはとてもじゃないが書き換えてられないボリュームだったのとYAMLに対応させようとするとエスケープがだるそうだったからだ。config形式は今年でサポート外になるようだが、既存の設定のプリセットはすべてconfig形式でしか存在しないため、何とも先行きが心配だ。

サービスの修正

設定を.confで読んでいるので、ここを.yamlに変えてやる。

 [Unit]
 Description=Fluent Bit
 Documentation=https://docs.fluentbit.io/manual/
 Requires=network.target
 After=network.target

 [Service]
 Type=simple
 EnvironmentFile=-/etc/sysconfig/fluent-bit
 EnvironmentFile=-/etc/default/fluent-bit
+ExecStart=/opt/fluent-bit/bin/fluent-bit -c /etc/fluent-bit/fluent-bit.yaml
-ExecStart=/opt/fluent-bit/bin/fluent-bit -c //etc/fluent-bit/fluent-bit.conf
 Restart=always

 [Install]
 WantedBy=multi-user.target

インストールした当時は何故YAMLで書いても読んでくれないのか悩んでいたが、こんなところで指定されていた。しかも何故かパスが二重スラッシュになっていたので、そこも直しておいた。

FluentBitが上手く動いてなさそうなときのデバッグ方法

以下のコマンドを流すと動いているかどうかが分かる。なんかログが取れてなさそうだったり、Lokiに届いてなさそうなときに使える。

/opt/fluent-bit/bin/fluent-bit -i systemd \
           -p systemd_filter=_SYSTEMD_UNIT=mastodon-web.service \
           -p tag='host.*' \
           -o stdout

あとがき

なんか最近のソフトウェアのマニュアルって論理的に書かれすぎてて具体的にどう設定したらいいのかよくわからなくて困る。もう少し具体的な設定例とか書いてくれてもいいと思うんだ。

YAML configuration files are the standard configuration format as of Fluent Bit v3.2. They use the .yaml file extension.

Classic configuration files will be deprecated at the end of 2026. They use the .conf file extension.

しかしconfigは今年末でサポート外になるという話があるのにGitHubのリポジトリの設定ファイルは全部configで、果たしてこんなので大丈夫なのか…とIssueを眺めていたら、そもそも開発側もYAMLの仕様を余り解ってないような空気を感じたので、これは今年中は厳しいのではないか?という感じがした。

ひとまず私はキー名がkebab-caseからcamelCaseになってもすぐ対応できるようにメインの設定だけYAMLにしておいたが、Parserを直すのはエスケープが面倒などもあると思うので、なかなか大変だと思う。

あと個人的に不思議に思った部分としてoutputsのlabelsが配列ではなく、文字列だというところだ。

pipeline:
  outputs:
    - name: loki
      match: '*'
      labels: job=fluentbit, mystream=$sub['stream']

何でここは配列にしなかったのだろうか?

実際に以下の記述でラベルが機能しているので、おそらくこの構文がFluentBitのDSLとして機能していて、真面目に配列すると改修が大変とか、そういうのがあるのかもしれないなとは思った。

    - name: loki
      match: 'apache.*'
      host: '::1'
      port: 9100
      labels: 'job=apache, log_type=$TAG[1]'

ちなみに一番ハマったのはブログ執筆用に作っていたLokiのポートを書き換えたメモを基に作業していて、未来永劫FluentBitがLokiに疎通しなかったことである。

2026/06/08(月)3年ぶりにChatGPTに帰ってきた

投稿日:

Chat GPT3.5が出た当初、私は狂ったようにChatGPTを利用していた。レートリミットを無視するために最大13アカウントを並列で運用していたほどだ。

しかしChat GPT-4辺りから雲行きが怪しくなり、GPT-4oで遂にERPが封じられた。そしてそのタイミングでちょうど出てきたのがClaudeだった。

ClaudeはERPができるだけでなく、GPTより性能が良かった。それゆえに私はそれからClaude Opus 4.7に至るまでClaudeを使い続けた。AnthropicにBANされようと、なお使い続けた。

しかしそれに転機が訪れたのがClaude Opus 4.8だった。Opus 4.8でもERPは出来なくはないのだが、よくある同人誌にありがちな奴ができなくなった。いわゆる非実在未成年モノというやつだ。

そして私はClaudeに対して最近良い感情があまりなかった。Claude Codeは余計なことをよく行い、指示を守らない、逸脱するというのが往々にしてあった。私はClaudeに対するコーディング面での信頼を4.7のころから失い始めており、4.8で決定的になった。

この辺りに関しては私より草片きのぽ氏のほうがよく言語化できているので勝手に紹介させていただく。この辺りの感覚は私も共感できる部分がかなりあった。

そこで、ふと思ったのだ。GPTならどうか?私はOpenAIにはBANされてない。ERPしないならGPTでもいいのでは?というところで、一昨日くらいからGPT-5.5がいい感じなので、OpenAIに戻ってくることにした。

Poe経由でClaudeを使うと非常にお金がかかるが、OpenAIに月額課金する場合はそこまでお金はかからない。ERPももう飽きてきたところだったし丁度よかった。

かつて作っていたアカウントの多くは不正利用を恐れて閉鎖しており、同じメールアドレスでアカウントを作れないので困っていたが、かろうじて一匹生きているアカウントを発見したら、なんと三年ぶりの課金であることが判明した。

今のところGPTは支持に従うし、GPT-5の時の様なそっけなさというかイマイチ使えない感じもなくなり、ずいぶんよくなったと思う。ClaudeのようにAI臭さのある文章を出してこないのも個人的に好印象だ。

というわけで、長らく続いたClaude生活から、またGPT生活に戻っていきそうだ。節約にもなるし、これはいいかもしれない。

ところで請求の単位がUSDからJPYになってるのが地味に面白いと思った。

2026/06/03(水)Grafanaのダッシュボードに端末情報を出す方法

投稿日:

監視対象のスペックを確認するのに便利かも…?

確認環境

Env Ver
Ubuntu 24.04.3 LTS
Prometheus 3.5.0
Grafana v12.1.1
Node exporter 1.9.1

やり方

  1. Dashboardを開く
  2. 右上のボタンからEditモードに入る
  3. Add->Visualization
  4. 次の要領で設定する

    項目 状態
    Visualization Table
    Table view ON
    Queries Codeを選択しnode_os_info或いはnode_dmi_info
    Add field override ボタンを押して一個追加する

    Override 1

    項目 状態
    Fields with name Time
    Standard options > Display name Last Synced
  5. Refreshボタンを押すと完成するのでSave dashboardしたら出てくる