Skip to content

Instantly share code, notes, and snippets.

@Sagleft
Last active November 11, 2022 15:48
Show Gist options
  • Save Sagleft/c5e63889f192312823784401eac735bf to your computer and use it in GitHub Desktop.
Save Sagleft/c5e63889f192312823784401eac735bf to your computer and use it in GitHub Desktop.
Автозапуск клиента Utopia в Headless Mode на примере CentOS

Автозапуск клиента Utopia в Headless Mode на примере CentOS

Это может быть необходимо, если вы создаете свой сервис (сайт, бота, etc) для Utopia Network, который будет использовать Utopia API.

Есть вариант более быстрой установки, готовый скрипт: https://gist.github.com/Sagleft/62d71f81ecf3fe23dce624fe182669cb (с этим скриптом сначала надо закинуть свой .db файл аккаунта в /home/account.db, затем запустить скрипт - установится Utopia, все необходимые пакеты, создастся сервис и запустится)

Сперва устанавливаем клиент Utopia:

rm -rf utopia-latest.x86_64.rpm
wget https://update.u.is/downloads/linux/utopia-latest.x86_64.rpm
yum install -y libxkbcommon-x11.x86_64 libGL pulseaudio-libs-glib2 libXi libSM libXrender fontconfig libxcb xcb-util-image xcb-util-renderutil gstreamer1-plugins-base-devel mesa-dri-drivers mesa-libGL mesa-libGLU libXcomposite libwayland-cursor libwayland-egl xcb-util-wm xcb-util-keysyms
rpm -ivh --replacepkgs utopia-latest.x86_64.rpm

или обновляем существующий клиент:

rm -rf utopia-latest.x86_64.rpm
wget https://update.u.is/downloads/linux/utopia-latest.x86_64.rpm
rpm -Uvh --replacepkgs utopia-latest.x86_64.rpm

Клиент Utopia будет установлен по пути: /opt/utopia/messenger/.

Создаем папку и файл конфигурации (ниже показан пример):

cd /home
nano utopia.cfg

и заполняем:

[General]
apiEnabled=true
apiHTTPEnabled=true
apiHTTPSEnabled=false
apiHelpEnabled=false
apiPort=22824
apiSslPort=10100
apiUserTokens=2FCD80B3113377A7241567A7E8FA637B
applicationLastOpenedPath=account.db
userDatabase=/home/account.db
userPassword=accountpassword

где

  • userPassword - пароль от .db файла аккаунта;
  • userDatabase - абсолютный путь к .db файлу аккаунта, относительный путь не будет работать;
  • apiUserTokens - токены для API, придумайте любой (любые). Если используете несколько токенов, то разделяйте их запятыми. Токен - HEX-строка длиной 32 символа;
  • apiEnabled - включаем ли API;
  • apiHTTPEnabled - принимаем ли запросы к API по HTTP? ставим в true;
  • apiHTTPSEnabled - ставим в false, так как запросы будем принимать с localhost;
  • apiPort - порт для приема запросов, проверьте, чтобы был открыт;
  • apiSslPort - если поставили true в параметре apiHTTPSEnabled, то здесь указываете https-порт;
  • apiHelpEnabled - если не будете открывать справку по API на localhost, то можно ставить в false.

создаем аккаунт (.db файл): (Внимание! Если не получилось, то можно использовать .db файл аккаунта, созданный в GUI клиенте. затем закинуть его к себе по FTP, если это удаленный сервер, к примеру)

/opt/utopia/messenger/utopia --create --headless configPath=/home/utopia.cfg

Затем перемещаем файл аккаунта в локальный каталог данных Utopia:

mv account.db /home/

Далее создаем скрипт автозапуска клиента в консольном режиме. Назовем его startopia:

touch /etc/systemd/system/startopia.service
chmod 664 /etc/systemd/system/startopia.service
nano /etc/systemd/system/startopia.service

Заполняем:

[Unit]
Description=Utopia Service
After=network.target

[Service]
Type=idle
WorkingDirectory=/opt/utopia/messenger
ExecStart=/opt/utopia/messenger/utopia --headless --configPath=/home/utopia.cfg
Restart=on-failure
RestartSec=3s

[Install]
WantedBy=multi-user.target

Перезагружаем демона syystemctl, добавляем сервис в автозагрузку и пробуем запустить Utopia:

systemctl daemon-reload
systemctl enable startopia.service
systemctl start startopia.service

Если возникнет ошибка, просмотреть детали можно через:

systemctl status startopia.service -l

Donate

Если вам помогла моя инструкция, вы можете помочь мне, чтобы я продолжал составлять подобные статьи и инструкции:

  • CRP (Utopia): D7765F16D3B217D565BC5C43A6848153E8C02958A0BA62CEEEB188C752E3E102
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment