Deploy classroomio selfhost
Deploy and Host classroomio selfhost with Railway
cio-dashboard
Just deployed
cio-jobs
Just deployed
Redis
Just deployed
/data
cio-api
Just deployed
Just deployed
/var/lib/postgresql/data
Deploy and Host ClassroomIO Selfhost on Railway
ClassroomIO is an open-source learning management system (LMS) for building and teaching courses — lessons, quizzes, certificates, student management, and an AI tutor. The self-hosted edition runs the entire platform on your own infrastructure, so your data and branding stay fully under your control, with no per-seat pricing.
About Hosting ClassroomIO Selfhost
Hosting ClassroomIO means running three application services together: the API (backend, auth, business logic), the Dashboard (the web UI teachers and students use), and a Jobs worker that processes video, transcription, AI course generation, and email in the background. They depend on a PostgreSQL database and a Redis queue, plus S3-compatible object storage for media uploads and an SMTP provider for email. On Railway, Postgres and Redis are one-click plugins, and the three services build straight from the repository's Dockerfiles. Database schema setup runs automatically on the API's first boot — there's no manual migration step. Only the dashboard is exposed publicly; the API and worker stay on the private network.
Common Use Cases
- Schools, bootcamps, and universities hosting their own courses while keeping student data on their own infrastructure
- Companies running internal employee training, onboarding, or compliance LMS behind their own domain
- Independent educators and course creators who want a fully owned teaching platform with no per-student fees
Dependencies for ClassroomIO Selfhost Hosting
- PostgreSQL database (Railway plugin)
- Redis (Railway plugin) — the queue that powers the background jobs worker
Deployment Dependencies
- Cloudflare R2, or any S3-compatible object storage, for media — https://developers.cloudflare.com/r2/
- An SMTP provider for transactional email (e.g. Resend, SendGrid, Mailgun, Postmark, or Zoho)
- OpenAI API key — optional, for transcription and AI course generation — https://platform.openai.com
- Source code — https://github.com/classroomio/classroomio
Implementation Details
Three services build from Dockerfiles in the repo (set RAILWAY_DOCKERFILE_PATH per service):
cio-api→docker/Dockerfile.api(listens on3081)cio-dashboard→docker/Dockerfile.dashboard(listens on3082, the only public domain)cio-jobs→apps/jobs/Dockerfile(background worker, no public port)
The dashboard reaches the API over Railway's private network via PRIVATE_SERVER_URL. Auth secrets (BETTER_AUTH_SECRET, AUTH_BEARER_TOKEN) are auto-generated, and the dashboard shares a key with the API (PRIVATE_SERVER_KEY = ${{cio-api.AUTH_BEARER_TOKEN}}). The API runs database setup automatically on first boot, so no migration step is required.
Why Deploy ClassroomIO Selfhost 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 ClassroomIO selfhost 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.
Template Content
cio-dashboard
classroomio/classroomiocio-jobs
classroomio/classroomioRedis
redis:8.2.1cio-api
classroomio/classroomio