
Deploy Easy!Appointments
Open-source online appointment scheduler for businesses and teams
MySQL
Just deployed
/var/lib/mysql
Easy!Appointments
Just deployed
Deploy and Host Easy!Appointments on Railway
Easy!Appointments is an open-source, self-hosted appointment scheduling platform for managing online bookings, services, providers, customers, schedules, and availability.
Deploy it on Railway and run your own scheduling platform for businesses, teams, clinics, professionals, and service providers.
About Hosting
Hosting Easy!Appointments on Railway provides a convenient way to run a self-hosted appointment scheduling platform without manually configuring a traditional server environment.
This template deploys Easy!Appointments together with a MySQL database and configures the application through Railway environment variables.
The application container includes PHP and Apache. The MySQL service uses persistent storage so appointment, customer, and application data survive container restarts and redeployments.
Why Deploy Easy!Appointments on Railway
Railway provides a simple way to run Easy!Appointments without manually configuring a traditional server.
With this template you can:
- Run your own appointment scheduling platform.
- Manage services, providers, schedules, and availability.
- Accept online bookings.
- Manage customers and appointments.
- Synchronize supported calendars.
- Send appointment notifications.
- Connect external systems through APIs and webhooks.
- Build automation workflows around scheduling data.
Common Use Cases
Healthcare & Clinics
Manage appointments between patients, professionals, services, and available time slots.
Salons & Beauty Services
Allow customers to select services, professionals, and available appointment times.
Professional Services
Schedule consultations, meetings, interviews, and other time-based services.
Education & Training
Organize classes, consultations, training sessions, and scheduled activities.
Recruitment
Schedule interviews and meetings between candidates and team members.
Events & Reservations
Manage time-based bookings, sessions, and reservation workflows.
Key Features
- Online Appointment Booking — Let customers book appointments online.
- Services & Providers — Configure services, providers, schedules, and availability.
- Flexible Scheduling — Define working hours, breaks, and booking rules.
- Customer Management — Manage customer information and appointment history.
- Calendar Synchronization — Integrate supported calendar services.
- Email Notifications — Send notifications for appointment events.
- Group Appointments — Support multiple attendees for appointment slots.
- Shareable Booking Links — Provide direct links to booking pages.
- REST API — Integrate with external applications and services.
- Webhooks — Trigger external workflows from supported application events.
- Mobile-Friendly Interface — Access the platform from desktop and mobile devices.
- Multi-language Support — Use available community-maintained translations.
Automation & Integrations
Easy!Appointments can connect to external systems through its API and webhook capabilities.
You can integrate it with:
- n8n
- CRM platforms
- Slack
- Microsoft Teams
- Email and notification services
- Custom applications
- Other API-based services
Example Automation Workflow
A new booking can trigger a workflow that:
- Receives the webhook from Easy!Appointments.
- Processes the appointment data.
- Creates or updates a CRM record.
- Notifies a team.
- Sends a confirmation or follow-up message.
- Stores the information in another system.
Dependencies for Easy!Appointments Hosting
This template uses:
- Easy!Appointments: 1.6.0
- PHP: 8.2
- Apache: 2.4
- Database: MySQL
- Container Port: 80
- Persistent Storage: Railway Volume for MySQL
Railway Services
The Railway project should contain:
- An Easy!Appointments service using this repository.
- A MySQL service.
- A persistent Volume attached to MySQL at
/var/lib/mysql. - A public domain for the Easy!Appointments service.
The Easy!Appointments service does not require a Railway Volume.
Important: Do not attach a Volume to
/var/www/html, because this directory contains the application files included in the Docker image.
Railway Variables
Configure the following variables on the Easy!Appointments service:
| Variable | Value |
|---|---|
BASE_URL | https://${{RAILWAY_PUBLIC_DOMAIN}} |
DB_HOST | ${{MySQL.MYSQLHOST}} |
DB_NAME | ${{MySQL.MYSQLDATABASE}} |
DB_PASSWORD | ${{MySQL.MYSQLPASSWORD}} |
DB_USERNAME | ${{MySQL.MYSQLUSER}} |
DEBUG_MODE | FALSE |
PORT | 80 |
The database variables use Railway service references to obtain the connection information from the MySQL service.
Important: Configure these variables on the Easy!Appointments service, not on the MySQL service.
First Access
After deploying the template:
- Wait for the Easy!Appointments and MySQL services to start.
- Open the public URL of the Easy!Appointments service.
- Complete the initial application setup.
- Configure your services and providers.
- Define working hours, schedules, and availability.
- Configure email notifications and calendar integrations as required.
- Configure API and webhook integrations for automation.
The application configuration is generated automatically from the Railway environment variables when the container starts.
Database
Easy!Appointments uses MySQL for application data.
The application connects to the MySQL service using these Railway references:
| Variable | Railway Reference |
|---|---|
DB_HOST | ${{MySQL.MYSQLHOST}} |
DB_NAME | ${{MySQL.MYSQLDATABASE}} |
DB_USERNAME | ${{MySQL.MYSQLUSER}} |
DB_PASSWORD | ${{MySQL.MYSQLPASSWORD}} |
Important: Railway resolves these references before they are used by the application. Do not replace them with hardcoded database credentials in the repository.
Persistence
The MySQL service requires a persistent Railway Volume mounted at:
/var/lib/mysql
This preserves appointments, customers, services, providers, and other database data across container restarts and redeployments.
The Easy!Appointments service does not require a Volume because the application files are included in the Docker image and the runtime configuration is generated from environment variables.
Warning: Removing the MySQL Volume can permanently destroy your Easy!Appointments data.
Email Configuration
Easy!Appointments can use SMTP for appointment and system notifications.
Common SMTP variables include:
| Variable | Example / Value |
|---|---|
MAIL_PROTOCOL | smtp |
MAIL_SMTP_DEBUG | 0 |
MAIL_SMTP_AUTH | 1 |
MAIL_SMTP_HOST | smtp.example.com |
MAIL_SMTP_USER | SMTP username |
MAIL_SMTP_PASS | SMTP password |
MAIL_SMTP_CRYPTO | tls |
MAIL_SMTP_PORT | 587 |
MAIL_FROM_ADDRESS | Sender email address |
MAIL_FROM_NAME | Sender name |
MAIL_REPLY_TO_ADDRESS | Reply-to email address |
Keep SMTP credentials in Railway Variables and never commit them to Git.
Updating Easy!Appointments
The application version is intentionally pinned to 1.6.0 instead of using latest.
Pinning the version provides predictable builds and avoids unexpected upstream changes.
Before upgrading:
- Back up the MySQL database.
- Review the official Easy!Appointments release notes.
- Test the new version separately.
- Update the
VERSIONargument in the Dockerfile. - Deploy only after confirming compatibility.
Security Notes
- Use strong administrator credentials.
- Never commit database or SMTP passwords to Git.
- Keep the MySQL Volume persistent.
- Keep
DEBUG_MODE=FALSEin production. - Keep the application version pinned.
- Do not expose MySQL publicly unless required.
Source and Build
The application is built from the official Easy!Appointments source repository:
https://github.com/alextselegidis/easyappointments
The version is controlled in the Dockerfile:
ARG VERSION=1.6.0
The Docker configuration is based on the official Easy!Appointments Docker packaging and includes Railway-specific deployment configuration and explicit Apache MPM handling.
License
Easy!Appointments is licensed under the GNU General Public License v3.0 (GPL-3.0).
Project content is licensed under CC BY 3.0.
See the official project repository for complete license information.
Resources
- Easy!Appointments Official Website
- Easy!Appointments Documentation
- Easy!Appointments GitHub
- Easy!Appointments Docker
- Easy!Appointments Releases
- Railway Documentation
About This Railway Template
This repository provides a Railway-ready deployment of Easy!Appointments with MySQL, persistent database storage, environment-based configuration, and Apache configured for reliable container operation.
Deploy Easy!Appointments on Railway and build your own appointment scheduling infrastructure.
Template Content
MySQL
mysql:8.4Easy!Appointments
vamos-automatizar/easyappointments-railway