Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Question about docker installation

Featured Replies

path on host unriad : path inside container

 

so in volumes options:

volumes:

- chatwoot_data:/app/storage

- chatwoot_public:/app

 

at the bottom in compose files your varable "chatwoot_data" is maped to the host path

 

in example netprobe

I made teh unriad docker network. with compose compose can be used to make a network...

root@Docker:~# docker network ls
NETWORK ID     NAME           DRIVER    SCOPE
9800558ff934   br0            macvlan   local
016cd2d57c13   bridge         bridge    local
e37597e9f197   host           host      local
151987bca355   netprobe-net   bridge    local
339c3f4928fb   none           null      local
root@Docker:~#

Note that i kept the version in the compose file, but covenanted it out. Unraid compose plugin gets upset when version is called.

 

since my docker file path is loacted at 

 

root@Docker:/mnt/user/appdata/netprobe_lite# ls
Dockerfile  config/  docker-compose.yml  helpers/  netprobe.py            presentation.py
README.md   data/    entrypoint.sh       logs/     netprobe_speedtest.py  requirements.txt
root@Docker:/mnt/user/appdata/netprobe_lite#

I can map within that path using ./path name... lets look at redis:
reids requires a redisconf in the continer path /etc/redis/redis.conf

This is a 1 for 1 file replacment:

 

root@Docker:/mnt/user/appdata/netprobe_lite# cd config
root@Docker:/mnt/user/appdata/netprobe_lite/config# ls
__init__.py  __pycache__/  grafana/  prometheus/  redis/
root@Docker:/mnt/user/appdata/netprobe_lite/config# cd redis
root@Docker:/mnt/user/appdata/netprobe_lite/config/redis# ls
redis.conf
root@Docker:/mnt/user/appdata/netprobe_lite/config/redis# 

 

Using the volume compsoe option I've mounted 
/mnt/user/appdata/netprobe_lite/config/redis into the docker contianer at /etc/redis/
 

# Docker compose file for netprobe on Unraid
# https://github.com/plaintextpackets/netprobe_lite
#version: '3.8'

name: netprobe

networks:
  netprobe-net:
    external: true  # Use existing network

services:
  redis:
    restart: always
    container_name: netprobe-redis
    image: redis:latest
    volumes:
      - ./config/redis/redis.conf:/etc/redis/redis.conf
#      - /mnt/user/appdata/resolv.conf:/etc/resolv.conf:ro
    networks:
      - netprobe-net
    dns:
#      - 192.168.2.3
      - 192.168.2.1
      - 8.8.8.8
    logging:
      options:
        max-size: "50m"
        max-file: "1"
    labels:
      net.unraid.docker.icon: 'https://raw.githubusercontent.com/A75G/docker-templates/master/templates/icons/redis.png'
      folder.view: netprobe_lite
      net.unraid.docker.managed: 'composeman'
      net.unraid.docker.shell: '/bin/sh'

  netprobe:
    restart: always
    container_name: netprobe-probe
    image: plaintextpackets/netprobe:latest
    volumes:
      - .:/netprobe_lite
#      - /mnt/user/appdata/resolv.conf:/etc/resolv.conf:ro
    environment:
      MODULE: "NETPROBE"
    networks:
      - netprobe-net
    logging:
      options:
        max-size: "50m"
        max-file: "1"
    dns:
#      - 192.168.2.3
      - 192.168.2.1
      - 8.8.8.8
    labels:
      net.unraid.docker.icon: 'https://raw.githubusercontent.com/simonjenny/fastcom-mysql/master/fastlogo.jpg'
      folder.view: netprobe_lite
      net.unraid.docker.managed: 'composeman'
      net.unraid.docker.shell: '/bin/sh'

  speedtest:
    restart: always
    container_name: netprobe-speedtest
    image: plaintextpackets/netprobe:latest
    volumes:
      - .:/netprobe_lite
#      - /mnt/user/appdata/resolv.conf:/etc/resolv.conf:ro
    environment:
      MODULE: "SPEEDTEST"
    networks:
      - netprobe-net
    logging:
      options:
        max-size: "50m"
        max-file: "1"
    dns:
#      - 192.168.2.3
      - 192.168.2.1
      - 8.8.8.8
    labels:
      net.unraid.docker.icon: 'https://raw.githubusercontent.com/selfhosters/unRAID-CA-templates/master/templates/img/speedtest-tracker.png'
      folder.view: netprobe_lite
      net.unraid.docker.managed: 'composeman'
      net.unraid.docker.shell: '/bin/sh'

  presentation:
    restart: always
    container_name: netprobe-presentation
    image: plaintextpackets/netprobe:latest
    volumes:
      - .:/netprobe_lite
#      - /mnt/user/appdata/resolv.conf:/etc/resolv.conf:ro
    environment:
      MODULE: "PRESENTATION"
    networks:
      - netprobe-net
    logging:
      options:
        max-size: "50m"
        max-file: "1"
    dns:
#      - 192.168.2.3
      - 192.168.2.1
      - 8.8.8.8
    labels:
      net.unraid.docker.icon: 'https://github.com/chvb/docker-templates/raw/master/chvb/img/OnlyOfficeDocumentServer.jpg'
      folder.view: netprobe_lite
      net.unraid.docker.managed: 'composeman'
      net.unraid.docker.shell: '/bin/sh'

  prometheus:
    restart: always
    container_name: netprobe-prometheus
    image: prom/prometheus
    volumes:
      - ./config/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus  # Persistent local storage for Prometheus data
#      - /mnt/user/appdata/resolv.conf:/etc/resolv.conf:ro
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--storage.tsdb.retention.time=30d'  # Adjust retention to 30 days
    networks:
      - netprobe-net
    dns:
#      - 192.168.2.3
      - 192.168.2.1
      - 8.8.8.8
    logging:
      options:
        max-size: "50m"
        max-file: "1"
    labels:
      net.unraid.docker.icon: 'https://raw.githubusercontent.com/selfhosters/unRAID-CA-templates/master/templates/img/prometheus.png'
      folder.view: netprobe_lite
      net.unraid.docker.managed: 'composeman'
      net.unraid.docker.shell: '/bin/sh'

  grafana:
    restart: always
    image: grafana/grafana-enterprise:latest
    container_name: netprobe-grafana
    volumes:
      - ./config/grafana/datasources/automatic.yml:/etc/grafana/provisioning/datasources/automatic.yml
      - ./config/grafana/dashboards/main.yml:/etc/grafana/provisioning/dashboards/main.yml
      - ./config/grafana/dashboards/netprobe.json:/var/lib/grafana/dashboards/netprobe.json
      - grafana_data:/var/lib/grafana  # Persistent local storage for Grafana data
#      - /mnt/user/appdata/resolv.conf:/etc/resolv.conf:ro
    ports:
      - '3001:3000'
    networks:
      - netprobe-net
    dns:
#      - 192.168.2.3
      - 192.168.2.1
      - 8.8.8.8
    logging:
      options:
        max-size: "50m"
        max-file: "1"
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=admin
    labels:
      net.unraid.docker.webui: http://[IP]:[PORT:3001]
      net.unraid.docker.icon: 'https://github.com/atribe/unRAID-docker/raw/master/icons/grafana.png'
      folder.view: netprobe_lite
      net.unraid.docker.managed: 'composeman'
      net.unraid.docker.shell: '/bin/sh'

volumes:
  prometheus_data:
    driver: local
    driver_opts:
      type: none
      device: ./data/promethus
      o: bind
  grafana_data:
    driver: local
    driver_opts:
      type: none
      device: ./data/grafana
      o: bind


note the bottom called volumes. I'm using ./data I have a data path inside /mnt/user/appdata/netprobe_lite

the stack location.

You would have a volume maped to the host path there. You apear to be missing that host volume path.

 

So lets fix and review your compose
 

#version: "3.8"
#^-WE care in temps of config to remove error comment it out...

#sh
# bundle exec rails db:chatwoot_prepare

services:
  chatwoot_admin:
    image: chatwoot/chatwoot:v4.0.1-ce
    #hostname: "{{.Service.Name}}.{{.Task.Slot}}"
    command: bundle exec rails s -p 3000 -b 0.0.0.0
    ports:
      - "4040:4040"
    entrypoint: docker/entrypoints/rails.sh
    volumes:
      - chatwoot_data:/app/storage
      - chatwoot_public:/app
    networks:
      - bdrtec

    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      resources:
        limits:
          cpus: "1"
          memory: 1024M

volumes:
  chatwoot_data:
    external: true
    name: chatwoot_data
    #needs maped to a host path
  chatwoot_public:
    external: true
    name: chatwoot_public
    #needs maped to a host path
networks:
  bdrtec:
    external: true
    name: bdrtec

 

Edited by bmartino1
typo - Data

  • Replies 63
  • Views 26.9k
  • Created
  • Last Reply

Top Posters In This Topic

Most Popular Posts

  • Braulio Dias Ribeiro
    Braulio Dias Ribeiro

    Great information... I used https://www.decomposerize.com/ to generate a docker run.   I didn't quite understand it because it didn't generate the command: command: worker --concurrency=10

  • Braulio Dias Ribeiro
    Braulio Dias Ribeiro

    Wow... awesome, a lesson on Unraid and Linux. I'm going to understand all of this better and try to apply it... thanks for the information and your time.

  • @Braulio Dias Ribeiro actually you don't need the SWAP plugin and you can ignore this Warning since it's just a warning. Unraid has no SWAP and therefore this message is put out, nothing to worry abou

Posted Images

I would remove the volumes for simplicity at first.

 

#version: "3.8"

#sh
# bundle exec rails db:chatwoot_prepare

services:
  chatwoot_admin:
    image: chatwoot/chatwoot:v4.0.1-ce
    #hostname: "{{.Service.Name}}.{{.Task.Slot}}"
    command: bundle exec rails s -p 3000 -b 0.0.0.0
    ports:
      - "4040:4040"
    entrypoint: docker/entrypoints/rails.sh
    volumes:
#      - /mnt/users/appdata/chatwoot/chatwoot_data:/app/storage
      - /mnt/users/appdata/chatwoot/chatwoot_public:/app
    networks:
      - bdrtec

    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      resources:
        limits:
          cpus: "1"
          memory: 1024M

networks:
  bdrtec:
    external: true
    name: bdrtec


note the unraid path is the left option and is mapping the container path /app/storage

 

note that your also conflicting your container paths. as container /app is already mapped. This make chatwoot_data unnecessary and can break things as public would have access to /storage within the container.

Edited by bmartino1
typo - Data

  • Author

@bmartino1
You sent the entire code and I got lost, I didn't know where to look.
 

From what I understand, it is supposed to look here, but there is nothing that references the path /mnt/user/app/.....

 

volumes:
  prometheus_data:
    driver: local
    driver_opts:
      type: none
      device: ./data/promethus
      o: bind

 

 

Did you mean that?
 

services:
  chatwoot_admin:
    image: chatwoot/chatwoot:v4.0.1-ce
    command: bundle exec rails s -p 3000 -b 0.0.0.0
    ports:
      - "4040:4040"
    entrypoint: docker/entrypoints/rails.sh
    volumes:
      - mnt/user/appdata/chatwoot/data:/app/storage
      - mnt/user/appdata/chatwoot/public:/app

volumes:
  mnt/user/appdata/chatwoot/data:
    external: true
    name: mnt/user/appdata/chatwoot/data
  mnt/user/appdata/chatwoot/public:
    external: true
    name: mnt/user/appdata/chatwoot/public

 

 

 

Following your last post I did this.

 

  

#sh
# bundle exec rails db:chatwoot_prepare

services:
  chatwoot_admin:
    image: chatwoot/chatwoot:v4.0.1-ce
    command: bundle exec rails s -p 3000 -b 0.0.0.0
    ports:
      - "4040:4040"
    entrypoint: docker/entrypoints/rails.sh
    volumes:
      - mnt/user/appdata/chatwoot/data:/app/storage
      - mnt/user/appdata/chatwoot/public:/app
    networks:
      - bdrtec

    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      resources:
        limits:
          cpus: "1"
          memory: 1024M

networks:
  bdrtec:
    external: true
    name: bdrtec

  

 

image.png.936c81cf33fb995df2b9dd37bc753b0b.png
But I still have an error

 

image.png.936c81cf33fb995df2b9dd37bc753b0b.png

image.png

based on what is presented. This a correct compose file

 

#version: "3.8"

#sh
# bundle exec rails db:chatwoot_prepare

services:
  chatwoot_admin:
    image: chatwoot/chatwoot:v4.0.1-ce
    #hostname: "{{.Service.Name}}.{{.Task.Slot}}"
    command: bundle exec rails s -p 3000 -b 0.0.0.0
    ports:
      - "4040:4040"
    entrypoint: docker/entrypoints/rails.sh
    volumes:
#      - /mnt/users/appdata/chatwoot/chatwoot_data:/app/storage
      - /mnt/users/appdata/chatwoot/chatwoot_public:/app
    networks:
      - bdrtec

    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      resources:
        limits:
          cpus: "1"
          memory: 1024M

networks:
  bdrtec:
    external: true
    name: bdrtec

 

  • Author
12 minutes ago, bmartino1 said:

based on what is presented. This a correct compose file

 

#version: "3.8"

#sh
# bundle exec rails db:chatwoot_prepare

services:
  chatwoot_admin:
    image: chatwoot/chatwoot:v4.0.1-ce
    #hostname: "{{.Service.Name}}.{{.Task.Slot}}"
    command: bundle exec rails s -p 3000 -b 0.0.0.0
    ports:
      - "4040:4040"
    entrypoint: docker/entrypoints/rails.sh
    volumes:
#      - /mnt/users/appdata/chatwoot/chatwoot_data:/app/storage
      - /mnt/users/appdata/chatwoot/chatwoot_public:/app
    networks:
      - bdrtec

    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      resources:
        limits:
          cpus: "1"
          memory: 1024M

networks:
  bdrtec:
    external: true
    name: bdrtec

 

I think it's working now.
But it's not compatible.
At least it went up

image.thumb.png.d508532892de03d6feafa2f5b07a51d2.png

I don't know what your trying to do or accomplish so I must go back and refer you to a known working instance....

 

I also don't understand your compse veriosn of this docker application when a project and comse already exisit...

 

given that your tring to make a chatwoot. and there is a github project and compose file for sharing... 

Lets reveiw:
 

As I don't see why you would use that...
https://github.com/chatwoot/chatwoot/blob/develop/docker-compose.yaml

 

again you would need to place paths down at the bottom for host data access...

https://github.com/chatwoot/chatwoot

To accomplish this..
 

cd /mnt/user/appdata
git clone https://github.com/chatwoot/chatwoot.git

 

fix file access and permissions:
 

cd chatwoot/
chmod 777 -R *
chown nobody:users -R *


now go to unraid web ui and set the advance network stack to location to /mnt/user/appdata/chatwoot

root@Docker:/mnt/user/appdata/chatwoot# ls
CODE_OF_CONDUCT.md*  Procfile.dev*   app/          deployment/                      log/                swagger/
CONTRIBUTING.md*     Procfile.test*  app.json*     docker/                          package.json*       tailwind.config.js*
Capfile*             README.md*      bin/          docker-compose.production.yaml*  pnpm-lock.yaml*     theme/
Gemfile*             Rakefile*       clevercloud/  docker-compose.test.yaml*        postcss.config.js*  tmp/
Gemfile.lock*        SECURITY.md*    config/       docker-compose.yaml*             public/             vendor/
LICENSE*             VERSION_CW*     config.ru*    enterprise/                      rubocop/            vite.config.ts*
Makefile*            VERSION_CWCTL*  crowdin.yml*  histoire.config.ts*              semantic.yml*       vitest.setup.js*
Procfile*            __mocks__/      db/           lib/                             spec/               workbox-config.js*
root@Docker:/mnt/user/appdata/chatwoot# 

 

image.png.0035e8d75fa7c8d551432cdf989b5220.png

 

image.thumb.png.f6c5e63f5770067d5da9e8e3d34b5e16.png

image.thumb.png.f923402b624204167110eb354ae2ae77.png

 

copy and paste the githubs docker compose yaml file...
https://raw.githubusercontent.com/chatwoot/chatwoot/refs/heads/develop/docker-compose.yaml

note the version at the top we coment that out with a "#"

note the volumes at the bottom of the yaml fiie these all need a host file path.

volumes:
  postgres:
  redis:
  packs:
  node_modules:
  cache:
  bundle:

 

so lets make a data location in appdata in the stack location
 

cd /mnt/user/appdata/chatwoot# 
mkdir volumes
cd volumes/
mkdir postgres
mkdir redis
mkdir paks
mkdir node_modules
mkdir cache
mkdir bundle
ls

#root@Docker:/mnt/user/appdata/chatwoot/volumes# ls
#bundle/  cache/  node_modules/  paks/  postgres/  redis/
#root@Docker:/mnt/user/appdata/chatwoot/volumes# 

 

so now we add and fix the volumes at the bottom:
 

volumes:
  postgres:
    driver: local
    driver_opts:
      type: 'none'
      device: './volumes/postgres'
      o: 'bind'

  redis:
    driver: local
    driver_opts:
      type: 'none'
      device: './volumes/redis'
      o: 'bind'

  packs:
    driver: local
    driver_opts:
      type: 'none'
      device: './volumes/packs'
      o: 'bind'

  node_modules:
    driver: local
    driver_opts:
      type: 'none'
      device: './volumes/node_modules'
      o: 'bind'

  cache:
    driver: local
    driver_opts:
      type: 'none'
      device: './volumes/cache'
      o: 'bind'

  bundle:
    driver: local
    driver_opts:
      type: 'none'
      device: './volumes/bundle'
      o: 'bind'

https://docs.docker.com/engine/storage/volumes/

 

so my comeleted compose file is:
 

#version: '3'

services:
  base: &base
    build:
      context: .
      dockerfile: ./docker/Dockerfile
      args:
        BUNDLE_WITHOUT: ''
        EXECJS_RUNTIME: 'Node'
        RAILS_ENV: 'development'
        RAILS_SERVE_STATIC_FILES: 'false'
    tty: true
    stdin_open: true
    image: chatwoot:development
    env_file: .env

  rails:
    <<: *base
    build:
      context: .
      dockerfile: ./docker/dockerfiles/rails.Dockerfile
    image: chatwoot-rails:development
    volumes:
      - ./:/app:delegated
      - node_modules:/app/node_modules
      - packs:/app/public/packs
      - cache:/app/tmp/cache
      - bundle:/usr/local/bundle
    depends_on:
      - postgres
      - redis
      - vite
      - mailhog
      - sidekiq
    ports:
      - 3000:3000
    env_file: .env
    environment:
      - VITE_DEV_SERVER_HOST=vite
      - NODE_ENV=development
      - RAILS_ENV=development
    entrypoint: docker/entrypoints/rails.sh
    command: ["bundle", "exec", "rails", "s", "-p", "3000", "-b", "0.0.0.0"]

  sidekiq:
    <<: *base
    image: chatwoot-rails:development
    volumes:
      - ./:/app:delegated
      - node_modules:/app/node_modules
      - packs:/app/public/packs
      - cache:/app/tmp/cache
      - bundle:/usr/local/bundle
    depends_on:
      - postgres
      - redis
      - mailhog
    environment:
      - NODE_ENV=development
      - RAILS_ENV=development
    command: ["bundle", "exec", "sidekiq", "-C", "config/sidekiq.yml"]

  vite:
    <<: *base
    build:
      context: .
      dockerfile: ./docker/dockerfiles/vite.Dockerfile
    image: chatwoot-vite:development
    volumes:
      - ./:/app:delegated
      - node_modules:/app/node_modules
      - packs:/app/public/packs
      - cache:/app/tmp/cache
      - bundle:/usr/local/bundle
    ports:
      - "3036:3036" # Vite dev server
    environment:
      - VITE_DEV_SERVER_HOST=0.0.0.0
      - NODE_ENV=development
      - RAILS_ENV=development
    entrypoint: docker/entrypoints/vite.sh
    command: bin/vite dev

  postgres:
    image: pgvector/pgvector:pg16
    restart: always
    ports:
      - '5432:5432'
    volumes:
      - postgres:/data/postgres
    environment:
      - POSTGRES_DB=chatwoot
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=

  redis:
    image: redis:alpine
    restart: always
    command: ["sh", "-c", "redis-server --requirepass \"$REDIS_PASSWORD\""]
    env_file: .env
    volumes:
      - redis:/data/redis
    ports:
      - '6379:6379'

  mailhog:
    image: mailhog/mailhog
    ports:
      - 1025:1025
      - 8025:8025

volumes:
  postgres:
    driver: local
    driver_opts:
      type: 'none'
      device: './volumes/postgres'
      o: 'bind'

  redis:
    driver: local
    driver_opts:
      type: 'none'
      device: './volumes/redis'
      o: 'bind'

  packs:
    driver: local
    driver_opts:
      type: 'none'
      device: './volumes/packs'
      o: 'bind'

  node_modules:
    driver: local
    driver_opts:
      type: 'none'
      device: './volumes/node_modules'
      o: 'bind'

  cache:
    driver: local
    driver_opts:
      type: 'none'
      device: './volumes/cache'
      o: 'bind'

  bundle:
    driver: local
    driver_opts:
      type: 'none'
      device: './volumes/bundle'
      o: 'bind'


I'm then present with the ui lables. atm I don't know what this application releay is so I will leave it all blank

I can then compose up and run this application.

WARN[0000] The "REDIS_PASSWORD" variable is not set. Defaulting to a blank string. 
env file /mnt/user/appdata/chatwoot/.env not found: stat /mnt/user/appdata/chatwoot/.env: no such file or directory

 

as then i just need to seup the env file:
https://www.chatwoot.com/docs/self-hosted/configuration/environment-variables/#the-env-file

 

edit stack env file:
image.thumb.png.78113d64f09afd823c1a7a5b4e991a40.png

copy paste the env file

https://raw.githubusercontent.com/chatwoot/chatwoot/refs/heads/develop/.env.example

 

per github:
https://github.com/chatwoot/chatwoot/blob/develop/.env.example

 

fill in and fix data as needed for your env

Edited by bmartino1

  • Author
On 2/19/2025 at 6:40 PM, bmartino1 said:

WARN[0000] The "REDIS_PASSWORD" variable is not set. Defaulting to a blank string. 
env file /mnt/user/appdata/chatwoot/.env not found: stat /mnt/user/appdata/chatwoot/.env: no such file or directory

 

as then i just need to seup the env file:
https://www.chatwoot.com/docs/self-hosted/configuration/environment-variables/#the-env-file

 

edit stack env file:
image.thumb.png.78113d64f09afd823c1a7a5b4e991a40.png

copy paste the env file

https://raw.githubusercontent.com/chatwoot/chatwoot/refs/heads/develop/.env.example

 

per github:
https://github.com/chatwoot/chatwoot/blob/develop/.env.example

 

fill in and fix data as needed for your env

Local redis doesn't have a password, I didn't put it

  • Author

I'm still trying, I'll send you a message soon

7 hours ago, Braulio Dias Ribeiro said:

Local redis doesn't have a password, I didn't put it

I'm not 100% familar on how to setup and mange a redis database. From my finding on redis as I use it with immich phot stack for another docker applicaiotn.

that error requires you to have a pasword. Example netprobe at the pottom its calls the redis password and port.
Some items are predefined in teh docker compse. YOu need to match the password and docker varabile info with the env file as well. review there env file example (not all need defined...) review the github chatwoot link I sent that goes over the env file...

You need the suppli the env file data..
as explained here:

https://www.chatwoot.com/docs/self-hosted/configuration/environment-variables/#the-env-file

 

and per github:
https://github.com/chatwoot/chatwoot/blob/develop/.env.example

 

??? Did you read and follow the env file and fill in the needed data...

 

# Redis config
# specify the configs via single URL or individual variables
# ref: https://www.iana.org/assignments/uri-schemes/prov/redis
# You can also use the following format for the URL: redis://:password@host:port/db_number
REDIS_URL=redis://redis:6379
# If you are using docker-compose, set this variable's value to be any string,
# which will be the password for the redis service running inside the docker-compose
# to make it secure
REDIS_PASSWORD=
# Redis Sentinel can be used by passing list of sentinel host and ports e,g. sentinel_host1:port1,sentinel_host2:port2
REDIS_SENTINELS=
# Redis sentinel master name is required when using sentinel, default value is "mymaster".
# You can find list of master using "SENTINEL masters" command
REDIS_SENTINEL_MASTER_NAME=

 

Edited by bmartino1

another example is the docker copose specfy the postgress Database info:

 

  postgres:
    image: pgvector/pgvector:pg16
    restart: always
    ports:
      - '5432:5432'
    volumes:
      - postgres:/data/postgres
    environment:
      - POSTGRES_DB=chatwoot
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=

 

and there is some data in teh env file as well regarding hte pstgress

 

theses also need to match and be edited...

 

# Postgres Database config variables
# You can leave POSTGRES_DATABASE blank. The default name of
# the database in the production environment is chatwoot_production
# POSTGRES_DATABASE=
POSTGRES_HOST=postgres
POSTGRES_USERNAME=postgres
POSTGRES_PASSWORD=
RAILS_ENV=development
# Changes the Postgres query timeout limit. The default is 14 seconds. Modify only when required.
# POSTGRES_STATEMENT_TIMEOUT=14s
RAILS_MAX_THREADS=5



If you followed my copy paste config at the top you just need to set and fix the variables and evn setting to have a working instance...

  • Author
6 hours ago, bmartino1 said:

another example is the docker copose specfy the postgress Database info:

 

  postgres:
    image: pgvector/pgvector:pg16
    restart: always
    ports:
      - '5432:5432'
    volumes:
      - postgres:/data/postgres
    environment:
      - POSTGRES_DB=chatwoot
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=

 

and there is some data in teh env file as well regarding hte pstgress

 

theses also need to match and be edited...

 

# Postgres Database config variables
# You can leave POSTGRES_DATABASE blank. The default name of
# the database in the production environment is chatwoot_production
# POSTGRES_DATABASE=
POSTGRES_HOST=postgres
POSTGRES_USERNAME=postgres
POSTGRES_PASSWORD=
RAILS_ENV=development
# Changes the Postgres query timeout limit. The default is 14 seconds. Modify only when required.
# POSTGRES_STATEMENT_TIMEOUT=14s
RAILS_MAX_THREADS=5



If you followed my copy paste config at the top you just need to set and fix the variables and evn setting to have a working instance...

When should I put the environments in the compose file and when should I put them in .env?

Because both ways work from what I'm testing

  • Author

@bmartino1
 

I managed to install another container as docker compose. It worked fine.

Then I tried to install it normally in docker Unraid. It starts up, goes online, but doesn't access docker (website).

I think I understand a little now.

If it started up as docker compose then it starts up as docker Unraid.

Can you help me find the error?

Compose File
 

services:
  n8n_editor:
    image: n8nio/n8n:latest
    hostname: "{{.Service.Name}}.{{.Task.Slot}}"
    command: start
    ports:
      - "5678:5678"
    networks:
      - bdrtec
    environment:
      - N8N_ENCRYPTION_KEY=mykey
      - NODE_ENV=production
      - N8N_METRICS=true
      - N8N_DIAGNOSTICS_ENABLED=false
      - N8N_PAYLOAD_SIZE_MAX=16
      - N8N_LOG_LEVEL=info
      - GENERIC_TIMEZONE=America/Sao_Paulo
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_DATABASE=n8n_queue
      - DB_POSTGRESDB_HOST=Postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_USER=bdrtec
      - DB_POSTGRESDB_PASSWORD=mypass
      - N8N_PORT=5678
      - N8N_HOST=192.168.10.254
      - N8N_EDITOR_BASE_URL=https://n8n.mysite.com.br/
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8nwebhook.mysite.com.br/
      - N8N_ENDPOINT_WEBHOOK=webhook
      - EXECUTIONS_MODE=queue
      - QUEUE_BULL_REDIS_HOST=Redis
      - QUEUE_BULL_REDIS_PORT=6379
      - QUEUE_BULL_REDIS_DB=3
      - QUEUE_BULL_REDIS_PASSWORD=mypass
      - EXECUTIONS_TIMEOUT=3600
      - EXECUTIONS_TIMEOUT_MAX=7200
      - N8N_VERSION_NOTIFICATIONS_ENABLED=true
      - N8N_PUBLIC_API_SWAGGERUI_DISABLED=false
      - N8N_TEMPLATES_ENABLED=true
      - N8N_ONBOARDING_FLOW_DISABLED=true
      - N8N_WORKFLOW_TAGS_DISABLED=false
      - N8N_HIDE_USAGE_PAGE=false
      - EXECUTIONS_DATA_PRUNE=true
      - EXECUTIONS_DATA_MAX_AGE=336
      - EXECUTIONS_DATA_PRUNE_HARD_DELETE_INTERVAL=15
      - EXECUTIONS_DATA_PRUNE_SOFT_DELETE_INTERVAL=60
      - EXECUTIONS_DATA_PRUNE_MAX_COUNT=10000
      - EXECUTIONS_DATA_SAVE_ON_ERROR=all
      - EXECUTIONS_DATA_SAVE_ON_SUCCESS=all
      - EXECUTIONS_DATA_SAVE_ON_PROGRESS=true
      - EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=true
      - NODE_FUNCTION_ALLOW_BUILTIN=*
      - NODE_FUNCTION_ALLOW_EXTERNAL=moment,lodash
      - N8N_COMMUNITY_PACKAGES_ENABLED=true
      - N8N_REINSTALL_MISSING_PACKAGES=true
      - N8N_SECURE_COOKIE=false
      - EXECUTIONS_DATA_PRUNE_SOFT_DELETE_INTERVAL=60
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      resources:
        limits:
          cpus: "1"
          memory: 1024M
      update_config:
        parallelism: 1
        delay: 30s
        order: start-first
        failure_action: rollback
networks:
  bdrtec:
    name: bdrtec
    external: true



Unraid:
 

<?xml version="1.0"?>
<Container version="2">
  <Name>N8nEditor2</Name>
  <Repository>n8nio/n8n:latest</Repository>
  <Registry>https://hub.docker.com/r/n8nio/n8n/</Registry>
  <Network>bdrtec</Network>
  <MyIP/>
  <Shell>sh</Shell>
  <Privileged>false</Privileged>
  <Support>https://forums.unraid.net/topic/97807-support-tmchow-n8n-workflow-automation/</Support>
  <Project>https://n8n.io/</Project>
  <Overview>&#xD;
    N8n Latest&#xD;
    Secure and AI-native workflow automation tool.&#xD;
&#xD;
    Important&#xD;
    Run this command in the terminal (chown 1000:1000  /your directory appdata)&#xD;
    Example: chown -R 1000:1000 /mnt/user/appdata/n8n&#xD;
  </Overview>
  <Category>Productivity:</Category>
  <WebUI>http://[IP]:[PORT:5678]/</WebUI>
  <TemplateURL>https://raw.githubusercontent.com/tmchow/unraid-docker-templates/master/n8n.xml</TemplateURL>
  <Icon>https://raw.githubusercontent.com/tmchow/unraid-docker-templates/master/img/n8n-icon.png</Icon>
  <ExtraParams>--restart unless-stopped --cpus 1 -m 1024M</ExtraParams>
  <PostArgs/>
  <CPUset/>
  <DateInstalled>1740175744</DateInstalled>
  <DonateText/>
  <DonateLink/>
  <Requires/>
  <Config Name="Appdata" Target="/home/node" Default="/mnt/user/appdata/n8n3" Mode="rw" Description="" Type="Path" Display="always" Required="true" Mask="false">/mnt/user/appdata/n8n3</Config>
  <Config Name="N8N_ENCRYPTION_KEY" Target="N8N_ENCRYPTION_KEY" Default="a3f7c9d4e2b6581f92ac7d3e45b6f1a89c2d4e3f5b7a6c8d9e0f12348765abcd" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">mykey</Config>
  <Config Name="NODE_ENV" Target="NODE_ENV" Default="production" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">production</Config>
  <Config Name="N8N_METRICS" Target="N8N_METRICS" Default="true|false" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">true</Config>
  <Config Name="N8N_DIAGNOSTICS_ENABLED" Target="N8N_DIAGNOSTICS_ENABLED" Default="false|true" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">false</Config>
  <Config Name="N8N_PAYLOAD_SIZE_MAX" Target="N8N_PAYLOAD_SIZE_MAX" Default="16" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">16</Config>
  <Config Name="N8N_LOG_LEVEL" Target="N8N_LOG_LEVEL" Default="info" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">info</Config>
  <Config Name="GENERIC_TIMEZONE" Target="GENERIC_TIMEZONE" Default="America/Sao_Paulo" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">America/Sao_Paulo</Config>
  <Config Name="N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS" Target="N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS" Default="true|false" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">true</Config>
  <Config Name="DB_TYPE" Target="DB_TYPE" Default="postgresdb" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">postgresdb</Config>
  <Config Name="DB_POSTGRESDB_DATABASE" Target="DB_POSTGRESDB_DATABASE" Default="n8n_queue" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">n8n_queue</Config>
  <Config Name="DB_POSTGRESDB_HOST" Target="DB_POSTGRESDB_HOST" Default="Postgres" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">Postgres</Config>
  <Config Name="DB_POSTGRESDB_PORT" Target="DB_POSTGRESDB_PORT" Default="5432" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">5432</Config>
  <Config Name="DB_POSTGRESDB_USER" Target="DB_POSTGRESDB_USER" Default="bdrtec" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">bdrtec</Config>
  <Config Name="DB_POSTGRESDB_PASSWORD" Target="DB_POSTGRESDB_PASSWORD" Default="Bdr961TecTec169Bdr" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">mypass</Config>
  <Config Name="N8N_PORT" Target="N8N_PORT" Default="5678" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">5678</Config>
  <Config Name="N8N_HOST" Target="N8N_HOST" Default="192.168.10.254" Mode="" Description="n8n.bdrtec.com.br" Type="Variable" Display="always" Required="true" Mask="false">192.168.10.254</Config>
  <Config Name="N8N_EDITOR_BASE_URL" Target="N8N_EDITOR_BASE_URL" Default="https://n8n.bdrtec.com.br/" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">https://n8n.mysite.com.br/</Config>
  <Config Name="N8N_PROTOCOL" Target="N8N_PROTOCOL" Default="https" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">https</Config>
  <Config Name="WEBHOOK_URL" Target="WEBHOOK_URL" Default="https://n8nwebhook.bdrtec.com.br/" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">https://n8nwebhook.mysite.com.br/</Config>
  <Config Name="N8N_ENDPOINT_WEBHOOK" Target="N8N_ENDPOINT_WEBHOOK" Default="webhook" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">webhook</Config>
  <Config Name="EXECUTIONS_MODE" Target="EXECUTIONS_MODE" Default="queue" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">queue</Config>
  <Config Name="QUEUE_BULL_REDIS_HOST" Target="QUEUE_BULL_REDIS_HOST" Default="Redis" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">Redis</Config>
  <Config Name="QUEUE_BULL_REDIS_PORT" Target="QUEUE_BULL_REDIS_PORT" Default="6379" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">6379</Config>
  <Config Name="QUEUE_BULL_REDIS_DB" Target="QUEUE_BULL_REDIS_DB" Default="3" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">3</Config>
  <Config Name="QUEUE_BULL_REDIS_PASSWORD" Target="QUEUE_BULL_REDIS_PASSWORD" Default="Bdr961TecTec169Bdr" Mode="" Description="Bdr961TecTec169Bdr" Type="Variable" Display="always" Required="false" Mask="false">mypass</Config>
  <Config Name="EXECUTIONS_TIMEOUT" Target="EXECUTIONS_TIMEOUT" Default="3600" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">3600</Config>
  <Config Name="EXECUTIONS_TIMEOUT_MAX" Target="EXECUTIONS_TIMEOUT_MAX" Default="7200" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">7200</Config>
  <Config Name="N8N_VERSION_NOTIFICATIONS_ENABLED" Target="N8N_VERSION_NOTIFICATIONS_ENABLED" Default="true|false" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">true</Config>
  <Config Name="N8N_PUBLIC_API_SWAGGERUI_DISABLED" Target="N8N_PUBLIC_API_SWAGGERUI_DISABLED" Default="false|true" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">false</Config>
  <Config Name="N8N_TEMPLATES_ENABLED" Target="N8N_TEMPLATES_ENABLED" Default="true|false" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">true</Config>
  <Config Name="N8N_ONBOARDING_FLOW_DISABLED" Target="N8N_ONBOARDING_FLOW_DISABLED" Default="false|true" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">true</Config>
  <Config Name="N8N_WORKFLOW_TAGS_DISABLED" Target="N8N_WORKFLOW_TAGS_DISABLED" Default="false|true" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">false</Config>
  <Config Name="N8N_HIDE_USAGE_PAGE" Target="N8N_HIDE_USAGE_PAGE" Default="false|true" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">false</Config>
  <Config Name="EXECUTIONS_DATA_PRUNE" Target="EXECUTIONS_DATA_PRUNE" Default="true|false" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">true</Config>
  <Config Name="EXECUTIONS_DATA_MAX_AGE" Target="EXECUTIONS_DATA_MAX_AGE" Default="336" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">336</Config>
  <Config Name="EXECUTIONS_DATA_PRUNE_HARD_DELETE_INTERVAL" Target="EXECUTIONS_DATA_PRUNE_HARD_DELETE_INTERVAL" Default="15" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">15</Config>
  <Config Name="EXECUTIONS_DATA_PRUNE_SOFT_DELETE_INTERVAL" Target="EXECUTIONS_DATA_PRUNE_SOFT_DELETE_INTERVAL" Default="60" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">60</Config>
  <Config Name="EXECUTIONS_DATA_PRUNE_MAX_COUNT" Target="EXECUTIONS_DATA_PRUNE_MAX_COUNT" Default="10000" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">10000</Config>
  <Config Name="EXECUTIONS_DATA_SAVE_ON_ERROR" Target="EXECUTIONS_DATA_SAVE_ON_ERROR" Default="all" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">all</Config>
  <Config Name="EXECUTIONS_DATA_SAVE_ON_SUCCESS" Target="EXECUTIONS_DATA_SAVE_ON_SUCCESS" Default="all" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">all</Config>
  <Config Name="EXECUTIONS_DATA_SAVE_ON_PROGRESS" Target="EXECUTIONS_DATA_SAVE_ON_PROGRESS" Default="true|false" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">true</Config>
  <Config Name="EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS" Target="EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS" Default="true|false" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">true</Config>
  <Config Name="NODE_FUNCTION_ALLOW_BUILTIN" Target="NODE_FUNCTION_ALLOW_BUILTIN" Default="*" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">*</Config>
  <Config Name="NODE_FUNCTION_ALLOW_EXTERNAL" Target="NODE_FUNCTION_ALLOW_EXTERNAL" Default="moment,lodash" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">moment,lodash</Config>
  <Config Name="N8N_COMMUNITY_PACKAGES_ENABLED" Target="N8N_COMMUNITY_PACKAGES_ENABLED" Default="true|false" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">true</Config>
  <Config Name="N8N_REINSTALL_MISSING_PACKAGES" Target="N8N_REINSTALL_MISSING_PACKAGES" Default="true|false" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">true</Config>
  <Config Name="N8N_SECURE_COOKIE" Target="N8N_SECURE_COOKIE" Default="false|true" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">false</Config>
  <Config Name="N8N_EMAIL_MODE" Target="N8N_EMAIL_MODE" Default="smtp" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">smtp</Config>
  <Config Name="N8N_SMTP_HOST" Target="N8N_SMTP_HOST" Default="smtp.gmail.com" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">smtp.gmail.com</Config>
  <Config Name="N8N_SMTP_PORT" Target="N8N_SMTP_PORT" Default="465" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">465</Config>
  <Config Name="N8N_SMTP_USER" Target="N8N_SMTP_USER" Default="[email protected]" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">[email protected]</Config>
  <Config Name="N8N_SMTP_PASS" Target="N8N_SMTP_PASS" Default="vrdnofyzurqvlfrf" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">mypass</Config>
  <Config Name="N8N_SMTP_SENDER" Target="N8N_SMTP_SENDER" Default="[email protected]" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">[email protected]</Config>
  <Config Name="N8N_SMTP_SSL" Target="N8N_SMTP_SSL" Default="true" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">true</Config>
  <Config Name="EXECUTIONS_DATA_PRUNE_SOFT_DELETE_INTERVAL" Target="EXECUTIONS_DATA_PRUNE_SOFT_DELETE_INTERVAL" Default="60" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">60</Config>
  <Config Name="N8N_AI_ENABLED" Target="N8N_AI_ENABLED" Default="false|true" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">false</Config>
  <Config Name="N8N_AI_PROVIDER" Target="N8N_AI_PROVIDER" Default="openai" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">openai</Config>
  <Config Name="N8N_AI_OPENAI_API_KEY" Target="N8N_AI_OPENAI_API_KEY" Default="" Mode="" Description="" Type="Variable" Display="always" Required="false" Mask="false"/>
</Container>


/usr/local/emhttp/plugins/dynamix.docker.manager/scripts/docker create --name='N8nEditor2' --net='bdrtec' --pids-limit 2048 -e TZ="America/Sao_Paulo" -e HOST_OS="Unraid" -e HOST_HOSTNAME="BdrTec" -e HOST_CONTAINERNAME="N8nEditor2" -e 'N8N_ENCRYPTION_KEY'='mykey' -e 'NODE_ENV'='production' -e 'N8N_METRICS'='true' -e 'N8N_DIAGNOSTICS_ENABLED'='false' -e 'N8N_PAYLOAD_SIZE_MAX'='16' -e 'N8N_LOG_LEVEL'='info' -e 'GENERIC_TIMEZONE'='America/Sao_Paulo' -e 'N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS'='true' -e 'DB_TYPE'='postgresdb' -e 'DB_POSTGRESDB_DATABASE'='n8n_queue' -e 'DB_POSTGRESDB_HOST'='Postgres' -e 'DB_POSTGRESDB_PORT'='5432' -e 'DB_POSTGRESDB_USER'='bdrtec' -e 'DB_POSTGRESDB_PASSWORD'='mypass' -e 'N8N_PORT'='5678' -e 'N8N_HOST'='192.168.10.254' -e 'N8N_EDITOR_BASE_URL'='https://n8n.mysite.com.br/' -e 'N8N_PROTOCOL'='https' -e 'WEBHOOK_URL'='https://n8nwebhook.mysite.com.br/' -e 'N8N_ENDPOINT_WEBHOOK'='webhook' -e 'EXECUTIONS_MODE'='queue' -e 'QUEUE_BULL_REDIS_HOST'='Redis' -e 'QUEUE_BULL_REDIS_PORT'='6379' -e 'QUEUE_BULL_REDIS_DB'='3' -e 'QUEUE_BULL_REDIS_PASSWORD'='mypass' -e 'EXECUTIONS_TIMEOUT'='3600' -e 'EXECUTIONS_TIMEOUT_MAX'='7200' -e 'N8N_VERSION_NOTIFICATIONS_ENABLED'='true' -e 'N8N_PUBLIC_API_SWAGGERUI_DISABLED'='false' -e 'N8N_TEMPLATES_ENABLED'='true' -e 'N8N_ONBOARDING_FLOW_DISABLED'='true' -e 'N8N_WORKFLOW_TAGS_DISABLED'='false' -e 'N8N_HIDE_USAGE_PAGE'='false' -e 'EXECUTIONS_DATA_PRUNE'='true' -e 'EXECUTIONS_DATA_MAX_AGE'='336' -e 'EXECUTIONS_DATA_PRUNE_HARD_DELETE_INTERVAL'='15' -e 'EXECUTIONS_DATA_PRUNE_SOFT_DELETE_INTERVAL'='60' -e 'EXECUTIONS_DATA_PRUNE_MAX_COUNT'='10000' -e 'EXECUTIONS_DATA_SAVE_ON_ERROR'='all' -e 'EXECUTIONS_DATA_SAVE_ON_SUCCESS'='all' -e 'EXECUTIONS_DATA_SAVE_ON_PROGRESS'='true' -e 'EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS'='true' -e 'NODE_FUNCTION_ALLOW_BUILTIN'='*' -e 'NODE_FUNCTION_ALLOW_EXTERNAL'='moment,lodash' -e 'N8N_COMMUNITY_PACKAGES_ENABLED'='true' -e 'N8N_REINSTALL_MISSING_PACKAGES'='true' -e 'N8N_SECURE_COOKIE'='false' -e 'N8N_EMAIL_MODE'='smtp' -e 'N8N_SMTP_HOST'='smtp.gmail.com' -e 'N8N_SMTP_PORT'='465' -e 'N8N_SMTP_USER'='[email protected]' -e 'N8N_SMTP_PASS'='mypass' -e 'N8N_SMTP_SENDER'='[email protected]' -e 'N8N_SMTP_SSL'='true' -e 'EXECUTIONS_DATA_PRUNE_SOFT_DELETE_INTERVAL'='60' -e 'N8N_AI_ENABLED'='false' -e 'N8N_AI_PROVIDER'='openai' -e 'N8N_AI_OPENAI_API_KEY'='' -l net.unraid.docker.managed=dockerman -l net.unraid.docker.webui='http://[IP]:[PORT:5678]/' -l net.unraid.docker.icon='https://raw.githubusercontent.com/tmchow/unraid-docker-templates/master/img/n8n-icon.png' -v '/mnt/user/appdata/n8n3':'/home/node':'rw' --restart unless-stopped --cpus 1 -m 1024M 'n8nio/n8n:latest' 

 

Edited by Braulio Dias Ribeiro

your fighting docker netowrks most likely.


for example immich:
immich maintatiners want us to use docker compoase moving forward:
https://immich.app/docs/install/unraid/

But Spasce Invader made unriad CA teampltes.
Immich requires, redis database, pstgress db, and the immich docker, optional machine learning.

as explained here:

 

the database are netowrk to host meanin the database ip is unraids IP

If the database is in bridge mode it has a docker default ip of 172.x.x.x based on your docker inspect commands.
if you preamde a docker network, you can lan conect them simlar to selecting custum eth0,br0.bond0 depeing on your unraid netwroking setup.
 


as You have fliped between mutiple dockers taht requrie other things and I don't have enouth data to assist.

wher your postgress docker or database?

 

- DB_TYPE=postgresdb
      - DB_POSTGRESDB_DATABASE=n8n_queue
      - DB_POSTGRESDB_HOST=Postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_USER=bdrtec
      - DB_POSTGRESDB_PASSWORD=mypass


is that in a seperate docker network. are you going be ip? are you going by host name?

as it apearas you are trying to convert a muti docker stack into one xml. Unriad tempalte doesn't support that. 1 xml 1 docker.

If a docker requires another docker then that docekr also needs to exisit. Be acessible, and configured properly.

Thus docker compse stacks having mutiple dockers configured with each otherin in 1 location.

Going back to immich. the reason I went unraid CA and teh apps against teh immich mainters wishes is due to access and easier to setup the nvdia card then mess with  immich machine learning stuff. now that I have the 3 sepere docker run i can use comperizer and make a single stack that runs all 3 dockers.

as this is whats required to run immich:
image.png.a131d39324286c6b8be6cf8a27781fcb.png

 

Simlar to the chatwoot, I don't know what your image: n8nio/n8n:latest is and i'm not going to be help as you need to understand how where and what to check and why its this way.

as chatwoot required redis, postgress, 3 other side dockers... then the actual chatwoot web application.

it looks like this n8nio is the same. your alos getting into weird automation...
https://github.com/n8n-io

given these issues I would direct you more towards lxc or vm install and install 

chatwoot and node.js
https://www.howtoforge.com/how-to-install-chatwoot-on-debian-11/
https://phoenixnap.com/kb/debian-install-nodejs


and then install
Try n8n instantly with npx (requires Node.js):

npx n8n

Not enouth info to assist, its clear your missing other important parts to produce and run what your trying to work on...

While docker can reduce overhead, bing in a debain environment you will have more granular control over the application, development and setup.

as again, I don't know what your trying to accomplish. I don't know where your geting this cobbled code, and have given working examples of where to look based on info provided.
was expecting a PM.

  • Author

@bmartino1

 

I didn't quite understand your explanations...  
Let me try to explain again—maybe I didn’t express myself clearly.  
 

I managed to get something working by installing it via Docker Compose. It's a start, lol.  
I'm referring to Docker N8N.  


So, I removed the Docker Compose setup and tried installing it manually via Docker on Unraid (Add Container).  
 

It installed and is running, but the link (IP:port) won’t open.  
I used the same installation setup as I did with Docker Compose.  
 

This XML I posted is how I installed it via Add Container on Unraid.  

  • Author

@bmartino1
 

Regarding the Docker network, I understand how it works— all my containers use a custom network I created, and they work perfectly (bdrtec).
 

To link containers (Redis, Postgres), I use the container name.
They work because they are on the same network (I know that if they aren’t on the same network, they won’t work).
 

I just want to understand why the same configuration worked via Docker Compose but didn’t work when adding the container manually on Unraid.
 

Based on this, I might be able to install the Docker containers I need (N8N mode queue, Chatwoot, Supabase) via Add Container on Unraid.
 

If I solve one, I believe the issue will be similar for the others.
 

I'm trying to fix this N8N first, then I'll do the same for the others.

  • Author

@bmartino1
 

Sorry for so many questions.  
I don't speak English 100%, I'm from Brazil.  
 

Even though I've read a lot about Unraid and Docker, I still don't fully understand how it works.  

What I have running so far was hard work to set up haha.

if it's working in a compose but not the unraid template, then you have a misconfiguration or the compose file has additional data in the variables and its environment that you have not fully converted into a unraid docker.

If n8n requires Postgres, and chatwoot requires Postgres, you may need 2 different Postgres instances to run its database for both applications. Unless they're companion apps that require the same database acces for the apps.

I don't know n8n nor chatwoot thus i went to the project codes on github to get there information and point you to there direction.

chatwoot has docker compose files and env examples. n8n is a project built on top of node.js

if the docker is not working in the xml template and web ui, what does the log say, can you console into it?


please post your working compose file and I will build a unraid template if its is possible to run that as a unraid template. 

Please review previous form post as some have answered the questions you have asked.

As I have said in a previous post, things can get technical fast and break in many places.

services:
  n8n_editor:
    image: n8nio/n8n:latest
    hostname: "{{.Service.Name}}.{{.Task.Slot}}"
    command: start
    ports:
      - "5678:5678"
    networks:
      - bdrtec
    environment:
      - N8N_ENCRYPTION_KEY=mykey
      - NODE_ENV=production
      - N8N_METRICS=true
      - N8N_DIAGNOSTICS_ENABLED=false
      - N8N_PAYLOAD_SIZE_MAX=16
      - N8N_LOG_LEVEL=info
      - GENERIC_TIMEZONE=America/Sao_Paulo
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_DATABASE=n8n_queue
      - DB_POSTGRESDB_HOST=Postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_USER=bdrtec
      - DB_POSTGRESDB_PASSWORD=mypass
      - N8N_PORT=5678
      - N8N_HOST=192.168.10.254
      - N8N_EDITOR_BASE_URL=https://n8n.mysite.com.br/
      - N8N_PROTOCOL=https
      - WEBHOOK_URL=https://n8nwebhook.mysite.com.br/
      - N8N_ENDPOINT_WEBHOOK=webhook
      - EXECUTIONS_MODE=queue
      - QUEUE_BULL_REDIS_HOST=Redis
      - QUEUE_BULL_REDIS_PORT=6379
      - QUEUE_BULL_REDIS_DB=3
      - QUEUE_BULL_REDIS_PASSWORD=mypass
      - EXECUTIONS_TIMEOUT=3600
      - EXECUTIONS_TIMEOUT_MAX=7200
      - N8N_VERSION_NOTIFICATIONS_ENABLED=true
      - N8N_PUBLIC_API_SWAGGERUI_DISABLED=false
      - N8N_TEMPLATES_ENABLED=true
      - N8N_ONBOARDING_FLOW_DISABLED=true
      - N8N_WORKFLOW_TAGS_DISABLED=false
      - N8N_HIDE_USAGE_PAGE=false
      - EXECUTIONS_DATA_PRUNE=true
      - EXECUTIONS_DATA_MAX_AGE=336
      - EXECUTIONS_DATA_PRUNE_HARD_DELETE_INTERVAL=15
      - EXECUTIONS_DATA_PRUNE_SOFT_DELETE_INTERVAL=60
      - EXECUTIONS_DATA_PRUNE_MAX_COUNT=10000
      - EXECUTIONS_DATA_SAVE_ON_ERROR=all
      - EXECUTIONS_DATA_SAVE_ON_SUCCESS=all
      - EXECUTIONS_DATA_SAVE_ON_PROGRESS=true
      - EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=true
      - NODE_FUNCTION_ALLOW_BUILTIN=*
      - NODE_FUNCTION_ALLOW_EXTERNAL=moment,lodash
      - N8N_COMMUNITY_PACKAGES_ENABLED=true
      - N8N_REINSTALL_MISSING_PACKAGES=true
      - N8N_SECURE_COOKIE=false
      - EXECUTIONS_DATA_PRUNE_SOFT_DELETE_INTERVAL=60
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      resources:
        limits:
          cpus: "1"
          memory: 1024M
      update_config:
        parallelism: 1
        delay: 30s
        order: start-first
        failure_action: rollback
networks:
  bdrtec:
    name: bdrtec
    external: true


? is this your working docker compose for unraid?
You want this converted into a unraid template?

as I would need a working instance first...

  • Author
On 2/19/2025 at 9:53 AM, Mainfrezzer said:

the "--env-file=" is for normal docker, i.e. the webgui

image.thumb.png.a48c04e22a9764d6f033948fc98d55c2.png


for compose, declaring env files would look like this

 

version: "3.7"
services:
 n8n_editor:
   image: "n8nio/n8n:latest"
   env_file: "/mnt/user/appdata/etc/etc/etc/.env"

 

Sorry, I think I missed some responses.  

Thank you very much for the information, I’ve been looking for this for so long...  

I ended up going with the Docker Compose route, but I’ll try this in another Docker.

  • Author
On 2/18/2025 at 5:31 AM, ich777 said:

You don't need that since these are just specific information if you are deploying a container over multiple nodes with fail over and other options how and when the container should start.

 

If someone already made a XML then it would be possible but you would need to write your own XML, you can take a look at all Docker template in /boot/config/plugins/dockerMan/templates-user/my-<CONTAINERNAME>.xml <- however I don't think that's a good idea if you don't want to do it in the WebUI and you are hitting that many road blocks.

 

Would it be possible better for you to use the Compose Plugin from the CA App since it seems you are more familiar with Docker Compose than the Unraid WebUI since you would then be able to use Compose (almost) as usual?

/boot/config/plugins/dockerMan/templates-user/my-<CONTAINERNAME>.xml

This helped me! I filled in all the variables and saved it... Everything showed up in Docker... Wonderful! Much gratitude.

  • Author

@bmartino1
I currently have n8n installed through Compose. So, to avoid extra work, I can leave it as it is.  


I couldn't install Chatwoot in any way.
If you can help me with it, I would appreciate it.

I’ll send his Docker setup in the next post.  
It uses 2 containers, one is the app and the other is the worker.

  • Author

Chatwoot App

version: "3.8"

#sh
# bundle exec rails db:chatwoot_prepare

services:
  chatwoot_admin:
    image: chatwoot/chatwoot:v4.0.1-ce
    hostname: "{{.Service.Name}}.{{.Task.Slot}}"
    command: bundle exec rails s -p 3000 -b 0.0.0.0
    entrypoint: docker/entrypoints/rails.sh
    ports:
      - "4040:4040"
    volumes:
      - chatwoot_data:/app/storage
      - chatwoot_public:/app
    networks:
      - own-network
    environment:
      - CHATWOOT_HUB_URL=https://chatwoot.domain.com
      - INSTALLATION_NAME=Chatwoot
      - NODE_ENV=production
      - RAILS_ENV=production
      - INSTALLATION_ENV=docker
      - SECRET_KEY_BASE=generate
      - FRONTEND_URL=https://chatwoot.domain.com
      - DEFAULT_LOCALE=pt_BR
      - FORCE_SSL=true
      - ENABLE_ACCOUNT_SIGNUP=false
      - REDIS_URL=redis://user:pass@redis:6379/2
      - DATABASE_URL=postgresql://user:pass@postgrespgvector:5432/chatwoot
      - ACTIVE_STORAGE_SERVICE=local
      - RAILS_LOG_TO_STDOUT=true
      - USE_INBOX_AVATAR_FOR_BOT=true
      - SIDEKIQ_CONCURRENCY=10
      - RACK_TIMEOUT_SERVICE_TIMEOUT=0
      - RAILS_MAX_THREADS=5
      - WEB_CONCURRENCY=2
      - ENABLE_RACK_ATTACK=false
      - WEBHOOKS_TRIGGER_TIMEOUT=40
      - MAILER_SENDER_EMAIL=Chatwoot <mail@gmail.com>
      - SMTP_DOMAIN=gmail.com
      - SMTP_ADDRESS=smtp.gmail.com
      - SMTP_PORT=587
      - [email protected]
      - SMTP_PASSWORD=generate
      - SMTP_AUTHENTICATION=login
      - SMTP_ENABLE_STARTTLS_AUTO=true
      - SMTP_OPENSSL_VERIFY_MODE=peer
      - [email protected]
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      resources:
        limits:
          cpus: "1"
          memory: 1024M
volumes:
  chatwoot_data:
    external: true
    name: chatwoot_data
  chatwoot_public:
    external: true
    name: chatwoot_public
networks:
  own-network:
    external: true
    name: own-network


Chatwoot Worker
 

version: "3.8"
services:
  chatwoot_sidekiq:
    image: chatwoot/chatwoot:v4.0.1-ce
    hostname: "{{.Service.Name}}.{{.Task.Slot}}"
    command: bundle exec sidekiq -C config/sidekiq.yml
    volumes:
      - chatwoot_data:/app/storage
      - chatwoot_public:/app
    networks:
      - own-network
    environment:
      - CHATWOOT_HUB_URL=https://chatwoot.domain.com
      - INSTALLATION_NAME=Chatwoot
      - NODE_ENV=production
      - RAILS_ENV=production
      - INSTALLATION_ENV=docker
      - SECRET_KEY_BASE=generate
      - FRONTEND_URL=https://chatwoot.domain.com
      - DEFAULT_LOCALE=pt_BR
      - FORCE_SSL=true
      - ENABLE_ACCOUNT_SIGNUP=false
      - REDIS_URL=redis://user:pass@redis:6379/2
      - DATABASE_URL=postgresql://user:pass@postgrespgvector:5432/chatwoot
      - ACTIVE_STORAGE_SERVICE=local
      - RAILS_LOG_TO_STDOUT=true
      - USE_INBOX_AVATAR_FOR_BOT=true
      - SIDEKIQ_CONCURRENCY=10
      - RACK_TIMEOUT_SERVICE_TIMEOUT=0
      - RAILS_MAX_THREADS=5
      - WEB_CONCURRENCY=2
      - ENABLE_RACK_ATTACK=false
      - WEBHOOKS_TRIGGER_TIMEOUT=40
      - MAILER_SENDER_EMAIL=Chatwoot <mail@gmail.com>
      - SMTP_DOMAIN=gmail.com
      - SMTP_ADDRESS=smtp.gmail.com
      - SMTP_PORT=587
      - [email protected]
      - SMTP_PASSWORD=generate
      - SMTP_AUTHENTICATION=login
      - SMTP_ENABLE_STARTTLS_AUTO=true
      - SMTP_OPENSSL_VERIFY_MODE=peer
      - [email protected]
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      resources:
        limits:
          cpus: "1"
          memory: 1024M
volumes:
  chatwoot_data:
    external: true
    name: chatwoot_data
  chatwoot_public:
    external: true
    name: chatwoot_public
networks:
  own-network:
    external: true
    name: own-network

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.