🏢
ConohaのVPSでKaliLinuxを使う
動機
ぼく「GMOインターネットの株式をNISAで100株買ったけど、値下がりしてもう数年くらい塩漬け状態。」
ぼく「悔しいから株主優待を使ってVPS使い倒そう。」
予算構成
-
4月の5000円チャージと、12月の5000円チャージと、四半期ごとの1000円くらいの配当
-
必然的に4月と12月に更新処理を行う。
VPS構成
- 4,027 円 (6ヶ月分) まとめトク
- CPU: 3Core
- メモリ: 2GB
- SSD: 100GB
- どのOSでも良いので、一旦この構成でLinuxサーバを立てておく。
KaliLinuxのOSイメージをConohaに追加
事前準備
-
追加するOSイメージをDLできるURLを確認
-
追加するOSイメージの容量を事前に確認
- Conohaでは1アカウント50GBまで無料でOSイメージの保存が可能
- https://manage.conoha.jp/V3/ServiceImage/
-
APIユーザーを作成
-
APIを叩く為のツール実行環境を作成
- curl
- perl
- jq
手順
- 以下を実行し、保存イメージにkaliを追加
#!/bin/bash
# encoding: utf-8
# 事前にAPIユーザーを作成してください
APIUSER=""
APIPASS=""
TENANT_ID=""
# 1. APIトークンを発行
# https://doc.conoha.jp/api-vps3/identity-post_tokens-v3/
curl -vv -D - -s -o /dev/null -X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{\"auth\": {\"identity\": {\"methods\": [\"password\"],\"password\": {\"user\": {\"id\": \"${APIUSER}\",\"password\": \"${APIPASS}\"}}},\"scope\": {\"project\": {\"id\": \"${TENANT_ID}\"}}}}" \
https://identity.c3j1.conoha.io/v3/auth/tokens | perl -lane "print \$1 if /^(?:x-subject-token: )(.+)\$/i" > token.txt
APITOKEN=`cat token.txt | tr -d '\r' | tr -d '\n'`
IMAGE_NAME="kali"
# 2. ISOをアップロードする箱(イメージID)を作る
# https://doc.conoha.jp/api-vps3/image-create_iso_image-v3/
curl -X POST \
-H "X-Auth-Token: ${APITOKEN}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{\"name\": \"${IMAGE_NAME}\",\"disk_format\": \"iso\",\"hw_rescue_bus\": \"ide\",\"hw_rescue_device\": \"cdrom\",\"container_format\": \"bare\"}" \
https://image-service.c3j1.conoha.io/v2/images | jq -r .id > imageid.txt
IMAGEID=`cat imageid.txt | tr -d '\r' | tr -d '\n'`
FILENAME="kali-linux-2024.1-installer-amd64.iso"
# 3. 箱にisoを突っ込む
# ローカルに ${FILENAME}が存在することが条件
# https://doc.conoha.jp/api-vps3/image-create_iso_image-v3/
curl -X PUT \
-H "Accept: application/json" \
-H "Content-Type: application/octet-stream" \
-H "X-Auth-Token: ${APITOKEN}" \
-T "${FILENAME}" \
https://image-service.c3j1.conoha.io/v2/images/${IMAGEID}/file
- kaliがアップロードされていることを確認
KaliLinuxのOSイメージをVPSに差し込みしLiveDVDを起動
事前準備
-
適当に新規でVPSサーバーを立てておく。
- どうせディスクパーティションごとデータを吹き飛ばします。
-
インストールするVPSのUUIDを確認しておく
- VPSの詳細から、VPS設定を見ればUUIDは分かります。
-
インストールするVPSをシャットダウンしておく
-
以下の機能をOFFにする
- ネットワーク Virtio
- ストレージ Virtio
-
APIを叩く為のツール実行環境を作成
- curl
- perl
- jq
手順
- 以下を実行する
#!/bin/bash
# encoding: utf-8
APITOKEN=`cat token.txt | tr -d '\r' | tr -d '\n'`
IMAGEID=`cat imageid.txt | tr -d '\r' | tr -d '\n'`
# ServerのUUIDは事前に調べておく。WebUIのVPSの詳細から、VPS設定を見ればUUIDは分かります。
SERVERID=""
# 1. サーバに保存イメージを突っ込む
curl -X POST \
-H "Accept: application/json" \
-H "X-Auth-Token: ${APITOKEN}" \
-d "{\"rescue\": {\"rescue_image_ref\": \"${IMAGEID}\"}}" \
https://compute.c3j1.conoha.io/v2.1/servers/${SERVERID}/action | jq -r .adminPass > adminpass.txt
# adminpassは発行されるが、使わない?
# 2. 接続用VNCのURLを取得する (これはWebUIからでも可能)
curl -X POST \
-H "Accept: application/json" \
-H "X-Auth-Token: ${APITOKEN}" \
-d '{"remote_console": {"protocol": "vnc","type": "novnc"}}' \
https://compute.c3j1.conoha.io/v2.1/servers/${SERVERID}/remote-consoles | jq -r .remote_console.url | tee remote_console.txt
# 3. 出力されたVNCのURLにブラウザでアクセス
# 4. VNCのボタンでCtrl+Alt+Deleteを送信しGRUBからExpert Installを選択
# いくつかインストール途中でシェルに入りゴニョゴニョする必要があるため。
# 5. ベースシステムのインストール後、エキスパートシェルに移動し
# 以下を実行し、ネットワークからaptでパッケージをインストールさせる
# cdromはiSCSIなのだが、USB経由でLiveCDがアタッチされているようで
# cdromのラベルでのアクセスが機能していない為である。
# # rm /target/usr/lib/apt-setup/generators/40cdrom
# # umount /target/media/cdrom
# # umount /media/cdrom
# 6. 一通りインストールが完了したら、サーバをシャットダウンする
# 7. サーバの保存イメージをEjectし、レスキューモードを解除する
curl -X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: ${APITOKEN}" \
-d '{"unrescue": null}' \
https://compute.c3j1.conoha.io/v2.1/servers/${SERVERID}/action
# 8. もしレスキューモードから復旧せずにエラーとなった場合は一度強制シャットダウンする
curl -X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: ${APITOKEN}" \
-d '{"os-stop": {"force_shutdown": true}}' \
https://compute.c3j1.conoha.io/v2.1/servers/${SERVERID}/action
# 9. サーバをConohaのWebUIから起動する
-
kaliのGRUB (Advanced...からExpert Installが可能)
-
エキスパートシェルですべき内容を忘れなければ、kaliのインストールは難なく終わる
事後整理
- 必要に応じて、ネットワークvirtioとストレージvirtioをONにする
コスト比較
マイグレーション BEFORE
- NTT WebArena Indigo Ubuntu 22.04 LTS
- 4GB/4vCPU/80GB/500Mbps上限/IPv4/IPv6/6ヶ月9,780円
マイグレーション AFTER
- Conoha VPS Kali-Linux Rolling 2024.1
- 2GB/3vCPU/100GB/100Mbps上限/IPv4/IPv6/VPS割引きっぷ6ヶ月4,142円(株主優待で実質0円!!!)
- 更新の際は割高になるので、毎回マイグレできるように、主要なサーバはkubernetes(minikube)を使ってテンプレ化しよう!
Discussion