前置き
私の管理しているサーバー(ららあーす)でも使っている手法です。Docker上で管理するとRAMを多く消費してしまうため、Systemdに落ち着きました。
目次
動作環境
VPS Agames [パフォーマンス]
- CPU : AMD Ryzen 9 7900 × 2core
- RAM : 2GB
- Disk : 50GB
OS : UbuntuServer 24.04.2
- Java : OpenJDK 21
- Velocity : 3.4.0
ネットワーク構成
- WireGuardによるサーバー間VPN
ディレクトリの作成
opt 配下に Velocity の実行ディレクトリを用意します
mkdir -p /opt/velocity
Velocity の導入
これについては、わかりやすい記事が他にたくさんあるのでそちらを参考にしてください
yululiさんの書いたブログが詳しく書かれていておすすめです
実行ユーザーの作成
root権限で実行するのはセキュリティ上よろしくないので、専用非rootユーザーを作成します
useradd -m -s /bin/bash veluser
sshでログインする予定があるならパスワードを設定
passwd veluser
start.sh , stop.sh の作成
/opt/velocity にsystemdで実行するシェルスクリプトを作成していきます
start.sh
#!/bin/bash
set -eu
SESSION_NAME="velocity"
cd /opt/velocity
if screen -list | grep -q "$SESSION_NAME"; then
echo "Already running!! screen session: $SESSION_NAME"
exit 0
else
echo "Starting screen session: $SESSION_NAME"
screen -dmS "$SESSION_NAME" java -Xms1G -Xmx1G -XX:+UseG1GC -jar velocity*.jar
echo "Started successfully."
fi
stop.sh
#!/bin/bash
set -eu
SESSION_NAME="velocity"
if screen -list | grep -q "$SESSION_NAME"; then
echo "Stopping screen session: $SESSION_NAME"
screen -S "$SESSION_NAME" -X quit
echo "Stopped successfully."
else
echo "Not Found!! screen session: $SESSION_NAME"
fi
サービスファイルの作成
/etc/systemd/system/ にサービスファイルを作成していきます
velocity.service
[Unit]
Description=Velocity Proxy
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
RemainAfterExit=true
User=veluser
Group=veluser
WorkingDirectory=/opt/velocity
ExecStart=/opt/velocity/start.sh
ExecStop=/opt/velocity/stop.sh
[Install]
WantedBy=multi-user.target
実行権限とパーミションの設定
chown -R veluser:veluser /opt/velocity
chmod -R 770 /opt/velocity
chmod +x /opt/velocity/start.sh
chmod +x /opt/velocity/stop.sh
デーモンのリロード
deamonをリロードし登録します
sudo systemctl daemon-reload
sudo systemctl enable velocity.service
最後に
初めて書いた記事なので間違いだらけかもしれませんが、誰かのお役に立てれば幸いです。MC Server 開発者向けのDiscordを作成したので、よければ情報交換に参加してみてください。