Install Inventree in Unraid using Docker Compose Manager

Install Inventree in Unraid using Docker Compose Manager

More information about this open source project https://inventree.org

1. Install the docker compose manager plugin in from the CA Apps to enable the use of docker stacks.

2. Configure everything in the docker tab of Unraid in the compose section at the bottom of the page just like the image below.

3. docker compose
version: "3.8"

# Docker compose recipe for a production-ready InvenTree setup, with the following containers:
# - PostgreSQL as the database backend
# - gunicorn as the InvenTree web server
# - django-q as the InvenTree background worker process
# - nginx as a reverse proxy
# - redis as the cache manager (optional, disabled by default)

# ---------------------
# READ BEFORE STARTING!
# ---------------------

# -----------------------------
# Setting environment variables
# -----------------------------
# Shared environment variables should be stored in the .env file
# Changes made to this file are reflected across all containers!
#
# IMPORTANT NOTE:
# You should not have to change *anything* within this docker-compose.yml file!
# Instead, make any changes in the .env file!

# ------------------------
# InvenTree Image Versions
# ------------------------
# By default, this docker-compose script targets the STABLE version of InvenTree,
# image: inventree/inventree:stable
#
# To run the LATEST (development) version of InvenTree,
# change the INVENTREE_TAG variable (in the .env file) to "latest"
#
# Alternatively, you could target a specific tagged release version with (for example):
# INVENTREE_TAG=0.7.5
#

services:
    # Database service
    # Use PostgreSQL as the database backend
    inventree-db:
        container_name: inventree-db
        image: postgres:13
        expose:
            - ${INVENTREE_DB_PORT:-5432}/tcp
        environment:
            - PGDATA=/var/lib/postgresql/data/pgdb
            - POSTGRES_USER=${INVENTREE_DB_USER:?You must provide the 'INVENTREE_DB_USER' variable in the .env file}
            - POSTGRES_PASSWORD=${INVENTREE_DB_PASSWORD:?You must provide the 'INVENTREE_DB_PASSWORD' variable in the .env file}
            - POSTGRES_DB=${INVENTREE_DB_NAME:?You must provide the 'INVENTREE_DB_NAME' variable in the .env file}
        volumes:
            # Map 'data' volume such that postgres database is stored externally
            - inventree_data:/var/lib/postgresql/data/
        restart: unless-stopped

    # redis acts as database cache manager
    # only runs under the "redis" profile : https://docs.docker.com/compose/profiles/
    inventree-cache:
        container_name: inventree-cache
        image: redis:7.0
        depends_on:
            - inventree-db
        profiles:
            - redis
        env_file:
            - stack.env
        expose:
            - ${INVENTREE_CACHE_PORT:-6380}
        restart: always

    # InvenTree web server service
    # Uses gunicorn as the web server
    inventree-server:
        container_name: inventree-server
        # If you wish to specify a particular InvenTree version, do so here
        image: inventree/inventree:${INVENTREE_TAG:-stable}
        #command: invoke update
        expose:
            - 8000
        depends_on:
            - inventree-db
        env_file:
            - stack.env
        volumes:
            # Data volume must map to /home/inventree/data
            - inventree_data:/home/inventree/data
        restart: unless-stopped

    # Background worker process handles long-running or periodic tasks
    inventree-worker:
        container_name: inventree-worker
        # If you wish to specify a particular InvenTree version, do so here
        image: inventree/inventree:${INVENTREE_TAG:-stable}
        command: invoke worker
        depends_on:
            - inventree-server
        env_file:
            - stack.env
        volumes:
            # Data volume must map to /home/inventree/data
            - inventree_data:/home/inventree/data
        restart: unless-stopped

    # nginx acts as a reverse proxy
    # static files are served directly by nginx
    # media files are served by nginx, although authentication is redirected to inventree-server
    # web requests are redirected to gunicorn
    # NOTE: You will need to provide a working nginx.conf file!
    inventree-proxy:
        container_name: inventree-proxy
        image: nginx:stable
        depends_on:
            - inventree-server
        env_file:
            - stack.env
        ports:
            # Default web port is 1337 (can be changed in the .env file)
            - ${INVENTREE_WEB_PORT:-1337}:80
        volumes:
            # Provide nginx configuration file to the container
            # Refer to the provided example file as a starting point
            - /mnt/user/appdata/portainer-ce/compose/59/nginx.prod.conf:/etc/nginx/conf.d/default.conf:ro
            # nginx proxy needs access to static and media files
            - inventree_data:/var/www
        restart: unless-stopped

volumes:
    # Persistent data, stored external to the container(s)
    inventree_data:
        driver: local
        driver_opts:
            type: none
            o: bind
            # This directory specified where InvenTree data are stored "outside" the docker containers
            device: ${INVENTREE_EXT_VOLUME:?You must specify the 'INVENTREE_EXT_VOLUME' variable in the .env file!}
4. .env file

Here you will need to change the path in INVENTREE_EXT_VOLUME= to where you want it to install.
Change the INVENTREE_WEB_ADDR= to the IP of the machine running unraid and if you want you can change the PORT to your liking.
You will also need to change the Admin account details and the INVENTRE_DB_USER and INVENTREE_PASSWORD.

I think that's all.

UI Labels

This can be left default with defaults except for the Web UI on the Service inventree-server where you will need to add the IP and Port of the InvenTree Web UI.

5. Do Compose UP and wait for everything to finish and follow the documentation on the inventree docs for further information.