Ta strona wygląda najlepiej z włączoną obsługą JavaScript

Jak zainstalować n8n i uruchomić go podczas uruchamiania systemu dzięki systemd unit

 ·  ☕ 3 min czytania  ·  🐧 sysadmin
  1. Utwórz plik:
1
touch n8n-install.sh
  1. Wprowadź poniższą zawartość do pliku:
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#!/bin/bash -e

log() {
  echo "[$(date +'%Y-%m-%d %H:%M:%S')]: $*"
}

# Funkcja wyświetlająca spinner
display_spinner() {
  local pid=$1
  local spin='-\|/'

  log "Ładowanie..."

  while [ "$(ps a | awk '{print $1}' | grep $pid)" ]; do
    local temp=${spin#?}
    printf "\r [%c]" "$spin"
    local spin=$temp${spin%"$temp"}
    sleep 0.1
  done
  printf "\r"
}

row=2
col=2

countdown() {
        msg="Poczekaj 30 sekund na ${1} n8n..."
        clear
        tput cup $row $col
        echo -n "$msg"
        l=${#msg}
        l=$(( l+$col ))
        for i in {30..1}
        do
                tput cup $row $l
                echo -n "$i"
                sleep 1
        done
}

execute_command() {
  local cmd="$*"
  log "Wykonuję: $cmd"
  bash -c "$cmd" &
  display_spinner $!
}

error_exit() {
  log "$1"
  exit 1
}

check_root(){
  echo "Ten skrypt szybkiej instalacji wymaga uprawnień root."
  echo "Sprawdzanie..."
  if [[ $(/usr/bin/id -u) -ne 0 ]]; 
    then
      echo "Nie uruchomiono jako root"
      exit 0
  else
      echo "Instalacja kontynuowana"
  fi

  SUDO=
  if [ "$UID" != "0" ]; then
        if [ -e /usr/bin/sudo -o -e /bin/sudo ]; then
                SUDO=sudo
        else
                echo "*** Ten skrypt szybkiej instalacji wymaga uprawnień root."
                exit 0
        fi
  fi
}

update_upgrade(){
  echo 'aktualizacja systemu'
  sudo apt update
  sudo apt upgrade -y
}

check_packages(){
  if [[ $(command -v build-essential) ]]; then
    echo "build-essential już zainstalowany"
  else
    sudo apt install build-essential -y 
  fi

  if [[ $(command -v python3) ]]; then
    echo "python3 już zainstalowany"
  else
    sudo apt install python3 -y
  fi

  if [[ $(command -v nodejs) ]]; then
    echo "nodejs już zainstalowany"
  else
    sudo apt install nodejs -y
  fi

  if [[ $(command -v npm) ]]; then
    echo "npm już zainstalowany"
  else
    sudo apt install npm -y
  fi
}

install_n8n(){
  execute_command "echo 'instaluję n8n globalnie'"
  npm install n8n -g
}

adding_systemd_entry(){
  echo 'dodawanie wpisu systemd'
  sudo cat > /etc/systemd/system/n8n.service <<EOF
[Unit]
Description=n8n - Łatwa automatyzacja zadań między różnymi usługami.
After=network.target

[Service]
Type=simple
User=adrian
ExecStart=/usr/local/bin/n8n start --tunnel
Restart=on-failure

[Install]
WantedBy=multi-user.target
Alias=n8n.service
EOF
}

n8n

_service(){
  echo 'przeładowanie, włączanie przy uruchomieniu i startowanie n8n'
  sudo systemctl daemon-reload
  sudo systemctl enable n8n
  sudo systemctl start n8n
}

n8n_status(){
  systemctl status n8n.service
}

main(){
  check_root
  update_upgrade
  check_packages
  install_n8n
  adding_systemd_entry
  n8n_service
  countdown
  n8n_status
}

main
  1. Zapisz i zamknij.

  2. Nadaj uprawnienia:

1
chmod +x n8n-install.sh
  1. Wykonaj poniższy skrypt, aby uruchomić:
1
./n8n-install.sh
  1. Sprawdź adres IP maszyny, na której wykonano skrypt, używając poniższego polecenia:
1
hostname -I
  1. Otwórz przeglądarkę i wklej adres IP oraz port
http://IP_ADDRESS:5678
  1. Utwórz login i hasło dla n8n.

  2. To wszystko. n8n działa. Miłego korzystania!

Podziel się

sysadmin
UTWORZONE PRZEZ
sysadmin
QA & Linux Specialist