
Deploy Ghost Multilingual
1-Click deploy multilingual Ghost with 2 separate instances
ghost-fr
ghost:alpine
Just deployed
/var/lib/ghost/content
Ghost Nginx Proxy
bePublish/ghost-multilingual-reverse-proxy
Just deployed
MySQL
mysql:8
Just deployed
/var/lib/mysql
MySQL-fr
mysql:8
Just deployed
/var/lib/mysql
ghost
ghost:alpine
Just deployed
/var/lib/ghost/content
Deploy and Host Ghost multilingual with 1-Click on Railway
Ghost doesn't support multi-language natively? No problem! Deploy separate Ghost instances and unify them under one domain with different paths:
yourdomain.com/en
→ English siteyourdomain.com/vi
→ Vietnamese site
See it in action: bepublish.com
About Hosting Ghost multilingual with Dual Instances
This architecture deploys two complete Ghost installations—each with its own database, themes, content, and admin panel—unified under one domain through intelligent routing. Why this matters:
- ✨ Full independence – Customize each language site without limitations
- ⚡ Better performance – No plugin overhead or database bloat
- 🛠️ Easier maintenance – Manage languages separately, debug faster
- 🎨 Design freedom – Different themes, structures, or features per language
The 1-click deployment handles all the technical complexity: databases, environment variables, routing configuration—everything. You get professional multi-language infrastructure in minutes, not days.
Common Use Cases
- International Business Blogs – Separate content strategies, SEO, and editorial teams per market under one unified brand
- Bilingual News Publications – Independent newsrooms publishing breaking stories simultaneously in multiple languages
- Educational Platforms – Localized courses with culturally relevant examples and language-specific membership tiers
- Product Documentation – Version-specific docs in multiple languages without forced translation sync
Dependencies for Ghost Multilingual Hosting
- MySQL Database (×2): Each Ghost instance requires its own MySQL database for storing content, users, and configuration independently
- Node.js Runtime: Ghost runs on Node.js and requires a compatible runtime environment for both instances
- Storage Solution: File storage for media uploads, themes, and assets for each language instance
Deployment Dependencies
- Ghost Official Documentation
- Railway MySQL Documentation
- Ghost Theme Development
- bePublish Deploy Guide
Implementation Details
The template automatically provisions two complete Ghost instances with the following architecture:
# Instance 1: Primary Language (e.g., English)
- Ghost App with dedicated MySQL database
- Environment: production
- Custom domain support
- Independent theme and configuration
# Instance 2: Secondary Language (e.g., Fr)
- Ghost App with separate MySQL database
- Environment: production
- Custom subdomain/path support
- Independent theme and configuration
Key Configuration Variables:
GHOST_ROOT_URL
: Base URL for the primary language instanceGHOST_INSTANCES
: Base URL for the secondary language instance (unlimited instances with separate by,
)SERVER_NAME
: your custom domain- Database credentials are automatically generated and isolated per instance
🚀 3-Step Deployment
Check tutorial video for detail: https://www.youtube.com/watch?v=JjA-2Qdr9Pw
Step 1: Deploy the Primary Instance
- Click "Deploy Now" on the template
- Wait for Railway to build
- Go to Variables, set: url:
yourdomain.com/en
- Go to Settings > Domains, add your domain and configure CNAME at your registrar
✨ The first instance acts as the traffic router for everything!
Step 2: Deploy the Second Instance
- Deploy the same template again
- Set url:
yourdomain.com/vi
in Variables
Step 3: Connect the Sites
- Return to the first instance
- Edit the url variable to:
yourdomain.com/en,yourdomain.com/vi
- Redeploy the first instance
🎉 Done! Both sites are now live!
Template Content
ghost-fr
ghost:alpineGhost Nginx Proxy
bePublish/ghost-multilingual-reverse-proxyMySQL
mysql:8MySQL-fr
mysql:8ghost
ghost:alpine