Blame
|
1 | # 20. Installation auf dem Raspberry Pi |
||||||
| 2 | ||||||||
| 3 | Diese Anleitung richtet sich an **absolute Einsteiger** und erklärt Schritt für Schritt, wie du FilaMan auf einem Raspberry Pi installierst. Es werden keine Vorkenntnisse vorausgesetzt -- nur ein Raspberry Pi, ein PC und etwas Geduld. |
|||||||
| 4 | ||||||||
| 5 | --- |
|||||||
| 6 | ||||||||
| 7 | ## 20.1 Was du brauchst (Voraussetzungen) |
|||||||
| 8 | ||||||||
| 9 | ### Hardware |
|||||||
| 10 | ||||||||
| 11 | | Komponente | Empfehlung | Hinweis | |
|||||||
| 12 | |---|---|---| |
|||||||
| 13 | | **Raspberry Pi** | Modell 3B+, 4 oder 5 | Ältere Modelle (Pi 1/2/Zero) sind zu schwach | |
|||||||
| 14 | | **Netzteil** | Offizielles Raspberry Pi Netzteil | USB-C (Pi 4/5) oder Micro-USB (Pi 3B+) | |
|||||||
| 15 | | **microSD-Karte** | Mindestens 16 GB, empfohlen 32 GB | Class 10 oder schneller | |
|||||||
| 16 | | **Netzwerk** | LAN-Kabel oder WLAN | LAN-Kabel ist stabiler und empfohlen | |
|||||||
| 17 | | **Gehäuse** (optional) | Beliebiges Pi-Gehäuse | Schützt den Pi und verbessert die Kühlung | |
|||||||
| 18 | ||||||||
| 19 | ### Software (auf deinem PC) |
|||||||
| 20 | ||||||||
| 21 | - **Raspberry Pi Imager** -- zum Beschreiben der SD-Karte ([Download hier](https://www.raspberrypi.com/software/)) |
|||||||
| 22 | - **SSH-Client** -- zum Verbinden mit dem Pi: |
|||||||
| 23 | - **Windows:** [PuTTY](https://www.putty.org/) oder das eingebaute Windows-Terminal (ab Windows 10) |
|||||||
| 24 | - **macOS / Linux:** Terminal (ist bereits vorinstalliert) |
|||||||
| 25 | ||||||||
| 26 | ### Netzwerk |
|||||||
| 27 | ||||||||
| 28 | - Der Raspberry Pi und dein PC müssen sich im **selben Netzwerk** befinden (gleiches WLAN oder am selben Router per Kabel) |
|||||||
| 29 | ||||||||
| 30 | --- |
|||||||
| 31 | ||||||||
| 32 | ## 20.2 Raspberry Pi OS installieren |
|||||||
| 33 | ||||||||
| 34 | Das Betriebssystem für den Raspberry Pi wird auf eine microSD-Karte geschrieben. Das geht am einfachsten mit dem **Raspberry Pi Imager**. |
|||||||
| 35 | ||||||||
| 36 | ### Schritt 1: Raspberry Pi Imager herunterladen |
|||||||
| 37 | ||||||||
| 38 | Lade den Imager von der offiziellen Webseite herunter und installiere ihn auf deinem PC: |
|||||||
| 39 | ||||||||
| 40 | > https://www.raspberrypi.com/software/ |
|||||||
| 41 | ||||||||
| 42 | ### Schritt 2: Imager starten und konfigurieren |
|||||||
| 43 | ||||||||
| 44 | 1. Stecke die **microSD-Karte** in deinen PC (ggf. mit SD-Kartenleser) |
|||||||
| 45 | 2. Öffne den **Raspberry Pi Imager** |
|||||||
| 46 | 3. Klicke auf **„Gerät wählen"** und wähle dein Raspberry Pi Modell aus |
|||||||
| 47 | 4. Klicke auf **„OS wählen"** und wähle: |
|||||||
| 48 | - **Raspberry Pi OS (other)** → **Raspberry Pi OS Lite (64-bit)** |
|||||||
| 49 | ||||||||
| 50 | > **Warum „Lite"?** Die Lite-Variante hat keine grafische Oberfläche und verbraucht weniger Ressourcen. FilaMan ist eine Web-Anwendung -- du bedienst sie über den Browser deines PCs, nicht am Pi selbst. |
|||||||
| 51 | ||||||||
| 52 | 5. Klicke auf **„SD-Karte wählen"** und wähle deine microSD-Karte aus |
|||||||
| 53 | ||||||||
| 54 | > **Achtung:** Alle Daten auf der SD-Karte werden gelöscht! |
|||||||
| 55 | ||||||||
| 56 | ### Schritt 3: Erweiterte Einstellungen konfigurieren |
|||||||
| 57 | ||||||||
| 58 | Klicke auf **„Weiter"** und dann auf **„Einstellungen bearbeiten"**. Hier konfigurierst du wichtige Grundeinstellungen: |
|||||||
| 59 | ||||||||
| 60 | **Reiter „Allgemein":** |
|||||||
| 61 | ||||||||
| 62 | | Einstellung | Empfehlung | Erklärung | |
|||||||
| 63 | |---|---|---| |
|||||||
| 64 | | **Hostname** | `filaman` | Unter diesem Namen ist der Pi im Netzwerk erreichbar | |
|||||||
| 65 | | **Benutzername** | `pi` | Dein Benutzername für die Anmeldung am Pi | |
|||||||
| 66 | | **Passwort** | Ein sicheres Passwort | Merke dir dieses Passwort gut! | |
|||||||
| 67 | | **WLAN konfigurieren** | Dein WLAN-Name und Passwort | Nur nötig wenn du kein LAN-Kabel verwendest | |
|||||||
| 68 | | **Gebietsschema** | Deine Zeitzone und Tastaturlayout | z. B. Europe/Berlin, de | |
|||||||
| 69 | ||||||||
| 70 | **Reiter „Dienste":** |
|||||||
| 71 | ||||||||
| 72 | - Setze den Haken bei **„SSH aktivieren"** |
|||||||
| 73 | - Wähle **„Passwort zur Authentifizierung verwenden"** |
|||||||
| 74 | ||||||||
| 75 | > **Was ist SSH?** SSH (Secure Shell) ermöglicht es dir, den Raspberry Pi von deinem PC aus über die Kommandozeile fernzusteuern -- ohne dass ein Bildschirm am Pi angeschlossen sein muss. |
|||||||
| 76 | ||||||||
| 77 | Klicke auf **„Speichern"** und dann auf **„Ja"**, um das OS auf die SD-Karte zu schreiben. |
|||||||
| 78 | ||||||||
| 79 | ### Schritt 4: Raspberry Pi starten |
|||||||
| 80 | ||||||||
| 81 | 1. Warte bis der Schreibvorgang abgeschlossen ist |
|||||||
| 82 | 2. Entferne die microSD-Karte sicher vom PC |
|||||||
| 83 | 3. Stecke die microSD-Karte in den Raspberry Pi |
|||||||
| 84 | 4. Schließe das Netzwerkkabel an (falls du LAN verwendest) |
|||||||
| 85 | 5. Schließe das Netzteil an -- der Pi startet automatisch |
|||||||
| 86 | 6. Warte ca. **1--2 Minuten**, bis der Pi vollständig hochgefahren ist |
|||||||
| 87 | ||||||||
| 88 | --- |
|||||||
| 89 | ||||||||
| 90 | ## 20.3 Mit dem Raspberry Pi verbinden (SSH) |
|||||||
| 91 | ||||||||
| 92 | Jetzt verbindest du dich von deinem PC aus mit dem Raspberry Pi. |
|||||||
| 93 | ||||||||
| 94 | ### IP-Adresse herausfinden |
|||||||
| 95 | ||||||||
| 96 | Du brauchst die IP-Adresse deines Raspberry Pi. Es gibt mehrere Möglichkeiten: |
|||||||
| 97 | ||||||||
| 98 | **Option A: Über den Hostnamen (einfachste Methode)** |
|||||||
| 99 | ||||||||
| 100 | Wenn du den Hostnamen `filaman` eingestellt hast, versuche: |
|||||||
| 101 | ||||||||
| 102 | ```bash |
|||||||
| 103 | ping filaman.local |
|||||||
| 104 | ``` |
|||||||
| 105 | ||||||||
| 106 | Die Antwort zeigt dir die IP-Adresse (z. B. `192.168.1.42`). |
|||||||
| 107 | ||||||||
| 108 | **Option B: Im Router nachschauen** |
|||||||
| 109 | ||||||||
| 110 | 1. Öffne die Weboberfläche deines Routers (meist `192.168.1.1` oder `192.168.178.1` bei Fritz!Box) |
|||||||
| 111 | 2. Suche in der Geräteliste nach „filaman" oder „raspberrypi" |
|||||||
| 112 | 3. Notiere die angezeigte IP-Adresse |
|||||||
| 113 | ||||||||
| 114 | **Option C: Netzwerk scannen** |
|||||||
| 115 | ||||||||
| 116 | Auf deinem PC kannst du alternativ folgenden Befehl nutzen: |
|||||||
| 117 | ||||||||
| 118 | ```bash |
|||||||
| 119 | # macOS / Linux: |
|||||||
| 120 | arp -a | grep raspberry |
|||||||
| 121 | ||||||||
| 122 | # Windows (PowerShell): |
|||||||
| 123 | arp -a |
|||||||
| 124 | ``` |
|||||||
| 125 | ||||||||
| 126 | ### SSH-Verbindung herstellen |
|||||||
| 127 | ||||||||
| 128 | **macOS / Linux (Terminal):** |
|||||||
| 129 | ||||||||
| 130 | ```bash |
|||||||
| 131 | ssh pi@filaman.local |
|||||||
| 132 | ``` |
|||||||
| 133 | ||||||||
| 134 | Oder mit der IP-Adresse: |
|||||||
| 135 | ||||||||
| 136 | ```bash |
|||||||
| 137 | ssh pi@192.168.1.42 |
|||||||
| 138 | ``` |
|||||||
| 139 | ||||||||
| 140 | > Ersetze `192.168.1.42` durch die tatsächliche IP-Adresse deines Pi. |
|||||||
| 141 | ||||||||
| 142 | Beim ersten Verbinden wirst du gefragt, ob du dem Host vertrauen möchtest. Tippe `yes` ein und drücke Enter. Gib dann das Passwort ein, das du im Raspberry Pi Imager festgelegt hast. |
|||||||
| 143 | ||||||||
| 144 | **Windows (PuTTY):** |
|||||||
| 145 | ||||||||
| 146 | 1. Öffne PuTTY |
|||||||
| 147 | 2. Trage bei **Host Name** ein: `filaman.local` (oder die IP-Adresse) |
|||||||
| 148 | 3. Port: `22` |
|||||||
| 149 | 4. Klicke auf **„Open"** |
|||||||
| 150 | 5. Benutzername: `pi` |
|||||||
| 151 | 6. Passwort: Dein gewähltes Passwort |
|||||||
| 152 | ||||||||
| 153 | > **Tipp:** Ab Windows 10 kannst du auch einfach das **Windows Terminal** oder die **Eingabeaufforderung** verwenden und denselben `ssh`-Befehl wie bei macOS/Linux nutzen. |
|||||||
| 154 | ||||||||
| 155 | **Wenn die Verbindung steht**, siehst du eine Kommandozeile wie: |
|||||||
| 156 | ||||||||
| 157 | ``` |
|||||||
| 158 | pi@filaman:~ $ |
|||||||
| 159 | ``` |
|||||||
| 160 | ||||||||
| 161 | Du bist jetzt auf dem Raspberry Pi eingeloggt. |
|||||||
| 162 | ||||||||
| 163 | --- |
|||||||
| 164 | ||||||||
| 165 | ## 20.4 System aktualisieren |
|||||||
| 166 | ||||||||
| 167 | Bevor wir FilaMan installieren, bringen wir das Betriebssystem auf den neuesten Stand: |
|||||||
| 168 | ||||||||
| 169 | ```bash |
|||||||
| 170 | sudo apt update && sudo apt upgrade -y |
|||||||
| 171 | ``` |
|||||||
| 172 | ||||||||
| 173 | > **Was passiert hier?** |
|||||||
| 174 | > - `sudo` = Befehl mit Administrator-Rechten ausführen |
|||||||
| 175 | > - `apt update` = Liste der verfügbaren Software-Pakete aktualisieren |
|||||||
| 176 | > - `apt upgrade -y` = Alle Pakete auf die neueste Version aktualisieren (`-y` = ohne Nachfrage bestätigen) |
|||||||
| 177 | ||||||||
| 178 | Das kann einige Minuten dauern. Warte, bis der Vorgang abgeschlossen ist. |
|||||||
| 179 | ||||||||
| 180 | --- |
|||||||
| 181 | ||||||||
| 182 | ## 20.5 Docker installieren |
|||||||
| 183 | ||||||||
| 184 | FilaMan läuft in einem **Docker-Container**. Docker ist eine Software, die Anwendungen in abgeschotteten Paketen (sogenannten Containern) laufen lässt. Das hat den Vorteil, dass du dir keine Gedanken über Abhängigkeiten oder Konfiguration machen musst -- alles ist im Container enthalten. |
|||||||
| 185 | ||||||||
| 186 | ### Docker installieren |
|||||||
| 187 | ||||||||
| 188 | Führe folgenden Befehl aus: |
|||||||
| 189 | ||||||||
| 190 | ```bash |
|||||||
| 191 | curl -fsSL https://get.docker.com | sh |
|||||||
| 192 | ``` |
|||||||
| 193 | ||||||||
| 194 | > Dieser Befehl lädt das offizielle Docker-Installationsskript herunter und führt es aus. Die Installation dauert ca. 2--5 Minuten. |
|||||||
| 195 | ||||||||
| 196 | ### Deinen Benutzer zur Docker-Gruppe hinzufügen |
|||||||
| 197 | ||||||||
| 198 | Damit du Docker-Befehle ohne `sudo` ausführen kannst: |
|||||||
| 199 | ||||||||
| 200 | ```bash |
|||||||
| 201 | sudo usermod -aG docker pi |
|||||||
| 202 | ``` |
|||||||
| 203 | ||||||||
| 204 | > Ersetze `pi` durch deinen Benutzernamen, falls du einen anderen gewählt hast. |
|||||||
| 205 | ||||||||
| 206 | ### Abmelden und neu anmelden |
|||||||
| 207 | ||||||||
| 208 | Damit die Gruppenänderung wirksam wird, musst du dich einmal ab- und wieder anmelden: |
|||||||
| 209 | ||||||||
| 210 | ```bash |
|||||||
| 211 | exit |
|||||||
| 212 | ``` |
|||||||
| 213 | ||||||||
| 214 | Verbinde dich dann erneut per SSH: |
|||||||
| 215 | ||||||||
| 216 | ```bash |
|||||||
| 217 | ssh pi@filaman.local |
|||||||
| 218 | ``` |
|||||||
| 219 | ||||||||
| 220 | ### Installation überprüfen |
|||||||
| 221 | ||||||||
| 222 | Prüfe, ob Docker korrekt installiert ist: |
|||||||
| 223 | ||||||||
| 224 | ```bash |
|||||||
| 225 | docker --version |
|||||||
| 226 | ``` |
|||||||
| 227 | ||||||||
| 228 | Erwartete Ausgabe (Versionsnummer kann abweichen): |
|||||||
| 229 | ||||||||
| 230 | ``` |
|||||||
| 231 | Docker version 27.x.x, build xxxxxxx |
|||||||
| 232 | ``` |
|||||||
| 233 | ||||||||
| 234 | Prüfe auch Docker Compose: |
|||||||
| 235 | ||||||||
| 236 | ```bash |
|||||||
| 237 | docker compose version |
|||||||
| 238 | ``` |
|||||||
| 239 | ||||||||
| 240 | Erwartete Ausgabe: |
|||||||
| 241 | ||||||||
| 242 | ``` |
|||||||
| 243 | Docker Compose version v2.x.x |
|||||||
| 244 | ``` |
|||||||
| 245 | ||||||||
| 246 | > Wenn beide Befehle eine Versionsnummer anzeigen, ist Docker fertig installiert. |
|||||||
| 247 | ||||||||
| 248 | --- |
|||||||
| 249 | ||||||||
| 250 | ## 20.6 FilaMan einrichten |
|||||||
| 251 | ||||||||
| 252 | Jetzt erstellen wir die Konfigurationsdateien für FilaMan. |
|||||||
| 253 | ||||||||
| 254 | ### Verzeichnis erstellen |
|||||||
| 255 | ||||||||
| 256 | ```bash |
|||||||
| 257 | mkdir ~/filaman && cd ~/filaman |
|||||||
| 258 | ``` |
|||||||
| 259 | ||||||||
| 260 | ### Sichere Schlüssel generieren |
|||||||
| 261 | ||||||||
| 262 | FilaMan benötigt zwei geheime Schlüssel für die Sicherheit. Generiere diese mit folgendem Befehl: |
|||||||
| 263 | ||||||||
| 264 | ```bash |
|||||||
| 265 | echo "SECRET_KEY: $(openssl rand -hex 32)" |
|||||||
| 266 | echo "CSRF_SECRET_KEY: $(openssl rand -hex 32)" |
|||||||
| 267 | ``` |
|||||||
| 268 | ||||||||
| 269 | > **Wichtig:** Kopiere die beiden ausgegebenen Schlüssel und bewahre sie auf. Du brauchst sie gleich für die `.env`-Datei. |
|||||||
| 270 | ||||||||
| 271 | Die Ausgabe sieht ungefähr so aus: |
|||||||
| 272 | ||||||||
| 273 | ``` |
|||||||
| 274 | SECRET_KEY: 3a7f2b1e9c4d8f6a5e2b1c7d9f3a8e6b4c1d7f2a9e5b3c8d6f4a1e7b2c9d5f |
|||||||
| 275 | CSRF_SECRET_KEY: 8e2f4a6c1d9b7e3f5a2c8d4b6e1f9a7c3d5b8e2f4a6c1d9b7e3f5a2c8d4b6e |
|||||||
| 276 | ``` |
|||||||
| 277 | ||||||||
| 278 | ### Konfigurationsdatei erstellen (.env) |
|||||||
| 279 | ||||||||
| 280 | Erstelle die `.env`-Datei mit den Einstellungen für FilaMan: |
|||||||
| 281 | ||||||||
| 282 | ```bash |
|||||||
| 283 | nano .env |
|||||||
| 284 | ``` |
|||||||
| 285 | ||||||||
| 286 | Füge folgenden Inhalt ein und **passe die markierten Stellen an**: |
|||||||
| 287 | ||||||||
| 288 | ```env |
|||||||
| 289 | # =========================================== |
|||||||
| 290 | # Datenbank-Konfiguration |
|||||||
| 291 | # =========================================== |
|||||||
| 292 | # SQLite (Standard - empfohlen für Raspberry Pi) |
|||||||
| 293 | DATABASE_URL=sqlite+aiosqlite:////app/data/filaman.db |
|||||||
| 294 | ||||||||
| 295 | # =========================================== |
|||||||
| 296 | # Sicherheit |
|||||||
| 297 | # =========================================== |
|||||||
| 298 | # WICHTIG: Ersetze diese durch deine generierten Schlüssel! |
|||||||
| 299 | SECRET_KEY=HIER_DEINEN_GENERIERTEN_SECRET_KEY_EINFUEGEN |
|||||||
| 300 | CSRF_SECRET_KEY=HIER_DEINEN_GENERIERTEN_CSRF_SECRET_KEY_EINFUEGEN |
|||||||
| 301 | ||||||||
| 302 | # =========================================== |
|||||||
| 303 | # Administrator-Konto |
|||||||
| 304 | # =========================================== |
|||||||
| 305 | # Diese Daten werden beim ersten Start zum Erstellen des Admin-Kontos verwendet |
|||||||
| 306 | ADMIN_EMAIL=admin@example.com |
|||||||
| 307 | ADMIN_PASSWORD=MeinSicheresPasswort123! |
|||||||
| 308 | ADMIN_DISPLAY_NAME=Admin |
|||||||
| 309 | ADMIN_LANGUAGE=de |
|||||||
| 310 | ADMIN_SUPERADMIN=true |
|||||||
| 311 | ||||||||
| 312 | # =========================================== |
|||||||
| 313 | # Anwendungseinstellungen |
|||||||
| 314 | # =========================================== |
|||||||
| 315 | DEBUG=false |
|||||||
| 316 | CORS_ORIGINS=* |
|||||||
| 317 | PORT=8000 |
|||||||
| 318 | ||||||||
| 319 | # =========================================== |
|||||||
| 320 | # Logging |
|||||||
| 321 | # =========================================== |
|||||||
| 322 | LOG_LEVEL=INFO |
|||||||
| 323 | LOG_FORMAT=text |
|||||||
| 324 | ``` |
|||||||
| 325 | ||||||||
|
326 | **Erklärung der Einstellungen:** |
||||||
| 327 | ||||||||
| 328 | | Einstellung | Beschreibung | |
|||||||
| 329 | |---|---| |
|||||||
| 330 | | `DATABASE_URL` | Datenbank-Verbindung. Die Standard-SQLite-Datenbank wird im Container unter `/app/data/` gespeichert und automatisch gesichert. | |
|||||||
| 331 | | `SECRET_KEY` | Geheimer Schlüssel für die Verschlüsselung von Sitzungen. **Muss** durch deinen generierten Schlüssel ersetzt werden! | |
|||||||
| 332 | | `CSRF_SECRET_KEY` | Geheimer Schlüssel für den CSRF-Schutz. **Muss** durch deinen generierten Schlüssel ersetzt werden! | |
|||||||
| 333 | | `ADMIN_EMAIL` | E-Mail-Adresse für den ersten Administrator. Damit meldest du dich an. | |
|||||||
| 334 | | `ADMIN_PASSWORD` | Passwort für den Administrator. **Wähle ein sicheres Passwort!** Mindestens 8 Zeichen. | |
|||||||
| 335 | | `ADMIN_DISPLAY_NAME` | Anzeigename des Administrators in der Oberfläche. | |
|||||||
| 336 | | `ADMIN_LANGUAGE` | Sprache der Oberfläche (`de` für Deutsch, `en` für Englisch). | |
|||||||
| 337 | | `ADMIN_SUPERADMIN` | Gibt dem ersten Benutzer volle Administratorrechte. | |
|||||||
| 338 | | `DEBUG` | Debug-Modus. Für den normalen Betrieb auf `false` lassen. | |
|||||||
| 339 | | `CORS_ORIGINS` | Erlaubte Herkunftsdomains für API-Anfragen. `*` erlaubt alle. | |
|||||||
| 340 | | `PORT` | Externer Port, über den FilaMan erreichbar ist. Standard: `8000`. | |
|||||||
| 341 | | `LOG_LEVEL` | Detailgrad der Log-Ausgaben (`INFO`, `DEBUG`, `WARNING`, `ERROR`). | |
|||||||
| 342 | | `LOG_FORMAT` | Format der Logs (`text` oder `json`). | |
|||||||
|
343 | |||||||
| 344 | Speichere die Datei mit **Strg+O**, **Enter** und schließe den Editor mit **Strg+X**. |
|||||||
| 345 | ||||||||
| 346 | ### Docker Compose-Datei erstellen |
|||||||
| 347 | ||||||||
| 348 | ```bash |
|||||||
| 349 | nano docker-compose.yml |
|||||||
| 350 | ``` |
|||||||
| 351 | ||||||||
| 352 | Füge folgenden Inhalt ein: |
|||||||
| 353 | ||||||||
| 354 | ```yaml |
|||||||
| 355 | services: |
|||||||
| 356 | filaman-system-app: |
|||||||
| 357 | image: ghcr.io/fire-devils/filaman-system:latest |
|||||||
| 358 | container_name: filaman-system-app |
|||||||
| 359 | env_file: |
|||||||
| 360 | - .env |
|||||||
| 361 | environment: |
|||||||
| 362 | - DATABASE_URL=${DATABASE_URL} |
|||||||
| 363 | - SECRET_KEY=${SECRET_KEY} |
|||||||
| 364 | - CSRF_SECRET_KEY=${CSRF_SECRET_KEY} |
|||||||
| 365 | - DEBUG=${DEBUG} |
|||||||
| 366 | - CORS_ORIGINS=${CORS_ORIGINS} |
|||||||
| 367 | - ADMIN_EMAIL=${ADMIN_EMAIL} |
|||||||
| 368 | - ADMIN_PASSWORD=${ADMIN_PASSWORD} |
|||||||
| 369 | - ADMIN_DISPLAY_NAME=${ADMIN_DISPLAY_NAME} |
|||||||
| 370 | - ADMIN_LANGUAGE=${ADMIN_LANGUAGE} |
|||||||
| 371 | - ADMIN_SUPERADMIN=${ADMIN_SUPERADMIN} |
|||||||
| 372 | volumes: |
|||||||
| 373 | - filaman_data:/app/data |
|||||||
| 374 | restart: unless-stopped |
|||||||
| 375 | ports: |
|||||||
| 376 | - "${PORT}:8000" |
|||||||
| 377 | healthcheck: |
|||||||
| 378 | test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"] |
|||||||
| 379 | interval: 30s |
|||||||
| 380 | timeout: 5s |
|||||||
| 381 | start_period: 15s |
|||||||
| 382 | retries: 3 |
|||||||
| 383 | ||||||||
| 384 | volumes: |
|||||||
| 385 | filaman_data: |
|||||||
| 386 | ``` |
|||||||
| 387 | ||||||||
| 388 | Speichere die Datei mit **Strg+O**, **Enter** und schließe den Editor mit **Strg+X**. |
|||||||
| 389 | ||||||||
| 390 | --- |
|||||||
| 391 | ||||||||
| 392 | ## 20.7 FilaMan starten |
|||||||
| 393 | ||||||||
| 394 | Jetzt ist alles vorbereitet. Starte FilaMan mit: |
|||||||
| 395 | ||||||||
| 396 | ```bash |
|||||||
| 397 | docker compose up -d |
|||||||
| 398 | ``` |
|||||||
| 399 | ||||||||
| 400 | > **Was passiert hier?** |
|||||||
| 401 | > - `docker compose up` = Startet die in `docker-compose.yml` definierten Container |
|||||||
| 402 | > - `-d` = Im Hintergrund (detached) laufen lassen |
|||||||
| 403 | ||||||||
| 404 | Beim ersten Start wird das Docker-Image heruntergeladen (ca. 200--400 MB). Das kann je nach Internetverbindung einige Minuten dauern. |
|||||||
| 405 | ||||||||
| 406 | ### Logs prüfen |
|||||||
| 407 | ||||||||
| 408 | Schau dir die Logs an, um zu überprüfen, ob alles korrekt startet: |
|||||||
| 409 | ||||||||
| 410 | ```bash |
|||||||
| 411 | docker compose logs -f |
|||||||
| 412 | ``` |
|||||||
| 413 | ||||||||
| 414 | Du solltest ungefähr folgende Ausgaben sehen: |
|||||||
| 415 | ||||||||
| 416 | ``` |
|||||||
| 417 | filaman-system-app | Checking for database migrations... |
|||||||
| 418 | filaman-system-app | Running migrations... |
|||||||
| 419 | filaman-system-app | Database migrations complete. |
|||||||
| 420 | filaman-system-app | Starting nginx... |
|||||||
| 421 | ``` |
|||||||
| 422 | ||||||||
| 423 | > Drücke **Strg+C**, um die Log-Ansicht zu beenden (der Container läuft im Hintergrund weiter). |
|||||||
| 424 | ||||||||
| 425 | ### Status prüfen |
|||||||
| 426 | ||||||||
| 427 | ```bash |
|||||||
| 428 | docker compose ps |
|||||||
| 429 | ``` |
|||||||
| 430 | ||||||||
| 431 | Wenn alles funktioniert, siehst du: |
|||||||
| 432 | ||||||||
| 433 | ``` |
|||||||
| 434 | NAME STATUS PORTS |
|||||||
| 435 | filaman-system-app Up X minutes (healthy) 0.0.0.0:8000->8000/tcp |
|||||||
| 436 | ``` |
|||||||
| 437 | ||||||||
| 438 | > Der Status sollte nach ca. 30 Sekunden auf `(healthy)` wechseln. |
|||||||
| 439 | ||||||||
| 440 | --- |
|||||||
| 441 | ||||||||
| 442 | ## 20.8 FilaMan im Browser aufrufen |
|||||||
| 443 | ||||||||
| 444 | FilaMan ist jetzt bereit! Öffne einen Browser auf deinem PC und rufe folgende Adresse auf: |
|||||||
| 445 | ||||||||
| 446 | ``` |
|||||||
| 447 | http://filaman.local:8000 |
|||||||
| 448 | ``` |
|||||||
| 449 | ||||||||
| 450 | Oder verwende die IP-Adresse deines Raspberry Pi: |
|||||||
| 451 | ||||||||
| 452 | ``` |
|||||||
| 453 | http://192.168.1.42:8000 |
|||||||
| 454 | ``` |
|||||||
| 455 | ||||||||
| 456 | > **Tipp:** Die IP-Adresse deines Pi findest du mit folgendem Befehl (auf dem Pi per SSH): |
|||||||
| 457 | > ```bash |
|||||||
| 458 | > hostname -I |
|||||||
| 459 | > ``` |
|||||||
| 460 | ||||||||
| 461 | ### Erste Anmeldung |
|||||||
| 462 | ||||||||
| 463 | Du siehst die Login-Seite von FilaMan. Melde dich mit den Zugangsdaten an, die du in der `.env`-Datei festgelegt hast: |
|||||||
| 464 | ||||||||
| 465 | - **E-Mail:** Die `ADMIN_EMAIL` aus deiner `.env` (z. B. `admin@example.com`) |
|||||||
| 466 | - **Passwort:** Das `ADMIN_PASSWORD` aus deiner `.env` |
|||||||
| 467 | ||||||||
| 468 | Nach der Anmeldung siehst du das **Dashboard** -- die Startseite von FilaMan. |
|||||||
| 469 | ||||||||
| 470 | > Ausführliche Informationen zur Anmeldung findest du in der Dokumentation: [Anmeldung (Login)](https://docu.filaman.app/Docs/De/02-Anmeldung) |
|||||||
| 471 | ||||||||
| 472 | --- |
|||||||
| 473 | ||||||||
| 474 | ## 20.9 Erste Schritte nach der Installation |
|||||||
| 475 | ||||||||
| 476 | Nachdem FilaMan läuft, empfiehlt es sich, die Daten in folgender Reihenfolge anzulegen: |
|||||||
| 477 | ||||||||
| 478 | | Schritt | Was | Wo | Dokumentation | |
|||||||
| 479 | |---|---|---|---| |
|||||||
| 480 | | 1 | **Hersteller anlegen** | Menü → Manufacturers | [Hersteller](https://docu.filaman.app/Docs/De/05-Hersteller) | |
|||||||
| 481 | | 2 | **Farben definieren** | Menü → Filaments → „Manage Colors" | [Farbverwaltung](https://docu.filaman.app/Docs/De/12-Farbverwaltung) | |
|||||||
| 482 | | 3 | **Filamente erstellen** | Menü → Filaments → „Add Filament" | [Filamente](https://docu.filaman.app/Docs/De/06-Filamente) | |
|||||||
| 483 | | 4 | **Lagerorte einrichten** | Menü → Locations → „Add Location" | [Lagerorte](https://docu.filaman.app/Docs/De/08-Lagerorte) | |
|||||||
| 484 | | 5 | **Spulen erfassen** | Menü → Spools → „Add Spool" | [Spulen](https://docu.filaman.app/Docs/De/07-Spulen) | |
|||||||
| 485 | | 6 | **Drucker verbinden** (optional) | Menü → Printers → „Add Printer" | [Drucker](https://docu.filaman.app/Docs/De/09-Drucker) | |
|||||||
| 486 | ||||||||
| 487 | > **Tipp:** Du kannst alternativ auch Filamente aus der SpoolmanDB importieren, anstatt alles manuell anzulegen. Installiere dazu das SpoolmanDB-Plugin (siehe nächstes Kapitel). |
|||||||
| 488 | ||||||||
| 489 | --- |
|||||||
| 490 | ||||||||
| 491 | ## 20.10 Plugins installieren |
|||||||
| 492 | ||||||||
| 493 | FilaMan lässt sich über Plugins erweitern. Die Installation erfolgt bequem über die Weboberfläche. |
|||||||
| 494 | ||||||||
| 495 | ### Plugin installieren |
|||||||
| 496 | ||||||||
| 497 | 1. Gehe zu **Admin Panel** → **System** |
|||||||
| 498 | 2. Klicke auf **„Install Plugin"** |
|||||||
| 499 | 3. Wähle im Dropdown **„Install from Registry"** das gewünschte Plugin aus |
|||||||
| 500 | 4. Klicke auf **„Install Plugin"** |
|||||||
| 501 | 5. Das Plugin wird automatisch heruntergeladen und installiert |
|||||||
| 502 | ||||||||
| 503 | ### Verfügbare Plugins |
|||||||
| 504 | ||||||||
| 505 | | Plugin | Typ | Beschreibung | Dokumentation | |
|||||||
| 506 | |---|---|---|---| |
|||||||
| 507 | | **BambuLab** | Driver | Anbindung von BambuLab-Druckern (AMS, Filament-Sync) | [Plugin: BambuLab](https://docu.filaman.app/Docs/De/14-Plugin-Bambulab) | |
|||||||
| 508 | | **SpoolmanDB Import** | Import | Filamente aus der SpoolmanDB-Datenbank importieren | [Plugin: SpoolmanDB](https://docu.filaman.app/Docs/De/15-Plugin-Spoolmandb) | |
|||||||
| 509 | | **Spoolman API** | Import | Spoolman-kompatible API für externe Tools | [Plugin: Spoolman API](https://docu.filaman.app/Docs/De/16-Plugin-Spoolmanapi) | |
|||||||
| 510 | | **Bambuddy** | Integration | Bambuddy-Integration für Inventory-Sync | [Plugin: Bambuddy](https://docu.filaman.app/Docs/De/17-Plugin-Bambuddy) | |
|||||||
| 511 | ||||||||
| 512 | > Ausführliche Informationen zur Plugin-Verwaltung: [Admin-Bereich](https://docu.filaman.app/Docs/De/11-Admin#115-system-plugin-verwaltung) |
|||||||
| 513 | ||||||||
| 514 | --- |
|||||||
| 515 | ||||||||
| 516 | ## 20.11 FilaMan aktualisieren |
|||||||
| 517 | ||||||||
| 518 | Um FilaMan auf die neueste Version zu aktualisieren, führe auf dem Raspberry Pi folgende Befehle aus: |
|||||||
| 519 | ||||||||
| 520 | ```bash |
|||||||
| 521 | cd ~/filaman |
|||||||
| 522 | docker compose pull |
|||||||
| 523 | docker compose up -d |
|||||||
| 524 | ``` |
|||||||
| 525 | ||||||||
| 526 | > **Was passiert beim Update?** |
|||||||
| 527 | > 1. `docker compose pull` lädt die neueste Version des Docker-Images herunter |
|||||||
| 528 | > 2. `docker compose up -d` startet den Container mit der neuen Version neu |
|||||||
| 529 | > 3. Beim Start wird automatisch ein **Backup der Datenbank** erstellt |
|||||||
| 530 | > 4. Anschließend werden automatisch alle nötigen **Datenbank-Migrationen** durchgeführt |
|||||||
| 531 | > |
|||||||
| 532 | > Deine Daten bleiben vollständig erhalten! |
|||||||
| 533 | ||||||||
| 534 | --- |
|||||||
| 535 | ||||||||
| 536 | ## 20.12 Nützliche Befehle |
|||||||
| 537 | ||||||||
| 538 | Hier eine Übersicht der wichtigsten Docker-Befehle für den täglichen Betrieb: |
|||||||
| 539 | ||||||||
| 540 | ### Container verwalten |
|||||||
| 541 | ||||||||
| 542 | ```bash |
|||||||
| 543 | # In das FilaMan-Verzeichnis wechseln |
|||||||
| 544 | cd ~/filaman |
|||||||
| 545 | ||||||||
| 546 | # Container stoppen |
|||||||
| 547 | docker compose stop |
|||||||
| 548 | ||||||||
| 549 | # Container starten |
|||||||
| 550 | docker compose start |
|||||||
| 551 | ||||||||
| 552 | # Container neu starten |
|||||||
| 553 | docker compose restart |
|||||||
| 554 | ||||||||
| 555 | # Container stoppen und entfernen (Daten bleiben erhalten!) |
|||||||
| 556 | docker compose down |
|||||||
| 557 | ||||||||
| 558 | # Container erstellen und starten |
|||||||
| 559 | docker compose up -d |
|||||||
| 560 | ``` |
|||||||
| 561 | ||||||||
| 562 | ### Logs ansehen |
|||||||
| 563 | ||||||||
| 564 | ```bash |
|||||||
| 565 | # Alle Logs anzeigen (fortlaufend) |
|||||||
| 566 | docker compose logs -f |
|||||||
| 567 | ||||||||
| 568 | # Nur die letzten 100 Zeilen |
|||||||
| 569 | docker compose logs --tail 100 |
|||||||
| 570 | ||||||||
| 571 | # Logs seit einem bestimmten Zeitpunkt |
|||||||
| 572 | docker compose logs --since 1h |
|||||||
| 573 | ``` |
|||||||
| 574 | ||||||||
| 575 | ### Container-Status prüfen |
|||||||
| 576 | ||||||||
| 577 | ```bash |
|||||||
| 578 | # Status aller Container |
|||||||
| 579 | docker compose ps |
|||||||
| 580 | ||||||||
| 581 | # Detaillierte Container-Infos |
|||||||
| 582 | docker inspect filaman-system-app |
|||||||
| 583 | ``` |
|||||||
| 584 | ||||||||
| 585 | ### Administrator-Passwort zurücksetzen |
|||||||
| 586 | ||||||||
| 587 | Falls du dein Passwort vergessen hast: |
|||||||
| 588 | ||||||||
| 589 | ```bash |
|||||||
| 590 | docker exec -it filaman-system-app python -m app.cli reset-password admin@example.com |
|||||||
| 591 | ``` |
|||||||
| 592 | ||||||||
| 593 | > Ersetze `admin@example.com` durch deine tatsächliche Admin-E-Mail-Adresse. Du wirst zweimal nach dem neuen Passwort gefragt. |
|||||||
| 594 | ||||||||
| 595 | ### Daten und Backups |
|||||||
| 596 | ||||||||
| 597 | Die FilaMan-Daten werden in einem Docker-Volume gespeichert. Automatische SQLite-Backups werden unter `/app/data/backups` im Container erstellt. |
|||||||
| 598 | ||||||||
| 599 | ```bash |
|||||||
| 600 | # Backup-Verzeichnis im Container anzeigen |
|||||||
| 601 | docker exec filaman-system-app ls -la /app/data/backups/ |
|||||||
| 602 | ``` |
|||||||
| 603 | ||||||||
| 604 | > Backups können auch über die Weboberfläche unter **Admin Panel → Database Backup** verwaltet werden. Siehe: [Datenbank-Backup](https://docu.filaman.app/Docs/De/11-Admin#116-datenbank-backup-wiederherstellung) |
|||||||
| 605 | ||||||||
| 606 | --- |
|||||||
| 607 | ||||||||
| 608 | ## 20.13 Fehlerbehebung |
|||||||
| 609 | ||||||||
| 610 | ### Container startet nicht |
|||||||
| 611 | ||||||||
| 612 | Prüfe die Logs auf Fehlermeldungen: |
|||||||
| 613 | ||||||||
| 614 | ```bash |
|||||||
| 615 | docker compose logs |
|||||||
| 616 | ``` |
|||||||
| 617 | ||||||||
| 618 | Häufige Ursachen: |
|||||||
| 619 | - **Fehlende oder ungültige `.env`-Datei** -- Prüfe ob alle Pflichtfelder gesetzt sind |
|||||||
| 620 | - **Syntaxfehler in `docker-compose.yml`** -- Achte auf korrekte Einrückung (Leerzeichen, keine Tabs) |
|||||||
| 621 | ||||||||
| 622 | ### Port bereits belegt |
|||||||
| 623 | ||||||||
| 624 | Falls Port 8000 bereits von einem anderen Dienst verwendet wird: |
|||||||
| 625 | ||||||||
| 626 | 1. Öffne die `.env`-Datei: |
|||||||
| 627 | ```bash |
|||||||
| 628 | nano ~/filaman/.env |
|||||||
| 629 | ``` |
|||||||
| 630 | 2. Ändere den Port, z. B.: |
|||||||
| 631 | ``` |
|||||||
| 632 | PORT=8080 |
|||||||
| 633 | ``` |
|||||||
| 634 | 3. Starte den Container neu: |
|||||||
| 635 | ```bash |
|||||||
| 636 | cd ~/filaman |
|||||||
| 637 | docker compose down |
|||||||
| 638 | docker compose up -d |
|||||||
| 639 | ``` |
|||||||
| 640 | 4. FilaMan ist dann unter `http://filaman.local:8080` erreichbar |
|||||||
| 641 | ||||||||
| 642 | ### Zugriff von einem anderen Gerät nicht möglich |
|||||||
| 643 | ||||||||
| 644 | - Stelle sicher, dass PC und Raspberry Pi im **selben Netzwerk** sind |
|||||||
| 645 | - Verwende die **IP-Adresse** statt des Hostnamens (`http://192.168.x.x:8000`) |
|||||||
| 646 | - Prüfe, ob eine Firewall auf dem Pi den Port blockiert: |
|||||||
| 647 | ```bash |
|||||||
| 648 | sudo ufw status |
|||||||
| 649 | ``` |
|||||||
| 650 | Falls aktiv, Port freigeben: |
|||||||
| 651 | ```bash |
|||||||
| 652 | sudo ufw allow 8000/tcp |
|||||||
| 653 | ``` |
|||||||
| 654 | ||||||||
| 655 | ### Passwort vergessen |
|||||||
| 656 | ||||||||
| 657 | Siehe [Administrator-Passwort zurücksetzen](#administrator-passwort-zurücksetzen) oben oder in der Dokumentation: [Tipps & Häufige Fragen](https://docu.filaman.app/Docs/De/13-Faq#ich-habe-mein-admin-passwort-vergessen-was-tun) |
|||||||
| 658 | ||||||||
| 659 | ### Datenbank-Probleme |
|||||||
| 660 | ||||||||
| 661 | Wenn die Datenbank beschädigt ist, kannst du ein Backup wiederherstellen: |
|||||||
| 662 | ||||||||
| 663 | 1. Über die Weboberfläche: **Admin Panel → Database Backup → SQLite-Backups → Restore** |
|||||||
| 664 | 2. Oder manuell per Kommandozeile: |
|||||||
| 665 | ```bash |
|||||||
| 666 | # Verfügbare Backups anzeigen |
|||||||
| 667 | docker exec filaman-system-app ls -la /app/data/backups/ |
|||||||
| 668 | ``` |
|||||||
| 669 | ||||||||
| 670 | > Detaillierte Informationen zur Backup-Wiederherstellung: [Datenbank-Backup](https://docu.filaman.app/Docs/De/11-Admin#116-datenbank-backup-wiederherstellung) |
|||||||
| 671 | ||||||||
| 672 | --- |
|||||||
| 673 | ||||||||
| 674 | ## 20.14 Weiterführende Links |
|||||||
| 675 | ||||||||
| 676 | | Ressource | Link | |
|||||||
| 677 | |---|---| |
|||||||
| 678 | | **FilaMan Dokumentation (Deutsch)** | [docu.filaman.app/Docs/De/00-Inhalt](https://docu.filaman.app/Docs/De/00-Inhalt) | |
|||||||
| 679 | | **FilaMan Dokumentation (Englisch)** | [docu.filaman.app/Docs/En/00-Contents](https://docu.filaman.app/Docs/En/00-Contents) | |
|||||||
| 680 | | **GitHub: FilaMan System** | [github.com/Fire-Devils/filaman-system](https://github.com/Fire-Devils/filaman-system) | |
|||||||
| 681 | | **GitHub: FilaMan Plugins** | [github.com/Fire-Devils/filaman-plugins](https://github.com/Fire-Devils/filaman-plugins) | |
|||||||
| 682 | | **GitHub: FilaMan ESP32** | [github.com/Fire-Devils/FilaMan-System-ESP32](https://github.com/Fire-Devils/FilaMan-System-ESP32) | |
|||||||
| 683 | | **Docker Hub Image** | [ghcr.io/fire-devils/filaman-system](https://github.com/Fire-Devils/filaman-system/pkgs/container/filaman-system) | |
|||||||
| 684 | ||||||||
| 685 | --- |
|||||||
| 686 | ||||||||
| 687 | ← [Zurück: Plugin: Bambuddy](/Docs/De/17-Plugin-Bambuddy) | [Zurück zum Inhaltsverzeichnis](/Docs/De/00-Inhalt) |
|||||||
| 688 | ||||||||
| 689 | --- |
|||||||
| 690 | ||||||||
| 691 | *Diese Anleitung wurde für FilaMan erstellt. Für technische Fragen oder Probleme wenden Sie sich an Ihren Systemadministrator.* |
|||||||