---
title: "Deploy DeepTutor (w/ AI setup)"
description: "Self-hosted AI tutor with admin login, AI model and knowledge bases set up."
category: "AI/ML"
url: https://railway.com/deploy/deeptutor-w-ai-setup
---

# Deploy DeepTutor (w/ AI setup)

Self-hosted AI tutor with admin login, AI model and knowledge bases set up.

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

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

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

## Template content

### DeepTutor https://cdn.jsdelivr.net/gh/mikedepo/railway-template-assets@fa7d4d0014a8508efb696d9feadf78fd40248101/service-icons/deeptutor.svg

- **Image:** ghcr.io/hkuds/deeptutor:1.7.0
- **Start command:** `/bin/bash -c "cd /app && echo IyBEZWVwVHV0b3Igb24gUmFpbHdheSAoQXZnU29mdCB0ZW1wbGF0ZSk6IGFwcGxpZXMgdGhlIGRlcGxveSBmb3JtIHRvIERlZXBUdXRvcidzCiMgc2V0dGluZ3MgZmlsZXMgYmVmb3JlIHRoZSBpbWFnZSdzIG93biBlbnRyeXBvaW50IHN0YXJ0cyB0aGUgYXBwLgojCiMgVGhlIGltYWdlIHJlYWRzIGl0cyBjb25maWd1cmF0aW9uIG9ubHkgZnJvbSAvYXBwL2RhdGEvdXNlci9zZXR0aW5ncy8qLmpzb24gYW5kCiMgaWdub3JlcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIHNvIHRoaXMgcnVucyBmaXJzdCwgYXMgcm9vdCwgb24gZXZlcnkgc3RhcnQ6CiMgICAtIGFkbWluOiBhdXRoIG9uLCBBRE1JTl9VU0VSTkFNRSB3aXRoIGEgYmNyeXB0IGhhc2ggb2YgQURNSU5fUEFTU1dPUkQKIyAgICAgKERlZXBUdXRvcidzIGF1dGguanNvbiBib290c3RyYXAgYWRtaW47IHNpZ24tdXAgc3RheXMgY2xvc2VkKQojICAgLSB0aGUgcHVibGljIG9yaWdpbiBmb3IgQ09SUywgU2VjdXJlIGNvb2tpZXMgYmVoaW5kIFJhaWx3YXkncyBIVFRQUwojICAgLSB0aGUgQUkgcHJvdmlkZXIgKGNoYXQgbW9kZWwsIHBsdXMgYW4gZW1iZWRkaW5nIG1vZGVsIGZvciBrbm93bGVkZ2UgYmFzZXMKIyAgICAgd2l0aCBPcGVuQUkgb3IgR2VtaW5pKSBhbmQgRHVja0R1Y2tHbyB3ZWIgc2VhcmNoLCB0aHJvdWdoIERlZXBUdXRvcidzIG93bgojICAgICBub24taW50ZXJhY3RpdmUgc2V0dXAgKGRlZXB0dXRvcl9jbGkuc2V0dXBfY29uZmlnKS4gQXBwbGllZCBhZ2FpbiBvbmx5CiMgICAgIHdoZW4gdGhvc2UgdmFyaWFibGVzIGNoYW5nZSwgc28gY2hhbmdlcyBtYWRlIGluIFNldHRpbmdzIHN1cnZpdmUgcmVzdGFydHMuCiMgU3RhcnQgY29tbWFuZDogYmFzZTY0IG9mIHRoaXMgZmlsZSwgc2VlIGJ1aWxkLXN0YXJ0LWNvbW1hbmQubWpzLgppbXBvcnQgaGFzaGxpYgppbXBvcnQganNvbgppbXBvcnQgb3MKZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCmltcG9ydCBzeXMKCkFQUCA9IFBhdGgoIi9hcHAiKQpTVEFURSA9IEFQUCAvICJkYXRhIiAvICJzeXN0ZW0iIC8gInJhaWx3YXktc2V0dXAuanNvbiIKCm9zLmNoZGlyKEFQUCkKc3lzLnBhdGguaW5zZXJ0KDAsIHN0cihBUFApKQoKCmRlZiBsb2cobWVzc2FnZSk6CiAgICBwcmludChmIltyYWlsd2F5LXNldHVwXSB7bWVzc2FnZX0iLCBmbHVzaD1UcnVlKQoKCmRlZiBlbnYobmFtZSwgZGVmYXVsdD0iIik6CiAgICByZXR1cm4gKG9zLmVudmlyb24uZ2V0KG5hbWUpIG9yICIiKS5zdHJpcCgpIG9yIGRlZmF1bHQKCgojIC0tLSBBZG1pbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp1c2VybmFtZSA9IGVudigiQURNSU5fVVNFUk5BTUUiLCAiYWRtaW4iKQpwYXNzd29yZCA9IG9zLmVudmlyb24uZ2V0KCJBRE1JTl9QQVNTV09SRCIpIG9yICIiCmlmIG5vdCBwYXNzd29yZC5zdHJpcCgpOgogICAgbG9nKCJBRE1JTl9QQVNTV09SRCBpcyBlbXB0eSwgc28gRGVlcFR1dG9yIHN0YXlzIHN0b3BwZWQgaW5zdGVhZCBvZiBvcGVuaW5nIGl0cyBzaWduLXVwIHBhZ2UgdG8gYW55b25lLiIpCiAgICBsb2coIlNldCBBRE1JTl9QQVNTV09SRCBpbiB0aGlzIHNlcnZpY2UncyBWYXJpYWJsZXMgYW5kIHJlZGVwbG95LiIpCiAgICBzeXMuZXhpdCgxKQppZiBsZW4ocGFzc3dvcmQpIDwgODoKICAgIGxvZygiV2FybmluZzogQURNSU5fUEFTU1dPUkQgaGFzIGZld2VyIHRoYW4gOCBjaGFyYWN0ZXJzLiBTZXQgYSBsb25nZXIgb25lIGluIFZhcmlhYmxlcyBhbmQgcmVkZXBsb3kuIikKCmltcG9ydCBiY3J5cHQgICMgbm9xYTogRTQwMgoKZnJvbSBkZWVwdHV0b3Iuc2VydmljZXMuY29uZmlnIGltcG9ydCBnZXRfcnVudGltZV9zZXR0aW5nc19zZXJ2aWNlICAjIG5vcWE6IEU0MDIKZnJvbSBkZWVwdHV0b3Iuc2VydmljZXMuc2V0dXAgaW1wb3J0IGluaXRfdXNlcl9kaXJlY3RvcmllcyAgIyBub3FhOiBFNDAyCgppbml0X3VzZXJfZGlyZWN0b3JpZXMoQVBQKQpydW50aW1lID0gZ2V0X3J1bnRpbWVfc2V0dGluZ3Nfc2VydmljZSgpCgphdXRoID0gcnVudGltZS5sb2FkX2F1dGgoaW5jbHVkZV9wcm9jZXNzX292ZXJyaWRlcz1GYWxzZSkKcGFzc3dvcmRfaGFzaCA9IHN0cihhdXRoLmdldCgicGFzc3dvcmRfaGFzaCIpIG9yICIiKQp0cnk6CiAgICBzYW1lID0gYXV0aC5nZXQoInVzZXJuYW1lIikgPT0gdXNlcm5hbWUgYW5kIGJjcnlwdC5jaGVja3B3KHBhc3N3b3JkLmVuY29kZSgpLCBwYXNzd29yZF9oYXNoLmVuY29kZSgpKQpleGNlcHQgVmFsdWVFcnJvcjoKICAgIHNhbWUgPSBGYWxzZQppZiBub3Qgc2FtZToKICAgIHBhc3N3b3JkX2hhc2ggPSBiY3J5cHQuaGFzaHB3KHBhc3N3b3JkLmVuY29kZSgpLCBiY3J5cHQuZ2Vuc2FsdCgpKS5kZWNvZGUoKQpydW50aW1lLnNhdmVfYXV0aCgKICAgIHsKICAgICAgICAqKmF1dGgsCiAgICAgICAgImVuYWJsZWQiOiBUcnVlLAogICAgICAgICJ1c2VybmFtZSI6IHVzZXJuYW1lLAogICAgICAgICJwYXNzd29yZF9oYXNoIjogcGFzc3dvcmRfaGFzaCwKICAgICAgICAiY29va2llX3NlY3VyZSI6IFRydWUsCiAgICB9CikKbG9nKGYiQWRtaW4gJ3t1c2VybmFtZX0nIHsndW5jaGFuZ2VkJyBpZiBzYW1lIGVsc2UgJ3NldCBmcm9tIEFETUlOX1BBU1NXT1JEJ307IHNpZ24tdXAgaXMgY2xvc2VkLiIpCgojIC0tLSBQdWJsaWMgb3JpZ2luIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkb21haW4gPSBlbnYoIlJBSUxXQVlfUFVCTElDX0RPTUFJTiIpLmxvd2VyKCkKc3lzdGVtID0gcnVudGltZS5sb2FkX3N5c3RlbShpbmNsdWRlX3Byb2Nlc3Nfb3ZlcnJpZGVzPUZhbHNlKQpvcmlnaW5zID0gbGlzdChzeXN0ZW0uZ2V0KCJjb3JzX29yaWdpbnMiKSBvciBbXSkKaWYgZG9tYWluIGFuZCBmImh0dHBzOi8ve2RvbWFpbn0iIG5vdCBpbiBvcmlnaW5zOgogICAgb3JpZ2lucy5hcHBlbmQoZiJodHRwczovL3tkb21haW59IikKcnVudGltZS5zYXZlX3N5c3RlbSh7KipzeXN0ZW0sICJjb3JzX29yaWdpbnMiOiBvcmlnaW5zfSkKCiMgLS0tIEFJIHByb3ZpZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVNQkVERElOR1MgPSB7ICAjIHNhbWUga2V5LCBEZWVwVHV0b3IncyBvd24gZW1iZWRkaW5nIGVuZHBvaW50cwogICAgIm9wZW5haSI6ICgidGV4dC1lbWJlZGRpbmctMy1zbWFsbCIsIDE1MzYpLAogICAgImdlbWluaSI6ICgiZ2VtaW5pLWVtYmVkZGluZy0yIiwgMzA3MiksCn0KcHJvdmlkZXIgPSBlbnYoIkxMTV9QUk9WSURFUiIsICJvcGVuYWkiKS5sb3dlcigpCm1vZGVsID0gZW52KCJMTE1fTU9ERUwiLCAiZ3B0LTUuNC1taW5pIikKc2V0dXAgPSB7ImxsbSI6IHsicHJvdmlkZXIiOiBwcm92aWRlciwgIm1vZGVsIjogbW9kZWx9LCAic2VhcmNoIjogeyJwcm92aWRlciI6ICJkdWNrZHVja2dvIn19CmlmIGVudigiTExNX0FQSV9LRVkiKToKICAgIHNldHVwWyJsbG0iXVsiYXBpX2tleV9lbnYiXSA9ICJMTE1fQVBJX0tFWSIKaWYgZW52KCJMTE1fQkFTRV9VUkwiKToKICAgIHNldHVwWyJsbG0iXVsiYmFzZV91cmwiXSA9IGVudigiTExNX0JBU0VfVVJMIikKaWYgcHJvdmlkZXIgaW4gRU1CRURESU5HUyBhbmQgZW52KCJMTE1fQVBJX0tFWSIpIGFuZCBub3QgZW52KCJMTE1fQkFTRV9VUkwiKToKICAgIG5hbWUsIGRpbWVuc2lvbiA9IEVNQkVERElOR1NbcHJvdmlkZXJdCiAgICBzZXR1cFsiZW1iZWRkaW5nIl0gPSB7InByb3ZpZGVyIjogcHJvdmlkZXIsICJtb2RlbCI6IG5hbWUsICJkaW1lbnNpb24iOiBkaW1lbnNpb24sICJhcGlfa2V5X2VudiI6ICJMTE1fQVBJX0tFWSJ9CgpmaW5nZXJwcmludCA9IGhhc2hsaWIuc2hhMjU2KAogICAganNvbi5kdW1wcyhbc2V0dXAsIGVudigiTExNX0FQSV9LRVkiKV0sIHNvcnRfa2V5cz1UcnVlKS5lbmNvZGUoKQopLmhleGRpZ2VzdCgpCnRyeToKICAgIGFwcGxpZWQgPSBqc29uLmxvYWRzKFNUQVRFLnJlYWRfdGV4dChlbmNvZGluZz0idXRmLTgiKSkuZ2V0KCJhaV9zZXR1cCIpCmV4Y2VwdCAoT1NFcnJvciwgVmFsdWVFcnJvcik6CiAgICBhcHBsaWVkID0gTm9uZQoKaWYgYXBwbGllZCA9PSBmaW5nZXJwcmludDoKICAgIGxvZygiQUkgcHJvdmlkZXIgdW5jaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IHN0YXJ0OyBrZWVwaW5nIHRoZSBzZXR0aW5ncyBzYXZlZCBpbiBEZWVwVHV0b3IuIikKZWxzZToKICAgIHRyeToKICAgICAgICBmcm9tIGRlZXB0dXRvcl9jbGkuc2V0dXBfY29uZmlnIGltcG9ydCBTZXR1cENvbmZpZywgYXBwbHlfc2V0dXAsIHByZXBhcmVfcHJvZmlsZXMKCiAgICAgICAgY29uZmlnID0gU2V0dXBDb25maWcubW9kZWxfdmFsaWRhdGUoc2V0dXApCiAgICAgICAgYXBwbHlfc2V0dXAocHJlcGFyZV9wcm9maWxlcyhjb25maWcpLCBOb25lKQogICAgICAgIFNUQVRFLnBhcmVudC5ta2RpcihwYXJlbnRzPVRydWUsIGV4aXN0X29rPVRydWUpCiAgICAgICAgU1RBVEUud3JpdGVfdGV4dChqc29uLmR1bXBzKHsiYWlfc2V0dXAiOiBmaW5nZXJwcmludH0pLCBlbmNvZGluZz0idXRmLTgiKQogICAgICAgIFNUQVRFLmNobW9kKDBvNjAwKQogICAgICAgIHBhcnRzID0gW2YiY2hhdCB7cHJvdmlkZXJ9L3ttb2RlbH0iXQogICAgICAgIGlmICJlbWJlZGRpbmciIGluIHNldHVwOgogICAgICAgICAgICBwYXJ0cy5hcHBlbmQoZiJlbWJlZGRpbmcge3NldHVwWydlbWJlZGRpbmcnXVsnbW9kZWwnXX0iKQogICAgICAgIHBhcnRzLmFwcGVuZCgid2ViIHNlYXJjaCBkdWNrZHVja2dvIikKICAgICAgICBsb2coIkFJIHByb3ZpZGVyIHNldDogIiArICIsICIuam9pbihwYXJ0cykgKyAiLiIpCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzogICMgbmV2ZXIgYmxvY2sgdGhlIGFwcCBvdmVyIHRoZSBBSSBzZXR0aW5nczsgbWVzc2FnZXMgY2Fycnkgbm8gdmFsdWVzCiAgICAgICAgaWYgY2FsbGFibGUoZ2V0YXR0cihleGMsICJlcnJvcnMiLCBOb25lKSk6CiAgICAgICAgICAgIGRldGFpbCA9ICI7ICIuam9pbihmInsnLicuam9pbihtYXAoc3RyLCBlWydsb2MnXSkpfToge2VbJ21zZyddfSIgZm9yIGUgaW4gZXhjLmVycm9ycyhpbmNsdWRlX2lucHV0PUZhbHNlKSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBkZXRhaWwgPSBmInt0eXBlKGV4YykuX19uYW1lX199OiB7ZXhjfSIKICAgICAgICBsb2coZiJDb3VsZCBub3QgYXBwbHkgdGhlIEFJIHByb3ZpZGVyICh7ZGV0YWlsfSkuIikKICAgICAgICBsb2coIkRlZXBUdXRvciBzdGFydHMgYW55d2F5OiBzZXQgdGhlIHByb3ZpZGVyIGluIFNldHRpbmdzLCBvciBmaXggTExNX1BST1ZJREVSIC8gTExNX01PREVMIC8gTExNX0FQSV9LRVkgYW5kIHJlZGVwbG95LiIpCg== | base64 -d > /tmp/railway-setup.py && python /tmp/railway-setup.py && exec /app/entrypoint.sh"`
- **Health check:** /api/auth/status
- **Public domain:** Yes

## Documentation

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

DeepTutor is an open-source AI tutor that teaches from your own documents, quizzes you and remembers your progress. This template sets it up from the deploy form: chat, knowledge bases and web search work at first sign-in, behind your own admin login.

![DeepTutor connected to your AI provider, knowledge bases and web search](https://cdn.jsdelivr.net/gh/mikedepo/railway-template-assets@fa7d4d0014a8508efb696d9feadf78fd40248101/deeptutor/banner.png)

## About Hosting DeepTutor (w/ AI setup)

You get DeepTutor 1.7.0 with a volume for all its data. Enter a password and an AI key on the form, open the service's URL and sign in as `admin` with that password.

### Get an OpenAI key

1. Sign in at platform.openai.com/api-keys and click **Create new secret key**.
2. Name it (for example "DeepTutor"), set **Expiration** to **Never** and click **Create secret key**.
3. Click **Copy**, because OpenAI shows the key only once, and paste it into `LLM_API_KEY` on the deploy form.
4. For another provider, also set `LLM_PROVIDER` and `LLM_MODEL`. A Gemini key covers knowledge bases too; with other providers, add an embedding model in DeepTutor's **Settings** before creating a knowledge base.

## Common Use Cases

- Study from your own textbooks
- Practice quizzes with instant feedback
- Tutor a class with separate accounts

## Dependencies for DeepTutor (w/ AI setup) Hosting

- DeepTutor
- An AI provider key (OpenAI by default)

### Deployment Dependencies

- [DeepTutor on GitHub](https://github.com/HKUDS/DeepTutor)
- [DeepTutor container guide](https://github.com/HKUDS/DeepTutor/blob/v1.7.0/docs-for-user/CONTAINERIZATION.md)

### Implementation Details

![DeepTutor architecture: one public service with a volume, calling your AI provider and web search](https://cdn.jsdelivr.net/gh/mikedepo/railway-template-assets@fa7d4d0014a8508efb696d9feadf78fd40248101/deeptutor/architecture.png)

Back up the volume: it holds knowledge bases, accounts and saved AI keys. Idles at about 0.2 GB of memory. Only admins can create Word, PDF, PowerPoint and Excel files: Railway can't run DeepTutor's separate code sandbox.

## Why Deploy DeepTutor (w/ AI 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 DeepTutor (w/ AI 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-30:** First release.


## 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/deeptutor-w-ai-setup
