VultrでFreeBSDサーバーを立ち上げる

2017年11月12日

このサイトはVultr上にFreeBSD12.0+nginx1.16.0で構成されたWebサーバー上で動いています。

Vultrはスナップショットという機能を使って簡単にクローンを作ることができたり、APIを使って操作(ここでは自動バックアップしています)できたりと、結構便利なVPSです。

Vultrを使おう

数年前から話題になっていたっぽいVultr.comは時間課金のVPSサービス。初期費用とか不要で、VPSが存在している時間(停止中を含む)あたりいくらで課金されます。あとは規定通信量を越えるとそれに対して従量課金。

とりあえずアカウントを作ってクレジットカードから幾らかチャージしたら、VPSを作ることができます。このチャージ金額を切らすとVPSが無効になっちゃうわけだな。プリペイドSIMみたいなもんだ。

チャージ金額があるうちはいくつでもVPSを立てられるので、次回またOSをバージョンアップしたい時には一時的にふたつのVPSを立ててサイト移行をすればいいのだ。

簡単VPSデプロイ

ログインしたら、ProductsのInstancesからNew Deploy Serverをクリック。

新規サーバーのデプロイ

Deploy New InstanceでCloud Computeを選んで仕様決め。Server LocationはTokyoで。新しく追加になったHigh Frequencyはより高性能なVPSです。

サーバーの種類と場所を選択

Server Typeは64Bit OSからFreeBSDのバージョン12を選択。

OSの選択

続いてServer Sizeを選択。うっかりしてるとオススメサイズの10ドルプランで作られちゃう!

サーバーサイズの選択
2019年7月7日追記

2018年夏頃に売り出されたIPv6のみ対応の20GB月額2.5ドルプランとIPv4対応の20GB月額3.5ドルプランはメモリ512MBの最安プランでした。

サーバーサイズを指定

現在契約中のものは元気に稼働していますが、新規契約はできなくなった模様。(AtlantaとNew Jerseyではディスクサイズが10GBで選択可能)

Additional FeaturesとかStartup ScriptとかSSH Keysは指定せずにServer Hostname & Labelを指定したら、Deploy Nowボタンを押します。

サーバーデプロイ

ちなみにここで指定したHostnameは/etc/hostsファイルや/etc/rc.confファイルにちゃんと反映されます。

一瞬でサーバーが作られてOSインストール開始。その後IPアドレスが割り当てられて自動で立ち上がります。

サーバーインストール中

VPSを選択すると詳細情報が表示されます。ここのUsernameとPasswordを使ってコンソールログインすることになります。(マスクされているPasswordは目玉アイコンをクリックすると表示されます)

パスワードの場所とコンソール起動ボタン

右上にあるディスプレイマークボタンをクリックするとコンソールが開きます。コンソールが出たらログインして設定を続けましょう。

Vultrのコンソール

タイムゾーンの問題

上記のとおりVultrの言う「Deploy in less than 60 seconds!」は本当なんですが、問題がひとつ。海外製なのでタイムゾーンがUTC協定世界時になっているということ。

なのでこれをJST日本標準時に直しましょう。FreeBSDにおけるタイムゾーンの手動設定方法|シリコンバレー 24時にあるとおり、設定ファイルを置くだけの簡単作業。シンボリックリンクを張っておきましょう。

ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

/etcにlocaltimeファイルがなければUTCとなります。

残りの設定はFreeBSD 12.0の初期設定にまとめてあるとおりです。

Startup Scriptで自動化

一部の設定はStartup Scriptに登録することで自動化できます。ProductsのStartup Scriptsを選んで右上のAdd Startup Scriptボタンを押します。

Startup Scriptの新規登録

Add Startup Script画面でNameに識別名を入れてTypeはBootのまま。Scriptに任意のコードを入れてAdd Scriptボタンを押して登録します。

Startup Scriptの登録

例えば下記のようにタイムゾーンの設定やスワップファイルの作成と登録、vimとbashのインストールにシェルの変更と各種ドットファイルの登録、カーネルセキュリティレベルの設定にfreebsd-updateの実行まで入れておくと便利です。

#! /bin/sh
test -r /etc/localtime && mv /etc/localtime /etc/localtime.org
ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
dd if=/dev/zero of=/usr/swap bs=1m count=1024 && chmod 600 /usr/swap && echo 'md99  none  swap  sw,file=/usr/swap,late 0  0' >> /etc/fstab
swapon -aL
pkg install -y bash vim
cat <<EOF >> /root/.vimrc
set number
set shiftwidth=2
set tabstop=2
set softtabstop=2
imap <C-j> <C-[>
set laststatus=2
set statusline=%F%m%r\ \[%{&fileencoding}\]\ \[%{&fileformat}\]%=%l\,%c
EOF
cat <<EOF >> /root/.bashrc
alias ll='ls -l'
alias lla='ls -la'
EOF
cat <<EOF >> /root/.bash_profile
export HISTCONTROL=ignoreboth:erasedups
export HISTIGNORE="fg*:bg*:history*:exit:rm *:rmdir *:cd*:ls*:ll*:ps:su*:htpasswd*"
export HISTSIZE=10000
export LC_CTYPE="en_US.UTF-8"
export LANG="en_US.UTF-8"
export EDITOR='vim'
export PAGER='less'
test -r ~/.bashrc && . ~/.bashrc
EOF
cat <<EOF >> /etc/rc.conf
kern_securelevel_enable="YES"	# kernel security level (see security(7))
kern_securelevel="1"	# range: -1..3 ; '-1' is the most insecure
			# Note that setting securelevel to 0 will result
			# in the system booting with securelevel set to 1, as
			# init(8) will raise the level when rc(8) completes.
			# To raise the level is to type "sysctl kern.securelevel=1".
EOF
chsh -s /usr/local/bin/bash
freebsd-update cron

サーバーデプロイ時にStartup Scriptのところでこのスクリプトを選んでやると手動設定をだいぶ端折ることができます。

Startup Scriptを指定してデプロイ

デプロイ後にsshの設定とファイアウォール設定してfreebsd-update install後に再起動すれば立ち上げ完了しますよ。