DEPLOYMENT

Manual Installation (From Source)

This guide walks you through hosting Oh My School directly on your server running PHP 8.4 and Bun, without containerization.

Step 1: Clone the repository

git clone https://github.com/sooluh/oms.git
cd oms

Step 2: Install & Configure

You can use the built-in setup script which automates package installation, copying configuration files, generating application keys, and compiling assets:

composer run setup
Alternatively: Manual Installation

If you prefer to run the setup manually, execute:

composer install
bun install
bun run build
cp .env.example .env
php artisan key:generate

Step 3: Configure Environment

Edit the .env file to set your database credentials:

APP_NAME="Oh My School"
APP_URL=https://your-domain.com

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=oms
DB_USERNAME=your_db_user
DB_PASSWORD=your_db_password

Step 4: Run Migrations & Seed Data

Run migrations to set up database schemas and load the seed data:

php artisan migrate
php artisan db:seed

Step 5: Configure Storage Permissions

Set directories to be writable and create the symlink for public files:

chmod -R 775 storage bootstrap/cache
php artisan storage:link

Step 6: Start the Application

For development, use the concurrent dev runner (which runs the Laravel dev server, queue worker, log tailer, and Vite build process together):

composer run dev

Alternatively, run them manually in separate sessions:

php artisan serve
# and:
bun run dev

For production, point your web server (e.g., Nginx, Apache, or Caddy) to the public/ directory and run it through php-fpm or equivalent.

Default Credentials

Log in to the admin panel at /studio (e.g. http://localhost:8000/studio or https://your-domain.com/studio). The default admin credentials are:

  • Email: admin@oms.my.id
  • Password: ohmyschool

[!WARNING-ALERT] Change this password immediately in your profile dashboard after logging in!

Still have questions?

If you could not find what you were looking for, the community is here to help on GitHub Discussions.

Ask the Community