Atlas CMMS is a powerful, self-hosted maintenance management system designed for both web and mobile platforms using Docker. It simplifies and automates the management of maintenance activities, making it ideal for IT managers or developers looking to implement solutions that keep their organization's assets running smoothly. Think of it like Jira for technicians.
Example industries
- Facilities Managers (buildings, property, real estate)
- Manufacturing/Production Teams (machinery and equipment)
- Healthcare Facilities (medical equipment maintenance)
- Hospitality Managers (hotels and resorts)
- Public Sector (infrastructure and public buildings)
- Educational Institutions (campus maintenance)
- Utility Companies (power, water, and energy systems)
Demo website
Screenshots:
- π Create, assign, and track work orders.
- β±οΈ Log time, set priorities, and track history.
- π€ Automate work orders with triggers.
- π Export reports and view analytics.
- πΌ Work order compliance and cost analysis.
- π οΈ Equipment downtime and reliability insights.
- π΅ Cost trends and labor tracking.
- βοΈ Track equipment, downtime, and maintenance costs.
- π¦ Manage inventory with stock alerts.
- π Automate purchase orders and approvals.
- π₯ Assign tasks to teams or service providers.
- π§βπΌ Customizable user roles and permissions.
- π Define workflows with automation logic.
- π Manage locations with Google Maps integration.
- π Create and track service requests.
You can check out the complete list of features.
We'd love to have new contributors, so feel free to join us!
β Star this repo to support us!
Download this file .env.example, rename it to .env
and configure the environment variables inside it.
Do not delete the .env file
Name | Required | Description | Default Value |
---|---|---|---|
POSTGRES_USER | Yes | Postgres user | rootUser |
POSTGRES_PWD | Yes | Postgres password | mypassword |
MINIO_USER | Yes | MiniO user | minio |
MINIO_PWD | Yes | MiniO password | minio123 |
ENABLE_EMAIL_NOTIFICATIONS | No | Enables or disables email notifications (true or false ). Requires SMTP if enabled. |
false |
INVITATION_VIA_EMAIL | No | Enables or disables user invitations via email (true or false ). Requires SMTP and ENABLE_EMAIL_NOTIFICATIONS if enabled. |
false |
SMTP_PWD | No | The SMTP password after creating an app password with Google. Learn how to create an app password. To be able to invite people you have to configure it. | (empty) |
SMTP_USER | No | The SMTP username after creating an app password with Google. Learn how to create an app password | (empty) |
JWT_SECRET_KEY | No | JWT secret key | your_jwt_secret |
ALLOWED_ORGANIZATION_ADMINS | No | Comma separated email addresses allowed to sign up without being invited, hence allowed to create organizations. Empty means everyone can create an organization | (empty) |
GOOGLE_KEY | No | Google Maps API key | (empty) |
GOOGLE_TRACKING_ID | No | Google Analytics tracking ID | (empty) |
PUBLIC_FRONT_URL | No | Frontend URL in this format http://your.public.ip:3000 . Multiple addresses may open the website but only this one will work with the backend because of CORS. |
http://localhost:3000 |
PUBLIC_API_URL | No | Public API URL in this format http://your.public.ip:8080 |
http://localhost:8080 |
STORAGE_TYPE | No | Type of storage either local MinIO or Google Cloud Storage gcp or minio |
minio |
PUBLIC_MINIO_ENDPOINT | No | Public Mini endpoint in format http://public.ip:9000 |
http://localhost:9000 |
GCP_JSON | No | The Google Cloud JSON key after following these instructions. | (empty) |
GCP_PROJECT_ID | No | The Google Cloud project ID, also found in the GCP_JSON file. |
(empty) |
GCP_BUCKET_NAME | No | GCP Bucket Name | (empty) |
MAIL_RECIPIENTS | No | Comma-separated email addresses of the super admins where to send information emails like new signups. You can provide your email address. | (empty) |
LICENSE_KEY | No | Atlas CMMS license key to get access to advanced features like SSO. | (empty) |
MUI_X_LICENSE | No | Mui Pro license key | (empty) |
ENABLE_SSO | No | Enables or disables SSO. (true or false ) Requires OAUTH2_PROVIDER , OAUTH2_CLIENT_ID and OAUTH2_CLIENT_SECRET . Make sure to add PUBLIC_FRONT_URL as authorized origin and ${PUBLIC_API_URL}/oauth2/callback/${OAUTH2_PROVIDER} as authorized redirection URI in your Oauth2 provider settings |
false |
OAUTH2_PROVIDER | No | Oauth2 provider google or microsoft |
(empty) |
OAUTH2_CLIENT_ID | No | Oauth2 Client ID | (empty) |
OAUTH2_CLIENT_SECRET | No | Oauth2 client secret | (empty) |
For production deployments, itβs strongly recommended to use unique credentials and not rely on defaults.
-
You need to update every env variable starting with
PUBLIC_
. -
Open ports if necessary: make sure to open
PUBLIC_API_URL
,PUBLIC_FRONT_URL
ports numbers by default 8080, and 3000. Same forPUBLIC_MINIO_ENDPOINT
port 9000 if you use Minio. -
Make sure the backend and frontend use the same protocol: https or http
Download this docker-compose.yml file. At this point you should have 2 files .env
and
docker-compose.yml
.
Now run
docker-compose up -d
Go to http://localhost:3000 or your custom PUBLIC_FRONT_URL
Celebrate on how easy this was
You can use the live Android app and configure it with your custom backend server url
If you still have questions after reading the docs, concerns, bug reports, etc, please file an issue in this repository's Issue Tracker or send an email at [email protected].
- English
- Spanish
- French
- German
- Turkish
- Polish
- Portuguese (Brazil)
- Arabic
Don't want to handle the maintenance and management yourself? We offer a complete done-for-you service. Please reach out to us
We welcome contributions! You can help by:
- β Reporting bugs
- β Suggesting new features
- β Improving documentation
- β Submitting pull requests
Check CONTRIBUTING.md inside each subproject for details.
You can also join our Discord server