第二回自宅鯖再構築祭り!
今回はVMベースです。次回はコンテナベースでやります。Cephは3台ないときついのでやめとく
今回はIPv4が使えないのでIPv6を必ず対応する必要がある
ざっくりした手順
N100ミニPC
今あるN100pcからデータのバックアップを作成
Proxmox VEをN100にインストール
IPv6でアクセスできるようネットワーク設定(HGWのフィルターがあるしセキュリティ的にも固定にしたほうがいい)
外からも管理できるようにする
VMを建てる。ネットワークの設定やsshの設定をする
nginx+certbotでWebサービス
IPv4からもアクセスできるようにするには...cloudflare?
i7デスクトップpc
やる気が出たらi7のデスクトップpcも手を付けていく
i7でProxmox VEをインストール
n100でクラスタを作ってクラスタに参加する
TrueNasSCALEのVMを作成。truenas_adminでログインし、ユーザー設定等を行う
cephやった方が便利だな。
1.proxmoxをインストール
isoファイルをインストール後usbを作成してインストール作業をした。GUIでできるため簡単
2.ネットワークの設定
code:イメージ
物理NIC (enp1s0 + enp3s0) wlp2s0は使わない
↓
BONDインターフェース (bond0)
↓
仮想ブリッジ (vmbr0)
↓
VMやコンテナ(IPv6で分けて使う)
sshの設定(/etc/ssh/sshd_config)を忘れずに。公開鍵か無効化推奨
HGWのパケットフィルタ、ホスト公開設定を忘れずに
3.proxmoxのcronにDDNSの設定をする
毎度おなじみのmyDNS様を使わせていただく。IPv6をcurlで送信してサブサブドメインでアクセスできるようにする
4.とりあえずubuntuのvmを入れてみる
いきなりkubernetesは学習コストが高すぎるのでとりあえずnginx直接vmに建てようかな。 いつかcloud-init使いたい
4-1 ローカル限定でsshできるようにしとく
sshd_configでListenを指定
ufwファイアーウォールを有効にしてこんな感じに追加
sudo ufw allow 'Nginx Full'
sudo ufw allow from 192.168.0.0/24 to any app OpenSSH
code:ufw status
OpenSSH ALLOW 192.168.0.0/16
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW fe80::/64
Nginx Full (v6) ALLOW Anywhere (v6)
4-2.vmのcronにDDNSの設定をする
このvmでwebページを公開したい。sellスクリプトを書いてcronに実行させる
5.とりまvmにベアメタルでNginxをいれてDocker(podman)でcertbot動かして自動化
nginxはaptでいれた
最初はpodmanで例えば/home/yokan/certbotに証明書が欲しくてドメインがanko.pgw.jpなら
code:bash
podman run --rm -it \
-v /home/yokan/certbot:/etc/letsencrypt \
-v /var/www/anko.pgw.jp:/var/www/html \
docker.io/certbot/certbot \
certonly --webroot -w /var/www/anko.pgw.jp -d anko.pgw.jp
1.メールアドレス
2.規約確認
3.メールで情報受け取るか
4.リクエスト実行中
って感じで証明書が取れる。/var/www/html/の権限が足りなかったりした。
なんかdhparam.pemがあったほうがいいらしいまだ使ってないけど
code:bash
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
そしてnginxのドメインごとの設定を作って443でリッスンできるようにしてssl_certificateとkeyの場所を指定したり設定する。80で接続してきたらきたら443にリダイレクトするようにする
code:nginx anko.pgw.jp
server {
listen 80;
server_name anko.pgw.jp;
location / {
}
server {
listen 443 ssl;
server_name anko.pgw.jp;
ssl_certificate /home/yokan/certbot/live/anko.pgw.jp/fullchain.pem;
ssl_certificate_key /home/yokan/certbot/live/anko.pgw.jp/privkey.pem;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
root /var/www/anko;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
シンボリックリンクを作る
sudo ln -sf /etc/nginx/sites-available/anko.pgw.jp /etc/nginx/sites-enabled/anko.pgw.jp
次にupdate.shを書いた
code:update.sh
podman run --rm \
-v /home/yokan/certbot:/etc/letsencrypt \
-v /var/www/html:/var/www/html \
docker.io/certbot/certbot renew && sudo systemctl reload nginx
これをcronに入れる。あ!systemctl reroad nginxこのコマンドを打つときのパスワードは無効化しといてー
でこれを他のサブドメインにも適応みたいな感じ
i7のほうにもproxmoxをインストール
インストールは割愛
1.クラスタを作る
2. TrueNAS SCALEをいれる
3.HDDを追加
ls -l /dev/disk/by-id/で確認してata-製品名_シリアル番号的なものをコピーする
qm set VMのID scsi1とかsata0 /dev/disk/by-id/ata-製品名_シリアル番号を実行
4.共有ファイルを設定
GUIで楽にできます。ユーザーを追加しないといけません。adminではだめです
5.GitlabのVMを立てる
Ubuntu 24.04だとだめみたい....
サブサブドメインを設定してgitlabはgitlab.p-nasi.pgw.jp、proxmoxはproxmox.p-nasi.pgw.jpでアクセスできるようにしとく
5-1.サブサブドメインを登録してIP通知する
5-2.Gitlabをインストールする
最初はhttpでやって後で証明書とったほうがよさそう。
あとIPv6ができてないので、大変だった。
IPv6を対応させるには、['*']これではipv4しかやってくれない
code:/etc/gitlab/gitlab.rb
location /.well-known/acme-challenge/ {
alias /var/opt/gitlab/nginx/www/.well-known/acme-challenge/;
}
設定したあと再構築
sudo gitlab-ctl reconfigure
rootの初期パスワードはここ。ログインして変更しましょう
sudo cat /etc/gitlab/initial_root_password