AssetManager 0.5.5.29
AssetManager is a self-hosted web application for managing IT equipment and other organizational assets. The project is released under the Apache License 2.0 and may be used, modified, and redistributed for private and commercial purposes.
Features
- configurable asset categories, fields, and status values
- asset lists, detail views, history, assignment, and return workflows
- Excel import and export, bulk changes, duplicate merging, and tree views
- hardware and software inventory
- job definitions and job execution with status tracking, callbacks, retries, and logs
- local user management and optional LDAP authentication
- protected local emergency administrator even when LDAP is enabled
- roles, visibility rules, translations, dark mode, and configurable appearance
- integrated backup and restore functions
- optional MeshCentral integration through the MeshCtrl command-line interface
MeshCentral integration
The integration is optional. AssetManager uses MeshCtrl for supported device queries and remote jobs. It does not access the MeshCentral database directly. MeshCentral and MeshCtrl are independent third-party projects and are not part of this repository; they are installed as dependencies during the Docker build.
Requirements
- Docker Engine with Docker Compose
- a suitable DNS name and HTTPS reverse proxy are recommended for production installations
- optionally, a reachable MeshCentral instance
- optionally, LDAP or Active Directory
Installation
cp .env.example .env
Set at least these values in .env:
POSTGRES_PASSWORD=CHANGE_ME
SESSION_SECRET=CHANGE_ME_LONG_RANDOM
LOCAL_ADMIN_USERNAME=emergency-admin
LOCAL_ADMIN_PASSWORD=CHANGE_ME_MIN_12_CHARS
Then start the application:
docker compose up -d --build
By default, the application is available on port 8088.
Persistent data
Runtime data is stored in bind mounts below data/:
data/
├── config/ application configuration
├── postgres/ PostgreSQL database
├── uploads/ uploaded files
├── logs/ logs and diagnostics
├── backups/ application backups
└── scripts/ deployed scripts
These directories and .env may contain credentials, personal data, or internal operational data and must not be committed to a public repository.
Updating
Always back up .env and the complete data/ directory before updating. Copy the new assetmanager/ directory over the existing project directory and run:
docker compose down
docker compose up -d --build
docker compose logs --tail=100 -f
Detailed release notes are stored in docs/version-history/.
Creating a sanitized public source archive
The exporter creates a sanitized ZIP archive with exactly one top-level directory named assetmanager/:
python tools/create_github_source.py
Before exporting, the script validates versions, license metadata, sensitive runtime files, and unwanted product-comparison references.
Validation
python tools/check_public_release.py
python tools/check_translations.py
python tools/validate_release.py
Documentation
- Client communication and software deployment architecture
- Version history
- Contributing
- Security policy
- Third-party notices
Third-party components
Direct dependencies and their license types are listed in THIRD_PARTY_NOTICES.md. During the Docker build, license files from the installed Python and Node.js packages are collected under /app/THIRD_PARTY_LICENSES/.
Contributing
Contributions and forks are welcome. See CONTRIBUTING.md. A submission is a proposal and does not create an obligation to include it in the official project.
Security
Do not disclose credentials or exploitable details in a public issue. See SECURITY.md.
License
Copyright © 2026 Roland Reich
Licensed under the Apache License, Version 2.0. See LICENSE.txt for the complete license text.