XServer無料VPSを少し試す

結構老舗のXServerが無料VPSを始めたらしいということで少し試してみています．

サービスニュース – 詳細 | XServer VPS契約管理ページ

無料VPS | 圧倒的な性能・コスパのVPS | 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で待ち受けることにします．

Endlessh を使って ssh 接続をとてもゆっくりと処理して攻撃者に嫌がらせをする – matoken’s blog

一時的に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日ごとに契約更新が必要です．

無料VPSの契約更新・削除 | 圧倒的な性能・圧倒的なコスパVPS【XServer VPS】サポートサイト

手順はこんな感じでちょっと面倒．

XServer アカウントログイン

XServer VPS管理画面へ

契約情報 → 利用期限 → 更新する

引き続き無料VPSの利用を継続する

これを2日若しくは4日ごとに行う必要があります．
これを忘れるとこんな感じになります．

未契約のサービスです。エックスサーバーを利用するにはお申し込みが必要です。

特にメールなどの通知は無さそうです．

VPS利用期限になるとメールで通知が届くようになりました．
これまでに2通確認しましたが，更新期限日の11時すぎにメールが送信されていました．

Subject: 【XServer VPS】■重要■無料サーバーのご利用期限と更新に関するご案内 (${VPS名})

本文より

・サーバーが順次削除されます

ということでタイミングによっては復旧できるのかも?

— 追記

2025-07-30にはこのメールが届かなかったです(というのに31日に気づきVPSが消えてしまう)．メールに頼り切るとダメそう．

— 追記2

そしてまた作り直そうとしたらこんなメッセージになり申し込めないことも．

現在、XServer VPS (無料VPS)は
予想を上回るお申し込みの増加に伴い、
新規お申し込みの受付を停止しております。

契約更新はぴったり2,4日ごとでなくとも1日前から更新可能なようです．

利用期限の1日前から更新手続きが可能です。
利用を継続される場合は、YYYY年YY月DD日以降にお試しください。

自分の場合単純の更新忘れや体調崩すなどすると消えてしまいそう．データはデイリーでバックアップするなどしたほうが良さそうです．

ベンチマーク

UnixBenchを走らせてみました．

kdlucas/byte-unixbench: Automatically exported from code.google.com/p/byte-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の無料ストレージも利用できるので自分のは主にこれで個人クラウドストレージに使っています．

Oracle Cloud Free Tier | オラクル | Oracle 日本

おわり

XServerの無料VPSを少し試してみています．更新手順が少し煩雑ですがRAMも多くありがたいサービスです．
手動更新を忘れると数日で消えてしまうので消えてしまっても大丈夫なものを動かしたり，リモートへの自動バックアップや構築の自動化をしておいたほうがいいでしょう．
ちゃんと運用する場合は有料サーバを契約して使いましょう．

toot

Post by @matoken

View on Mastodon

Post by @matoken

View on Mastodon

Post by @matoken

View on Mastodon

Post by @matoken

View on Mastodon

Post by @matoken

View on Mastodon

Post by @matoken

View on Mastodon

Post by @matoken

View on Mastodon

Post by @matoken

View on Mastodon

Post by @matoken

View on Mastodon