Ejecutar como un servicio
A continuación creamos los servicios para que nuestros nodos puedan ejecutarse de forma automática.

Archivo env

Creamos un shell script que luego utilizaremos para arrancar el nodo usando systemctl.
RELAY
BLOCK
~/cardano-node/relay/env
1
TOPOLOGY=/home/ubuntu/cardano-node/relay/topology.json
2
DATABASE_PATH=/home/ubuntu/cardano-node/relay/db
3
SOCKET_PATH=/home/ubuntu/cardano-node/relay/db/socket
4
HOST_ADDR=0.0.0.0
5
PORT=3001
6
CONFIG=/home/ubuntu/cardano-node/relay/config.json
Copied!
~/cardano-node/block/env
1
TOPOLOGY=/home/ubuntu/cardano-node/block/topology.json
2
DATABASE_PATH=/home/ubuntu/cardano-node/block/db
3
SOCKET_PATH=/home/ubuntu/cardano-node/block/db/socket
4
HOST_ADDR=0.0.0.0
5
PORT=3000
6
CONFIG=/home/ubuntu/cardano-node/block/config.json
7
SHELLEY_KES_KEY=/home/ubuntu/cardano-node/block/BP.kes.skey
8
SHELLEY_VRF_KEY=/home/ubuntu/cardano-node/block/BP.vrf.skey
9
SHELLEY_OPCERT=/home/ubuntu/cardano-node/block/BP.node.opcert
Copied!

Archivo de servicio

Creamos un archivo de servicio para poder programar y administrar el servicio usando systemctl. Debes iniciar tu editor de texto con sudo para poder guardar los cambios a estos archivos.
No usar el servicio para iniciar nuestro BP hasta después de haber generado nuestras llaves y registrado el pool. Hasta entonces se debe iniciar el nodo como un relay normal. Se incluye un un script "TEMP" como ejemplo.
RELAY
BLOCK
TEMP
/etc/systemd/system/RELAY.service
1
[Unit]
2
Description=Cardano Haskell Node - RELAY
3
After=syslog.target
4
StartLimitIntervalSec=0
5
6
[Service]
7
Type=simple
8
Restart=always
9
RestartSec=5
10
User=ubuntu
11
LimitNOFILE=131072
12
WorkingDirectory=/home/ubuntu/cardano-node/relay
13
EnvironmentFile=/home/ubuntu/cardano-node/relay/env
14
ExecStart=/home/ubuntu/.local/bin/cardano-node \
15
+RTS -N -RTS run \
16
--topology ${TOPOLOGY} \
17
--database-path ${DATABASE_PATH} \
18
--socket-path ${SOCKET_PATH} \
19
--host-addr ${HOST_ADDR} \
20
--port ${PORT} \
21
--config ${CONFIG}
22
KillSignal=SIGINT
23
StandardOutput=syslog
24
StandardError=syslog
25
SyslogIdentifier=RELAY
26
27
[Install]
28
WantedBy=multi-user.target
Copied!
/etc/systemd/system/BLOCK.service
1
[Unit]
2
Description=Cardano Haskell Node - BLOCK
3
After=syslog.target
4
StartLimitIntervalSec=0
5
6
[Service]
7
Type=simple
8
Restart=always
9
RestartSec=5
10
User=ubuntu
11
LimitNOFILE=131072
12
WorkingDirectory=/home/ubuntu/cardano-node/block
13
EnvironmentFile=/home/ubuntu/cardano-node/block/env
14
ExecStart=/home/ubuntu/.local/bin/cardano-node \
15
+RTS -N -RTS run \
16
--topology ${TOPOLOGY} \
17
--database-path ${DATABASE_PATH} \
18
--socket-path ${SOCKET_PATH} \
19
--host-addr ${HOST_ADDR} \
20
--port ${PORT} \
21
--config ${CONFIG} \
22
--shelley-kes-key ${SHELLEY_KES_KEY} \
23
--shelley-vrf-key ${SHELLEY_VRF_KEY} \
24
--shelley-operational-certificate ${SHELLEY_OPCERT}
25
KillSignal=SIGINT
26
StandardOutput=syslog
27
StandardError=syslog
28
SyslogIdentifier=BLOCK
29
30
[Install]
31
WantedBy=multi-user.target
Copied!
/etc/systemd/system/BLOCK.service
1
[Unit]
2
Description=Cardano Haskell Node - BLOCK
3
After=syslog.target
4
StartLimitIntervalSec=0
5
6
[Service]
7
Type=simple
8
Restart=always
9
RestartSec=5
10
User=ubuntu
11
LimitNOFILE=131072
12
WorkingDirectory=/home/ubuntu/cardano-node/block
13
EnvironmentFile=/home/ubuntu/cardano-node/block/env
14
ExecStart=/home/ubuntu/.local/bin/cardano-node \
15
+RTS -N -RTS run \
16
--topology ${TOPOLOGY} \
17
--database-path ${DATABASE_PATH} \
18
--socket-path ${SOCKET_PATH} \
19
--host-addr ${HOST_ADDR} \
20
--port ${PORT} \
21
--config ${CONFIG}
22
KillSignal=SIGINT
23
StandardOutput=syslog
24
StandardError=syslog
25
SyslogIdentifier=BLOCK
26
27
[Install]
28
WantedBy=multi-user.target
Copied!

Administrar nuestro servicio

Podemos usar los siguientes comandos para administrar nuestro servicio de cardano-node.
RELAY
BLOCK
1
# Habilitar arranque automatico del nodo al encender el servidor
2
sudo systemctl enable RELAY
3
4
# Habilitar arranque automatico e iniciar servicio inmediatamente (opcional)
5
sudo systemctl enable --now RELAY
6
7
# Iniciar servicio
8
sudo systemctl start RELAY
9
10
# Detener servicio
11
sudo systemctl stop RELAY
12
13
# Ver estado del servicio
14
sudo systemctl status RELAY
Copied!
1
# Habilitar arranque automatico del nodo al encender el servidor
2
sudo systemctl enable BLOCK
3
4
# Habilitar arranque automatico e iniciar servicio inmediatamente (opcional)
5
sudo systemctl enable --now BLOCK
6
7
# Iniciar servicio
8
sudo systemctl start BLOCK
9
10
# Detener servicio
11
sudo systemctl stop BLOCK
12
13
# Ver estado del servicio
14
sudo systemctl status BLOCK
Copied!