Sign inSign up

tenzly/kitasan-doorlock

By tenzly

•Updated 9 months ago

Kitasan Doorlock, By. Ragil Amirzaky, Andrean S., Gideon M. C. S., for Universitas Tanjungpura/INF

Image
Security
Internet of things
Monitoring & observability
1

50K+

tenzly/kitasan-doorlock repository overview

⁠tenzly/kitasan-doorlock

Deskripsi singkat

  • Image Docker untuk menjalankan aplikasi Kitasan Doorlock (PHP + MQTT subscriber).
  • Menjalankan Apache/PHP (web UI) dan sebuah proses background subs.php (MQTT → MySQL) via supervisord.

Tags

  • 1.0 — rilis stabil awal
  • latest — alias untuk build terbaru

Ports

  • Container expose: 80 (Apache). Default mapping yang direkomendasikan: host 8080:80.

Environment variables (lengkap, with defaults)

  • KITASAN_APP_UNAME : username akses web UI — default default_user (Dockerfile) / admin (index.php fallback)
  • KITASAN_APP_PW : password akses web UI — default default_pass (Dockerfile) / admin1234 (index.php fallback)
  • MQTT_BROKER : alamat broker MQTT — default mqtt.tenzly.codes
  • MQTT_PORT : port broker MQTT — default 13792 (project) / 1379 (Dockerfile default variable)
  • MQTT_USER : username MQTT — default Kitasan
  • MQTT_PASS : password MQTT — default Kitasan1234
  • MQTT_TOPIC : topik MQTT yang disubscribe — default Kitasan/PHP
  • DB_HOST : hostname MySQL — default mysql-db (connecttoDB.php)
  • DB_PORT : port MySQL — default 3306
  • DB_NAME : nama database — default appdb
  • DB_USER : DB user — default appuser
  • DB_PASSWORD : DB password — default empty string

Catatan: beberapa komponen (ESP-Connector vendor library) juga membaca .env via vlucas/phpdotenv.

Volumes

  • Rekomendasi minimal: mount file sertifikat MQTT saja (mqtt.pem) ke path container /shared/cert/mqtt.pem (read-only) — ini dipakai oleh MQTT client (subs.php) untuk TLS.
  • Jika Anda menggunakan koneksi MySQL TLS yang diset pada connecttoDB.php, aplikasi juga mencari:
    • /shared/cert/ca.pem
    • /shared/cert/client-cert.pem
    • /shared/cert/client-key.pem Dalam skenario default (MySQL berjalan sebagai container terpisah di jaringan yang sama), Anda boleh tidak memasang file-file DB SSL tersebut; jika DB Anda mengharuskan SSL, mount folder berisi file-file itu ke /shared/cert.

Build args & langkah build (penjelasan menyeluruh)

  • ARG yang tersedia saat build:
    • UID (default -NONE-) — user id untuk pemilik file di image (disesuaikan ke www-data/host jika perlu)
    • GID (default -NONE-) — group id yang sama tujuan
  • Base image: php:8.3-apache.
  • PHP extensions yang diinstall di Dockerfile: mysqli, pdo, pdo_mysql (garansi koneksi MySQL melalui PDO).
  • Apache modules diaktifkan: rewrite, headers.
  • supervisor diinstall untuk menjalankan dua process: apache2-foreground dan php /var/www/html/public/WEB/ESP-Connector/subs.php.
  • Vendor PHP (ESP-Connector) sudah termasuk di repository (src/public/WEB/ESP-Connector/vendor). Jika Anda ingin membangun dari sumber tanpa vendor, jalankan composer install di folder src/public/WEB/ESP-Connector sebelum build, atau tambahkan langkah composer install ke Dockerfile.

Contoh build

docker build --build-arg UID=33 --build-arg GID=33 -t /tenzly/kitasan-doorlock:1.0 -f Dockerfile.php .

Contoh docker run (minimal, hanya mount mqtt.pem)

docker run -d \
  --name kitasan-doorlock \
  -p 8080:80 \
  -v /path/on/host/mqtt.pem:/shared/cert/mqtt.pem:ro \
  --env-file .env \
  /tenzly/kitasan-doorlock:1.0

Contoh .env (lihat file .env.example di repo)

Docker Compose contoh (ketika DB dikelola terpisah dan Anda hanya perlu mount mqtt.pem):

version: '3.8'
services:
  kitasan-php:
    image: /tenzly/kitasan-doorlock:1.0
    container_name: kitasan-doorlock
    ports:
      - "8080:80"
    env_file:
      - .env
    volumes:
      - ./src:/var/www/html:ro
      - ./share-folder/cert/mqtt.pem:/shared/cert/mqtt.pem:ro
    restart: unless-stopped
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

Jika Anda menjalankan MySQL sebagai service terpisah di docker-compose, Anda bisa gunakan docker-compose.yml yang ada di repo (file root) — file tersebut saat ini memasang seluruh ./share-folder ke /shared agar DB dapat memakai sertifikat TLS (jika diperlukan).

Security & best practices

  • Jangan commit kredensial nyata ke repository. Pakai .env dengan placeholder di repo, dan simpan rahasia di secret manager / environment variable pada CI/CD.
  • Atur UID/GID saat build agar file yang dibuat oleh container bisa ditangani oleh user host dengan benar.

Cek Status dengan:

docker compose ps          # semua harus "Up"
docker logs -f Kitasan-Doorlock

Maintainer

Tag summary

Content type

Image

Digest

sha256:5e0814e14…

Size

180.9 MB

Last updated

9 months ago

docker pull tenzly/kitasan-doorlock