-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.sh
More file actions
99 lines (80 loc) · 3.25 KB
/
Copy pathsetup.sh
File metadata and controls
99 lines (80 loc) · 3.25 KB
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
#!/bin/bash
# Verifica se lo script è eseguito con privilegi di root
if [[ $EUID -ne 0 ]]; then
echo "[ERRORE] Questo script deve essere eseguito come root." >&2
exit 1
fi
# Installa le dipendenze necessarie
echo "[INFO] Installazione delle dipendenze..."
# Installazione dei pacchetti necessari
for pkg in python3 python3-pip python3-venv ethtool wakeonlan gunicorn; do
if ! dpkg -s "$pkg" &> /dev/null; then
echo "[INFO] Installazione di $pkg..."
apt-get install -y "$pkg" > /dev/null 2>&1 || { echo "[ERRORE] Impossibile installare $pkg." >&2; exit 1; }
fi
done
# Determina l'interfaccia di rete predefinita
INTERFACE=$(ip -o -4 route show to default | awk 'NR==1 {print $5}')
if [[ -z "$INTERFACE" ]]; then
echo "[ERRORE] Impossibile determinare l'interfaccia di rete." >&2
exit 1
fi
# Directory di installazione
INSTALL_DIR="/usr/local/bin/SyncLab"
SERVICE_WOL="/etc/systemd/system/wol.service"
SERVICE_SYNCLAB="/etc/systemd/system/synclab.service"
# Verifica se la cartella SyncLab esiste nella directory corrente
if [[ ! -d SyncLab ]]; then
echo "[ERRORE] La cartella SyncLab non esiste nella directory corrente." >&2
exit 1
fi
# Rimuove la versione precedente se esiste e copia la nuova
rm -rf "$INSTALL_DIR"
echo "[INFO] Installazione di SyncLab in $INSTALL_DIR..."
mv SyncLab "$INSTALL_DIR"
# Crea l'ambiente virtuale
echo "[INFO] Creazione dell'ambiente virtuale..."
python3 -m venv "$INSTALL_DIR/venv" || { echo "[ERRORE] Impossibile creare l'ambiente virtuale." >&2; exit 1; }
# Installa le dipendenze senza attivare manualmente l'ambiente virtuale
echo "[INFO] Installazione delle dipendenze..."
"$INSTALL_DIR/venv/bin/pip" install --upgrade pip > /dev/null 2>&1
"$INSTALL_DIR/venv/bin/pip" install -r "$INSTALL_DIR/requirements.txt" > /dev/null 2>&1 || { echo "[ERRORE] Impossibile installare le dipendenze." >&2; exit 1; }
# Installa Gunicorn nell'ambiente virtuale
echo "[INFO] Installazione di Gunicorn..."
"$INSTALL_DIR/venv/bin/pip" install gunicorn > /dev/null 2>&1 || { echo "[ERRORE] Impossibile installare Gunicorn." >&2; exit 1; }
# Crea il servizio Wake-on-LAN
echo "[INFO] Creazione del servizio Wake-on-LAN..."
cat <<EOF > "$SERVICE_WOL"
[Unit]
Description=Enable Wake-on-LAN
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/ethtool -s $INTERFACE wol g
[Install]
WantedBy=multi-user.target
EOF
# Crea il servizio SyncLab con Gunicorn
echo "[INFO] Creazione del servizio SyncLab..."
cat <<EOF > "$SERVICE_SYNCLAB"
[Unit]
Description=SyncLab Service con Gunicorn
After=network-online.target local-fs.target
Wants=network-online.target
[Service]
ExecStart=$INSTALL_DIR/venv/bin/gunicorn --bind 0.0.0.0:50314 app:app
Restart=always
User=root
Group=root
WorkingDirectory=$INSTALL_DIR
[Install]
WantedBy=multi-user.target
EOF
# Ricarica systemd, abilita e avvia i servizi
echo "[INFO] Ricaricando systemd e abilitando i servizi..."
systemctl daemon-reload
systemctl enable --now wol.service synclab.service
# Verifica che i servizi siano attivi
systemctl is-active --quiet synclab.service || { echo "[ERRORE] Il servizio SyncLab non è attivo." >&2; exit 1; }
systemctl is-enabled --quiet wol.service || { echo "[ERRORE] Il servizio WOL non è attivo." >&2; exit 1; }
echo "[INFO] Installazione completata con successo!"