PM2 / Monit - Migración al systemd

Asegúrese de haber iniciado sesión como usuario no root que se utiliza para ejecutar zend y el tracker de nodos seguro.

  • Instalar paquetes de la guía oficial.
  • Detener el rastreador con pm2.
  • Actualización del rastreador (tracker) a la versión 10.12.0 
  • Crear unidades systemd para el rastreador de nodos (node tracker).
  • Iniciar el rastreador (tracker) con systemd.
  • Pare zend con monit.
  • Crear unidades systemd para zend.
  • Inicie zend con systemd.
  • Verificar el estado de zend y zendtracker.
  • Habilitar unidades de servicio en el arranque.
  • Asegúrese de que Firewall sea monitoreado por systemd.
  • Mata y elimina pm2.
  • Eliminar y purgar monit.
  • acme.sh - Migración a certbot


DescripciónComando
1

Instalar el repositorio universal y los paquetes para certbot y asegurarse de que otros paquetes estén instalados y actualizados desde la guía oficial.

sudo apt install software-properties-common -y

Salta esta instrucción si tienes un Sistema Debian, NO SALTAR OTRAS INSTRUCCIONES EN ESTE PASO 

sudo add-apt-repository universe -y

Asegurarse de copiar el comando entero, especialmente para comandos largos.

sudo apt-get install build-essential software-properties-common apt-transport-https lsb-release dirmngr pwgen git jq ufw curl aria2 -y
2Actualice el caché del paquete.
sudo apt-get update
3

Instale curl y agregue el repositorio nodejs y actualice el paquete caché.


NOTA: Omita este paso para Ubuntu

Debian 9 solamente

sudo apt-get install curl -y
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get update 
4Instale npm, actualizándolo a la última versión.
sudo apt-get install npm -y && sudo npm install -g n && sudo n latest
5

Detener el rastreador de nodos (node tracker).

NOTA: Si por alguna razón tiene más de un rastreador ejecutándose en pm2, puede tener que cambiar "0" al número que corresponde con su rastreador y detenerlos también. Puede obtener una lista de los números ejecutando: pm2 list

pm2 stop 0
6Cambia el directorio a donde el rastreador de nodos (node tracker) fue clonado, esta dirección sería  ~/nodetracker para la guía oficial. Para versiones menos recientes y para otras guías sería ~/zencash/secnodetracker for older documentation or other guides
cd ~/nodetracker

Ejecuta el siguiente comando si el comando de arriba falla debido a que el directorio no existe.

mv ~/zencash/secnodetracker ~/nodetracker && cd ~/nodetracker
7Actualiza git con la nueva URL del repositorio y recupera el último código fuente
git checkout -- package.json
git remote set-url origin https://github.com/ZencashOfficial/nodetracker.git
git fetch origin
git checkout master
git pull

NOTA: Si git devuelve un error con respecto a cualquier archivo, ejecute el siguiente comando (reemplazando 'filename con el archivo que le causo error, desplegado en el mensaje de error) y repita los comandos anteriores.

git checkout -- filename
8Instale el último conjunto de módulos de nodos necesarios para el rastreador.
npm install

Solamente ejecuta los pasos 9 y 10 si estos aún no se han ejecutado. Si ya actualizaste al rastreador de nodos (node tracker) 0.3.1, estos pasos ya están completados.
9

Ubique las direcciones IPv4 y / o IPv6 públicas de su nodo y añádalas al archivo zen.conf como direcciones IP externas conectadas a través del puerto 9033 (predeterminado)

SOLO LOS SUPER NODOS SON NECESITAN REALIZAR CADA COMANDO EN ESTE PASO

LOS NODOS SEGUROS REQUIEREN AL MENOS UNA DIRECCIÓN EXTERNA Y PUERTO AÑADIDAS EN ZEN.CONF

NOTA: los nodos seguros solo requieren un tipo de IP, los Super Nodos requieren ambos tipos.

NOTA: Reemplace <IPv4> con el IPv4 público de su nodo, elimine <corchetes>

NOTA: Reemplace <IPv6> con el IPv6 público de su nodo en notación comprimida sin ceros a la izquierda, elimine <corchetes>

Utilice el siguiente enlace para asegurarse de que su dirección IPv6 esté en notación comprimida:

https://www.ultratools.com/tools/ipv6Compress

Cree variables ambientales para IPv4.

IPV4=<IPv4>

Añada el IPv4 externo a zen.conf

echo "externalip=$IPV4" >> ~/.zen/zen.conf

Cree variables ambientales para IPv6.

IPV6=<IPv6>

Añada el IPv6 externo a zen.conf

echo "externalip=$IPV6" >> ~/.zen/zen.conf

Añada el puerto a zen.conf - NODO SEGURO Y SUPER NODO

echo "port=9033" >> ~/.zen/zen.conf
10

Ejecute nuevamente la configuración del nodo para actualizar la lista de servidores de seguimiento e inicialice el nuevo rastreador (tracker), presione enter a través de cada uno de los valores para retener el conjunto actual

  • Ingrese 'secure' para la solicitud en la categoría 'node category'.
node setup.js
11Pare zend con monit, luego pare monit. Se muestra que ambos comandos se detienen a través de systemctl y sysinit (solo se necesita uno, pero ambos están aquí para completar)
sudo monit stop zend && sleep 8
sudo systemctl stop monit
sudo service monit stop
12Cree un archivo de unidad systemd para zend, copie y pegue todo el bloque de texto.
echo \
"[Unit]
Description=Zen daemon

[Service]
User=$USER
Type=forking
ExecStart=/usr/bin/zend -daemon -pid=$HOME/.zen/zend.pid
PIDFile=$HOME/.zen/zend.pid
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target" | sudo tee /lib/systemd/system/zend.service
13Pruebe el archivo de la unidad zend.
sudo systemctl start zend && sleep 30
14

Cree un archivo de unidad systemd para el Rastreador de Nodo (Node Tracker), copie y pegue todo el bloque de texto

echo \
"[Unit]
Description=Zen node daemon installed on ~/nodetracker/

[Service]
User=$USER
Type=simple
WorkingDirectory=$HOME/nodetracker/
ExecStart=$(which node) $HOME/nodetracker/app.js
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target" | sudo tee /lib/systemd/system/zentracker.service
15Pruebe el archivo de la unidad de seguimiento (tracker).
sudo systemctl start zentracker
16Siga el resultado del registro del rastreador (tracker) para verificar que todo se vea bien, si todo parece correcto, salga con CTRL + C
sudo journalctl -fu zentracker


Example Output

zenops@node01~$ sudo journalctl -fu zentracker
-- Logs begin at Tue 2018-05-22 12:54:41 EDT. --
May 24 21:34:28 node01 node[42000]: 2018-05-25 01:34:28 GMT -- Connected to server ts1.na. Initializing...
May 24 21:34:28 node01 node[42000]: Secure Node t_address (not for stake)=znXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
May 24 21:34:28 node01 node[42000]: Balance for challenge transactions is 0.0247
May 24 21:34:28 node01 node[42000]: Using the following address for challenges
May 24 21:34:28 node01 node[42000]: zcXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
May 24 21:34:29 node01 node[42000]: 2018-05-25 01:34:29 GMT -- Authenticated
May 24 21:34:29 node01 node[42000]: 2018-05-25 01:34:29 GMT -- Updated server list
May 24 21:34:29 node01 node[42000]: 2018-05-25 01:34:29 GMT -- Stats: send initial stats.
May 24 21:34:29 node01 node[42000]: 2018-05-25 01:34:29 GMT -- Stats received by ts1.na
May 24 21:34:29 node01 node[42000]: 2018-05-25 01:34:29 GMT -- Cert check: valid=true. Hostname node01.zentest.win
matches CN node01.zentest.win

17

Revisa el estado de ambos, de zend y el rastreador (tracker), estos dos deben de desplegar "active (running)". Si la revisión de estado no te regresa al comando de línea, salga de la revisión de estado presionando CTRL + C.

sudo systemctl status zend zentracker


Example Output

zenops@node01:~$ sudo systemctl status -n 0 zend zentracker
 zend.service - Zen daemon
Loaded: loaded (/lib/systemd/system/zend.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2018-05-24 22:31:30 EDT; 34s ago
Process: 21612 ExecStart=/usr/bin/zend -daemon -pid=/home/zenops/.zen/zend.pid (code=exited, status=0/SUCCESS)
Main PID: 21615 (zend)
Tasks: 16
Memory: 810.0M
CPU: 18.963s
CGroup: /system.slice/zend.service
└─21615 /usr/bin/zend -daemon -pid=/home/zenops/.zen/zend.pid

May 24 22:31:30 node01 systemd[1]: Starting Zen daemon...
May 24 22:31:30 node01 zend[21612]: Zen server starting
May 24 22:31:30 node01 systemd[1]: zend.service: PID file /home/zenops/.zen/zend.pid not readable (yet?) after start: No such file or directory
May 24 22:31:30 node01 systemd[1]: Started Zen daemon.

 zentracker.service - Zen node daemon installed on ~/nodetracker/

Loaded: loaded (/lib/systemd/system/zentracker.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2018-05-24 21:34:27 EDT; 1h 1min ago
Main PID: 19648 (node)
Tasks: 10
Memory: 38.9M
CPU: 4.110s
CGroup: /system.slice/zentracker.service
└─19648 /usr/local/bin/node /home/zenops/nodetracker/app.js

18Si ambos funcionan correctamente, habilítelos en el arranque.
sudo systemctl enable zend zentracker
19

Use systemctl para habilitar el firewall.

NOTA: Muchas guías carecían de habilitar esto bajo systemctl.

Si el firewall no está instalado, ver: Parte 5 - Asegurando el Host

sudo ufw -f enable
sudo systemctl start ufw
sudo systemctl enable ufw
sudo systemctl status ufw


Example Output

zenops@node01:~$ sudo systemctl status ufw
[sudo] password for zenops:
ufw.service - Uncomplicated firewall
Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enabled)
Active: active (exited) since Sat 2018-05-26 16:03:39 EDT; 23min ago
Process: 603 ExecStart=/lib/ufw/ufw-init start quiet (code=exited, status=0/SUCCESS)
Main PID: 603 (code=exited, status=0/SUCCESS)
Tasks: 0
Memory: 0B
CPU: 0
CGroup: /system.slice/ufw.service

May 26 16:03:39 node01 systemd[1]: Started Uncomplicated firewall.

20Eliminar pm2 del inicio.
sudo rm /etc/systemd/system/pm2*
sudo rm /etc/systemd/system/multi-user.target.wants/pm2*
21

Aborta el proceso y elimina PM2 (si todo lo anterior se ejecutó sin error)

Puede ver un mensaje sobre la actualización de npm, puede ignorar esto

pm2 kill
sudo npm remove pm2 -g
sudo rm -r ~/.pm2


Example Output

zenops@node01:~$ pm2 kill
[PM2] Stopping PM2...
[PM2] Applying action deleteProcessId on app [all](ids: 0)
[PM2] [securenodetracker](0) ✓
[PM2] All processes have been stopped and deleted
[PM2] PM2 stopped


Example Output

zenops@node01:~$ sudo npm remove pm2 -g
removed 135 packages in 2.873s

22

Elimine monit que arranque del inicio (es posible que no necesite ambos comandos, ambos están presentes para acomodar el script systemd o init)

Ejecute ambos comandos si no está seguro de qué manera se configuró Monit


NOTA: Se espera que vea un error si ejecuta el comando que no corresponde a como se configuró Monit. Puede descartar de forma segura los errores del único comando de los dos presentados aquí.

sudo systemctl disable monit
sudo update-rc.d monit remove
23

Remueve y purga monit del sistema y elimina los repositorios antiguos (si todo lo anterior se ejecutó sin error)


sudo apt-get remove monit -y
sudo apt-get purge monit -y
sudo apt-get -y autoremove
rm -rf ~/zen_node.sh
24

acme.sh - Migración al certbot 




© 2019 Horizen. All rights reserved.