
Не так давно я купил Raspberry Pi 4B 8Gb и успешно настроил PLEX Media Server, используя плату расширения SATA. В попытке расширить свои знания я решил посмотреть, смогу ли я добавить частный сервер Minecraft ради развлечения, а также потому, что мои племянники будут считать меня крутым дядей.
Шаги, которые я выполнил
- Заменил Raspberry PiOS на Ubuntu Server 21.04, чтобы Java могла использовать всю ширину шины (64 бита вместо 32 бит).
- УстановленJava 16 JDK от Libericaв рамках подготовки к Minecraft.
- Настройте сервер LEMP (замените Apache на NGINX), чтобы убедиться, что локальная сеть настроена правильно.
- НашелУстановщик PineCraft, чтобы я мог автоматизировать шаги.
- Скрипт установщика успешно завершен, со следующими оговорками.
Предостережения
- Установщик создает файлы init. Ubuntu использует systemd
- Сервер запускается как ,
$user
что требует$password
, или использованиеsudo
, что я не хочу делать каждый раз
Мне нужна помощь здесь
Я взял .service
файл изНастройка сервера Minecraft с помощью Systemd, и превратил его в это:
[Unit]
Description=Minecraft Server Pinecraft SysV init script conversion attempt
Documentation=https://github.com/Cat5TV/pinecraft
Wants=network.target
After=network.target
[Service]
User=minecraft
Group=minecraft
Nice=5
KillMode=none
SuccessExitStatus=0 1
#ProtectHome=true
ProtectSystem=full
PrivateDevices=true
NoNewPrivileges=true
PrivateTmp=true
InaccessiblePaths=/root /sys /srv -/opt /media -/lost+found
ReadWritePaths=/home/minecraft
WorkingDirectory=/home/minecraft
ExecStartPre=/usr/bin/screen -dmS PineCraft
ExecStart=/bin/bash /home/minecraft/server.sh
ExecStop=/bin/bash /home/minecraft/stop.sh
Restart=/bin/bash /home/minecraft/reboot.sh
[Install]
WantedBy=multi-user.target
- Я не могу понять, как «передать» результат скрипта на экран.
- Экран может быть всегда пустым, так как статус службы показывает «Активно Загружено/выйти». Я предполагаю, что скрипт
server.sh
завершен, но не остается загруженным/работающим - Если я запускаю строку java с аргументами aiker вне скрипта, сервер запускается без ошибок
Смотрите Create the Scripts
раздел, примерно на 3/4 пути внизустановить скрипт. Я устанавливал .service
файл только из пакета/менеджера пакетов. Мне никогда не приходилось его писать.
Обновлять
Частично решено: В этой настройке используется следующее задание cron:
crontab -u ubuntu -l
@reboot /usr/bin/screen -dmS Pinecraft /home/ubuntu/minecraft/server > /dev/null 2>&1
server
это имя скрипта оболочки до того, как я переименовал его для своей тестовой службы. Очевидно, на новой установке cron не запускается по умолчанию и systemctl | grep cron
ничего не вернул. Простое sudo systemctl enable cron && sudo systemctl start cron
решение проблемы.
Я все еще оставляю это открытым, так как я хотел бы преобразовать это в собственную службу systemd.