February 19, 20251 yr 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 February 19, 20251 yr by bmartino1 typo - Data
February 19, 20251 yr 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 February 19, 20251 yr by bmartino1 typo - Data
February 19, 20251 yr 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 But I still have an error
February 19, 20251 yr 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
February 19, 20251 yr 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
February 19, 20251 yr 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# 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.
February 19, 20251 yr 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: 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 February 19, 20251 yr by bmartino1
February 21, 20251 yr 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: 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
February 21, 20251 yr 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 February 21, 20251 yr by bmartino1
February 21, 20251 yr 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...
February 21, 20251 yr 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
February 21, 20251 yr 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>
 N8n Latest
 Secure and AI-native workflow automation tool.
 
 Important
 Run this command in the terminal (chown 1000:1000 /your directory appdata)
 Example: chown -R 1000:1000 /mnt/user/appdata/n8n
 </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 March 12, 20251 yr by Braulio Dias Ribeiro
February 22, 20251 yr 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: 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
February 22, 20251 yr 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.
February 23, 20251 yr 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.
February 23, 20251 yr 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.
February 23, 20251 yr 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.
February 23, 20251 yr 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.
February 23, 20251 yr 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...
February 24, 20251 yr Author On 2/19/2025 at 9:53 AM, Mainfrezzer said: the "--env-file=" is for normal docker, i.e. the webgui 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.
February 24, 20251 yr 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.
February 24, 20251 yr 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.
February 24, 20251 yr 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
February 24, 20251 yr Author As for n8n, I’ll post the Docker Compose that worked for me on the forum related to it, because people will also need to install it in queue mode, as it’s faster. https://forums.unraid.net/topic/97807-support-tmchow-n8n-workflow-automation/page/3/#findComment-1529138
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.