Blame
|
1 | # 20. Installation on Raspberry Pi |
||||||
| 2 | ||||||||
| 3 | This guide is aimed at **absolute beginners** and explains step by step how to install FilaMan on a Raspberry Pi. No prior knowledge is required -- just a Raspberry Pi, a PC, and a little patience. |
|||||||
| 4 | ||||||||
| 5 | --- |
|||||||
| 6 | ||||||||
| 7 | ## 20.1 What You Need (Prerequisites) |
|||||||
| 8 | ||||||||
| 9 | ### Hardware |
|||||||
| 10 | ||||||||
| 11 | | Component | Recommendation | Note | |
|||||||
| 12 | |---|---|---| |
|||||||
| 13 | | **Raspberry Pi** | Model 3B+, 4, or 5 | Older models (Pi 1/2/Zero) are too underpowered | |
|||||||
| 14 | | **Power Supply** | Official Raspberry Pi power supply | USB-C (Pi 4/5) or Micro-USB (Pi 3B+) | |
|||||||
| 15 | | **microSD Card** | At least 16 GB, recommended 32 GB | Class 10 or faster | |
|||||||
| 16 | | **Network** | Ethernet cable or Wi-Fi | Ethernet is more stable and recommended | |
|||||||
| 17 | | **Case** (optional) | Any Pi case | Protects the Pi and improves cooling | |
|||||||
| 18 | ||||||||
| 19 | ### Software (on your PC) |
|||||||
| 20 | ||||||||
| 21 | - **Raspberry Pi Imager** -- for writing the OS to the SD card ([Download here](https://www.raspberrypi.com/software/)) |
|||||||
| 22 | - **SSH Client** -- for connecting to the Pi: |
|||||||
| 23 | - **Windows:** [PuTTY](https://www.putty.org/) or the built-in Windows Terminal (Windows 10+) |
|||||||
| 24 | - **macOS / Linux:** Terminal (already pre-installed) |
|||||||
| 25 | ||||||||
| 26 | ### Network |
|||||||
| 27 | ||||||||
| 28 | - The Raspberry Pi and your PC must be on the **same network** (same Wi-Fi or connected to the same router via cable) |
|||||||
| 29 | ||||||||
| 30 | --- |
|||||||
| 31 | ||||||||
| 32 | ## 20.2 Install Raspberry Pi OS |
|||||||
| 33 | ||||||||
| 34 | The operating system for the Raspberry Pi is written to a microSD card. The easiest way to do this is with the **Raspberry Pi Imager**. |
|||||||
| 35 | ||||||||
| 36 | ### Step 1: Download Raspberry Pi Imager |
|||||||
| 37 | ||||||||
| 38 | Download the Imager from the official website and install it on your PC: |
|||||||
| 39 | ||||||||
| 40 | > https://www.raspberrypi.com/software/ |
|||||||
| 41 | ||||||||
| 42 | ### Step 2: Open Imager and Configure |
|||||||
| 43 | ||||||||
| 44 | 1. Insert the **microSD card** into your PC (using an SD card reader if needed) |
|||||||
| 45 | 2. Open the **Raspberry Pi Imager** |
|||||||
| 46 | 3. Click **"Choose Device"** and select your Raspberry Pi model |
|||||||
| 47 | 4. Click **"Choose OS"** and select: |
|||||||
| 48 | - **Raspberry Pi OS (other)** → **Raspberry Pi OS Lite (64-bit)** |
|||||||
| 49 | ||||||||
| 50 | > **Why "Lite"?** The Lite variant has no graphical desktop and uses fewer resources. FilaMan is a web application -- you access it through your PC's browser, not on the Pi itself. |
|||||||
| 51 | ||||||||
| 52 | 5. Click **"Choose Storage"** and select your microSD card |
|||||||
| 53 | ||||||||
| 54 | > **Warning:** All data on the SD card will be erased! |
|||||||
| 55 | ||||||||
| 56 | ### Step 3: Configure Advanced Settings |
|||||||
| 57 | ||||||||
| 58 | Click **"Next"** and then **"Edit Settings"**. Here you configure important basic settings: |
|||||||
| 59 | ||||||||
| 60 | **"General" tab:** |
|||||||
| 61 | ||||||||
| 62 | | Setting | Recommendation | Explanation | |
|||||||
| 63 | |---|---|---| |
|||||||
| 64 | | **Hostname** | `filaman` | The Pi will be reachable on your network under this name | |
|||||||
| 65 | | **Username** | `pi` | Your username for logging into the Pi | |
|||||||
| 66 | | **Password** | A secure password | Remember this password well! | |
|||||||
| 67 | | **Configure Wi-Fi** | Your Wi-Fi name and password | Only needed if you're not using an Ethernet cable | |
|||||||
| 68 | | **Locale settings** | Your timezone and keyboard layout | e.g. Europe/London, us | |
|||||||
| 69 | ||||||||
| 70 | **"Services" tab:** |
|||||||
| 71 | ||||||||
| 72 | - Check the box for **"Enable SSH"** |
|||||||
| 73 | - Select **"Use password authentication"** |
|||||||
| 74 | ||||||||
| 75 | > **What is SSH?** SSH (Secure Shell) allows you to remotely control the Raspberry Pi from your PC via the command line -- without needing a monitor connected to the Pi. |
|||||||
| 76 | ||||||||
| 77 | Click **"Save"** and then **"Yes"** to write the OS to the SD card. |
|||||||
| 78 | ||||||||
| 79 | ### Step 4: Boot the Raspberry Pi |
|||||||
| 80 | ||||||||
| 81 | 1. Wait until the writing process is complete |
|||||||
| 82 | 2. Safely remove the microSD card from your PC |
|||||||
| 83 | 3. Insert the microSD card into the Raspberry Pi |
|||||||
| 84 | 4. Connect the Ethernet cable (if using wired networking) |
|||||||
| 85 | 5. Connect the power supply -- the Pi will start automatically |
|||||||
| 86 | 6. Wait approximately **1--2 minutes** for the Pi to fully boot up |
|||||||
| 87 | ||||||||
| 88 | --- |
|||||||
| 89 | ||||||||
| 90 | ## 20.3 Connect to the Raspberry Pi (SSH) |
|||||||
| 91 | ||||||||
| 92 | Now you'll connect to the Raspberry Pi from your PC. |
|||||||
| 93 | ||||||||
| 94 | ### Find the IP Address |
|||||||
| 95 | ||||||||
| 96 | You need the IP address of your Raspberry Pi. There are several ways to find it: |
|||||||
| 97 | ||||||||
| 98 | **Option A: Using the hostname (easiest method)** |
|||||||
| 99 | ||||||||
| 100 | If you set the hostname to `filaman`, try: |
|||||||
| 101 | ||||||||
| 102 | ```bash |
|||||||
| 103 | ping filaman.local |
|||||||
| 104 | ``` |
|||||||
| 105 | ||||||||
| 106 | The response will show you the IP address (e.g. `192.168.1.42`). |
|||||||
| 107 | ||||||||
| 108 | **Option B: Check your router** |
|||||||
| 109 | ||||||||
| 110 | 1. Open your router's web interface (usually `192.168.1.1` or `192.168.0.1`) |
|||||||
| 111 | 2. Look for "filaman" or "raspberrypi" in the device list |
|||||||
| 112 | 3. Note the displayed IP address |
|||||||
| 113 | ||||||||
| 114 | **Option C: Scan the network** |
|||||||
| 115 | ||||||||
| 116 | On your PC you can alternatively use this command: |
|||||||
| 117 | ||||||||
| 118 | ```bash |
|||||||
| 119 | # macOS / Linux: |
|||||||
| 120 | arp -a | grep raspberry |
|||||||
| 121 | ||||||||
| 122 | # Windows (PowerShell): |
|||||||
| 123 | arp -a |
|||||||
| 124 | ``` |
|||||||
| 125 | ||||||||
| 126 | ### Establish SSH Connection |
|||||||
| 127 | ||||||||
| 128 | **macOS / Linux (Terminal):** |
|||||||
| 129 | ||||||||
| 130 | ```bash |
|||||||
| 131 | ssh pi@filaman.local |
|||||||
| 132 | ``` |
|||||||
| 133 | ||||||||
| 134 | Or using the IP address: |
|||||||
| 135 | ||||||||
| 136 | ```bash |
|||||||
| 137 | ssh pi@192.168.1.42 |
|||||||
| 138 | ``` |
|||||||
| 139 | ||||||||
| 140 | > Replace `192.168.1.42` with the actual IP address of your Pi. |
|||||||
| 141 | ||||||||
| 142 | When connecting for the first time, you'll be asked whether you trust this host. Type `yes` and press Enter. Then enter the password you set in the Raspberry Pi Imager. |
|||||||
| 143 | ||||||||
| 144 | **Windows (PuTTY):** |
|||||||
| 145 | ||||||||
| 146 | 1. Open PuTTY |
|||||||
| 147 | 2. Enter in **Host Name**: `filaman.local` (or the IP address) |
|||||||
| 148 | 3. Port: `22` |
|||||||
| 149 | 4. Click **"Open"** |
|||||||
| 150 | 5. Username: `pi` |
|||||||
| 151 | 6. Password: Your chosen password |
|||||||
| 152 | ||||||||
| 153 | > **Tip:** Starting with Windows 10, you can also use the **Windows Terminal** or **Command Prompt** and use the same `ssh` command as on macOS/Linux. |
|||||||
| 154 | ||||||||
| 155 | **When connected**, you'll see a command prompt like: |
|||||||
| 156 | ||||||||
| 157 | ``` |
|||||||
| 158 | pi@filaman:~ $ |
|||||||
| 159 | ``` |
|||||||
| 160 | ||||||||
| 161 | You're now logged into the Raspberry Pi. |
|||||||
| 162 | ||||||||
| 163 | --- |
|||||||
| 164 | ||||||||
| 165 | ## 20.4 Update the System |
|||||||
| 166 | ||||||||
| 167 | Before installing FilaMan, let's bring the operating system up to date: |
|||||||
| 168 | ||||||||
| 169 | ```bash |
|||||||
| 170 | sudo apt update && sudo apt upgrade -y |
|||||||
| 171 | ``` |
|||||||
| 172 | ||||||||
| 173 | > **What's happening here?** |
|||||||
| 174 | > - `sudo` = run the command with administrator privileges |
|||||||
| 175 | > - `apt update` = refresh the list of available software packages |
|||||||
| 176 | > - `apt upgrade -y` = upgrade all packages to the latest version (`-y` = confirm automatically) |
|||||||
| 177 | ||||||||
| 178 | This may take a few minutes. Wait until the process is complete. |
|||||||
| 179 | ||||||||
| 180 | --- |
|||||||
| 181 | ||||||||
| 182 | ## 20.5 Install Docker |
|||||||
| 183 | ||||||||
| 184 | FilaMan runs in a **Docker container**. Docker is software that runs applications in isolated packages (called containers). The advantage is that you don't need to worry about dependencies or configuration -- everything is bundled in the container. |
|||||||
| 185 | ||||||||
| 186 | ### Install Docker |
|||||||
| 187 | ||||||||
| 188 | Run the following command: |
|||||||
| 189 | ||||||||
| 190 | ```bash |
|||||||
| 191 | curl -fsSL https://get.docker.com | sh |
|||||||
| 192 | ``` |
|||||||
| 193 | ||||||||
| 194 | > This command downloads the official Docker installation script and executes it. The installation takes about 2--5 minutes. |
|||||||
| 195 | ||||||||
| 196 | ### Add Your User to the Docker Group |
|||||||
| 197 | ||||||||
| 198 | So you can run Docker commands without `sudo`: |
|||||||
| 199 | ||||||||
| 200 | ```bash |
|||||||
| 201 | sudo usermod -aG docker pi |
|||||||
| 202 | ``` |
|||||||
| 203 | ||||||||
| 204 | > Replace `pi` with your username if you chose a different one. |
|||||||
| 205 | ||||||||
| 206 | ### Log Out and Log Back In |
|||||||
| 207 | ||||||||
| 208 | For the group change to take effect, you need to log out and back in: |
|||||||
| 209 | ||||||||
| 210 | ```bash |
|||||||
| 211 | exit |
|||||||
| 212 | ``` |
|||||||
| 213 | ||||||||
| 214 | Then reconnect via SSH: |
|||||||
| 215 | ||||||||
| 216 | ```bash |
|||||||
| 217 | ssh pi@filaman.local |
|||||||
| 218 | ``` |
|||||||
| 219 | ||||||||
| 220 | ### Verify the Installation |
|||||||
| 221 | ||||||||
| 222 | Check that Docker is correctly installed: |
|||||||
| 223 | ||||||||
| 224 | ```bash |
|||||||
| 225 | docker --version |
|||||||
| 226 | ``` |
|||||||
| 227 | ||||||||
| 228 | Expected output (version number may vary): |
|||||||
| 229 | ||||||||
| 230 | ``` |
|||||||
| 231 | Docker version 27.x.x, build xxxxxxx |
|||||||
| 232 | ``` |
|||||||
| 233 | ||||||||
| 234 | Also check Docker Compose: |
|||||||
| 235 | ||||||||
| 236 | ```bash |
|||||||
| 237 | docker compose version |
|||||||
| 238 | ``` |
|||||||
| 239 | ||||||||
| 240 | Expected output: |
|||||||
| 241 | ||||||||
| 242 | ``` |
|||||||
| 243 | Docker Compose version v2.x.x |
|||||||
| 244 | ``` |
|||||||
| 245 | ||||||||
| 246 | > If both commands show a version number, Docker is ready to go. |
|||||||
| 247 | ||||||||
| 248 | --- |
|||||||
| 249 | ||||||||
| 250 | ## 20.6 Set Up FilaMan |
|||||||
| 251 | ||||||||
| 252 | Now we'll create the configuration files for FilaMan. |
|||||||
| 253 | ||||||||
| 254 | ### Create a Directory |
|||||||
| 255 | ||||||||
| 256 | ```bash |
|||||||
| 257 | mkdir ~/filaman && cd ~/filaman |
|||||||
| 258 | ``` |
|||||||
| 259 | ||||||||
| 260 | ### Generate Secure Keys |
|||||||
| 261 | ||||||||
| 262 | FilaMan requires two secret keys for security. Generate them with the following command: |
|||||||
| 263 | ||||||||
| 264 | ```bash |
|||||||
| 265 | echo "SECRET_KEY: $(openssl rand -hex 32)" |
|||||||
| 266 | echo "CSRF_SECRET_KEY: $(openssl rand -hex 32)" |
|||||||
| 267 | ``` |
|||||||
| 268 | ||||||||
| 269 | > **Important:** Copy the two generated keys and save them. You'll need them shortly for the `.env` file. |
|||||||
| 270 | ||||||||
| 271 | The output looks something like this: |
|||||||
| 272 | ||||||||
| 273 | ``` |
|||||||
| 274 | SECRET_KEY: 3a7f2b1e9c4d8f6a5e2b1c7d9f3a8e6b4c1d7f2a9e5b3c8d6f4a1e7b2c9d5f |
|||||||
| 275 | CSRF_SECRET_KEY: 8e2f4a6c1d9b7e3f5a2c8d4b6e1f9a7c3d5b8e2f4a6c1d9b7e3f5a2c8d4b6e |
|||||||
| 276 | ``` |
|||||||
| 277 | ||||||||
| 278 | ### Create Configuration File (.env) |
|||||||
| 279 | ||||||||
| 280 | Create the `.env` file with the settings for FilaMan: |
|||||||
| 281 | ||||||||
| 282 | ```bash |
|||||||
| 283 | nano .env |
|||||||
| 284 | ``` |
|||||||
| 285 | ||||||||
| 286 | Paste the following content and **adjust the marked sections**: |
|||||||
| 287 | ||||||||
| 288 | ```env |
|||||||
| 289 | # =========================================== |
|||||||
| 290 | # Database Configuration |
|||||||
| 291 | # =========================================== |
|||||||
| 292 | # SQLite (default - recommended for Raspberry Pi) |
|||||||
| 293 | DATABASE_URL=sqlite+aiosqlite:////app/data/filaman.db |
|||||||
| 294 | ||||||||
| 295 | # =========================================== |
|||||||
| 296 | # Security |
|||||||
| 297 | # =========================================== |
|||||||
| 298 | # IMPORTANT: Replace these with your generated keys! |
|||||||
| 299 | SECRET_KEY=PASTE_YOUR_GENERATED_SECRET_KEY_HERE |
|||||||
| 300 | CSRF_SECRET_KEY=PASTE_YOUR_GENERATED_CSRF_SECRET_KEY_HERE |
|||||||
| 301 | ||||||||
| 302 | # =========================================== |
|||||||
| 303 | # Administrator Account |
|||||||
| 304 | # =========================================== |
|||||||
| 305 | # These credentials are used to create the admin account on first start |
|||||||
| 306 | ADMIN_EMAIL=admin@example.com |
|||||||
| 307 | ADMIN_PASSWORD=MySecurePassword123! |
|||||||
| 308 | ADMIN_DISPLAY_NAME=Admin |
|||||||
| 309 | ADMIN_LANGUAGE=en |
|||||||
| 310 | ADMIN_SUPERADMIN=true |
|||||||
| 311 | ||||||||
| 312 | # =========================================== |
|||||||
| 313 | # Application Settings |
|||||||
| 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 | **Explanation of settings:** |
||||||
| 327 | ||||||||
| 328 | | Setting | Description | |
|||||||
| 329 | |---|---| |
|||||||
| 330 | | `DATABASE_URL` | Database connection string. The default SQLite database is stored inside the container at `/app/data/` and is backed up automatically. | |
|||||||
| 331 | | `SECRET_KEY` | Secret key for session encryption. **Must** be replaced with your generated key! | |
|||||||
| 332 | | `CSRF_SECRET_KEY` | Secret key for CSRF protection. **Must** be replaced with your generated key! | |
|||||||
| 333 | | `ADMIN_EMAIL` | Email address for the first administrator. This is your login name. | |
|||||||
| 334 | | `ADMIN_PASSWORD` | Password for the administrator. **Choose a secure password!** At least 8 characters. | |
|||||||
| 335 | | `ADMIN_DISPLAY_NAME` | Display name of the administrator in the UI. | |
|||||||
| 336 | | `ADMIN_LANGUAGE` | UI language (`en` for English, `de` for German). | |
|||||||
| 337 | | `ADMIN_SUPERADMIN` | Grants the first user full administrator rights. | |
|||||||
| 338 | | `DEBUG` | Debug mode. Leave at `false` for normal operation. | |
|||||||
| 339 | | `CORS_ORIGINS` | Allowed origin domains for API requests. `*` allows all. | |
|||||||
| 340 | | `PORT` | External port on which FilaMan is accessible. Default: `8000`. | |
|||||||
| 341 | | `LOG_LEVEL` | Detail level of log output (`INFO`, `DEBUG`, `WARNING`, `ERROR`). | |
|||||||
| 342 | | `LOG_FORMAT` | Log format (`text` or `json`). | |
|||||||
|
343 | |||||||
| 344 | Save the file with **Ctrl+O**, **Enter**, and close the editor with **Ctrl+X**. |
|||||||
| 345 | ||||||||
| 346 | ### Create Docker Compose File |
|||||||
| 347 | ||||||||
| 348 | ```bash |
|||||||
| 349 | nano docker-compose.yml |
|||||||
| 350 | ``` |
|||||||
| 351 | ||||||||
| 352 | Paste the following content: |
|||||||
| 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 | Save the file with **Ctrl+O**, **Enter**, and close the editor with **Ctrl+X**. |
|||||||
| 389 | ||||||||
| 390 | --- |
|||||||
| 391 | ||||||||
| 392 | ## 20.7 Start FilaMan |
|||||||
| 393 | ||||||||
| 394 | Everything is set up. Start FilaMan with: |
|||||||
| 395 | ||||||||
| 396 | ```bash |
|||||||
| 397 | docker compose up -d |
|||||||
| 398 | ``` |
|||||||
| 399 | ||||||||
| 400 | > **What's happening here?** |
|||||||
| 401 | > - `docker compose up` = starts the containers defined in `docker-compose.yml` |
|||||||
| 402 | > - `-d` = run in the background (detached mode) |
|||||||
| 403 | ||||||||
| 404 | On first start, the Docker image will be downloaded (approx. 200--400 MB). This may take a few minutes depending on your internet connection. |
|||||||
| 405 | ||||||||
| 406 | ### Check the Logs |
|||||||
| 407 | ||||||||
| 408 | Review the logs to verify everything starts correctly: |
|||||||
| 409 | ||||||||
| 410 | ```bash |
|||||||
| 411 | docker compose logs -f |
|||||||
| 412 | ``` |
|||||||
| 413 | ||||||||
| 414 | You should see output similar to: |
|||||||
| 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 | > Press **Ctrl+C** to exit the log view (the container continues running in the background). |
|||||||
| 424 | ||||||||
| 425 | ### Check Status |
|||||||
| 426 | ||||||||
| 427 | ```bash |
|||||||
| 428 | docker compose ps |
|||||||
| 429 | ``` |
|||||||
| 430 | ||||||||
| 431 | If everything works, you'll see: |
|||||||
| 432 | ||||||||
| 433 | ``` |
|||||||
| 434 | NAME STATUS PORTS |
|||||||
| 435 | filaman-system-app Up X minutes (healthy) 0.0.0.0:8000->8000/tcp |
|||||||
| 436 | ``` |
|||||||
| 437 | ||||||||
| 438 | > The status should change to `(healthy)` after approximately 30 seconds. |
|||||||
| 439 | ||||||||
| 440 | --- |
|||||||
| 441 | ||||||||
| 442 | ## 20.8 Access FilaMan in the Browser |
|||||||
| 443 | ||||||||
| 444 | FilaMan is now ready! Open a browser on your PC and navigate to: |
|||||||
| 445 | ||||||||
| 446 | ``` |
|||||||
| 447 | http://filaman.local:8000 |
|||||||
| 448 | ``` |
|||||||
| 449 | ||||||||
| 450 | Or use the IP address of your Raspberry Pi: |
|||||||
| 451 | ||||||||
| 452 | ``` |
|||||||
| 453 | http://192.168.1.42:8000 |
|||||||
| 454 | ``` |
|||||||
| 455 | ||||||||
| 456 | > **Tip:** You can find your Pi's IP address with this command (on the Pi via SSH): |
|||||||
| 457 | > ```bash |
|||||||
| 458 | > hostname -I |
|||||||
| 459 | > ``` |
|||||||
| 460 | ||||||||
| 461 | ### First Login |
|||||||
| 462 | ||||||||
| 463 | You'll see the FilaMan login page. Sign in with the credentials you set in the `.env` file: |
|||||||
| 464 | ||||||||
| 465 | - **Email:** The `ADMIN_EMAIL` from your `.env` (e.g. `admin@example.com`) |
|||||||
| 466 | - **Password:** The `ADMIN_PASSWORD` from your `.env` |
|||||||
| 467 | ||||||||
| 468 | After signing in, you'll see the **Dashboard** -- FilaMan's home page. |
|||||||
| 469 | ||||||||
| 470 | > For detailed information about the login process, see the documentation: [Login](https://docu.filaman.app/Docs/En/02-Login) |
|||||||
| 471 | ||||||||
| 472 | --- |
|||||||
| 473 | ||||||||
| 474 | ## 20.9 First Steps After Installation |
|||||||
| 475 | ||||||||
| 476 | Once FilaMan is running, it's recommended to set up your data in the following order: |
|||||||
| 477 | ||||||||
| 478 | | Step | What | Where | Documentation | |
|||||||
| 479 | |---|---|---|---| |
|||||||
| 480 | | 1 | **Create manufacturers** | Menu → Manufacturers | [Manufacturers](https://docu.filaman.app/Docs/En/05-Manufacturers) | |
|||||||
| 481 | | 2 | **Define colors** | Menu → Filaments → "Manage Colors" | [Color Management](https://docu.filaman.app/Docs/En/12-Colors) | |
|||||||
| 482 | | 3 | **Create filaments** | Menu → Filaments → "Add Filament" | [Filaments](https://docu.filaman.app/Docs/En/06-Filaments) | |
|||||||
| 483 | | 4 | **Set up locations** | Menu → Locations → "Add Location" | [Locations](https://docu.filaman.app/Docs/En/08-Locations) | |
|||||||
| 484 | | 5 | **Add spools** | Menu → Spools → "Add Spool" | [Spools](https://docu.filaman.app/Docs/En/07-Spools) | |
|||||||
| 485 | | 6 | **Connect printers** (optional) | Menu → Printers → "Add Printer" | [Printers](https://docu.filaman.app/Docs/En/09-Printers) | |
|||||||
| 486 | ||||||||
| 487 | > **Tip:** Alternatively, you can import filaments from SpoolmanDB instead of creating everything manually. Install the SpoolmanDB plugin to do this (see next chapter). |
|||||||
| 488 | ||||||||
| 489 | --- |
|||||||
| 490 | ||||||||
| 491 | ## 20.10 Install Plugins |
|||||||
| 492 | ||||||||
| 493 | FilaMan can be extended with plugins. Installation is done conveniently through the web interface. |
|||||||
| 494 | ||||||||
| 495 | ### Installing a Plugin |
|||||||
| 496 | ||||||||
| 497 | 1. Go to **Admin Panel** → **System** |
|||||||
| 498 | 2. Click **"Install Plugin"** |
|||||||
| 499 | 3. Select the desired plugin from the **"Install from Registry"** dropdown |
|||||||
| 500 | 4. Click **"Install Plugin"** |
|||||||
| 501 | 5. The plugin will be automatically downloaded and installed |
|||||||
| 502 | ||||||||
| 503 | ### Available Plugins |
|||||||
| 504 | ||||||||
| 505 | | Plugin | Type | Description | Documentation | |
|||||||
| 506 | |---|---|---|---| |
|||||||
| 507 | | **BambuLab** | Driver | Connect BambuLab printers (AMS, filament sync) | [Plugin: BambuLab](https://docu.filaman.app/Docs/En/14-Plugin-Bambulab) | |
|||||||
| 508 | | **SpoolmanDB Import** | Import | Import filaments from the SpoolmanDB database | [Plugin: SpoolmanDB](https://docu.filaman.app/Docs/En/15-Plugin-Spoolmandb) | |
|||||||
| 509 | | **Spoolman API** | Import | Spoolman-compatible API for external tools | [Plugin: Spoolman API](https://docu.filaman.app/Docs/En/16-Plugin-Spoolmanapi) | |
|||||||
| 510 | | **Bambuddy** | Integration | Bambuddy integration for inventory sync | [Plugin: Bambuddy](https://docu.filaman.app/Docs/En/17-Plugin-Bambuddy) | |
|||||||
| 511 | ||||||||
| 512 | > For detailed information about plugin management: [Admin Area](https://docu.filaman.app/Docs/En/11-Admin#115-system-plugin-management) |
|||||||
| 513 | ||||||||
| 514 | --- |
|||||||
| 515 | ||||||||
| 516 | ## 20.11 Update FilaMan |
|||||||
| 517 | ||||||||
| 518 | To update FilaMan to the latest version, run the following commands on the Raspberry Pi: |
|||||||
| 519 | ||||||||
| 520 | ```bash |
|||||||
| 521 | cd ~/filaman |
|||||||
| 522 | docker compose pull |
|||||||
| 523 | docker compose up -d |
|||||||
| 524 | ``` |
|||||||
| 525 | ||||||||
| 526 | > **What happens during an update?** |
|||||||
| 527 | > 1. `docker compose pull` downloads the latest version of the Docker image |
|||||||
| 528 | > 2. `docker compose up -d` restarts the container with the new version |
|||||||
| 529 | > 3. On startup, a **database backup** is automatically created |
|||||||
| 530 | > 4. Then all necessary **database migrations** are automatically applied |
|||||||
| 531 | > |
|||||||
| 532 | > Your data is fully preserved! |
|||||||
| 533 | ||||||||
| 534 | --- |
|||||||
| 535 | ||||||||
| 536 | ## 20.12 Useful Commands |
|||||||
| 537 | ||||||||
| 538 | Here's an overview of the most important Docker commands for daily operation: |
|||||||
| 539 | ||||||||
| 540 | ### Manage Containers |
|||||||
| 541 | ||||||||
| 542 | ```bash |
|||||||
| 543 | # Navigate to the FilaMan directory |
|||||||
| 544 | cd ~/filaman |
|||||||
| 545 | ||||||||
| 546 | # Stop containers |
|||||||
| 547 | docker compose stop |
|||||||
| 548 | ||||||||
| 549 | # Start containers |
|||||||
| 550 | docker compose start |
|||||||
| 551 | ||||||||
| 552 | # Restart containers |
|||||||
| 553 | docker compose restart |
|||||||
| 554 | ||||||||
| 555 | # Stop and remove containers (data is preserved!) |
|||||||
| 556 | docker compose down |
|||||||
| 557 | ||||||||
| 558 | # Create and start containers |
|||||||
| 559 | docker compose up -d |
|||||||
| 560 | ``` |
|||||||
| 561 | ||||||||
| 562 | ### View Logs |
|||||||
| 563 | ||||||||
| 564 | ```bash |
|||||||
| 565 | # Show all logs (continuously) |
|||||||
| 566 | docker compose logs -f |
|||||||
| 567 | ||||||||
| 568 | # Show only the last 100 lines |
|||||||
| 569 | docker compose logs --tail 100 |
|||||||
| 570 | ||||||||
| 571 | # Show logs since a specific time |
|||||||
| 572 | docker compose logs --since 1h |
|||||||
| 573 | ``` |
|||||||
| 574 | ||||||||
| 575 | ### Check Container Status |
|||||||
| 576 | ||||||||
| 577 | ```bash |
|||||||
| 578 | # Status of all containers |
|||||||
| 579 | docker compose ps |
|||||||
| 580 | ||||||||
| 581 | # Detailed container info |
|||||||
| 582 | docker inspect filaman-system-app |
|||||||
| 583 | ``` |
|||||||
| 584 | ||||||||
| 585 | ### Reset Administrator Password |
|||||||
| 586 | ||||||||
| 587 | If you've forgotten your password: |
|||||||
| 588 | ||||||||
| 589 | ```bash |
|||||||
| 590 | docker exec -it filaman-system-app python -m app.cli reset-password admin@example.com |
|||||||
| 591 | ``` |
|||||||
| 592 | ||||||||
| 593 | > Replace `admin@example.com` with your actual admin email address. You'll be prompted to enter the new password twice. |
|||||||
| 594 | ||||||||
| 595 | ### Data and Backups |
|||||||
| 596 | ||||||||
| 597 | FilaMan data is stored in a Docker volume. Automatic SQLite backups are created under `/app/data/backups` inside the container. |
|||||||
| 598 | ||||||||
| 599 | ```bash |
|||||||
| 600 | # List backups inside the container |
|||||||
| 601 | docker exec filaman-system-app ls -la /app/data/backups/ |
|||||||
| 602 | ``` |
|||||||
| 603 | ||||||||
| 604 | > Backups can also be managed through the web interface under **Admin Panel → Database Backup**. See: [Database Backup](https://docu.filaman.app/Docs/En/11-Admin#116-database-backup-restore) |
|||||||
| 605 | ||||||||
| 606 | --- |
|||||||
| 607 | ||||||||
| 608 | ## 20.13 Troubleshooting |
|||||||
| 609 | ||||||||
| 610 | ### Container Won't Start |
|||||||
| 611 | ||||||||
| 612 | Check the logs for error messages: |
|||||||
| 613 | ||||||||
| 614 | ```bash |
|||||||
| 615 | docker compose logs |
|||||||
| 616 | ``` |
|||||||
| 617 | ||||||||
| 618 | Common causes: |
|||||||
| 619 | - **Missing or invalid `.env` file** -- Check that all required fields are set |
|||||||
| 620 | - **Syntax error in `docker-compose.yml`** -- Ensure correct indentation (spaces, not tabs) |
|||||||
| 621 | ||||||||
| 622 | ### Port Already in Use |
|||||||
| 623 | ||||||||
| 624 | If port 8000 is already used by another service: |
|||||||
| 625 | ||||||||
| 626 | 1. Open the `.env` file: |
|||||||
| 627 | ```bash |
|||||||
| 628 | nano ~/filaman/.env |
|||||||
| 629 | ``` |
|||||||
| 630 | 2. Change the port, e.g.: |
|||||||
| 631 | ``` |
|||||||
| 632 | PORT=8080 |
|||||||
| 633 | ``` |
|||||||
| 634 | 3. Restart the container: |
|||||||
| 635 | ```bash |
|||||||
| 636 | cd ~/filaman |
|||||||
| 637 | docker compose down |
|||||||
| 638 | docker compose up -d |
|||||||
| 639 | ``` |
|||||||
| 640 | 4. FilaMan will then be accessible at `http://filaman.local:8080` |
|||||||
| 641 | ||||||||
| 642 | ### Cannot Access from Another Device |
|||||||
| 643 | ||||||||
| 644 | - Make sure your PC and Raspberry Pi are on the **same network** |
|||||||
| 645 | - Use the **IP address** instead of the hostname (`http://192.168.x.x:8000`) |
|||||||
| 646 | - Check if a firewall on the Pi is blocking the port: |
|||||||
| 647 | ```bash |
|||||||
| 648 | sudo ufw status |
|||||||
| 649 | ``` |
|||||||
| 650 | If active, allow the port: |
|||||||
| 651 | ```bash |
|||||||
| 652 | sudo ufw allow 8000/tcp |
|||||||
| 653 | ``` |
|||||||
| 654 | ||||||||
| 655 | ### Forgotten Password |
|||||||
| 656 | ||||||||
| 657 | See [Reset Administrator Password](#reset-administrator-password) above or in the documentation: [Tips & FAQ](https://docu.filaman.app/Docs/En/13-Faq#ive-forgotten-my-admin-password-what-now) |
|||||||
| 658 | ||||||||
| 659 | ### Database Issues |
|||||||
| 660 | ||||||||
| 661 | If the database is corrupted, you can restore a backup: |
|||||||
| 662 | ||||||||
| 663 | 1. Via the web interface: **Admin Panel → Database Backup → SQLite Backups → Restore** |
|||||||
| 664 | 2. Or manually via the command line: |
|||||||
| 665 | ```bash |
|||||||
| 666 | # List available backups |
|||||||
| 667 | docker exec filaman-system-app ls -la /app/data/backups/ |
|||||||
| 668 | ``` |
|||||||
| 669 | ||||||||
| 670 | > For detailed information about backup recovery: [Database Backup](https://docu.filaman.app/Docs/En/11-Admin#116-database-backup-restore) |
|||||||
| 671 | ||||||||
| 672 | --- |
|||||||
| 673 | ||||||||
| 674 | ## 20.14 Further Links |
|||||||
| 675 | ||||||||
| 676 | | Resource | Link | |
|||||||
| 677 | |---|---| |
|||||||
| 678 | | **FilaMan Documentation (English)** | [docu.filaman.app/Docs/En/00-Contents](https://docu.filaman.app/Docs/En/00-Contents) | |
|||||||
| 679 | | **FilaMan Documentation (German)** | [docu.filaman.app/Docs/De/00-Inhalt](https://docu.filaman.app/Docs/De/00-Inhalt) | |
|||||||
| 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 Image** | [ghcr.io/fire-devils/filaman-system](https://github.com/Fire-Devils/filaman-system/pkgs/container/filaman-system) | |
|||||||
| 684 | ||||||||
| 685 | --- |
|||||||
| 686 | ||||||||
| 687 | ← [Back: Plugin: Bambuddy](/Docs/En/17-Plugin-Bambuddy) | [Back to Table of Contents](/Docs/En/00-Contents) |
|||||||
| 688 | ||||||||
| 689 | --- |
|||||||
| 690 | ||||||||
| 691 | *This guide was created for FilaMan. For technical questions or issues, please contact your system administrator.* |
|||||||