環境

  • Sway 1.7

実現したいこと

  • 画面下にターミナルを表示したい。

選択肢

yakuake

  • 画面上にしか表示できない。
  • for_window に場所を指定して移動することができるかもしれないが無理やり

Guake

  • for_windowで位置を調整すればなんとかなる。
  • が、何かがまずくて入れ替えたはず… 記憶にない。
  • guakeで起動して、guake-toggle で出し入れ
  • 一番扱いやすい

xfce4-terminal

  • --drop-down オプションをつけることでドロップダウンさせることができる
  • --drop-down オプションをつけた状態の設定画面で位置とサイズを指定できるが、効かない
  • 表示する場合はうまく動くが、隠すときにxfce4-terminalがアクティブでないと隠れてくれない。
  • とりあえず、以下の設定で回避した。
1
2
3
4
bindsym f1 exec ~/.config/sway/scripts/toggle-term.sh

for_window [app_id="xfce4-terminal" title=".*dropterm$"] floating enable; sticky enable; resize set width 1900px height 455px; move position 0px 585px;
for_window [app_id="xfce4-terminal" title="ターミナルの設定"] floating enable; resize set 800 450; move position center;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash -u

LOG=/dev/null

set +e

# xfce4-terminalをアクティブにする
# terminalが隠れた状態であればこれは失敗するが無視する
swaymsg '[title=".*dropterm$"] focus' >> $LOG

# 隠す
# --hide-menubar => メニューバー表示しない
# --dynamic-title-mode=before => 実行中コマンドを前に表示
# --initial-title=dropterm => ↑のと組み合わせてウィンドウタイトルを "vim - dropterm" のようにする。
xfce4-terminal --drop-down --hide-menubar --dynamic-title-mode=before --initial-title=dropterm >> $LOG

現象

  • sudo podman version すると動く
1
2
3
4
5
6
7
Client:       Podman Engine
Version: 4.0.1
API Version: 4.0.1
Go Version: go1.17.8
Git Commit: c8b9a2e3ec3630e9172499e15205c11b823c8107
Built: Sun Mar 13 20:44:23 2022
OS/Arch: linux/amd64
  • podman version だと
1
2
ERRO[0000] error running `/sbin/newgidmap 538795 0 1000 1 1 200000 4096`: newgidmap: Could not set caps 
Error: cannot setup namespace using "/sbin/newgidmap": exit status 1
  • /etc/subuid /etc/subgid 設定済み
1
username::165536:4096

解決方法

1
2
$ sudo chmod 4755 /sbin/newgidmap
$ sudo chmod 4755 /sbin/newuidmap

状況

  • ZFS rootなシステムを普通のext4に変更した。
  • ZFS関連のパッケージを削除した
  • 結果、起動時に15秒くらいmodprobe zfs が失敗した。というエラーが出続けた
  • システムは起動する。

詳細

Hook [zfs] 的な表示がされていたので、systemdを疑ったが、systemdではなく、
/etc/mkinitcpio.conf に記述されている。

1
2
3
MODULES=(btrfs zfs) 
BINARIES=(btrfs zfs zpool)
HOOKS=(base udev autodetect modconf block keyboard zfs filesystems fsck)

上記の3行にある zfs を削除すればOK。このエラーは、MODULESで指定されたzfsが存在しないのでエラーを表示し続けた模様。

蛇足

結論が出てからよく見たら、arch wikiに普通に書いてありました。

https://wiki.archlinux.jp/index.php/ZFS_%E3%81%AB_Arch_Linux_%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

まえがき

  • 雑なメモです。

起きたこと

  • Slackに通知を出していたが、最新値が UNKNOWN と表示されるようになってしまった。
  • zabbixのバージョンを飛ばしてアップグレードしたので、6.0からではないかもしれない。

古い設定

今まではこの設定で動いていた。

1
2
3
4
5
[ALERT]    {EVENT.TIME} on {EVENT.DATE} ID: {EVENT.ID}
Level: {EVENT.SEVERITY} - {EVENT.NAME}
[{HOST.HOST}] {HOST.NAME} => Item: {ITEM.KEY}
Latest value: {?last(//{ITEM.KEY})}
{TRIGGER.URL}

新しい設定

以下のように変更したら治った。
なお、マクロの出典は https://www.zabbix.com/documentation/current/en/manual/appendix/macros/supported_by_location

1
Latest value: {ITEM.LASTVALUE}

環境

  • k8s 1.23.4
  • TrueNAS Scale Angelfish
  • iSCSI PVは静的に定義

拡張手順

iSCSIボリュームを拡張

  • TrueNASのiSCSIに割り当てているZVOLを拡張。これはWebから容量を変更するだけなので手順は割愛

拡張した容量を認識させる

  • 対象となるPVをマウントしているPodが稼働しているホストにSSHで接続
  • mount | grep (PV名の一部) を実行してデバイス名(/dev/sdX)と、マウントされたパス(/var/lib/kubelet/pods/〜)を取得
1
2
3
実行例
$ mount | grep elasticsearch
/dev/sdh on /var/lib/kubelet/pods/d7cdb650-112d-48b0-b4d4-c852f9c8f4c3/volumes/kubernetes.io~iscsi/iscsi-pv-elasticsearch type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota)
  • sudo tee 1 > /sys/block/sdh/device/rescan (sdh部分は上記で取得したデバイス名に変更)
  • デバイスの容量が変更されたことが検知される。(確認するならdmesgに以下のような出力がある)
1
[43366.0] sdh: detected capacity change from 5368709120 to 10737418240
  • ファイルシステムを拡張する。 xfs_growfs /var/lib/kubelet/pods/d7cdb650-112d-48b0-e4d4-d852f9c8f4c3/volumes/kubernetes.io~iscsi/iscsi-pv-elasticsearch
  • Pod内でも容量変更が自動的に認識されるのでこれで完了。

まえがき

  • これだけのために半日を費やしたのでメモ。

環境

  • Raspberry Pi 4
  • Raspberry Pi OS Lite (January 28th 2022)
  • Debian version: 11 (bullseye)

手順

/etc/network/interfaces を編集

以下のような感じ。 eth0.nnn の nnn がVLAN IDとなる。
ちなみに、nnn=1〜4096。 0ということはない(1敗。0はタグなし扱い)
これで再起動してうまく反映されればそれでOK。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
source /etc/network/interfaces.d/*

auto eth0.1
iface eth0.1 inet static
vlan-raw-device eth0
address 10.1.0.10
netmask 255.255.255.0

auto eth0.100
iface eth0.100 inet static
vlan-raw-device eth0
address 192.168.10.10
netmask 255.255.255.0
dns-nameservers 192.168.10.1
gateway 192.168.10.1

dhcpcd を停止する

  • 当方の環境では上記の書き換えだけだとうまく動かなかった。
  • systemctl disable dhcpcd して再起動したらうまく動いた。
  • おそらく、 /etc/dhcpcd.conf に denyinterface を書いて除外すれば動くのかもしれない
  • 時間の都合で停止以外はテストしていない

やってはいけないこと

vlanパッケージを入れる

  • apt install vlan でインストールできるが、不要。
  • vconfig コマンドでVLANの設定ができるようだが、思いっきり deprecated 表示が出ている
  • やってしまったら、apt purge vlan して生成されたインターフェイス (eth0.100@eth0 みたいな名前のもの) を削除する
  • 削除は ip link delete eth0.100 のように実行する

2022/05/17 追記

G Suite Legacy は個人利用に限って継続して無料で使えることになったので、以下は特に必要なくなりました。

前提

10年来無料で使えていたG Suiteがついに有料オンリーになることになった。
アカウント数を考えるとちょっと払えない額なので、普通のGoogleアカウントとGmailに移行する。

このスクラップを記事としてまとめた感じ。
https://zenn.dev/yakumo/scraps/06342958221be3

  • 使用しているサービスは, GMail, カレンダー, フォト, ドライブ
  • G SuiteのアカウントでPlay Storeでアプリの購入歴がある。
  • Androidスマホを使用しており、G Suiteのアカウントでログインしている

ある程度諦めないといけないもの

G Suiteのアカウントに紐付いているものは “移行は” 諦めないといけない。
無料でG Suiteのアカウントのみを残すことができるようになるらしいのでそれで凌ぐのも考慮に入れてもいいかもしれない。
(2022/04/27現在どうすればよいのかは不明)

Play Store

  • 有料のアプリ等の購入履歴は諦めるしかなさそう。(何らかの移行措置があれば良いんだけれども)

追加のストレージ容量

  • 移行はできないので新しいGoogleアカウントでGoogle Oneに入る必要がある
  • とはいえ、値段は変わらないのでまぁ… 許容範囲だと思う。
  • 容量ボーナス競争をしていたころにボーナスをもらっていた分は…あきらめましょう。

Androidスマホ

  • 前述のPlay Storeで購入したアプリの兼ね合いもあって、一度リセットして移行先のGoogleアカウントだけでログインした状態でやりなおした方が良い。
  • リセットしないでGoogleアカウントを追加した状態だと、旧アカウントにバックアップしてしまったり、旧アカウントを削除しても旧アカウントで購入したアプリがそのまま使えてしまったり… と、微妙な不整合が出る。一番いやだったのは、バックアップが取れない(何も言わずに失敗する)

Google Fit

  • データが移行できない。けどまぁ…これは諦めるしかなさそう。

YouTubeの登録チャンネルとか

  • ブランドアカウントを作っていれば、新しいアカウントをオーナーとして追加することで移譲可能
  • 作ってなかったら…手でチャンネル登録やりなおすしかなさそう。

移行できるもの

かんたんなものから書いていく

カレンダー

  • 旧アカウントのエクスポート機能で .ics ファイルを取得して、新アカウントでインポート可能。
  • カレンダーを分けていた場合、新アカウントではカレンダーを作ってからインポートしないとごちゃまぜになるので注意(1敗)
  • カレンダーを共有していた場合は、再度共有する操作が必要。アカウントが変わっているので仕方ないね

ドライブ

  • ファイルを移せばOK。容量によるけれども割とかんたん

フォト

  • Googleのエクスポート機能 https://myaccount.google.com/data-and-personalization の「データのダウンロード」で、フォトだけをエクスポートする。
  • フォルダと画像ファイル、jsonが入ったZIPファイルが作成されるので、ZIPファイルを展開して、新アカウントのGoogle Photosにフォルダごと投げ込む(時間がかかるのでその間PCを占領されても大丈夫な時間に行うと良い)
  • すると全部のファイルがアップロードされるのでとりあえずヨシ。jsonファイルは勝手に弾かれる。
  • アップロード完了後のファイル数と手元の画像ファイル数を比較するとなおよし。
  • 顔と人物の紐付けは移行できなそう。
  • アルバムも移行できない。アルバムの数が少なければエクスポートされたデータがアルバムごとにフォルダ化されているので再作成デキなくもないが…

Gmail

本丸。というかここが書きたかった。これはあくまで個人的な結論。
基本方針として、2パターン考えられる。

  1. Gmailのアカウントを作成して、メールをGmailのメールアドレスに転送する。
  2. 新しいメールボックスを確保してGmailから取得する

メール転送パターンの方がコストが安い。メール転送は複数のレジストラで無料サービスとして付属する。例えば、Google Domains, namecheap, Gandi, Cloudflare(パブリックβ)など。
メールボックスを確保する場合は、追加の費用が発生する可能性が高い。

メール転送パターン

このパターンは、SPF(Sender Policy Framework)が設定されたドメインからのメールを迷惑メールとして判定することがある。少なくとも、Google DomainsとCloudflare Email Routingはそうだった。(Rebuild.fm #333 によると、Gandiも同様とのこと。この項目の話はRebuild.fmがネタ元)

Google Domains

  • メール受信は、ドメインをGoogle Domainsに移管して、Google Domainsのメール転送機能を使う。

  • メール送信は、SendGridを設定して(無料)GmailのSMTPサーバーにSendGridを指定することで送信する

  • これでも諦めないといけないのは、メールアドレスの”.”が無視されるという機能はメール転送機能に存在しないので、catch-allするか、もしくは、使ったことのある”.”入りのメールアドレスすべてについて転送を設定するかのいずれか

  • なお、 “address+alias@example.com“ のような、 +alias はメール転送機能が解釈してくれる。

  • 既存のメールの取り込みは、旧アカウントでPOP3をすべてのメールで有効にして(Gmailの設定で行う)Googleアカウントの設定でセキュリティが低い認証を有効にする(2022/05/31まで)をON。

  • あとは新アカウントから、旧アカウントを追加してPOP3で受信させれば全メールを取得してくれる。ただし、これは数日かかる(Gmailが裏でメールを取得してくれるのでPCを起動しっぱなしにする必要はないけれども)

  • フィルタ、ブロック等の設定は引き継げないので再度設定が必要

  • POP3で取得する際、添付ファイルにexe等(zipで圧縮したexe含む)が含まれるとブロックされるので、それはThunderbird等を使ってIMAPで転送するなりなんなりの対策が必要

  • 新アカウントから旧アカウントのメールを受信する際に、迷惑メール判定が行われるので、しばらくの間は迷惑メールフォルダも見回る必要がある。むかしのメールを今の基準で迷惑メール判定されると意外と引っかかる。

cloudflare Email Routing

  • 基本的にはちゃんと動く
  • “.” と “+” は諦める
  • …速度も問題ないし、Cloudflareの方がドメイン登録料がちょっとお安いのだが…
  • Gmailで時々(送信元によって)email.cloudflare.com 経由 と表示されてしまい、迷惑メールに判定されることがある(SPFが設定されている送信元だとそうなりそう)

メールボックス新規取得パターン

このパターンは試していないが類似のパターンは実行しているので、動くはず。

さくらの〜はすべてメールボックスが2GB/ユーザーしかない。しかし、Gmailからメールを取得して、サーバー上のメールを削除してしまえばメールボックスの容量がパンクすることはないはず。

ムームーメールは容量が30GBとなっているので、サーバー上のメールを保持し続けても10年単位で持つのではないか。

iCloud Plusメールは、iPhoneを使っていてちょっとでも有料のプランに入っていれば使用できる。(50GB 130円/月) 無料のiCloudメールはカスタムドメインを使用できないのでこの用途には使えない。
iPhoneユーザーなら大抵は50GBプランに入るだろうから、これが最有力候補か

2022/12/15 追記

手順の変更

以前の記事との違いは、

  • Argo Tunnelという名前がなくなった
  • cloudflaredの設定にトンネル先を入れていたが、それはCfのWebで入力したものをリアルタイムに反映するようになった。ようするに設定値はトークンだけ。

Tunnelの作成

これで自宅内LANとCfの間のVPN(のようなもの)を確立させる。
ここでインストールする cloudflared が動作していないと公開できないので注意

  1. Cloudflare(以下Cf) のダッシュボードにログイン
  2. 左側メニューから Zero Trust をクリック
  3. 左側メニューの Access -> Tunnels をクリック
  4. 右上、Create a tunnel をクリック
  5. トンネルの名前(何でもよい)を入れて次へ
  6. cloudflared を動かすための情報が表示されるのでどれかを実行。一番楽なのは docker
  7. Save ボタンを押してTunnelの作成を一度完了させる

Public HostnameとLAN内エンドポイントの紐付け

ようするに、 myapp.example.comにアクセスされたら http://192.168.1.1 を返す。みたいな設定を入れていく。

  1. 左側メニューの Access -> Tunnels をクリック
  2. 先程作ったTunnel名の右側にある Configure をクリック
  3. Public Hostname をクリック
  4. Add a public hostname ボタンをクリック
  5. (1行目 Public hostname と書かれた行の話。インターネットから見える名前の設定)
  6. Subdomain に好きな名前 (例文の場合だと myapp) を入れる
  7. Domain はCfに登録されているドメインが列挙されるのでその中から選択する
  8. (ここで Warning: No DNS record found for this domain. The policy may not execute as expected. と表示されるが無視してよい)
  9. Path はあれば入力する(myapp.example.com/app -> 192.168.1.1/app になると思われる)
  10. (2行目 Service と書かれた行の話。自宅LAN内のどこにトンネルするかの設定)
  11. Type はWebならHTTPになるはず。選択肢から適切なのを選ぶ
  12. URL にLAN内でのURLのhttp:// を除外した部分を入れる。 (例: 192.168.1.1:3000)
  13. Save Hostname ボタンを押す

これで、myapp.example.com にアクセスすると、LAN内のWebアプリが見えるはず。
ちなみに、自動的にCfの証明書が発行され、httpsアクセスになる。
以前の手順より遥かに簡単になった。すごい。

蛇足

インターネットからアクセスしたいけど自分だけ使いたい

上記の設定に加えて以下を行うことで可能。(FreeプランOK)
先程作成した、 myapp.example.com として説明する。

  1. Cloudflare(以下Cf) のダッシュボードにログイン
  2. 左側メニューから Zero Trust をクリック
  3. 左側メニューの Access -> Applications をクリック
  4. Add an application ボタンをクリック
  5. Self Hosted をクリック
  6. (1行目)
  7. Application name は好きな名前を入れる
  8. (2行目 Application domain)は先程作成済みのものを入力する
  9. Subdomain は myapp を入力
  10. Domain は example.com を入力
  11. Path は入力していれば入力(今回の例であれば空欄)
  12. 右上の Next ボタンを押す
  13. (誰にアクセスを許可するかの設定)
  14. Policy name に適当な名前をいれる。 onlyme とか
  15. 下の方にある Create additional rules に ある SelectorEmails にする
  16. Value 欄にあなたのメールアドレスを入力
  17. 右上の Next ボタンを押す
  18. 右上の Add Application ボタンを押す

再度、 myapp.example.com にアクセスすると以下のような画面でログインを要求される。
ここにメールアドレスを入力すると認証コードが送られてきて(メール内にリンクもある)ログインするとLAN内のWebアプリが表示できる。
このポリシー周りの設定は色々できるようなので研究のしがいがありそう。
この手順では適当にメールアドレスだけで認証しているけれども、ここでYubicoとかが使える…と思われる。

ちなみに、毎度毎度認証が必要になるわけではなく、普通のセッションと同じように一定時間内に使い続けていれば再認証は不要なようだ(デフォルトでは24時間以内)

追記の蛇足

  • Type欄、SMBとかSSHとかがあるので色々とすごいことができそう

:::message alert
以下は古いと思われる手順です(今も動くとは思いますが検証していません)
:::

まえがき

前提

  • 自宅サーバーでいくつかのサービスを動かしていて、それをインターネットに公開したい
  • IPoE (DS-Lite or MAP-E) を使っているのでパブリックIPv4アドレスを持っていない^[語弊がある表現だけれどもとりあえず無視して]

制限事項

  • Cloudflareのネームサーバーを使っているドメインでしかこの方法は使えない^[Google Domainsのネームサーバーを使っているドメインで実験したが、応答しないようになっていた]
  • ドメインを移管する必要はない^[namecheapで管理していて、DNSだけcloudflareなドメインでも正常に動いた]が、DNSはCloudflareに向けておく必要がある

メリット

  • SSL証明書はcloudflareが自動的に発行してくれる。発行元がcloudflareになる。
  • SSL証明書の更新作業は不要。cloudflare側で行われる。
  • IPv6に自動的に対応。トンネルがIPv4であってもIPv6のIPアドレスも自動的に割り当てられる。逆にいえばIPv6のトラフィックが流れてきてしまう(設定でIPv6はオフにもできる)
  • ngrokのように、ローカルのアプリケーションをかんたんに一時的に公開するのにも使える(本記事のスコープ外)

デメリット

  • ネームサーバーをcloudflareに向けていないと使えない

手順

前提として、cloudflareにサイト(ドメイン)が登録されている状態であること
難しそうな話がでてくるが、普通に Free プランで使える。

Zero Trust の設定画面を起動する

なんというか…すごい難しそうなことが書かれているが、通常のダッシュボードと別のところにあるからリンクをたどってください。という話。
初回は、Teamの名前を決めろみたいな質問が表示されるので適当に名前を入れる。^[なお、この名前は少なくともTunnelを使うだけなら表に出ることはないと思われます。]

Tunnelの設定

左側メニューの Access -> Tunnels にある。
初回は Create Tunnel のTutorialがあるのでそこに従うと楽…ですが。
複数のサイト(ここでいうサイトはホスト名の数)を公開したい場合は、設定ファイルをTutorialで表示されるものから変更する必要があります。

ちなみに、手順はLinux環境で作っています。Windows等でもおそらくほとんど同じだと思いますが、適宜読み替えてください。

手順1 cloudflared をインストール

省略。 githubのcloudflaredリポジトリ からバイナリを取得してインストール。 .debなら dpkg -i 、普通のバイナリなら展開して chmod + 等してください。
ちなみに、普通のバイナリを適当において実行すると自動アップデート機能があるみたいです。^[が。自動アップデートがかかるとその間トンネルが切断されるので良し悪し…]

手順2 cloudflared でログイン

cloudflared tunnel login

ブラウザが開くが、そういう環境ではない場合は表示されたURLに別のマシンからアクセスして認証する。認証が終わるとブラウザにこのウィンドウは閉じて良い。というメッセージが表示されるので閉じる。

手順3 トンネルを作る

cloudflared tunnel create すきな名前

トンネルは再生成しないので(しても良いんだけども)本番用の名前で作って大丈夫。
とてもかんたん。ちなみにサイトが複数あってもトンネルは一つで大丈夫。
ここで表示されたTunnel ID が内部的なホスト名に使用される。
ちなみに、この時点で設定ファイルは ~/.cloudflared に作成される。

手順4 設定ファイルを作る

ここが一番書きたかったところ。Tutorialで表示される設定ファイルは1サイト用なので複数サイトの場合は書き方が異なる。 ファイル名は ~/.cloudflared/config.yaml とした

1
2
3
4
5
6
7
8
9
10
11
12
# url: http://localhost:80
tunnel: 1234567890-9876-1234-abcd-abcdef85cd7d
credentials-file: /etc/cloudflared/1234567890-9876-1234-abcd-abcdef85cd7d.json

ingress:
- hostname: www.example.com
service: http://localhost:80
- hostname: blog.example.com
service: http://localhost:80
- hostname: storage.example.com
service: http://localhost:80
- service: http_status:404

1行目 url Tutorialではこの項目があるが、複数サイト使う場合はこの項目は書かない
2行目 tunnel 先ほど作成したtunnelのIDを入れる。
3行目 credentials-file ログインした再に作成されたファイルのパス。 ~/.cloudflared/tunnel-id.json にあるはず。この例は後々の手順まで終わった後なのでパスが異なっている
6行目 ingress ここの下にサイト(ホスト名+ドメイン名)とプロキシするURLを記述する
7行目 hostname ホスト名+ドメイン名。 ドメイン名はcloudflareに登録されているものなら指定できる。
8行目 service cloudflaredを実行しているサーバーからアクセスできるURL
(hostname , service を必要な数だけ繰り返す)
13行目 service: http_status:404 最後はこの行を入れる必要がある(入れないとcloudflaredが起動しない)

手順5 cloudflareのDNSにトンネルを登録する

cloudflared tunnel route dns トンネル名 ホスト名+ドメイン名(blog.example.com)

これでcloudflare内のDNSが更新される。
具体的には CNAME <tunnel-id>.cfargotunnel.com が指定される。
逆に言えば、このレコードを手動で作って上記configにそのホスト名+ドメイン名が書いてあれば^[cloudflaredが実行中な場合、設定ファイルを書き換えたらcloudflaredの再起動も必要です] 自動的にトンネルされる。

手順6 サービス登録

cloudflared service install

これでsystemdのサービスが登録される。 多分enableにはなっていないので、別途
systemctl enable cloudflared は必要なはず。
なお、インストール方法によっては、 cloudflared-update.servicecloudflared-update.timer も作成されている。 cloudflared-update.timerをenableにすると自動アップデートが可能。

蛇足

接続元ポートをhttpヘッダに入れてもらう

実は書きたかったことその2。

DS-LiteやMAP-EなどのキャリアグレードNATがされている環境の場合、IPv4アドレスだけをログに出力しても接続元を特定することができません。 アクセスログには接続元ポート番号も必要です。
…が。 Cloudflareは標準でCF-Connection-IP というヘッダにIPアドレスはセットしてくれますが、ポート番号はセットしてくれません。(CF-Connection-Port とか作ってくれませんかね?)
そこで、Cloudflareの変換ルールを使って任意のヘッダにポート番号をセットしてもらうことができます。

変換ルールは、ドメインごとに設定が必要です(内容は同じでOK)
※ Zero Trustの設定画面ではなく、いつも見ている設定画面の方にあります。

変換ルールを作成ボタンHTTPヘッダーを修正 から作成します。

入力内容:

  • 名前 Add X-cloudflare-Connecting-Port (何でもOK)
  • 受信リクエストが一致する場合.. フィールド: ホスト名
  • 受信リクエストが一致する場合.. オペレータ: 次を含む
  • 受信リクエストが一致する場合.. 値: . (ピリオド一つ。すべてのリクエストにマッチさせたい)
  • 実行内容.. Set Dynamic
  • 実行内容.. ヘッダー名 X-cloudflare-Connecting-Port
  • 実行内容.. 値 cf.edge.client_port

設定した場合の画面はこちらです。

https://community.cloudflare.com/t/need-cf-connecting-port-for-french-law/319505/7

あとは、nginx等の設定で、ログに X-cloudflare-Connecting-Port を出力するようにすればOKです。

nginxの場合の例 (LTSV出力)

1
2
3
4
5
6
log_format apm 'time:$time_iso8601\t'
'http_host:"$host"\t'
'remote_addr:$http_cf_connecting_ip\t'
'remote_port:$http_x_cloudflare_connecting_port\t'

access_log /var/log/nginx/access.log apm;

別解

  • VPNを使ってレンタルサーバー等と接続すれば実現できる。
  • レンタルサーバーと言っても、Oracle CloudのAlways Free枠で十分なのでこれならお金はかからない。
  • 有料のレンタルサーバーでも Vultrとかlinodeのミニマムなプランで十分なので$5/月 くらい
  • VPNの設定も https://tailscale.com/ を使えば楽にできる

背景

  • Proxmox VE 上のdebian 9 のVM
  • VMのディスク容量が足りなくなってきたので拡張した。 26GB->32GB
  • echo 1 > /sys/block/sda/device/rescan しても容量変更が認識されず
  • 仕方がないのでVMを再起動

発生したこと

  • fdisk /dev/sda すると赤字で以下のエラーが表示される。メッセージ通りなら w で書き込めば修正できるはずだが
1
2
GPT PMBR size mismatch (54525951 != 67108863) will be corrected by w(rite).
GPT PMBR size mismatch (54525951 != 67108863) will be corrected by w(rite).
  • w すると、以下のエラーが発生

fdisk: failed to write disklabel: Invalid argument

解決方法

  • parted をインストールしてそちらを使う。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# parted /dev/sda

(parted) p
Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the
space (an extra 12582912 blocks) or continue with the current setting?
Fix/Ignore? fix

(parted) resizepart 2
Warning: Partition /dev/sda2 is being used. Are you sure you want to continue?
Yes/No? yes
End? [27.9GB]? 100% ※ このデフォルト値は変更前の値。最大容量ではないので注意

(parted) q
Information: You may need to update /etc/fstab.

参考

https://serverfault.com/questions/716270/resizing-partition-fdisk-fails-with-invalid-argument

背景

  • G Suite Legacyの終了に伴ってGoogleアカウントの切り替えを行っている
  • そのため yakumo@example.com のGoogleアカウントでZennにログインしていたが、 myname@gmail.com のGoogleアカウントに切り替える必要が発生した

やりかた

  • 既存のGoogleアカウントを使ってZennにログインする
  • 右上の自分のアイコンをクリック→アカウント設定を選択
  • G 別アカウントを連携をクリック
  • ワンタイムパスワードを送信をクリック
  • メールでワンタイムパスワードがおくられてくるので入力
  • Googleアカウントでログインする画面になるので、新しくログインしたいGoogleアカウントでログイン

以上で完了です!おつかれさまでした。

PS. なぜかスクリーンショットが全部壊れていたので削除しました。。