---
title: "Deploy Dify (w/ AI model setup)"
description: "Dify with your model key set up at deploy: OpenAI, Anthropic or OpenRouter."
category: "AI/ML"
url: https://railway.com/deploy/dify-w-ai-model-setup
---

# Deploy Dify (w/ AI model setup)

Dify with your model key set up at deploy: OpenAI, Anthropic or OpenRouter.

**[Deploy Dify (w/ AI model setup) on Railway](https://railway.com/template/dify-w-ai-model-setup)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/dify-w-ai-model-setup/manifest.json

- **Creator:** AvgSoft
- **Category:** AI/ML

## Template content

### Sandbox https://cdn.jsdelivr.net/gh/mikedepo/railway-template-assets@ff030029127cc39bd7212cc10fe36eefde0019ea/service-icons/dify.svg

- **Image:** langgenius/dify-sandbox:0.2.15
- **Start command:** `/bin/bash -c "if test -f $NODE_TAR_XZ; then tar -xf $NODE_TAR_XZ -C /opt; rm -f $NODE_TAR_XZ; fi; mkdir -p /usr/local/bin; ln -sf $NODE_DIR/bin/node /usr/local/bin/node; exec /main"`
- **Health check:** /health

### Plugin daemon https://cdn.jsdelivr.net/gh/mikedepo/railway-template-assets@ff030029127cc39bd7212cc10fe36eefde0019ea/service-icons/dify.svg

- **Image:** langgenius/dify-plugin-daemon:0.6.12-local
- **Health check:** /health/check

### Scheduler https://cdn.jsdelivr.net/gh/mikedepo/railway-template-assets@ff030029127cc39bd7212cc10fe36eefde0019ea/service-icons/dify.svg

- **Image:** langgenius/dify-api:1.18.0

### API https://cdn.jsdelivr.net/gh/mikedepo/railway-template-assets@ff030029127cc39bd7212cc10fe36eefde0019ea/service-icons/dify.svg

- **Image:** langgenius/dify-api:1.18.0
- **Start command:** `/bin/bash -c "case x$SMTP_SERVER in x) ;; *) export MAIL_TYPE=smtp ;; esac; exec /bin/bash /entrypoint.sh"`
- **Health check:** /health

### Dify https://cdn.jsdelivr.net/gh/mikedepo/railway-template-assets@ff030029127cc39bd7212cc10fe36eefde0019ea/service-icons/dify.svg

- **Image:** nginx:1.31-alpine
- **Start command:** `/bin/sh -c "mkdir -p /etc/nginx/templates && printenv NGINX_CONF > /etc/nginx/templates/default.conf.template && exec /docker-entrypoint.sh nginx -g 'daemon off;'"`
- **Health check:** /healthz
- **Public domain:** Yes

### Redis https://cdn.jsdelivr.net/gh/mikedepo/railway-template-assets@ff030029127cc39bd7212cc10fe36eefde0019ea/service-icons/redis.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"`

### Worker https://cdn.jsdelivr.net/gh/mikedepo/railway-template-assets@ff030029127cc39bd7212cc10fe36eefde0019ea/service-icons/dify.svg

- **Image:** langgenius/dify-api:1.18.0
- **Start command:** `/bin/bash -c "case x$SMTP_SERVER in x) ;; *) export MAIL_TYPE=smtp ;; esac; exec /bin/bash /entrypoint.sh"`

### Setup https://cdn.jsdelivr.net/gh/mikedepo/railway-template-assets@ff030029127cc39bd7212cc10fe36eefde0019ea/service-icons/setup.svg

- **Image:** ghcr.io/railwayapp/function-bun:1.3.0
- **Start command:** `./run.sh Ly8gT25lLXRpbWUgc2V0dXAgZm9yIHRoZSAiRGlmeSAody8gQUkgbW9kZWwgc2V0dXApIiB0ZW1wbGF0ZSwgcnVuIGFzIGEgUmFpbHdheSBGdW5jdGlvbiAoZ2hjci5pby9yYWlsd2F5YXBwL2Z1bmN0aW9uLWJ1bikuCi8vIDEuIENyZWF0ZXMgRGlmeSdzIGZpcnN0IGFkbWluIGZyb20gdGhlIGRlcGxveSBmb3JtLCBzbyBub2JvZHkgZWxzZSBjYW4gY2xhaW0gdGhlIC9pbnN0YWxsIHBhZ2UgZmlyc3QuCi8vIDIuIEZvciBlYWNoIG1vZGVsIGtleSBvbiB0aGUgZm9ybSAoT3BlbkFJLCBBbnRocm9waWMsIE9wZW5Sb3V0ZXIpOiBpbnN0YWxscyB0aGUgcHJvdmlkZXIncyBwbHVnaW4gZnJvbSBEaWZ5J3MKLy8gICAgbWFya2V0cGxhY2UsIGFkZHMgdGhlIGtleSwgYW5kIHNldHMgZGVmYXVsdCBjaGF0IGFuZCBlbWJlZGRpbmcgbW9kZWxzLCBzbyB0aGUgZmlyc3QgYXBwIHdvcmtzIHJpZ2h0IGFmdGVyIHNpZ24taW4uCi8vIFNhZmUgdG8gcnVuIGFnYWluOiBldmVyeSBzdGVwIGNoZWNrcyB3aGF0IGFscmVhZHkgZXhpc3RzLiBSZWRlcGxveSBTZXR1cCBhZnRlciBhZGRpbmcgYSBrZXkgbGF0ZXIuCi8vIEJ1aWxkIHRoZSB0ZW1wbGF0ZSdzIHN0YXJ0IGNvbW1hbmQgZnJvbSB0aGlzIGZpbGU6ICIuL3J1bi5zaCAiICsgYmFzZTY0KGZpbGUpLgovLwovLyBWYXJpYWJsZXM6IERJRllfQVBJX1VSTCAocHJpdmF0ZSBBUEkgVVJMKSwgRElGWV9VUkwgKHB1YmxpYyBVUkwsIGZvciB0aGUgbG9nKSwgSU5JVF9QQVNTV09SRCAodGhlIEFQSSdzKSwKLy8gQURNSU5fRU1BSUwsIEFETUlOX1BBU1NXT1JELCBBRE1JTl9OQU1FLCBPUEVOQUlfQVBJX0tFWSwgQU5USFJPUElDX0FQSV9LRVksIE9QRU5ST1VURVJfQVBJX0tFWS4KCmNvbnN0IEFQSSA9IChwcm9jZXNzLmVudi5ESUZZX0FQSV9VUkwgPz8gJycpLnJlcGxhY2UoL1wvJC8sICcnKTsKY29uc3QgVVJMXyA9IChwcm9jZXNzLmVudi5ESUZZX1VSTCA/PyAnJykucmVwbGFjZSgvXC8kLywgJycpOwpjb25zdCBJTklUID0gcHJvY2Vzcy5lbnYuSU5JVF9QQVNTV09SRCA/PyAnJzsKY29uc3QgRU1BSUwgPSAocHJvY2Vzcy5lbnYuQURNSU5fRU1BSUwgPz8gJycpLnRyaW0oKTsKY29uc3QgUEFTU1dPUkQgPSBwcm9jZXNzLmVudi5BRE1JTl9QQVNTV09SRCA/PyAnJzsKY29uc3QgTkFNRSA9IChwcm9jZXNzLmVudi5BRE1JTl9OQU1FID8/ICcnKS50cmltKCkgfHwgJ0FkbWluJzsKY29uc3QgTUFSS0VUUExBQ0UgPSAnaHR0cHM6Ly9tYXJrZXRwbGFjZS5kaWZ5LmFpL2FwaS92MS9wbHVnaW5zJzsKCi8vIFByb3ZpZGVycyBpbiB0aGUgb3JkZXIgdGhleSB3aW4gdGhlIGRlZmF1bHQgY2hhdCBtb2RlbC4gTW9kZWwgbGlzdHMgYXJlIHRyaWVkIGluIG9yZGVyOyB0aGUgZmlyc3Qgb25lIHRoZQovLyBwbHVnaW4gb2ZmZXJzIGJlY29tZXMgdGhlIGRlZmF1bHQsIHNvIG5ld2VyIHBsdWdpbiB2ZXJzaW9ucyB0aGF0IGRyb3AgYSBtb2RlbCBzdGlsbCBnZXQgYSBzZW5zaWJsZSBjaG9pY2UuCmNvbnN0IFBST1ZJREVSUyA9IFsKICB7IGtleTogcHJvY2Vzcy5lbnYuT1BFTkFJX0FQSV9LRVksIGxhYmVsOiAnT3BlbkFJJywgcGx1Z2luOiAnbGFuZ2dlbml1cy9vcGVuYWknLCBwcm92aWRlcjogJ2xhbmdnZW5pdXMvb3BlbmFpL29wZW5haScsIGZpZWxkOiAnb3BlbmFpX2FwaV9rZXknLAogICAgbGxtOiBbJ2dwdC01LjQtbWluaScsICdncHQtNS1taW5pJywgJ2dwdC00LjEtbWluaScsICdncHQtNG8tbWluaSddLCBlbWJlZGRpbmc6IFsndGV4dC1lbWJlZGRpbmctMy1zbWFsbCddIH0sCiAgeyBrZXk6IHByb2Nlc3MuZW52LkFOVEhST1BJQ19BUElfS0VZLCBsYWJlbDogJ0FudGhyb3BpYycsIHBsdWdpbjogJ2xhbmdnZW5pdXMvYW50aHJvcGljJywgcHJvdmlkZXI6ICdsYW5nZ2VuaXVzL2FudGhyb3BpYy9hbnRocm9waWMnLCBmaWVsZDogJ2FudGhyb3BpY19hcGlfa2V5JywKICAgIGxsbTogWydjbGF1ZGUtc29ubmV0LTUtNScsICdjbGF1ZGUtc29ubmV0LTUnLCAnY2xhdWRlLXNvbm5ldC00LTYnLCAnY2xhdWRlLXNvbm5ldC00LTUnXSwgZW1iZWRkaW5nOiBbXSB9LAogIHsga2V5OiBwcm9jZXNzLmVudi5PUEVOUk9VVEVSX0FQSV9LRVksIGxhYmVsOiAnT3BlblJvdXRlcicsIHBsdWdpbjogJ2xhbmdnZW5pdXMvb3BlbnJvdXRlcicsIHByb3ZpZGVyOiAnbGFuZ2dlbml1cy9vcGVucm91dGVyL29wZW5yb3V0ZXInLCBmaWVsZDogJ2FwaV9rZXknLAogICAgbGxtOiBbJ29wZW5haS9ncHQtNC4xLW1pbmknLCAnb3BlbmFpL2dwdC00by1taW5pJ10sIGVtYmVkZGluZzogWydvcGVuYWkvdGV4dC1lbWJlZGRpbmctMy1zbWFsbCddIH0sCl0ubWFwKChwKSA9PiAoeyAuLi5wLCBrZXk6IChwLmtleSA/PyAnJykudHJpbSgpIH0pKTsKCmNvbnN0IGxvZyA9IChtc2c6IHN0cmluZykgPT4gY29uc29sZS5sb2coYFtzZXR1cF0gJHttc2d9YCk7CmNvbnN0IHNsZWVwID0gKG1zOiBudW1iZXIpID0+IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIG1zKSk7CmNvbnN0IEZJWCA9ICdDaGFuZ2UgaXQgaW4gdGhlIFNldHVwIHNlcnZpY2VcJ3MgVmFyaWFibGVzIGFuZCByZWRlcGxveSBTZXR1cC4nOwovLyBFeGl0IDAgb24gZmFpbHVyZSB0b28sIHNvIGEgc2V0dXAgcHJvYmxlbSBuZXZlciBtYXJrcyB0aGUgZGVwbG95IGFzIGZhaWxlZDsgdGhlIGxvZyBzYXlzIGhvdyB0byBmaW5pc2guCmNvbnN0IHN0b3AgPSAobXNnOiBzdHJpbmcpOiBuZXZlciA9PiB7IGxvZyhtc2cpOyBwcm9jZXNzLmV4aXQoMCk7IH07CgppZiAoIUFQSSB8fCAhRU1BSUwgfHwgIVBBU1NXT1JEKSBzdG9wKCdtaXNzaW5nIERJRllfQVBJX1VSTCwgQURNSU5fRU1BSUwgb3IgQURNSU5fUEFTU1dPUkQnKTsKaWYgKCEvXlteQFxzXStAW15AXHNdK1wuW15AXHNdKyQvLnRlc3QoRU1BSUwpKSBzdG9wKGBBRE1JTl9FTUFJTCAiJHtFTUFJTH0iIGlzIG5vdCBhbiBlbWFpbCBhZGRyZXNzLiAke0ZJWH1gKTsKLy8gRGlmeSdzIHBhc3N3b3JkIHJ1bGUgKGFwaS9saWJzL3Bhc3N3b3JkLnB5KTogOCsgY2hhcmFjdGVycyB3aXRoIGF0IGxlYXN0IG9uZSBsZXR0ZXIgYW5kIG9uZSBudW1iZXIuCmlmICghL14oPz0uKlthLXpBLVpdKSg/PS4qXGQpLns4LH0kLy50ZXN0KFBBU1NXT1JEKSkgewogIHN0b3AoYEFETUlOX1BBU1NXT1JEIGlzIHRvbyB3ZWFrIGZvciBEaWZ5OiBpdCBuZWVkcyBhdCBsZWFzdCA4IGNoYXJhY3RlcnMsIHdpdGggYSBsZXR0ZXIgYW5kIGEgbnVtYmVyLiAke0ZJWH1gKTsKfQoKLy8gVGhlIEFQSSBydW5zIGl0cyBkYXRhYmFzZSBtaWdyYXRpb25zIGJlZm9yZSBpdCBhbnN3ZXJzLCB3aGljaCB0YWtlcyBhIG1pbnV0ZSBvciB0d28gb24gdGhlIGZpcnN0IGRlcGxveS4KbGV0IHVwID0gZmFsc2U7CmZvciAobGV0IGkgPSAwOyBpIDwgOTAgJiYgIXVwOyBpKyspIHsKICB0cnkgeyB1cCA9IChhd2FpdCBmZXRjaChgJHtBUEl9L2hlYWx0aGApKS5vazsgfSBjYXRjaCB7fQogIGlmICghdXApIGF3YWl0IHNsZWVwKDEwXzAwMCk7Cn0KaWYgKCF1cCkgc3RvcChgdGhlIERpZnkgQVBJIGRpZCBub3QgY29tZSB1cCB3aXRoaW4gMTUgbWludXRlcyAoJHtBUEl9L2hlYWx0aClgKTsKbG9nKCdEaWZ5IEFQSSBpcyB1cCcpOwoKLy8gMS4gVGhlIGFkbWluLiBJTklUX1BBU1NXT1JEIGxvY2tzIERpZnkncyAvaW5zdGFsbCBwYWdlIHVudGlsIGl0IGlzIGVudGVyZWQ7IFNldHVwIGVudGVycyBpdCwgdGhlbiBjcmVhdGVzIHRoZSBhZG1pbi4KY29uc3Qgc3RhdGU6IGFueSA9IGF3YWl0IChhd2FpdCBmZXRjaChgJHtBUEl9L2NvbnNvbGUvYXBpL3NldHVwYCkpLmpzb24oKTsKaWYgKHN0YXRlLnN0ZXAgPT09ICdmaW5pc2hlZCcpIHsKICBsb2coJ0RpZnkgYWxyZWFkeSBoYXMgYW4gYWRtaW4nKTsKfSBlbHNlIHsKICBsZXQgY29va2llID0gJyc7CiAgaWYgKElOSVQpIHsKICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke0FQSX0vY29uc29sZS9hcGkvaW5pdGAsIHsgbWV0aG9kOiAnUE9TVCcsIGhlYWRlcnM6IHsgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LCBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHBhc3N3b3JkOiBJTklUIH0pIH0pOwogICAgaWYgKCFyZXMub2spIHN0b3AoYERpZnkgcmVmdXNlZCBJTklUX1BBU1NXT1JEIChIVFRQICR7cmVzLnN0YXR1c30pOyBpdCBtdXN0IG1hdGNoIHRoZSBBUEkgc2VydmljZSdzIElOSVRfUEFTU1dPUkRgKTsKICAgIGNvb2tpZSA9IChyZXMuaGVhZGVycy5nZXRTZXRDb29raWU/LigpID8/IFtdKS5tYXAoKGMpID0+IGMuc3BsaXQoJzsnKVswXSkuam9pbignOyAnKTsKICB9CiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYCR7QVBJfS9jb25zb2xlL2FwaS9zZXR1cGAsIHsKICAgIG1ldGhvZDogJ1BPU1QnLAogICAgaGVhZGVyczogeyAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb29raWUgfSwKICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgZW1haWw6IEVNQUlMLCBuYW1lOiBOQU1FLCBwYXNzd29yZDogUEFTU1dPUkQsIGxhbmd1YWdlOiAnZW4tVVMnIH0pLAogIH0pOwogIGlmICghcmVzLm9rKSBzdG9wKGBjcmVhdGluZyB0aGUgRGlmeSBhZG1pbiBmYWlsZWQgKEhUVFAgJHtyZXMuc3RhdHVzfTogJHsoYXdhaXQgcmVzLnRleHQoKSkuc2xpY2UoMCwgMjAwKX0pYCk7CiAgbG9nKGBjcmVhdGVkIHRoZSBEaWZ5IGFkbWluICR7RU1BSUx9YCk7Cn0KCmNvbnN0IHdhbnRlZCA9IFBST1ZJREVSUy5maWx0ZXIoKHApID0+IHAua2V5KTsKaWYgKCF3YW50ZWQubGVuZ3RoKSBzdG9wKGBubyBtb2RlbCBrZXkgZ2l2ZW47IGFkZCBvbmUgaW4gRGlmeSAoU2V0dGluZ3MsIE1vZGVsIFByb3ZpZGVyKS4gRGlmeSBpcyByZWFkeTogb3BlbiAke1VSTF8gfHwgJ3RoZSBEaWZ5IHNlcnZpY2UgVVJMJ30gYW5kIHNpZ24gaW4uYCk7CgovLyAyLiBTaWduIGluIGFzIHRoZSBhZG1pbiwgdGhlIHdheSB0aGUgd2ViIGFwcCBkb2VzIChwYXNzd29yZCBiYXNlNjQtZW5jb2RlZDsgc2Vzc2lvbiBpbiBjb29raWVzLCBDU1JGIHRva2VuIGluIGEgaGVhZGVyKS4KY29uc3QgamFyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307CmFzeW5jIGZ1bmN0aW9uIGNhbGwobWV0aG9kOiBzdHJpbmcsIHBhdGg6IHN0cmluZywgYm9keT86IHVua25vd24pIHsKICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyBjb29raWU6IE9iamVjdC5lbnRyaWVzKGphcikubWFwKChbaywgdl0pID0+IGAke2t9PSR7dn1gKS5qb2luKCc7ICcpIH07CiAgY29uc3QgY3NyZiA9IGphclsnX19Ib3N0LWNzcmZfdG9rZW4nXSA/PyBqYXIuY3NyZl90b2tlbjsKICBpZiAoY3NyZikgaGVhZGVyc1sneC1jc3JmLXRva2VuJ10gPSBjc3JmOwogIGlmIChib2R5ICE9PSB1bmRlZmluZWQpIGhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzb24nOwogIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke0FQSX0ke3BhdGh9YCwgeyBtZXRob2QsIGhlYWRlcnMsIGJvZHk6IGJvZHkgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IEpTT04uc3RyaW5naWZ5KGJvZHkpIH0pOwogIGZvciAoY29uc3QgYyBvZiByZXMuaGVhZGVycy5nZXRTZXRDb29raWU/LigpID8/IFtdKSB7IGNvbnN0IGt2ID0gYy5zcGxpdCgnOycpWzBdOyBjb25zdCBpID0ga3YuaW5kZXhPZignPScpOyBqYXJba3Yuc2xpY2UoMCwgaSldID0ga3Yuc2xpY2UoaSArIDEpOyB9CiAgY29uc3QgdGV4dCA9IGF3YWl0IHJlcy50ZXh0KCk7CiAgbGV0IGpzb246IGFueSA9IG51bGw7CiAgdHJ5IHsganNvbiA9IEpTT04ucGFyc2UodGV4dCk7IH0gY2F0Y2gge30KICByZXR1cm4geyBzdGF0dXM6IHJlcy5zdGF0dXMsIG9rOiByZXMub2ssIGpzb24sIHRleHQgfTsKfQpjb25zdCBsb2dpbiA9IGF3YWl0IGNhbGwoJ1BPU1QnLCAnL2NvbnNvbGUvYXBpL2xvZ2luJywgeyBlbWFpbDogRU1BSUwsIHBhc3N3b3JkOiBCdWZmZXIuZnJvbShQQVNTV09SRCkudG9TdHJpbmcoJ2Jhc2U2NCcpLCByZW1lbWJlcl9tZTogdHJ1ZSB9KTsKaWYgKCFsb2dpbi5vaykgc3RvcChgY2Fubm90IHNpZ24gaW4gdG8gRGlmeSBhcyAke0VNQUlMfSAoSFRUUCAke2xvZ2luLnN0YXR1c30pOyBpZiB5b3UgY2hhbmdlZCB0aGUgcGFzc3dvcmQgaW4gRGlmeSwgdXBkYXRlIEFETUlOX1BBU1NXT1JEIGFuZCByZWRlcGxveSBTZXR1cGApOwoKLy8gMy4gRWFjaCBwcm92aWRlcjogcGx1Z2luLCBrZXksIHRoZW4gcGljayBpdHMgbW9kZWxzLgpjb25zdCByZWFkeTogeyBwOiB0eXBlb2YgUFJPVklERVJTW251bWJlcl07IG1vZGVsczogYW55W10gfVtdID0gW107CmZvciAoY29uc3QgcCBvZiB3YW50ZWQpIHsKICBjb25zdCBsaXN0ID0gYXdhaXQgY2FsbCgnR0VUJywgJy9jb25zb2xlL2FwaS93b3Jrc3BhY2VzL2N1cnJlbnQvcGx1Z2luL2xpc3Q/cGFnZT0xJnBhZ2Vfc2l6ZT0xMDAnKTsKICBpZiAoIShsaXN0Lmpzb24/LnBsdWdpbnMgPz8gW10pLnNvbWUoKHg6IGFueSkgPT4geC5wbHVnaW5faWQgPT09IHAucGx1Z2luKSkgewogICAgY29uc3QgaWQgPSAoYXdhaXQgKGF3YWl0IGZldGNoKGAke01BUktFVFBMQUNFfS8ke3AucGx1Z2lufWApKS5qc29uKCkgYXMgYW55KT8uZGF0YT8ucGx1Z2luPy5sYXRlc3RfcGFja2FnZV9pZGVudGlmaWVyOwogICAgaWYgKCFpZCkgeyBsb2coYCR7cC5sYWJlbH06IGNvdWxkIG5vdCBmaW5kICR7cC5wbHVnaW59IGluIERpZnkncyBtYXJrZXRwbGFjZTsgc2tpcHBlZGApOyBjb250aW51ZTsgfQogICAgY29uc3QgaW5zdCA9IGF3YWl0IGNhbGwoJ1BPU1QnLCAnL2NvbnNvbGUvYXBpL3dvcmtzcGFjZXMvY3VycmVudC9wbHVnaW4vaW5zdGFsbC9tYXJrZXRwbGFjZScsIHsgcGx1Z2luX3VuaXF1ZV9pZGVudGlmaWVyczogW2lkXSB9KTsKICAgIGlmICghaW5zdC5vaykgeyBsb2coYCR7cC5sYWJlbH06IGluc3RhbGxpbmcgJHtpZH0gZmFpbGVkIChIVFRQICR7aW5zdC5zdGF0dXN9OiAke2luc3QudGV4dC5zbGljZSgwLCAyMDApfSk7IHNraXBwZWRgKTsgY29udGludWU7IH0KICAgIGxldCBzdGF0dXMgPSBpbnN0Lmpzb24/LmFsbF9pbnN0YWxsZWQgPyAnc3VjY2VzcycgOiAncnVubmluZyc7CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDYwICYmIHN0YXR1cyAhPT0gJ3N1Y2Nlc3MnICYmIHN0YXR1cyAhPT0gJ2ZhaWxlZCc7IGkrKykgewogICAgICBhd2FpdCBzbGVlcCg1MDAwKTsKICAgICAgc3RhdHVzID0gKGF3YWl0IGNhbGwoJ0dFVCcsIGAvY29uc29sZS9hcGkvd29ya3NwYWNlcy9jdXJyZW50L3BsdWdpbi90YXNrcy8ke2luc3QuanNvbi50YXNrX2lkfWApKS5qc29uPy50YXNrPy5zdGF0dXMgPz8gc3RhdHVzOwogICAgfQogICAgaWYgKHN0YXR1cyAhPT0gJ3N1Y2Nlc3MnKSB7IGxvZyhgJHtwLmxhYmVsfTogdGhlIHBsdWdpbiBpbnN0YWxsIGRpZCBub3QgZmluaXNoICgke3N0YXR1c30pOyBza2lwcGVkYCk7IGNvbnRpbnVlOyB9CiAgICBsb2coYCR7cC5sYWJlbH06IGluc3RhbGxlZCAke2lkLnNwbGl0KCdAJylbMF19YCk7CiAgfQogIGxldCBtb2RlbHMgPSAoYXdhaXQgY2FsbCgnR0VUJywgYC9jb25zb2xlL2FwaS93b3Jrc3BhY2VzL2N1cnJlbnQvbW9kZWwtcHJvdmlkZXJzLyR7cC5wcm92aWRlcn0vbW9kZWxzYCkpLmpzb24/LmRhdGEgPz8gW107CiAgaWYgKCFtb2RlbHMuc29tZSgobTogYW55KSA9PiBtLnN0YXR1cyA9PT0gJ2FjdGl2ZScpKSB7CiAgICBjb25zdCBjcmVkID0gYXdhaXQgY2FsbCgnUE9TVCcsIGAvY29uc29sZS9hcGkvd29ya3NwYWNlcy9jdXJyZW50L21vZGVsLXByb3ZpZGVycy8ke3AucHJvdmlkZXJ9L2NyZWRlbnRpYWxzYCwgeyBjcmVkZW50aWFsczogeyBbcC5maWVsZF06IHAua2V5IH0sIG5hbWU6ICdTZXR1cCcgfSk7CiAgICBpZiAoIWNyZWQub2spIHsgbG9nKGAke3AubGFiZWx9OiBEaWZ5IHJlZnVzZWQgdGhlIGtleSAoJHtjcmVkLmpzb24/Lm1lc3NhZ2UgPz8gY3JlZC50ZXh0LnNsaWNlKDAsIDIwMCl9KS4gQ2hlY2sgdGhlIGtleSwgdGhlbiByZWRlcGxveSBTZXR1cCBvciBhZGQgaXQgaW4gU2V0dGluZ3MsIE1vZGVsIFByb3ZpZGVyLmApOyBjb250aW51ZTsgfQogICAgbG9nKGAke3AubGFiZWx9OiBhZGRlZCB0aGUga2V5YCk7CiAgICBtb2RlbHMgPSAoYXdhaXQgY2FsbCgnR0VUJywgYC9jb25zb2xlL2FwaS93b3Jrc3BhY2VzL2N1cnJlbnQvbW9kZWwtcHJvdmlkZXJzLyR7cC5wcm92aWRlcn0vbW9kZWxzYCkpLmpzb24/LmRhdGEgPz8gW107CiAgfSBlbHNlIHsKICAgIGxvZyhgJHtwLmxhYmVsfTogYSBrZXkgaXMgYWxyZWFkeSBzZXQ7IGxlZnQgYXMgaXNgKTsKICB9CiAgcmVhZHkucHVzaCh7IHAsIG1vZGVscyB9KTsKfQppZiAoIXJlYWR5Lmxlbmd0aCkgc3RvcChgbm8gbW9kZWwgcHJvdmlkZXIgY291bGQgYmUgc2V0IHVwOyBhZGQgb25lIGluIERpZnkgKFNldHRpbmdzLCBNb2RlbCBQcm92aWRlcikuIERpZnkgaXMgcmVhZHk6IG9wZW4gJHtVUkxfIHx8ICd0aGUgRGlmeSBzZXJ2aWNlIFVSTCd9IGFuZCBzaWduIGluLmApOwoKLy8gNC4gRGVmYXVsdCBtb2RlbHM6IGNoYXQgZnJvbSB0aGUgZmlyc3QgcHJvdmlkZXIgdGhhdCBoYXMgb25lOyBlbWJlZGRpbmdzIChmb3Iga25vd2xlZGdlIGJhc2VzKSBsaWtld2lzZS4KLy8gQSBjaGF0IG1vZGVsIG91dHNpZGUgdGhlIHByZWZlcnJlZCBsaXN0cyBpcyBzdGlsbCBiZXR0ZXIgdGhhbiBub25lLCBzbyBsbG0gZmFsbHMgYmFjayB0byB0aGUgZmlyc3QgYWN0aXZlIG9uZS4KY29uc3QgYWN0aXZlID0gKG1vZGVsczogYW55W10sIHR5cGU6IHN0cmluZykgPT4gbW9kZWxzLmZpbHRlcigobSkgPT4gbS5tb2RlbF90eXBlID09PSB0eXBlICYmIG0uc3RhdHVzID09PSAnYWN0aXZlJykubWFwKChtKSA9PiBtLm1vZGVsIGFzIHN0cmluZyk7CmNvbnN0IHBpY2sgPSAodHlwZTogJ2xsbScgfCAndGV4dC1lbWJlZGRpbmcnKSA9PiB7CiAgZm9yIChjb25zdCB7IHAsIG1vZGVscyB9IG9mIHJlYWR5KSB7CiAgICBjb25zdCBuYW1lID0gKHR5cGUgPT09ICdsbG0nID8gcC5sbG0gOiBwLmVtYmVkZGluZykuZmluZCgobikgPT4gYWN0aXZlKG1vZGVscywgdHlwZSkuaW5jbHVkZXMobikpOwogICAgaWYgKG5hbWUpIHJldHVybiB7IHByb3ZpZGVyOiBwLnByb3ZpZGVyLCBtb2RlbDogbmFtZSB9OwogIH0KICBjb25zdCBmaXJzdCA9IHR5cGUgPT09ICdsbG0nICYmIHJlYWR5LmZpbmQoKHsgbW9kZWxzIH0pID0+IGFjdGl2ZShtb2RlbHMsICdsbG0nKS5sZW5ndGgpOwogIHJldHVybiBmaXJzdCA/IHsgcHJvdmlkZXI6IGZpcnN0LnAucHJvdmlkZXIsIG1vZGVsOiBhY3RpdmUoZmlyc3QubW9kZWxzLCAnbGxtJylbMF0gfSA6IG51bGw7Cn07CmNvbnN0IGxsbSA9IHBpY2soJ2xsbScpOwpjb25zdCBlbWJlZGRpbmcgPSBwaWNrKCd0ZXh0LWVtYmVkZGluZycpOwpjb25zdCBjdXJyZW50ID0gYXN5bmMgKHR5cGU6IHN0cmluZykgPT4gKGF3YWl0IGNhbGwoJ0dFVCcsIGAvY29uc29sZS9hcGkvd29ya3NwYWNlcy9jdXJyZW50L2RlZmF1bHQtbW9kZWw/bW9kZWxfdHlwZT0ke3R5cGV9YCkpLmpzb24/LmRhdGE7CmNvbnN0IHNldHRpbmdzOiBhbnlbXSA9IFtdOwppZiAobGxtICYmICEoYXdhaXQgY3VycmVudCgnbGxtJykpKSBzZXR0aW5ncy5wdXNoKHsgbW9kZWxfdHlwZTogJ2xsbScsIHByb3ZpZGVyOiBsbG0ucHJvdmlkZXIsIG1vZGVsOiBsbG0ubW9kZWwgfSk7CmlmIChlbWJlZGRpbmcgJiYgIShhd2FpdCBjdXJyZW50KCd0ZXh0LWVtYmVkZGluZycpKSkgc2V0dGluZ3MucHVzaCh7IG1vZGVsX3R5cGU6ICd0ZXh0LWVtYmVkZGluZycsIHByb3ZpZGVyOiBlbWJlZGRpbmcucHJvdmlkZXIsIG1vZGVsOiBlbWJlZGRpbmcubW9kZWwgfSk7CmlmIChzZXR0aW5ncy5sZW5ndGgpIHsKICBjb25zdCByZXMgPSBhd2FpdCBjYWxsKCdQT1NUJywgJy9jb25zb2xlL2FwaS93b3Jrc3BhY2VzL2N1cnJlbnQvZGVmYXVsdC1tb2RlbCcsIHsgbW9kZWxfc2V0dGluZ3M6IHNldHRpbmdzIH0pOwogIGlmICghcmVzLm9rKSBsb2coYHNldHRpbmcgZGVmYXVsdCBtb2RlbHMgZmFpbGVkIChIVFRQICR7cmVzLnN0YXR1c30pOyBwaWNrIHRoZW0gaW4gU2V0dGluZ3MsIE1vZGVsIFByb3ZpZGVyLCBTeXN0ZW0gTW9kZWwgU2V0dGluZ3NgKTsKICBlbHNlIGZvciAoY29uc3QgcyBvZiBzZXR0aW5ncykgbG9nKGBkZWZhdWx0ICR7cy5tb2RlbF90eXBlID09PSAnbGxtJyA/ICdjaGF0JyA6ICdlbWJlZGRpbmcnfSBtb2RlbDogJHtzLm1vZGVsfWApOwp9IGVsc2UgewogIGxvZygnZGVmYXVsdCBtb2RlbHMgd2VyZSBhbHJlYWR5IHNldDsgbGVmdCBhcyB0aGV5IGFyZScpOwp9CmlmICghZW1iZWRkaW5nKSBsb2coJ25vIGVtYmVkZGluZyBtb2RlbCBhbW9uZyB5b3VyIGtleXM6IGtub3dsZWRnZSBiYXNlcyBuZWVkIG9uZSAoYWRkIGFuIE9wZW5BSSBvciBPcGVuUm91dGVyIGtleSksIG9yIHVzZSB0aGVpciBFY29ub215IGluZGV4IG1vZGUnKTsKbG9nKGBEaWZ5IGlzIHJlYWR5OiBvcGVuICR7VVJMXyB8fCAndGhlIERpZnkgc2VydmljZSBVUkwnfSBhbmQgc2lnbiBpbiB3aXRoIEFETUlOX0VNQUlMIGFuZCBBRE1JTl9QQVNTV09SRC5gKTsK`

### Postgres https://cdn.jsdelivr.net/gh/mikedepo/railway-template-assets@ff030029127cc39bd7212cc10fe36eefde0019ea/service-icons/postgresql.svg

- **Image:** pgvector/pgvector:pg17

### Web https://cdn.jsdelivr.net/gh/mikedepo/railway-template-assets@ff030029127cc39bd7212cc10fe36eefde0019ea/service-icons/dify.svg

- **Image:** langgenius/dify-web:1.18.0
- **Health check:** /signin

## Buckets

- **Bucket**

## Documentation

# Deploy and Host Dify (w/ AI model setup) on Railway

Dify is an open-source builder for AI apps, agents and workflows. Put your OpenAI, Anthropic or OpenRouter key in the deploy form: Setup creates your admin, installs the provider and picks default models, so apps work after sign-in.

![Dify with AI model setup on Railway](https://cdn.jsdelivr.net/gh/mikedepo/railway-template-assets@56db5a52196bf5c32e9b4cca84b5d81015729315/dify-ai-models/banner.png)

## About Hosting Dify (w/ AI model setup)

You get Dify 1.18, Postgres with pgvector, Redis and a Railway Bucket, on one URL. Sign in at the Dify service's URL with the email and password you typed. It needs about 2.3 GB of memory: Trial, Hobby or Pro plan.

## Common Use Cases

- Chatbots on your own documents
- AI workflows with code steps
- Internal assistants and agents

## Dependencies for Dify (w/ AI model setup) Hosting

- PostgreSQL (pgvector)
- Redis
- Railway Bucket

### Deployment Dependencies

- [Dify self-hosting with Docker Compose](https://docs.dify.ai/en/self-host/quick-start/docker-compose)
- [Dify model providers](https://docs.dify.ai/en/use-dify/workspace/model-providers)

### Implementation Details

![Architecture: you and your apps reach Dify through one public router; Setup adds your model keys; the plugin daemon calls OpenAI, Anthropic or OpenRouter; the rest stays on the private network](https://cdn.jsdelivr.net/gh/mikedepo/railway-template-assets@6776f80ae21811e20af7acf6c008dc1de9e6508c/dify-ai-models/architecture.png)

Knowledge bases need an OpenAI or OpenRouter key. To add a key later, set it on Setup and redeploy. Back up Postgres and the Bucket. SMTP email needs a Railway Pro plan.

## Why Deploy Dify (w/ AI model setup) on Railway?


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 Dify (w/ AI model setup) 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.


**Updated 2026-10-29:** SMTP plan note.


## Similar templates

- [Chat Chat](https://railway.com/deploy/-WWW5r) — Chat Chat, your own unified chat and search to AI platform.
- [Weaviate](https://railway.com/deploy/weaviate-1) — Vector database with hybrid search and an API key-protected API
- [Möbius v0.1 Personal AI OS](https://railway.com/deploy/mobius-v01-personal-ai-os) — Self-hosted AI agent that builds and runs apps for you, with memory.

Open this page in a browser: https://railway.com/deploy/dify-w-ai-model-setup
