Exploring Open Source Inventory and Asset Management Systems

Comparing the most popular FOSS stock inventory management platforms: SnipeIT, HomeBox and InvenTree.

Sometimes you just outgrow spreadsheets and need a system to manage your inventory/stock/assets. This post aims to help with deploying and comparing the three most popular inventory management platforms: SnipeIT, HomeBox and Inventree.

SnipeIT

Home - Snipe-IT Open Source IT Asset Management
Snipe-IT is a free, open source IT asset management system that helps you manage assets, software licenses, accessories, components and consumables within your organization.

SnipeIT is a free and open-source asset and inventory management platform, targeting IT departments. It provides a centralised platform for tracking and managing hardware, software, licenses, and consumables with an easy-to-use GUI.

Key Features:

  • Comprehensive Asset Tracking: Log details like serial numbers, purchase dates, and warranty expirations to keep a clear overview of all assets and their statuses.
  • License Management: Easily monitor software licenses to ensure timely renewals and compliance.
  • Efficient Deployment: Assign and deploy assets to users or departments smoothly, ensuring proper allocation.
  • Maintenance and Repair Tracking: Track maintenance schedules and repair histories to prevent potential issues.
  • User and Role Management: Role-based access controls ensure only authorized personnel can access sensitive information.
  • Reporting and Analytics: Generate detailed reports on asset statuses, locations, and maintenance schedules for strategic planning.

Pros:

  • Free and open-source.
  • Robust asset and license management features.
  • Detailed reporting capabilities.

Cons:

  • Primarily targeted at IT asset management, may not be suitable for other use cases.
  • Requires setup and maintenance of the server environment.

Deployment using Docker Compose and Environment File:

volumes:
  db_data:
  storage:

services:
  app:
    image: snipe/snipe-it:${APP_VERSION:-v6.4.1}
    restart: always
    volumes:
      - storage:/var/lib/snipeit
    ports:
      - "${APP_PORT:-8020}:80"
    depends_on:
      db:
        condition: service_healthy
        restart: true
    env_file:
      - stack.env

  db:
    image: mariadb:10.6.4-focal
    restart: always
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_DATABASE: ${DB_DATABASE}
      MYSQL_USER: ${DB_USERNAME}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    healthcheck:
      test: mysqladmin ping -h 127.0.0.1 -u $$MYSQL_USER --password=$$MYSQL_PASSWORD
      interval: 5s
      timeout: 1s
      retries: 5

compose.yml

APP_VERSION=v6.4.1
APP_PORT=8020
APP_ENV=production
APP_DEBUG=false
APP_KEY=RANDOMLY GENERATED BASE64 KEY (example: base64:UHzvCSY8LdMeL/3Nk6+0Xw==)
APP_URL=https://stock.domain.com
APP_TIMEZONE='Europe/London'
APP_LOCALE=en
MAX_RESULTS=5000
PRIVATE_FILESYSTEM_DISK=local
PUBLIC_FILESYSTEM_DISK=local_public
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=snipeit
DB_USERNAME=snipeit
DB_PASSWORD=RANDOMPASS (avoid using # and above 8 characters)
MYSQL_ROOT_PASSWORD=RANDOMPASS (avoid using # and above 8 characters)
DB_DUMP_PATH=/usr/bin
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci
DB_SSL=false
DB_SSL_IS_PAAS=false
DB_SSL_KEY_PATH=null
DB_SSL_CERT_PATH=null
DB_SSL_CA_PATH=null
DB_SSL_CIPHER=null
DB_SSL_VERIFY_SERVER=null
MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_TLS_VERIFY_PEER=true
[email protected]
MAIL_FROM_NAME=Company Stock Management
[email protected]
MAIL_REPLYTO_NAME=Company Stock Management
MAIL_AUTO_EMBED_METHOD=attachment
ALLOW_BACKUP_DELETE=false
ALLOW_DATA_PURGE=false
IMAGE_LIB=gd
MAIL_BACKUP_NOTIFICATION_DRIVER=null
MAIL_BACKUP_NOTIFICATION_ADDRESS=null
BACKUP_ENV=true
SESSION_LIFETIME=12000
EXPIRE_ON_CLOSE=false
ENCRYPT=false
COOKIE_NAME=snipeit_session
COOKIE_DOMAIN=null
SECURE_COOKIES=false
API_TOKEN_EXPIRATION_YEARS=40
APP_TRUSTED_PROXIES=YOUR_PROXY_IP
ALLOW_IFRAMING=false
REFERRER_POLICY=same-origin
ENABLE_CSP=false
CORS_ALLOWED_ORIGINS=null
ENABLE_HSTS=false
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
CACHE_PREFIX=snipeit
REDIS_HOST=null
REDIS_PASSWORD=null
REDIS_PORT=6379
MEMCACHED_HOST=null
MEMCACHED_PORT=null
PUBLIC_AWS_SECRET_ACCESS_KEY=null
PUBLIC_AWS_ACCESS_KEY_ID=null
PUBLIC_AWS_DEFAULT_REGION=null
PUBLIC_AWS_BUCKET=null
PUBLIC_AWS_URL=null
PUBLIC_AWS_BUCKET_ROOT=null
PRIVATE_AWS_ACCESS_KEY_ID=null
PRIVATE_AWS_SECRET_ACCESS_KEY=null
PRIVATE_AWS_DEFAULT_REGION=null
PRIVATE_AWS_BUCKET=null
PRIVATE_AWS_URL=null
PRIVATE_AWS_BUCKET_ROOT=null
AWS_ACCESS_KEY_ID=null
AWS_SECRET_ACCESS_KEY=null
AWS_DEFAULT_REGION=null
LOGIN_MAX_ATTEMPTS=5
LOGIN_LOCKOUT_DURATION=60
RESET_PASSWORD_LINK_EXPIRES=900
LOG_CHANNEL=stderr
LOG_MAX_DAYS=10
APP_LOCKED=false
APP_CIPHER=AES-256-CBC
APP_FORCE_TLS=false
GOOGLE_MAPS_API=
LDAP_MEM_LIM=500M
LDAP_TIME_LIM=600

stack.env

HomeBox

Home - Homebox

HomeBox is an excellent inventory and organization system tailored for home users. It ships with a simplified and easy-to-understand interface. HomeBox is built for simplicity and ease of use, ideal for organizing household items and IoT devices.

Key Features:

  • Simplicity: Easy setup with minimal configuration.
  • Performance: Written in Go, offering high speed and low resource usage.
  • Portability: Uses SQLite and an embedded Web UI for easy deployment.
  • Item Management: Create and manage items with optional details like warranty info, attachments, and custom fields.
  • CSV Import/Export: Quick data management.
  • Custom Reporting: Generate detailed reports.
  • QR Code Labels: Generate labels for items.
  • Multi-Tenant Support: Share and manage inventory within groups.

Pros:

  • Easy to use and set up.
  • Lightweight and resource-efficient.
  • Ideal for home and small-scale inventory management.

Cons:

  • Limited to home and small-scale use, not suitable for large enterprises.
  • Fewer advanced features compared to other platforms.

Deployment using Docker Compose:

version: "3.4"

services:
  homebox:
    image: ghcr.io/hay-kot/homebox:latest
    container_name: homebox
    restart: always
    environment:
    - HBOX_LOG_LEVEL=info
    - HBOX_LOG_FORMAT=text
    - HBOX_MODE=production
    - HBOX_WEB_MAX_UPLOAD_SIZE=10
    - HBOX_OPTIONS_AUTO_INCREMENT_ASSET=true
    
    volumes:
      - homebox-data:/data/
    ports:
      - 3100:7745

volumes:
   homebox-data:
     driver: local

compose.yml

InvenTree

InvenTree
InvenTree is an open-source inventory management system which provides intuitive parts management and stock control. It is at the center of an ecosystem of addins for EDA tools, API wrapper, deeply integrated plugins and 3rd party tools.

InvenTree is an open-source inventory management system designed to provide intuitive parts management and stock control. It is particularly suitable for small to medium enterprises.

Key Features:

  1. Parts Management: Allows categorization and detailed management of parts, including supplier and manufacturer information.
  2. Stock Control: Facilitates tracking of stock levels, locations, and movements. It supports serialization for tracking individual items and managing test results for acceptance and commissioning.
  3. BOM (Bill of Materials) Management: Provides tools for managing and understanding the sub-parts needed for assembling new parts. It supports importing and exporting BOMs in various formats​
  4. Build Management: Tracks the progress of builds, allowing for automatic or manual allocation of parts from the inventory​.
  5. Reporting and Customization: Generates a variety of reports using custom templates. InvenTree is highly extensible with support for a powerful REST API, a native Python library, and a comprehensive plugin system.
  6. Supplier Management: Easily manage suppliers and linked supplier items for parts.
  7. Instant Stock Information: Provides real-time visibility into current stock levels and locations, supporting efficient inventory management​.
  8. User and Permission Management: Features robust user settings, including single sign-on and multi-factor authentication, to ensure secure access and management.

InvenTree also offers integrations with various external applications and supports barcode generation and scanning for inventory management. Its design focuses on being lightweight and easy to use while maintaining powerful business logic for effective stock tracking and management.

Pros:

  • Comprehensive features for detailed inventory management.
  • Highly extensible with a powerful REST API and plugin system.
  • Suitable for small to medium enterprises.

Cons:

  • More complex setup compared to HomeBox.
  • May require technical expertise for optimal deployment and use.

Deployment using Bare Metal:

I had trouble deploying this app in a Docker Compose as the database could not initialise for some reason. Resulted to a bare-metal configuration, using Ubuntu 20.04 LTS. InvenTree provides an all-in-one auto-installer for this:

sudo apt update
sudo apt upgrade
wget -qO install.sh https://get.inventree.org && sudo bash install.sh

Access it via http://HostIP:80. The credentials are randomly generated and are shown in the terminal after deployment. Reboot the host before making any modifications to the system.

Comparison:

  • SnipeIT is ideal for IT departments needing robust asset and license management features.
  • HomeBox is perfect for home users or small-scale setups looking for simplicity and ease of use.
  • InvenTree offers comprehensive inventory management suitable for small to medium enterprises, with extensive customization and integration capabilities.

Choosing the right platform depends on your specific needs and the scale of your inventory management requirements.