-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript_armv7.sh
131 lines (112 loc) · 4.24 KB
/
script_armv7.sh
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
#!/bin/bash
# Logfile definieren
LOGFILE="/var/log/digitalflugbuch_setup.log"
# Ausgabe und Fehlerausgabe in die Logdatei umleiten
exec > >(tee -a "$LOGFILE") 2>&1
echo "-------------------------------------------"
echo "Start des Setups: $(date)"
echo "Logdatei: $LOGFILE"
echo "-------------------------------------------"
# Überprüfen und Konvertieren von Windows-Zeilenenden in Unix-Zeilenenden
if file "$0" | grep -q "with CRLF line terminators"; then
echo "Konvertiere Windows-Zeilenenden in Unix-Zeilenenden..."
sed -i 's/\r$//' "$0"
fi
# Abhängigkeiten installieren, falls nicht vorhanden
echo "Überprüfe, ob jq installiert ist..."
if ! command -v jq &>/dev/null; then
echo "jq nicht gefunden. Installiere jq..."
sudo apt-get update && sudo apt-get install -y jq
if [ $? -ne 0 ]; then
echo "Fehler: jq konnte nicht installiert werden."
exit 1
fi
fi
# GitHub-Repository und Release-Datei
REPO="stephanflug/digitales-Flugbuch"
ASSET_NAME="data.tar"
COMPOSE_FILE="compose.yaml"
# Verzeichnisse erstellen, falls nicht vorhanden
echo "Überprüfe und erstelle Verzeichnisse..."
mkdir -p /opt/digitalflugbuch/data/DatenBuch
if [ $? -ne 0 ]; then
echo "Fehler: Das Verzeichnis /opt/digitalflugbuch/data/DatenBuch konnte nicht erstellt werden."
exit 1
fi
# Vereinname abfragen
echo "Geben Sie den Namen des Vereins ein:"
read VEREINSNAME
if [ -z "$VEREINSNAME" ]; then
echo "Fehler: Kein Vereinsname angegeben."
exit 1
fi
# UUID erzeugen, falls uuidgen nicht verfügbar ist, verwenden wir /proc/sys/kernel/random/uuid
if command -v uuidgen &>/dev/null; then
IDNUMMER=$(uuidgen)
else
# Alternative Methode zur UUID-Generierung
IDNUMMER=$(cat /proc/sys/kernel/random/uuid)
fi
echo "Generierte ID: $IDNUMMER"
# Die neueste Release-Version abrufen
echo "Hole die neueste Release-URL..."
LATEST_RELEASE=$(curl -s https://api.github.com/repos/$REPO/releases/latest)
if [ -z "$LATEST_RELEASE" ]; then
echo "Fehler: Release-Daten konnten nicht abgerufen werden."
exit 1
fi
# Die Download-URL für das Asset extrahieren
ASSET_URL=$(echo $LATEST_RELEASE | jq -r ".assets[] | select(.name==\"$ASSET_NAME\") | .browser_download_url")
if [ "$ASSET_URL" != "null" ]; then
# Datei herunterladen
echo "Lade die neueste Datei herunter..."
wget -O /tmp/data.tar $ASSET_URL
if [ $? -ne 0 ]; then
echo "Fehler: Datei konnte nicht heruntergeladen werden."
exit 1
fi
# Datei entpacken
echo "Entpacke die Datei..."
tar -xvf /tmp/data.tar -C /opt/digitalflugbuch/
if [ $? -ne 0 ]; then
echo "Fehler: Datei konnte nicht entpackt werden."
exit 1
fi
echo "Entpacken abgeschlossen."
else
echo "Fehler: Die Datei $ASSET_NAME konnte nicht gefunden werden."
exit 1
fi
# Datei mit Vereinsnamen und UUID speichern - der Name bleibt immer IDnummer.txt
echo "Vereinsname: $VEREINSNAME" > /opt/digitalflugbuch/data/DatenBuch/IDnummer.txt
echo "ID: $IDNUMMER" >> /opt/digitalflugbuch/data/DatenBuch/IDnummer.txt
echo "Vereinsinformationen wurden gespeichert: /opt/digitalflugbuch/data/DatenBuch/IDnummer.txt"
# Die compose.yaml-Datei herunterladen
echo "Lade die compose.yaml-Datei herunter..."
curl -L -o /opt/digitalflugbuch/$COMPOSE_FILE https://raw.githubusercontent.com/$REPO/main/$COMPOSE_FILE
if [ $? -ne 0 ]; then
echo "Fehler: compose.yaml konnte nicht heruntergeladen werden."
exit 1
fi
# Berechtigungen setzen
echo "Setze Berechtigungen für /opt/digitalflugbuch/data..."
sudo chown -R 1000:1000 /opt/digitalflugbuch/data
if [ $? -ne 0 ]; then
echo "Fehler: Berechtigungen konnten nicht gesetzt werden."
exit 1
fi
# Docker-Container starten
echo "Starte Docker-Container..."
docker run -d --name digitalflugbuch --privileged \
-p 1880:1880 -p 1883:1883 --restart unless-stopped \
--device /dev/gpiomem --device /dev/spidev0.0 --device /dev/spidev0.1 \
-v /opt/digitalflugbuch/data:/data \
-v /opt/digitalflugbuch/data/mqtt:/data/mqtt \
-v /opt/digitalflugbuch/data/nodered:/data/nodered \
-v /opt/digitalflugbuch/data/python3:/data/python3 \
stephanflug/iotsw:armv7V1
if [ $? -ne 0 ]; then
echo "Fehler: Docker-Container konnte nicht gestartet werden."
exit 1
fi
echo "Setup abgeschlossen. Überprüfen Sie die Logdatei unter $LOGFILE"