
Step by Step Guide to solve n8n Redis authentication failed
Who this is for: Developers and DevOps engineers running n8n in containers, Kubernetes, or on‑premises who need a reliable, production‑grade connection to Redis. For a complete overview of Redis usage, errors, performance tuning, and scaling in n8n, check out our detailed guide on Redis for n8n Workflows.
Quick Diagnosis
- Create a Redis password or ACL user (
requi repassoruserentry). - Expose the credentials to n8n via environment variables:
export N8N_REDIS_HOST=redis.my-domain.com export N8N_REDIS_PORT=6379 export N8N_REDIS_PASSWORD=SuperSecret123 # or N8N_REDIS_USERNAME=myuser
- Restart n8n (
docker compose up -dor pod rollout). - Confirm connectivity with
redis-cli– it should returnPONG.
If the ping fails, follow the step‑by‑step sections below.
1. Why n8n Can’t Authenticate to Redis
| Symptom | Typical Root Cause |
|---|---|
| ERR invalid password | Redis requirepass not set or mismatched. |
| (error) NOAUTH Authentication required. | n8n not sending a password (env var missing). |
| WRONGPASS invalid username‑password pair | ACL user defined but n8n supplies only a password. |
| ERR unknown command ‘ACL’ | Redis version < 6.0 (no ACL support). |
Key point: n8n uses the ioredis client, which expects either a single password or an ACL username + password (Redis 6+). Mismatched credentials cause the “authentication failed” error. Facing connection issues with Redis in n8n? Explore our full n8n Redis guide for solutions and best practices.
2. Verify Redis Version & ACL Capability
Run this command to see the Redis version:
redis-cli INFO server | grep redis_version
- Redis 6.0+ – ACLs are available.
- Redis 5.x or earlier – Only
requirepassworks; any ACL‑related config will be ignored and cause errors.
EEFA: In production, always run Redis 6+ when you need per‑workflow isolation via ACLs. Older versions expose all keys to any client that knows the password.
3. Configure Redis Authentication
3.1 Simple password (requirepass)
Add the following line to redis.conf (or set the Docker env var REDIS_PASSWORD):
requirepass SuperSecret123
Restart Redis for the change to take effect.
3.2 ACL‑based user (recommended)
Create a dedicated user with a restricted keyspace:
ACL SETUSER n8n_user on >SuperSecret123 ~n8n:* +@all
on– enable the user.>SuperSecret123– set the password.~n8n:*– limit keys to then8n:prefix.+@all– grant all command categories (adjust as needed).
EEFA: Never grant
+@adminto a workflow‑engine user. Limit to the smallest command set required. Learn how to handle Redis timeout issues in n8n effectively in our detailed n8n Redis guide.
4. Pass Credentials to n8n
n8n reads the following environment variables (see the official docs for defaults):
| Variable | Purpose |
|---|---|
| N8N_REDIS_HOST | Redis hostname or IP. |
| N8N_REDIS_PORT | Port (default 6379). |
| N8N_REDIS_PASSWORD | Password **or** ACL password. |
| N8N_REDIS_USERNAME | ACL username (Redis 6+ only). |
| N8N_REDIS_TLS | Set to true to enable TLS (if Redis is TLS‑enabled). |
4.1 Docker‑Compose example
Service definitions
services:
redis:
image: redis:7-alpine
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
volumes:
- ./redis.conf:/usr/local/etc/redis/redis.conf
ports:
- "6379:6379"
n8n container
n8n:
image: n8nio/n8n:latest
environment:
- N8N_REDIS_HOST=redis
- N8N_REDIS_PORT=6379
- N8N_REDIS_USERNAME=n8n_user # only if using ACL
- N8N_REDIS_PASSWORD=SuperSecret123
ports:
- "5678:5678"
depends_on:
- redis
4.2 Kubernetes secret & deployment
Secret (stores credentials securely)
apiVersion: v1 kind: Secret metadata: name: redis-auth type: Opaque stringData: N8N_REDIS_PASSWORD: SuperSecret123 N8N_REDIS_USERNAME: n8n_user # optional
Deployment (injects the secret)
apiVersion: apps/v1
kind: Deployment
metadata:
name: n8n
spec:
template:
spec:
containers:
- name: n8n
image: n8nio/n8n:latest
envFrom:
- secretRef:
name: redis-auth
env:
- name: N8N_REDIS_HOST
value: redis-service
- name: N8N_REDIS_PORT
value: "6379"
EEFA: Never commit passwords into source control. Use a secrets manager (AWS Secrets Manager, HashiCorp Vault) and inject at runtime.
5. Validate the Connection
Run the same commands n8n will use, substituting your actual values:
export N8N_REDIS_HOST=redis.my-domain.com export N8N_REDIS_PORT=6379 export N8N_REDIS_PASSWORD=SuperSecret123 export N8N_REDIS_USERNAME=n8n_user # if ACL
Password‑only test
redis-cli -h $N8N_REDIS_HOST -p $N8N_REDIS_PORT \
-a $N8N_REDIS_PASSWORD ping
ACL test
redis-cli -h $N8N_REDIS_HOST -p $N8N_REDIS_PORT \
-u $N8N_REDIS_USERNAME -a $N8N_REDIS_PASSWORD ping
*Success*: PONG
*Failure*: error message → map to the table in **Section 1**.
6. Troubleshooting Checklist
| Done? | Action |
|---|---|
| ☐ | Confirm Redis version ≥ 6 if using ACLs. |
| ☐ | Verify requirepass or ACL user exists (ACL LIST). |
| ☐ | Ensure n8n env vars are exported **in the same process** that runs n8n. |
| ☐ | Check Docker/K8s secret injection (no typos, correct key names). |
| ☐ | Restart n8n after any env‑var change. |
| ☐ | Test with redis-cli using identical credentials. |
| ☐ | Inspect n8n logs (docker logs n8n or kubectl logs) for “Redis authentication failed”. |
| ☐ | If using TLS, set N8N_REDIS_TLS=true and provide REDIS_TLS_CERT, REDIS_TLS_KEY, REDIS_TLS_CA. |
7. Production‑Grade Enhancements
| Feature | Why It Matters | How to Enable |
|---|---|---|
| TLS Encryption | Prevents credential sniffing on the wire. | Set N8N_REDIS_TLS=true; mount certs; configure Redis with tls-port 6379, tls-cert-file, tls-key-file, tls-ca-cert-file. |
| Network Policies | Limits which pods/services can talk to Redis. | In Kubernetes, create a NetworkPolicy allowing only the n8n namespace. |
| Read‑Only Replicas | Offloads read‑heavy workflow caching. | Point n8n to a read‑only replica for GET commands; keep writes on the master. |
| Failover & Sentinel | High availability. | Use N8N_REDIS_SENTINEL_HOSTS and N8N_REDIS_SENTINEL_MASTER_NAME (supported in n8n > 0.200). |
EEFA: When enabling TLS, set
REDIS_TLS_REJECT_UNAUTHORIZED=noonly in dev. In production, keep the default (yes) to enforce certificate validation. Confused by Redis command errors in n8n? Our n8n Redis guide has all the fixes you need.
8. When to Switch from Password to ACL
| Scenario | Recommended Auth Method |
|---|---|
| Single‑tenant n8n instance, simple deployment | requirepass (password only). |
| Multi‑tenant or shared Redis cluster | ACL user per n8n instance (username + password). |
| Need per‑workflow key isolation | ACL with key‑space patterns (~workflow:*). |
| Compliance (PCI/DSS) requiring least‑privilege | ACL with minimal command categories (+@read +@write). |
10. Next Steps / Related Topics
- Configure Redis persistence to avoid data loss after restarts.
- Set up Redis Sentinel for automatic failover with n8n.
- Implement per‑workflow ACLs for fine‑grained security (see sibling article).
*All commands assume a Unix‑like shell. Adjust syntax for Windows PowerShell as needed.*
Conclusion
Securely connecting n8n to Redis hinges on matching Redis’s authentication mode (password vs. ACL) with the environment variables n8n reads. Verify the Redis version, configure either requirepass or an ACL user, expose the credentials via safe env‑vars (or secrets), and restart n8n. A quick redis-cli ping confirms the setup. For production, add TLS, network policies, and Sentinel to meet reliability and compliance requirements. Following these steps eliminates the “Redis authentication failed” error and ensures a robust, scalable n8n deployment.



