Sign inSign up

kars85/alarmdecoder-webapp

By kars85

โ€ขUpdated over 1 year ago

Image
0

182

kars85/alarmdecoder-webapp repository overview

๐Ÿš€ AlarmDecoder Dockerization Guide (Raspberry Pi)

๐Ÿ“˜ Overview

This guide documents the process of Dockerizing the AlarmDecoder WebApp on a Raspberry Pi. It includes installation, environment setup, persistent database configuration, and troubleshooting steps based on real-world deployment.

๐Ÿ“Œ Prerequisites

Ensure the following before starting:

โœ… Raspberry Pi OS (64-bit recommended)

โœ… Docker installed on your Raspberry Pi

โœ… AlarmDecoder hardware connected (e.g. AD2Pi "hat")

โœ… Stable internet connection for package installation

๐Ÿงฐ Install Dependencies

sudo apt update && sudo apt install -y

apt-transport-https

ca-certificates

curl

software-properties-common

git

sudo

curl -fsSL https://get.docker.comโ  | sh sudo usermod -aG docker $USER newgrp docker

๐Ÿ“ Clone Required Repositories

git clone https://github.com/nutechsoftware/alarmdecoder.gitโ  ~/alarmdecoder git clone https://github.com/nutechsoftware/alarmdecoder-webapp.gitโ  ~/alarmdecoder-webapp

๐Ÿณ Build Docker Image for alarmdecoder

cd ~/alarmdecoder docker build -t alarmdecoder-python2 .

๐Ÿณ Build Docker Image for alarmdecoder-webapp

cd ~/alarmdecoder-webapp docker build -t alarmdecoder-webapp .

๐Ÿงช Run the WebApp (First-Time Manual Test)

docker run --rm -it

-v ~/alarmdecoder-webapp-instance:/opt/alarmdecoder-webapp/instance

-p 5000:5000

--device=/dev/ttyAMA0

alarmdecoder-webapp

Then open in your browser:

http://<raspberry_pi_ip>:5000/

๐Ÿ” Run with Docker Compose docker-compose.yml (place in ~/)

version: '3.8'

services: alarmdecoder-webapp:

container_name: alarmdecoder-webapp

image: kars85/alarmdecoder-webapp

restart: unless-stopped

ports: - "5000:5000"

devices: - "/dev/ttyAMA0:/dev/ttyAMA0"

environment:

PUID: ${PUID}

PGID: ${PGID}

TZ: ${TZ}

volumes: โˆ’ {HOME}/alarmdecoder-webapp-instance:/opt/alarmdecoder-webapp/instance

.env file (also in ~/) PUID=1000 PGID=1000 TZ=America/New_York HOME=/home/pi

๐Ÿš€ Launch the app

docker compose up -d

๐Ÿ”(Optional) Use a Systemd Service to Start Docker Compose

If the above does not work reliably, create a systemd service for docker-compose:

โ€ข sudo nano /etc/systemd/system/alarmdecoder.service

Paste this inside:

[Unit] Description=AlarmDecoder WebApp Container

Requires=docker.service After=docker.service

[Service] WorkingDirectory=/home/YOURUSERNAME

ExecStart=/usr/local/bin/docker-compose up -d

ExecStop=/usr/local/bin/docker-compose down

Restart=always

User=USERNAME

[Install]

WantedBy=multi-user.target

๐Ÿ“Œ (Replace /home/USERNAME with your actual home directory path and User= with your pi's username.)

Then enable the service:

sudo systemctl daemon-reload

sudo systemctl enable alarmdecoder

sudo systemctl start alarmdecoder

This ensures docker-compose up -d runs automatically on boot.

๐Ÿ› ๏ธ Known Issues Solved

Issue Resolution

db.sqlite not created Added ensure_database() and ENV SQLALCHEMY_DATABASE_URI

Flask context errors Wrapped db actions with app.app_context()

sqlite3 not installed Installed in Dockerfile

File permission issues Used chmod -R 777 on /instance

BroadcastMixin errors

Removed outdated socketio dependencies

โœ… Final Outcome

WebApp successfully Dockerized

Database created and persisted

Runs via Docker Compose on startup

Accessible via http://<raspberry_pi_ip>:5000/

๐Ÿ“ˆ Next Recommendations

Upgrade codebase to Python 3 (Python 2 is EOL)

Replace Flask dev server with Gunicorn or uWSGI

Containerize alarmdecoder separately with Docker Compose for cleaner architecture

Publish to Docker Hub and GitHub for wider reuse

Tag summary

Content type

Image

Digest

sha256:d756ca2ecโ€ฆ

Size

224.3 MB

Last updated

over 1 year ago

docker pull kars85/alarmdecoder-webapp