August 11, 2022
tailscale --- 自宅サーバ群でそれなりに快適なサーバ生活を送っていた私ですが、「やはりクラウドにも1台くらい持っておくべきだよな、社会人として」、という思いつきにより、適当にサーバを立てることにしました。
条件は以下です。単純ですね。
ハードルとしてはほとんど地面すれすれぐらいの低さです。
この条件で海外VPSサービスなども考慮に入れると選択肢は無限大なのですが、ここはたまたまTwitterでみかけた記事をそのまま参考にしますメディアの力を頼ることにします。
期限の制約なく無料で使えるクラウド「Free Tier」主要サービスまとめ。2022年版
lifetime-freeで仮想マシンを与えてくれるサービスが2つもいたので、なるべく安い を飛び越して無料にすることができそうです。
軽く調べたところ、GCPのCompute Engineには、archlinuxのイメージを使えるらしいので、記事タイトルでお察しではありますが、即決でこちらにしました。
(ちなみに、スペックはOCIもGCPも無料にしてはいい感じでした。OCIはいろいろもうちょっと頑張って覇権取りに行く姿勢を見せてほしい……)
こちらからどうぞ。
初回だと4万円ぶんくらいのクレジットも貰えるので、設定ミスって請求がばくはつしてもある程度はあんしんです。
アカウントの作成と同時に、ワークスペースが作成されます。概念的にはAWSのアカウントに相当するっぽい。この中に、VPCやCE, GKEなどのリソースが作成されていくようです。
作業環境はarchlinuxです。 それ以外の環境を使っている人がもしいれば、公式のドキュメントを参考に導入してください。
archlinuxの場合、AURからgoogle-cloud-sdkをインストールすることができます。
% yay -S google-cloud-sdk
このあと gcloud
コマンドを叩いてみると、ほかに依存パッケージがいたようで、エラーを吐かれたのでそれもインストールします。
% sudo pacman -S libxcrypt-compat
aws configure
みたいなやつです。
ブラウザを勝手に立ち上げて、いつものGoogle認証を許可すればOKで、事前にIAMユーザ作っておいてACCESS_KEY, SECRET_KEYをコピペして……みたいなことは不要でした。
% gcloud init
# いろいろ出るが省略
# GCPの認証を通す
You must log in to continue. Would you like to log in (Y/n)? # Enterを叩くとブラウザが開くので、Googleアカウントの認証を通す
You are logged in as: [your.mail.address@example.com].
# プロジェクトを選ぶ
Pick cloud project to use:
[1] hoge-project # デフォルトで作られているプロジェクト名
[2] Enter a project ID
[3] Create a new project
Please enter numeric choice or text value (must exactly match list item): 1
Your current project has been set to: [hoge-project].
# デフォルトリージョンを選択する
Do you want to configure a default Compute Region and Zone? (Y/n)?
Which Google Compute Engine zone would you like to use as project default?
If you do not specify a zone via a command line flag while working with Compute Engine resources, the default is assumed.
# リストが出るが長いので省略
Too many options [104]. Enter "list" at prompt to print choices fully.
Please enter numeric choice or text value (must exactly match list item): 11 # 無料枠を使いたいのでオレゴンを選択
Your project default Compute Engine zone has been set to [us-west1-b].
You can change it by running [gcloud config set compute/zone NAME].
Your project default Compute Engine region has been set to [us-west1].
You can change it by running [gcloud config set compute/region NAME].
# このあともいろいろ出るが、ここに設定あるからね系のアナウンスなので省略
イメージはGCP側で用意されているようです。
GoogleCloudPlatform/compute-archlinux-image-builderのREADMEに従って、インスタンスを作成・起動します。
gcloud compute instances create arch-1 \ # インスタンス・ストレージ名になる
--image-project=arch-linux-gce \
--image-family=arch \
--machine-type=e2-micro \ # 永久無料枠のサイズにする
--boot-disk-size=30GB # 30GBまでストレージ無料なので、せっかくだしデフォルトより大きくしておく
# warnが出るけど、気にしない
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
arch-1 us-west1-b e2-micro {INTERNAL_IP} {EXTERNAL_IP} RUNNING
これでインスタンスが作成・起動されます。
ブラウザからSSHボタンを押すと、別窓でインスタンスに対するSSHが起動します。
また、gcloud compute ssh ${インスタンス名}
で、vagrant ssh
のような感覚で、ターミナルから接続することもできます。
接続時にはブラウザ経由の場合はGCPに登録してあるメールアドレスのユーザ名部分、gcloud
経由の場合には接続元のマシンのユーザ名で新規ユーザが作成されます。
とりあえずパッケージの更新をしておきましょう。
% sudo pacman -S archlinux-keyring
% sudo pacman -Syyu
これでおわりです。
あとはお好きにどうぞ。
なぜかインターネットからのpingに応答するのがデフォルトになっているので、 default-allow-icmp
を削除する。
設定は別画面にあるので、スクショのようにして探す。
% sudo pacman -S vim
% export EDITOR=vim
% sudoedit /etc/ssh/sshd_config
# `# Port 22` の行を探し、`Port {任意の番号}` に変えておく
% sudo systemctl restart sshd
上記が終わったら、GCPのファイアウォール設定から、 default-allow-ssh
のルールを探し、ポート番号を変更する。
gcloud compute ssh
でもいいんだけど、ポート番号変えたりするとつらいところがあるので、普通にsshできるように設定をエクスポートする。
% gcloud compute config-ssh
これを実行すると、~/.ssh/config
に設定が追記されるので、適宜ユーザ名やポート番号を追記・編集する。
Webコンソールからの導線がわかりにくいので、画面上部の検索メニューに 予算とアラート
と入力して設定ページに飛ぶ。
とりあえず1円で設定しておけばよさげ。クーポンや無料枠ぶんを反映する設定にしておかないと、割引前の請求額でアラートを飛ばすようなので、そこだけ注意。
わりとさっくりいけたので特に書くことがない……。
とりあえず立てたインスタンスにはこれからSELinuxをいれたりなんだりして、便利に使っていこうと思います。
あと今回ほとんど初めてGCPを触ったけど、AWSとはやっぱり文化が違う感じがしていて、AWS, Azure, OCIに連なるサービスというより、どちらかというと強いherokuみたいな印象を受けた。
コンソールが使いにくい・デフォルト設定がわりと不思議、みたいなところはあるけど、極端なつらみはない(Windows版firefoxで表示が崩れまくるので、別のところでつらみはあったけど)ので、個人利用程度だったら人に勧めるかも。
そんな感じです。