Getting started
Minecraft Scaleway Frontend requires:
- something to host the server (could be a VPS, a serverless instance or just a Docker container running in a cluster);
- an instance from Scaleway using a Linux distribution (in this tutorial, we will use Rocky Linux).
Vocabulary
"Server" is the software "Minecraft Scaleway Frontend".
"Instance" is the instance from Scaleway.
"Minecraft server" is the Minecraft server hosted by the instance.
Instance's configuration
Scaleway configuration
Choose the appropriate instance on the Scaleway's website.
Don't forget to use a public IPv4 in addition to this (Yggdrasil, the server used for Minecraft's authentification, does not support IPv6).
Don't forget to add a storage. It will contain the OS plus the Minecraft server.
Then, you can choose your Linux distribution. Prefer a RHEL-based distribution: it is way more stable.
Running the Minecraft server
Now, we will install Java to run Minecraft. For Rocky Linux, you can use
curl https://raw.githubusercontent.com/anhgelus/cloud-setups/refs/heads/main/minecraft/only-java/java21-rocky.sh | bash
to install Adoptium Temurin JRE 21. You can use any OpenJDK distribution supporting Java 21.
We will create the folder containing and the user running the Minecraft server. Run to create a new user minecraft
useradd minecraft
usermod -s /usr/sbin/nologin minecraft
You will not be able to connect to this user. Run to create the folder container the Minecraft server
mkdir /var/minecraft
Install your Minecraft server in /var/minecraft
. Start it, stop it and modify server.properties
to allow server transfer (protocol used by the server to send players to the Minecraft server). Modify the owner of /var/minecraft
and set it to minecraft:minecraft
chown -R minecraft:minecraft /var/minecraft
Now, if you want to manage the Minecraft server via your shell, add sudo -u minecraft
before every command.
We will create the systemd unit file for the server. Put this content in /etc/systemd/system/minecraft.service
[Unit]
Description=Minecraft server service
After=network-online.target
Wants=network-online.target
[Service]
User=minecraft
WorkingDirectory=/var/minecraft
# customize the CLI
ExecStart=bash -c "/usr/bin/java" # command to start the server
Restart=always
#RestartSec=30
[Install]
WantedBy=multi-user.target
Then, reload systemd and enable the service
systemctl daemon-reload
systemctl enable minecraft.service
It will start the Minecraft server everytime the instance restarts.
Can't execute binary or service?
If you can't execute the binary or the service and if your OS use SELinux (like any RHEL-based distro), use
restorecon [path]
where [path]
is the path of the binary or of the service.
Stopping the instance and the Minecraft server if no one is connected
Read Server Stopper.
Server configuration
You can use the binary or use Docker to deploy the server. You can deploy this where do you want (it uses less than 100MB RAM when one player is connected waiting for the Minecraft server to be on).
The server has 4 required arguments:
- your API key, it's a UUID
- instance's ID (available on the instance's dashboard), it's a UUID
- instance's zone (they call it "Availability Zones")
- Minecraft's host that is used during the player's transfer; in most cases, this is the instance's IP
Version
Each version of the project supports only one version of Minecraft. The supported version is indicated in its name. For example, 1.0.0+1.21.6
supports Minecraft 1.21.6 and 1.1.0+1.21.7
supports Minecraft 1.21.7.
The "first version" (i.e. the thing before the +
) is the version of the server. The "second version" (i.e. the thing after the +
) is the version of Minecraft.
CLI
java -jar server.jar \
--zone instance-zone \
--instance instance-id \
--api-key your-api-key \
--minecraft-host ip-of-minecraft-server
Check advanced configuration for more information.
Docker
You can use the official Docker image ghcr.io/architects-land/minecraft-scaleway-frontend
.
Tags:
latest
is always the latest onemain
is for the main branchv*
is for a specific tag (e.g.,v1.0.0
)
Required environments:
ZONE
is the instance's zoneINSTANCE
is the ID of the instanceAPI_KEY
is your API keyMINECRAFT_HOST
is the host of your Minecraft server
To save the logs, bind a volume to /app/logs
.
Example docker-compose.yml
:
services:
frontend:
image: ghcr.io/architects-land/minecraft-scaleway-frontend:v1.0.0
ports:
- 25565:25565
environment:
ZONE: fr-par-2
SERVER: 00000000-0000-0000-0000-000000000000
API_KEY: 00000000-0000-0000-0000-000000000000
MINECRAFT_HOST: 198.51.100.0
volumes:
- ./logs:/app/logs
Check advanced configuration for more information.
Logs
Logs are in logs/
.
The current logs are in latest.log
. This file is compressed with GZip when the program is stopped. Its new name is yyyy-MM-dd HH:mm.log.gz
(program launch date).