結構老舗のXServerが無料VPSを始めたらしいということで少し試してみています.
登録とOS(or アプリケーション)の選択
無料VPSは2種類から選択できます.
> メモリ2GB/vCPU2コア/NVMe SSD 30GB/ネットワーク 30Mbps/契約更新 4日ごと
もしくは
> メモリ4GB/vCPU3コア/NVMe SSD 30GB/ネットワーク 30Mbps/契約更新 2日ごと
の2種類から選べます.
登録には住所,氏名,電話番号,クレジットカード情報が必要でした.登録中にメール認証,電話(音声)認証,クレジットカード3Dセキュア認証が必要でした.ちょっと面倒です.
パスワードには利用可能文字が制限されていてとても面倒でした.(サービスパスワードとrootパスワード両方とも)
OSイメージはLinuxのみで*BSDなどは見当たりません.更に既存イメージの選択のみで自分で指定したインストーラから新規インストールのようなメニューは無さそう.無理やり差し替えることは可能でしょうがちょっと面倒です.
archtectureの選択はなくx86_64のみのようです.
OS以外にアプリケーションの選択もあります.WordPressやMisskeyなど利用したいアプリケーションが決まっている場合は小地位のほうがおてがるそうですが未確認.
今回はそろそろoldstableになるDebian 12を選択しました.
OS選択後root passwordとssh鍵を登録できます.ssh鍵は手持ちのものを登録したりXServerに作ってもらうこともできるようです.今回は手持ちのed25519の公開鍵を登録しました.
ssh接続
早速ssh接続をしようとしましたが繋がりません.
$ ssh ${XSERVER_VPS_IP} -l root -i ~/.ssh/id_ed25519 ssh: connect to host ${XSERVER_VPS_IP} port 22: Connection refused
XServerのパケットフィルターがデフォルトで有効になっているせいのようです.
XServer VPSの管理パネルから,「VPS管理」→「サーバー選択」で無料VPSの右の「選択する」 → 「パケットフィルター設定」からSSHを追加したら繋がるようになりました.
繋ぐと警告が.
-bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8) _____________________________________________________________________ WARNING! Your environment specifies an invalid locale. The unknown environment variables are: LC_CTYPE=ja_JP.UTF-8 LC_MESSAGES=ja_JP.UTF-8 LC_ALL=ja_JP.UTF-8 This can affect your user experience significantly, including the ability to manage packages. You may install the locales by running: sudo dpkg-reconfigure locales and select the missing language. Alternatively, you can install the locales-all package: sudo apt-get install locales-all To disable this message for all users, run: sudo touch /var/lib/cloud/instance/locale-check.skip _____________________________________________________________________
sudo dpkg-reconfigure locales
でTUIで設定するか, /etc/locale.gen
を編集して sudo /sbin/locale-gen
で治ると思います.
こんな感じになりましたが好みで編集しましょう.
$ locale LANG=en_US.UTF-8 LANGUAGE= LC_CTYPE="ja_JP.UTF-8" LC_NUMERIC="ja_JP.UTF-8" LC_TIME="ja_JP.UTF-8" LC_COLLATE="ja_JP.UTF-8" LC_MONETARY="ja_JP.UTF-8" LC_MESSAGES="ja_JP.UTF-8" LC_PAPER="ja_JP.UTF-8" LC_NAME="ja_JP.UTF-8" LC_ADDRESS="ja_JP.UTF-8" LC_TELEPHONE="ja_JP.UTF-8" LC_MEASUREMENT="ja_JP.UTF-8" LC_IDENTIFICATION="ja_JP.UTF-8" LC_ALL=ja_JP.UTF-8 $ env | grep LC LC_TIME=en_US.UTf-8 LC_ALL=ja_JP.UTF-8 LC_NUMERIC=en_US.UTf-8
LC_NUMERIC
が en_US.UTf-8
とちょっとおかしいです.これは元のXServerのDebianイメージがおかしいようです.環境にあったdot fileなどで好みの設定に上書きしたほうが良さそうです.
ユーザの整理
このイメージではパスワードありのrootと一般ユーザとしてdebianが用意されていました.
sudoが設定済なのでrootのパスワードを無くして,作業ユーザを別途追加,debianユーザは消してしまおうと思います.
$ whoami (1) debian $ sudo passwd root -d (2) $ sudo grep ^root: /etc/shadow (3) root::20285:0:99999:7::: $ sudo adduser ${OPERATOR} (4) $ sudo adduser ${OPERATOR} sudo (5) $ grep ^sudo: /etc/group (6) sudo:x:27:debian,${OPERATOR} $ sudo cp -r ~/.ssh ~${OPERATOR}/ (7) $ sudo chown -R ${OPERATOR}:${OPERATOR} ~${OPERATOR}/.ssh
debianユーザで作業
rootのパスワードを削除
確認
作業ユーザを作成
sudoグループに追加
確認
ssh鍵をコピー
作業ユーザでssh loginしてsudoできるのを確認.`
$ ssh ${XSERVER_VPS_IP} -l ${OPERATOR} -i ~/.ssh/id_ed25519 $ sudo -v
ssh login制限
sshポートを変更,rootでのssh loginを無効にして作業ユーザのみログインできるようにします.
$ sudo diff -u /etc/ssh/sshd_config.ucf-dist /etc/ssh/sshd_config --- /etc/ssh/sshd_config.ucf-dist 2025-07-16 15:28:39.245927761 +0900 +++ /etc/ssh/sshd_config 2025-07-16 18:33:10.502522166 +0900 @@ -11,7 +11,7 @@ Include /etc/ssh/sshd_config.d/*.conf -#Port 22 +Port ${SSH_PORT} (1) #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress :: @@ -30,12 +30,13 @@ # Authentication: #LoginGraceTime 2m -#PermitRootLogin prohibit-password +PermitRootLogin no (2) #StrictModes yes #MaxAuthTries 6 #MaxSessions 10 #PubkeyAuthentication yes # Expect .ssh/authorized_keys2 to be disregarded by default in future. #AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 @@ -115,8 +116,9 @@ Subsystem sftp /usr/lib/openssh/sftp-server # Example of overriding settings on a per-user basis -#Match User anoncvs +Match User ${OPERATOR} (3) # X11Forwarding no # AllowTcpForwarding no # PermitTTY no # ForceCommand cvs server $ sudo /sbin/sshd -t
ポート番号は適当にランダムで決めました
echo $RANDOM % 10000 + 49152
rootのloginを無効に
作業ユーザのみログインできるように
パケットフィルターで設定したポートでログインできるよう設定しておきます.
PORT 22は閉じずにEndlesshで待ち受けることにします.
一時的にsshdを起動して
$ sudo /sbin/sshd -dD
作業ユーザ,指定ポートで接続できるのを確認.
$ ssh ${XSERVER_VPS_IP} -l ${OPERATOR} -i ~/.ssh/id_ed25519 -p ${SSH_PORT}
sshdを再起動.
$ sudo service ssh restart
Note | XServer VPSの機能でコンソール機能があるようなのでコンソールでssh設定してからポートを開けたほうが少し安心そうです. |
パッケージ更新
Debianパッケージを更新します.結構たくさん更新ありました.kernelも更新来ていたので再起動.
$ sudo sh -c "apt update && apt upgrade" $ sudo shutdown -r now
契約更新
無料VPSはそのままでは2日もしくは4日で消えてしまいます.手動で契約更新を行う必要があります.
メモリ4GBは2日ごと,メモリ2GBは4日ごとに契約更新が必要です.
手順はこんな感じでちょっと面倒.
XServer アカウントログイン
XServer VPS管理画面へ
契約情報 → 利用期限 → 更新する
引き続き無料VPSの利用を継続する
これを2日若しくは4日ごとに行う必要があります.
これを忘れるとこんな感じになります.特にメールなどの通知は無さそうです.
未契約のサービスです。エックスサーバーを利用するにはお申し込みが必要です。
そしてまた作り直そうとしたらこんなメッセージになり申し込めないことも.
現在、XServer VPS (無料VPS)は
予想を上回るお申し込みの増加に伴い、
新規お申し込みの受付を停止しております。
契約更新はぴったり2,4日ごとでなくとも1日前から更新可能なようです.
> 利用期限の1日前から更新手続きが可能です。
> 利用を継続される場合は、YYYY年YY月DD日以降にお試しください。
自分の場合単純の更新忘れや体調崩すなどすると消えてしまいそう.データはデイリーでバックアップするなどしたほうが良さそうです.
ベンチマーク
UnixBenchを走らせてみました.
$ sudo apt install make gcc $ cd `mktemp -d` $ wget https://github.com/kdlucas/byte-unixbench/archive/refs/tags/v6.0.0.tar.gz $ tar xf v6.0.0.tar.gz $ cd byte-unixbench-6.0.0/UnixBench $ ./Run
resultsはこちらに
用途
現在自分で契約しているVPSは複数ありますが,RAMの少なさで動かすのを諦めているアプリケーションがあるのでそういったものを動かしてみようと思います.
例えばchangedetection.ioをChrome込で動かすと結構RAMが必要なので現在は自宅PCで動かしています.これをこのサーバで動かすと良さそうです.
更新忘れでサーバが消えても問題ないようなものか,サーバ消えてもデータが残るよう同期やバックアップをちゃんとするようにしないと悲しいことになりそうですが.
その他の無料VPS
古くはhost1freeなども使っていましたが,現在はOracle Cloud Free TierのVPSがおすすめです.こちらは負荷が低いとサーバがシャットダウンされますが,ある程度の負荷掛けて動かし続けることが可能です.Archtectureもx86_64の他Ampereのaarch64も利用できます.200GBの無料ストレージも利用できるので自分のは主にこれで個人クラウドストレージに使っています.
おわり
XServerの無料VPSを少し試してみています.更新手順が少し煩雑ですがRAMも多くありがたいサービスです.
手動更新を忘れると数日で消えてしまうので消えてしまっても大丈夫なものを動かしたり,リモートへの自動バックアップや構築の自動化をしておいたほうがいいでしょう.
ちゃんと運用する場合は有料サーバを契約して使いましょう.
toot