Ir al contenido principal

nodejs right way to made daemon services

.. do you use node server command? dont use shitty containers for stupid windosers? foudn a so dumb stupid unit files in stackoverflow and cannot made a right well made unit service? ok i have it ! check this entry and use this right made scritps in your servers.. all the code is CC-BY-SA licensed by the way.. i provide script unit files for SHITstemd, sysvinit, openrc and some more.. 


Why runing as service, why not docker?

Please, i will skip stupid questions, you can runs several docker containers in team to provide a big service, but docker is just a toy with limits.. big deploys just use bare metals.. 

Why not just send to background the service with noup etc etc?

The system must control the daemons.. such daemons must be supervised..so then i also skip several stupid questions.. 

Take in consideration the name of the script (nodeapp) vs the executable (nodejs)?

The service is run by nodejs/node but the app is not nodejs, in this example will be called "nodeappp", the process manager will show "/usr/bin/node server index.js".. but the thread will be "nodeapp", change the nodeapp name with your app node project, but your path must be also named as is... so then

  1. The application name is nodeapp
  2. base parent directory of your application web is /var/lib/node
  3. working directory base of your application web then is /var/lib/node/nodeapp
  4. entry point of your application web is index.js
  5. the web application will run as normal user, by www-data user


USING SHITSTEMD

This is pretty versatile, but also so inflexible, you can made a derived from this script unit file and run several different apps with same unit file using "@" etc etc, but the permission checks are handled separately and this is not so good.. for you not for the system.. by example it does not implement reloading in well way.. so log file must be use the append way and just cutting off by logrotate. Of course, shitstemd already manages their own logging but that is not in sync with the application ..

If you try to search will find that most of the sites argin to use "simple" type and do not managed fail tolerant down, we managed restarting in fails here!

put i on as /usr/lib/systemd/system/nodeapp.service with:

[Unit]
Description=nodeapp
After = network.target syslog.target mysql.service maridb.service
Wants = network-online.target
StartLimitBurst=6

[Service]
Type=exec
Environment = NODE_ENV=production
ExecStart = /usr/bin/node server index.js
Restart = on-failure
RestartSec = 900ms
User = www-data
Group = www-data
WorkingDirectory = /var/lib/node/nodeapp
SyslogIdentifier = nodeapp
StandardOutput = append:/var/log/nodeapp.log

[Install]
WantedBy = multi-user.target

WARNING append log only works with systemd>230 if not just send to syslog and later separate it with a syslogrc rule

USING OPENRC init system

Openrc cannot handle management of fault tolerant like shitstemd, but it has the great "supervise-daemon", we then provide two flavors, the first one the most common you will find in stupid sites like statoverflow, the second one.. using the powerfully "supervise-daemon".

Openrc is default on Geento and also used in alpine linux and BSD systems, just put the unit script as path /etc/init.d/nodeapp

#!/sbin/openrc-run

NODE_ENV=production
export NODE_ENV=$NODE_ENV

name = nodejsapp
command = "/usr/bin/node"
command_user = "www-data"
command_args = "server index.js"
command_background = yes
directory = "/var/lib/node/${RC_SVCNAME}"
pidfile = "/run/nodejs/${RC_SVCNAME}.pid"
output_log = "/var/log/${RC_SVCNAME}.log"

depend() {
  use logger dns
  need net
  after firewall mysql postgresql
}

start_pre() {
    checkpath -d --owner $command_user:www-data --mode 0775 /var/lib/node
    checkpath -d --owner $command_user:www-data --mode 0775 /var/lib/node/${RC_SVCNAME}
    checkpath --file --owner $command_user:www-data --mode 0644 /var/lib/node/${RC_SVCNAME}.log
}

This will run a simpel node app, but in next we will use a real practice new software, wikijs with openrc and supervise-daemon, lest remembered that this script is CC-BY-SA

USING OPENRC + supervise-daemon

This was tested with production made wikijs on some companies, the service was runnig for many weeks, and the reload command is much superior rather than the shitstemd counterpart that is not well managed.

Here the app web name changed from "nodeapp" to "wikijs", there is no index.js but still a web app base directory that changes from /var/lib/node to /srv/web and the app dir path then is /srv/web/wikijs , the fault tolerant part will be managed by the powerfully supervise-daemoon that will be the real father of the running process, so the script will change from /etc/init.d/nodeapp to /etc/init.d/wikijs as:

#!/sbin/openrc-run

NODE_ENV=production
export NODE_ENV=$NODE_ENV

name = wikijs
command = "/usr/bin/node"
command_user = "wikijs"
command_args = "server"
directory = "/srv/web/${RC_SVCNAME}"
pidfile = "/run/${RC_SVCNAME}.pid"
output_log = "/srv/web/wikijs/${RC_SVCNAME}.log"
error_log = "/srv/web/wikijs/error.log"
retry = ${GRACEFUL_TIMEOUT:-60}

supervisor = supervise-daemon
supervise_daemon_args = "--env NODE_ENV='${NODE_ENV:-production}' --chdir '${WORK_DIR:-/srv/web/wikijs}' --stdout '${LOG_FILE:-/srv/web/wikijs/wikijs.log}' --stderr '${LOG_FILE:-/srv/web/wikijs/error.log}'"
respawn_delay = 90
respawn_max = 6

extra_started_commands = "reload"

depend() {
  use logger dns
  need net
  after firewall mysql postgresql
}
reload() {
  ebegin "Truncationg ${RC_SVCNAME} log files, please restart if you want only"
    checkpath -F --owner $command_user:www-data --mode 0644 /srv/web/wikijs/${RC_SVCNAME}.log
    checkpath -F --owner $command_user:www-data --mode 0644 /srv/web/wikijs/error.log
  eend $?
}
start_pre() {
    checkpath --directory --owner $command_user:www-data --mode 0775 /srv/web/wikijs
    checkpath --file --owner $command_user:www-data --mode 0644 /srv/web/wikijs/${RC_SVCNAME}.log
    checkpath --file --owner $command_user:www-data --mode 0644 /srv/web/wikijs/error.log
}
stop_pre() {
    sleep 2
}
stop_post() {
    if [ "${RC_CMD}" == "restart" ] ; then
        einfo "Waith for sync... "
        sleep 1
    fi
}

No lest see how is using sysvinit the most complex but the most ancient and simple to modify and tune it.

USING SYSVINIT scripts

This version will use the start-stop-daemon already present with Alpine linux and debian based distros, this means that you can add "-1 $LOGFILE -2 $LOGFILE" to manage loggin, for a distro agnostic please use telegram venenux groups for more.

This script was tested in Debian wheeze and Devuan daealus also.. so just works.

#!/bin/bash
### BEGIN INIT INFO
# Provides:          nodeapp
# Required-Start:    $remote_fs $named $syslog
# Required-Stop:     $remote_fs $named $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: nodeapp web
# Description:       web applications server by nodejs
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DAEMON_ARGS="server"
WORKDIR="/var/lib/node/nodeapp"
DESC="intranet nodeapp server"
NODEUSER=www-data
NODEGROUP=www-data
PIDWDIR=/run
NAME=nodeapp
DAEMON=/usr/bin/node
PIDFILE="$PIDWDIR/$NAME.pid"
LOGFILE="$WORKDIR/$NAME.log"

[ -x "$DAEMON" ] ||  { echo "can't find Node.js ($DAEMON)"  >&2; exit 0; }
[ -d "$PIDWDIR" ] || { mkdir -p -m 770 $PIDWDIR; }
[ -d "$WORKDIR" ] || { mkdir -p -m 770 $WORKDIR; }
[ -f "$LOGFILE" ] || { touch $LOGFILE; }
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
chown -R $NODEUSER:$NODEGROUP $WORKDIR

. /lib/lsb/init-functions

do_start()
{
    start-stop-daemon --start --quiet --chuid $NODEUSER --pidfile $PIDFILE  --background --chdir $WORKDIR --exec $DAEMON --test > /dev/null \
    || { [ "$VERBOSE" != no ] && log_daemon_msg  "Daemon already running $DESC" "$NAME"; return 1; }
    start-stop-daemon --start --quiet --chuid $NODEUSER --make-pidfile --pidfile $PIDFILE --background --no-close --chdir $WORKDIR --exec $DAEMON -- $DAEMON_ARGS >> $LOGFILE 2>&1 \
    || { [ "$VERBOSE" != no ] && log_daemon_msg  "could not be start $DESC" "$NAME" ; return 2; }
    [ "$VERBOSE" != no ] && log_daemon_msg  "started $DESC" "$NAME"
}

do_stop()
{
    start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --chdir $WORKDIR --chuid $NODEUSER --name $DAEMON
    RETVAL="$?"
    [ "$RETVAL" = 2 ] && return 2
    start-stop-daemon --stop --quiet --oknodo --retry=0/3/KILL/5 --pidfile $PIDFILE --chdir $WORKDIR --chuid $NODEUSER --exec $DAEMON -- $DAEMON_ARGS
    [ "$?" = 2 ] && return 2
    rm -f $PIDFILE
    [ "$VERBOSE" != no ] && [ "$RETVAL" = 1 ] && log_daemon_msg "$DESC not running" "$NAME"
    [ "$VERBOSE" != no -a "$RETVAL" = 0 ] && log_daemon_msg "$DESC stopped" "$NAME"
    return "$RETVAL"
}

do_reload() {
    return 0
}

do_status() {

    if [ -f $PIDFILE ]; then
      ispidactive=$(pidof $DAEMON | grep `cat $PIDFILE 2>&1` >/dev/null 2>&1)
        case "$?" in
            0) [ "$VERBOSE" != no ] && log_success_msg "$NAME is running";;
            1) [ "$VERBOSE" != no ] && log_success_msg "$NAME is not running";;
            2) [ "$VERBOSE" != no ] && log_success_msg "$NAME is runing orphaned, you must kill";;
        esac
    else
      log_success_msg "$NAME is not running and no zomby detected as $USER, of $NAME found"
      exit 3
    fi
  
}

case "$1" in
  start)
    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "NAME"
    do_start
    case "$?" in
    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
  stop)
    [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
    do_stop
    case "$?" in
    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
  restart|reload)
    log_daemon_msg "Restarting $DESC" "$INIT_SCRIPT_NAME_NOEXT"
    do_stop
    case "$?" in
      0|1)
    do_start
    case "$?" in
        0) log_end_msg 0 ;;
        1) log_end_msg 1 ;; # Old process is still running
        *) log_end_msg 1 ;; # Failed to start
    esac
    ;;
      *)
        # Failed to stop
    log_end_msg 1
    ;;
    esac
    ;;
  status)
    do_status
  ;;
  *)
    echo "Usage: $NAME {start|stop|restart|status}" >&2
    exit 3
    ;;
esac

exit 0

Comentarios

Entradas más populares de este blog

R.U.S.N.I.E.S. http://rusnies.opsu.gob.ve/

(ACTUALIZADO) la pagina fue reestablecida hay muchos cambios pero los usuarios no lo notaran, para verlos o informacion haz click aqui rusnies cambios y consejos para verlos 1) primer dia no se pudo hacer login, ni recuperando password! 2) segundo dia (mas abajo) al fin logeado! 3) para poder aunquesea ver tu planilla, pulsa aqui: planilla rusnies, soluciones algunas! 4)y aqui: tercer dia, algunos detalles arreglado, pero... todos los defectos son algo raros! -si no puedes entrar lee mas abajo, se explica porque y como acceder a tu cuenta en el R.U.N.E.S. -ojo quiero aclarar que un monton de inutiles no ingresaban bien la direccion y por ello no llegaban a ver nunca la pagina! porque ponian la "gov" en vez de "gob" ya que el pedazo de periodico no sabe escribir! 1) Primer dia del R.U.N.I.E.S. : (powered by apache+php+debian, pero estupidizado por los TSU y ingenieros informaticos graduados, que creen saber de programacion!) Cuan triste es ver m...

planilla de rusnies, algunas soluciones! principalmente para los que ya la hicieron!

(ACTUALIZADO) LEER PRIMERO ANTES DE COMENTAR POR FAVOR! la pagina del rusnies ya esta activa hay muchos cambios que los usuarios no notaran perro estan listados, para verlos haz clik aqui rusnies cambios un tip para los que ya la generaron! si conoces la URL de tu planilla (termina en letras mayusculas) puedes ingresarla directamente y obtendras la planilla! Los que tenga el gran Konqueror podran guardarla como si fuese un archivo cualquiera! el resto se les empotrara en los navegadores! pudiendo imprimirla pero no guardarla! esto se puede porque creo la peticion se hace directamente al php y este genera el postscript de la planilla! para los que no han generado su planilla pueden usar la chache de google y listo, como! hagan una busqueda del google para rusnies! pero no le den click al link, en la misma entrada esta unas letricas que dicen "en cache", si dan click ally podran entrar (funciona en la mayoria de los casos) Lo de la cahce sirve mas de noche, de di...

rusnies actualizada, nuevo php y apache actualizado!

AL parecer los ineptos tardaron mas de 5 dias normalizando una actualizacion de apache y php, aparte de ajustar configuraciones para evitar DOS y cuellos de botellas! ANALISIS PROFUNDO, algunos consejos Y ESPECTATIVAS POSITIVAS: Me complace felicitar a los "tecnicos" encargados ya que lograron reestablecer la normalidad en la web! (hasta ahora)! pero.... LAstimosamente las personas que hayan hecho la planilla deberan realizarla de nuevo CUIDADOSAMENTE,porque ineptamente los datos anteriores ahora no coordinaran! (eso era obvio de esperar!) debido a las actualizaciones que hicieron en los codigos fuentes relacionadas con la DB y los datos actuales! (los cuales estaban bien viejitos) LASTIMOSAMENTE TAMBIEN.. los datos se generan mal, deben tener cuidado y no imprimir a la ligera aunque esta informacion esta de mas pues cualquier persona con 4 dedos de frente revisa dos veces un evento tan importante como dicho registro! PARA LOS PROGRAMADORES les recomiendo lean el fina...

Venezuela Real : cuidado con basura mediatica

El miundo entero esta lleno de gente "pila", "avispada", en pocas palabras gente que solo vive de aprovechar oportunidades, llamandole a esta actividad burda "trabajo"! y venezuela desgraciadamente no es la excepcion, pue que en cualquier pais hay gente asi! Buscando informacion del sistema de educacion superior llege a una pagina estilo periodico (poco original, hacer de las entradas de un blog, un "multiperiodico") El blog es puro criticar, leyendo las primeras lineas hay objetividad, pero los articulos intentan demostrar desde un "falso punto neutral" oposicionismo, pero ninguna solucion.. Es facil criticar, dificil es mejorar... aprende a ser gente, no chismosa! Los gerentes y "profesionales" en el mundo entero es lo que hacer, criticar y culpar, esperando que les solucionen los problemas, justo como el marco usuario-guindo, donde el usuario estupidamente espera que un "flamante" encorbatado, le solucione la ...

Debian vs Devuan - the complete guide to choose

Devuan project aims to made a complete Linux distribution, but the fact its that tracks 90% of the Debian work. This article are up to date to Aug 2021 with release of bullseye. Debian its the mother of most famous distros, including Devuan! But must be considering that Devuan are now more faster but more. so lest see some important thing respect the recently "/usr merge" and "systemd home invassion" incoming things in future: We have two parts, overall differences, and more deep technical differences, recommended for those that will be used more than only to see movies or browse the internet! Before read the complete article , i currently used Devuan as main system, but please take in consideration that almost all notes seems negative; why? well Devuan are more efficient rather than Debian .. but if we take the overall user vision.. Devuan will fail as complete solution .

RTPmedia managers: rtpengine vs rtpproxy complete quick info

The idea is to permanently listen internally on the UDP port or on a local socket, controlling SIP signals messages. That is to say to control the flow of information and to where the answers are sent by means of these commands. Since these signals do not go directly to the SIP service but to the RTP NAT software, then the SIP service can tell the RTP service "give me that media stream, I know what to do" after sending it internally (to some other service) and receive an answer and then deliver it again and say "here is the flow response, send it to that device".

iso linux debian venenux tools

VNZ CD EMU tools suite now for i386(sarge-etch-lenny) and amd64(etch-lenny) ahora para i386(sarge-etch-lenny) y amd64(etch-lenny) For one reason or another, you may have image files laying around that you would like to access under Linux. Here are some nifty utilities to convert those pesky 'GUINdows' images into something Linux can understand (standard .iso format). Por una razon u otra, tu puedes tener que quisieras acceder en linux, Estas son algunas utilidades para convertir estas pestilentes 'GUINdows' imagenes en algo que linux pueda entender (imagen iso estandar) archivos imagenes Don't expect error correction codes and the like to be preserved, just the data... Generally speaking, these types of things are pretty irrelevant on linux to begin with. If you legally backed up some software of yours and made a 1:1 image of it under Windows, more than likely, your resulting ISO from the programs below will not contain this copy protection data. For o...

lista de chavista para aporrealos busquense aqui

NOTA : este no es un sitio escualido ! favor los chavistas leer primero, la estupidez agrava la situacion de chavez! la idea es ver lo que los escualidos hacen.... para restringir los chavistas n la red. lista fanatica de el sitio que restringe los mail y ip con tendencia chavista, segun ellos, este servicio es un favor publicado para aporrealos.. gracias sr PICCORO http://www.noolvidaremos.com/emailschavistas.html Lista de emails de chavistas actualizado 2008-Enero-15. No se han agregado mas emails solo se ha reformateado la lista para que sea mas agradable a la vista. Actualmente tenemos listas de otras comunidades, estamos esperando recaudar mas informacion para integrarlas todas. 7518521@hotmail.com a_paries@hotmail.com aangel497@gmail.com aantonio27@yahoo.com aarismendi14@hotmail.com abdallahdlp@hotpop.com abrilinsondable@gmail.com acjdoc14@hotmail.com acosta.ali@hotmail.com adelaca3101@gmail.com administrystaff@hotmail.com adolfogil2021@hotmail.com adritacjm@yahoo.es a...

Silverhawks+Thndercats : por que nos gusto a pesar de tener cosas ilogicas y mongolicas? E IBAN ESTAR JUNTOS!!!

Recientemente se realizo el Wondercon que ahora le dicen ThunderCon pero eso lo digo al final, esto es mas importante (para llorar) porque los nuevos thundercats son una cagada, no se emocionen el argumento es peor!! Pero hay mas los nuevos silverhawks (en preproduccion) es una basura!!!  De todas manera los viejos no eran la gran vaina, aqui explico porque: jejej les voy hacer recorda tiempos atras, si asi de malo soy, pero entre "tundelcats" y "j-alcones galacticos" despues de años analizo la "vaina" y me doy cuenta que quitando ciertos detalles el producto animado de los cuales cito son ESTUPIDOS! Eso no es nada, estas dos producciones iban estar juntas en un dia proximo (que llego tarde) vean esta foto del promo: Pero la pregunta es : ¿Porque gusto? La respuesta es simple: ciertos secuencias de animacion y la apariencia de los personajes. Antes de escribir de manera tecnica el porque le dejo este mensage a los tres que seguro les dara un inf...

Javascript: forms sin/without submit

Javascript : enviar formulario sin boton submit / form without submit button This code is a formulary, but submit button are a simple link!. Can be used better designed websites. Este codigo es un formulario, pero el boton submit es un link simple. Puede ser usado para mejorar el diseno. <FORM NAME="myForm" METHOD='GET'> input <INPUT TYPE="text" NAME="parameter1" VALUE='value1' SIZE=20> <BR> <P onClick="javascript:document.myForm.submit();" style='cursor:hand;' >click aqui</P> and sent whitout button submit.. </FORM> the trick is that the mouse event "onclick" defines at click release the execution of submit event document, adicionaly, the style is definet as "cursor:hand" for better multibrowser support that the "onmouseover" event, but this last is better for old browsers. El truco es...

Popular

R.U.S.N.I.E.S. http://rusnies.opsu.gob.ve/

(ACTUALIZADO) la pagina fue reestablecida hay muchos cambios pero los usuarios no lo notaran, para verlos o informacion haz click aqui rusnies cambios y consejos para verlos 1) primer dia no se pudo hacer login, ni recuperando password! 2) segundo dia (mas abajo) al fin logeado! 3) para poder aunquesea ver tu planilla, pulsa aqui: planilla rusnies, soluciones algunas! 4)y aqui: tercer dia, algunos detalles arreglado, pero... todos los defectos son algo raros! -si no puedes entrar lee mas abajo, se explica porque y como acceder a tu cuenta en el R.U.N.E.S. -ojo quiero aclarar que un monton de inutiles no ingresaban bien la direccion y por ello no llegaban a ver nunca la pagina! porque ponian la "gov" en vez de "gob" ya que el pedazo de periodico no sabe escribir! 1) Primer dia del R.U.N.I.E.S. : (powered by apache+php+debian, pero estupidizado por los TSU y ingenieros informaticos graduados, que creen saber de programacion!) Cuan triste es ver m...

planilla de rusnies, algunas soluciones! principalmente para los que ya la hicieron!

(ACTUALIZADO) LEER PRIMERO ANTES DE COMENTAR POR FAVOR! la pagina del rusnies ya esta activa hay muchos cambios que los usuarios no notaran perro estan listados, para verlos haz clik aqui rusnies cambios un tip para los que ya la generaron! si conoces la URL de tu planilla (termina en letras mayusculas) puedes ingresarla directamente y obtendras la planilla! Los que tenga el gran Konqueror podran guardarla como si fuese un archivo cualquiera! el resto se les empotrara en los navegadores! pudiendo imprimirla pero no guardarla! esto se puede porque creo la peticion se hace directamente al php y este genera el postscript de la planilla! para los que no han generado su planilla pueden usar la chache de google y listo, como! hagan una busqueda del google para rusnies! pero no le den click al link, en la misma entrada esta unas letricas que dicen "en cache", si dan click ally podran entrar (funciona en la mayoria de los casos) Lo de la cahce sirve mas de noche, de di...

rusnies actualizada, nuevo php y apache actualizado!

AL parecer los ineptos tardaron mas de 5 dias normalizando una actualizacion de apache y php, aparte de ajustar configuraciones para evitar DOS y cuellos de botellas! ANALISIS PROFUNDO, algunos consejos Y ESPECTATIVAS POSITIVAS: Me complace felicitar a los "tecnicos" encargados ya que lograron reestablecer la normalidad en la web! (hasta ahora)! pero.... LAstimosamente las personas que hayan hecho la planilla deberan realizarla de nuevo CUIDADOSAMENTE,porque ineptamente los datos anteriores ahora no coordinaran! (eso era obvio de esperar!) debido a las actualizaciones que hicieron en los codigos fuentes relacionadas con la DB y los datos actuales! (los cuales estaban bien viejitos) LASTIMOSAMENTE TAMBIEN.. los datos se generan mal, deben tener cuidado y no imprimir a la ligera aunque esta informacion esta de mas pues cualquier persona con 4 dedos de frente revisa dos veces un evento tan importante como dicho registro! PARA LOS PROGRAMADORES les recomiendo lean el fina...

Venezuela Real : cuidado con basura mediatica

El miundo entero esta lleno de gente "pila", "avispada", en pocas palabras gente que solo vive de aprovechar oportunidades, llamandole a esta actividad burda "trabajo"! y venezuela desgraciadamente no es la excepcion, pue que en cualquier pais hay gente asi! Buscando informacion del sistema de educacion superior llege a una pagina estilo periodico (poco original, hacer de las entradas de un blog, un "multiperiodico") El blog es puro criticar, leyendo las primeras lineas hay objetividad, pero los articulos intentan demostrar desde un "falso punto neutral" oposicionismo, pero ninguna solucion.. Es facil criticar, dificil es mejorar... aprende a ser gente, no chismosa! Los gerentes y "profesionales" en el mundo entero es lo que hacer, criticar y culpar, esperando que les solucionen los problemas, justo como el marco usuario-guindo, donde el usuario estupidamente espera que un "flamante" encorbatado, le solucione la ...

Debian vs Devuan - the complete guide to choose

Devuan project aims to made a complete Linux distribution, but the fact its that tracks 90% of the Debian work. This article are up to date to Aug 2021 with release of bullseye. Debian its the mother of most famous distros, including Devuan! But must be considering that Devuan are now more faster but more. so lest see some important thing respect the recently "/usr merge" and "systemd home invassion" incoming things in future: We have two parts, overall differences, and more deep technical differences, recommended for those that will be used more than only to see movies or browse the internet! Before read the complete article , i currently used Devuan as main system, but please take in consideration that almost all notes seems negative; why? well Devuan are more efficient rather than Debian .. but if we take the overall user vision.. Devuan will fail as complete solution .