---
title: "Deploy n8n Teams"
description: "Microsoft Teams alerts & bots"
category: "Automation"
url: https://railway.com/deploy/n8n-teams
---

# Deploy n8n Teams

Microsoft Teams alerts & bots

**[Deploy n8n Teams on Railway](https://railway.com/template/n8n-teams)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/n8n-teams/manifest.json

- **Creator:** onepush
- **Category:** Automation

## Template content

### n8n-worker

- **Image:** n8nio/n8n:2.36.8
- **Start command:** `n8n worker`
- **Health check:** /healthz

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

### n8n

- **Image:** n8nio/n8n:2.36.8
- **Health check:** /healthz
- **Public domain:** Yes

### Redis https://cdn.sanity.io/images/sy1jschh/production/0ce0bfdcfbdbf69662b1116671f97c2dd788b655-157x157.svg

- **Image:** redis:8.2
- **Start command:** `/bin/sh -c "rm -rf $RAILWAY_VOLUME_MOUNT_PATH/lost+found/ && exec docker-entrypoint.sh redis-server --requirepass $REDIS_PASSWORD --save 60 1 --dir $RAILWAY_VOLUME_MOUNT_PATH"`

## Documentation

# Deploy and Host self hosted n8n Teams (Open-Source Microsoft Teams Automation) on Railway

A stuck workflow silently skipping a Teams alert teaches you why queue mode matters. On Railway, n8n editor and worker split so a wedged webhook doesn't freeze the whole stack. This guide covers deployment, gotchas, and how it compares to Power Automate.

## About Hosting n8n Teams open-source software on Railway (self hosted n8n template)

This is a queue-mode deployment: editor and worker use n8nio/n8n:2.36.8. Editor on port 5678; worker runs `n8n worker` with no public port.

For Teams, that means adaptive cards and approval waits sit in the queue while the editor stays responsive. You can tweak a webhook node without killing a running job. That is the entire point of queue mode.

Set EXECUTIONS_MODE=queue, DB_TYPE=postgresdb, WEBHOOK_URL to your Railway public URL, N8N_PROXY_HOPS=1, and EXECUTIONS_DATA_PRUNE=true. Generate N8N_ENCRYPTION_KEY and store it somewhere safe; lose it and every saved Teams credential becomes unreadable.

## Why Deploy n8n Teams, the Power Automate alternative on Railway (Railway Free Trial)

Power Automate wins when your team lives in Microsoft 365 and needs only a few flows. Pricing is predictable, the connector is maintained.

n8n Community Edition is fair-code with no per-execution meter. On Railway, this stack typically costs $10-$25/month. n8n Cloud Starter is about $24/month for 2,500 executions; here you keep your encryption key and aren't capped.

The real reason: when a Teams approval needs to call a private API, update Postgres, then touch SharePoint, you write one workflow instead of fighting connector limits.

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying n8n Teams on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.

### Railway vs Other Hosting Providers and VPS for n8n Teams self hosting

| Provider | Queue mode setup | Teams webhook latency | Monthly cost | Notes |
|---|---|---|---|---|
| DigitalOcean | Manual Docker Compose | Low if same region | $12-$24 | You manage Postgres and Redis |
| AWS | ECS or EC2 | Depends on region/ALB | $20-$60 | Overkill unless already in AWS |
| Hetzner | Manual, cheap | Excellent in EU | $8-$15 | No managed Postgres base |

Railway's edge: managed Postgres and Redis plugins, no 2 a.m. Redis patching. The public URL for Teams webhooks is generated, removing usual timeout debugging.

## Common Use Cases for hosted n8n Teams

A support ticket arrives; n8n posts an adaptive card to the on-call Teams channel with Claim and Escalate buttons. Someone clicks Claim, the card updates, and the workflow assigns the ticket. Five nodes, not a custom bot.

Approvals: a finance workflow needs sign-off before paying an invoice. n8n sends a Teams message with Approve/Reject actions, waits, and resumes on webhook response. Timeouts, reminders, escalation paths are built in.

Webhook alerts: monitoring tool fires, n8n formats it into a clean Teams message and posts to the right channel by severity. No raw JSON in chat.

Read channel messages: with Microsoft Graph permissions, n8n listens for keywords and triggers workflows, like "deploy staging" as a chat command.

## Dependencies for n8n Teams Docker hosted on Railway

Three moving parts: Postgres holds workflows and execution history, Redis Bull is the queue broker, and editor/worker share the same volume for credentials and node types. Skip one and breaks look mysterious.

### Deployment Dependencies for Managed n8n Teams Service (Teams Bot Automation)

Microsoft Entra ID app registration with Graph permissions. For posting messages and adaptive cards: ChannelMessage.Send, User.Read.

The n8n Teams node handles most of this, but you create the app registration and consent. Store client ID, secret, tenant ID in n8n credentials. Secrets expire - set a reminder.

### Implementation Details for n8n Teams (Using n8n official docker image)

Both editor and worker use n8nio/n8n:2.36.8. Editor runs default command; worker runs `n8n worker`.

Volume /home/node/.n8n must be shared. Skip it and the worker can't see editor-created credentials; Teams nodes fail with "credential not found".

Port 5678 is the editor web UI. The worker needs no exposed port. Teams webhooks hit the editor's public URL, which queues execution for the worker.

## How does n8n Teams compare against other Teams and chat ops automation platforms

All can post to Teams. The difference is what happens after: branching, waiting, calling non-Microsoft services.

### n8n Teams vs Power Automate (Power Automate Alternative)

Power Automate wins if you're already on M365 and automation stays in Graph. Native approvals, first-party connector. But pricing scales with flows, and expressions get awkward. n8n wins mixing Teams with Postgres, custom APIs, self-hosted tools.

### n8n Teams vs Zapier Teams (Zapier Teams Alternative)

Zapier is solid for simple "when X, post to Teams" zaps with a friendlier UI. But per-task pricing burns fast with database lookups and webhooks. n8n has no per-execution fee and can run JavaScript in code nodes.

### n8n Teams vs Slack bots (Slack bots Alternative)

Only matters if you're choosing between Slack and Teams. Slack's bot ecosystem is more mature; Bolt is pleasant. Teams Graph API is clunkier. But if your org is on Teams, n8n abstracts enough Graph pain that you don't write a full bot.

### n8n Teams vs Microsoft Graph DIY (Microsoft Graph DIY Alternative)

Raw Graph API from a custom service gives total control: subscription renewals, card templating, retries. Also a part-time job. n8n wraps common ops - post message, adaptive card, wait for approval - no hand-rolled OAuth refresh.

## How to use n8n Teams (the OSS Teams Bot Automation)?

Start with the Teams node. Add Microsoft credentials, pick operation: post message, send adaptive card, or wait for approval. For cards, paste JSON payload; the node validates against Teams schema.

For approvals, use "Wait for approval". The workflow pauses, the card goes out, and execution resumes on click with user ID and choice for branching.

For inbound messages, set up a webhook trigger and configure Teams to send events. Push events require Graph subscription setup; otherwise poll.

## How to self host n8n Teams on other VPS Services (n8n Teams self hosting guide)

Any VPS with Docker works. Steps below assume Ubuntu and Docker Compose.

### Clone the Repository

Not cloning source. Create docker-compose.yml defining editor, worker, Postgres, Redis. Pull n8nio/n8n:2.36.8 in both n8n services.

### Install Dependencies

Install Docker and Docker Compose. Run Postgres and Redis as containers or host services. Use the same Docker network if containers.

### Configure Environment Variables

Create .env with EXECUTIONS_MODE=queue, DB_TYPE=postgresdb, Postgres connection details, QUEUE_BULL_REDIS_HOST, WEBHOOK_URL, N8N_PROXY_HOPS=1, N8N_ENCRYPTION_KEY, EXECUTIONS_DATA_PRUNE=true. Generate key with `openssl rand -hex 24`.

### Start the n8n Teams Application

Run `docker compose up -d`. Editor on port 5678, worker connects to Redis and Postgres. Check `docker compose logs worker`. Set up reverse proxy with TLS - Microsoft requires HTTPS for webhooks.

## Official Pricing of n8n Teams (n8n Teams pricing)

n8n Community Edition is free, fair-code. n8n Cloud Starter is about $24/month for 2,500 executions. Enterprise adds SSO; Community has no SSO.

Railway cost is infrastructure: containers, Postgres, Redis. Typically $10-$25/month.

## n8n Teams cloud vs self hosted comparison (Pricing, features, costs, and more)

Cloud wins setup time: sign up, connect Teams, posting in ten minutes. Self-hosted wins execution volume, data control, and reach to private services.

### Monthly cost of self hosting n8n Teams on Railway

Minimal queue-mode stack: editor, worker, small Postgres, small Redis - $10-$15/month. Heavy Teams workloads bump worker resources to $20-$25/month. Railway $5 free trial covers experiments.

### System Requirements for Hosting n8n Teams on a VPS

Light Teams bot: 2 vCPU / 4 GB RAM comfortable. Postgres and Redis add about 1 GB RAM. Heavier: separate worker on its own instance, 4 vCPU. Disk modest if EXECUTIONS_DATA_PRUNE=true; volume holds credentials and config, not execution bloat.

## Frequently Asked Questions (FAQs)

### Why can't I use SQLite with this template?

Queue mode needs concurrent connections from editor and worker. SQLite locks on writes, causing fights. Postgres is the only sane choice.

### What happens if I lose my N8N_ENCRYPTION_KEY?

Every saved credential, including Teams OAuth, becomes unreadable. You'd re-add them all. Store it in Railway secret manager, back up elsewhere. No recovery.

### Do I need the worker container if I only post simple Teams messages?

Low volume: a single container without queue mode works. But approval workflows hold the main process. Queue mode keeps the editor usable. For a cheaper no-queue option, see [cheapest n8n without queue mode](https://railway.com/deploy/n8n).

### How do Teams adaptive cards work in n8n?

Paste card JSON into the Teams node. The node validates and sends via Graph API. Cards support buttons, inputs, images. Approval responses return as webhook events that resume the workflow.

### Can n8n read messages from a Teams channel?

Yes, but it's the most setup-heavy part. You need Microsoft Graph application permissions, subscription webhooks with renewal, or polling. The posting side is smoother than the reading side.

### Is Community Edition enough for a production Teams bot?

For most teams, yes. It lacks SSO and enterprise governance. If you need SAML SSO or audit logs, use Enterprise or n8n Cloud.


## Similar templates

- [N8N Main + Worker](https://railway.com/deploy/n8n-main-worker) — Deploy and Host N8N with Inactive worker.
- [Evolution API with n8n](https://railway.com/deploy/evolution-api-with-n8n) — Automate WhatsApp workflows with Evolution API, n8n, and Postgres.
- [Postgres Backup](https://railway.com/deploy/postgres-s3-backups) — Cron-based PostgreSQL backup to bucket storage

Open this page in a browser: https://railway.com/deploy/n8n-teams
