Skip to content

Latest commit

 

History

History
253 lines (170 loc) · 7.46 KB

INSTALL_WITHOUT_DOCKER.md

File metadata and controls

253 lines (170 loc) · 7.46 KB

Running Hi.Events Locally Without Docker

This guide provides instructions for setting up Hi.Events locally without using Docker, including the necessary prerequisites, setup steps, and configuration details.

ℹ️ For a faster and more reliable setup, we strongly recommend using the official Docker setup.

Prerequisites

  1. Install PHP 8.3 or higher
  2. Install Composer
  3. Install PostgreSQL
  4. Install Node.js
  5. Install Yarn

PHP Extensions

Ensure the following PHP extensions are installed: gd, pdo_pgsql, sodium, curl, intl, mbstring, xml, zip, bcmath.

Setup

First, fork the repository and clone it locally:

git clone https://github.com/youraccount/Hi.Events.git

Hi.Events has two main directories: backend (Laravel) and frontend (React).

Backend Setup

  1. Create the .env file:

    Navigate to the backend directory and copy the example .env file:

    cd backend
    cp .env.example .env

    The example file is set up for local development. For a production install, set:

    APP_ENV=production
    APP_DEBUG=false
  2. Database Configuration:

    Update the .env file with your database credentials:

    DB_CONNECTION=pgsql
    DB_HOST=localhost
    DB_PORT=5432
    DB_DATABASE=postgres
    DB_USERNAME=postgres
    DB_PASSWORD=postgres

    This assume the default PostgreSQL configuration. Update the values as needed.

  3. Mail Server Configuration:

    Configure Mailtrap for email handling, or use the log driver to log emails locally:

    MAIL_MAILER=smtp
    MAIL_HOST=smtp.mailtrap.io
    MAIL_PORT=2525
    MAIL_USERNAME=your_mailtrap_username
    MAIL_PASSWORD=your_mailtrap_password
    MAIL_ENCRYPTION=tls
    MAIL_FROM_ADDRESS=your_email
    MAIL_FROM_NAME="${APP_NAME}"
    
    # Alternatively use just this value to log emails locally:
    MAIL_MAILER=log
  4. URL Configuration:

    Set the application and frontend URLs in the .env file:

    APP_URL=http://localhost
    APP_PORT=8000
    APP_FRONTEND_URL=http://localhost:5678
  5. Install Dependencies:

    Install the backend dependencies:

    composer install
  6. Generate Application Key and JWT Secret:

    Generate the Laravel application key and the secret that signs login tokens:

    php artisan key:generate
    php artisan jwt:secret --force
  7. Run Migrations:

    Run the database migrations:

    php artisan migrate
  8. Configure File Storage:

    Set the following values in your .env file:

    FILESYSTEM_PUBLIC_DISK=public
    FILESYSTEM_PRIVATE_DISK=local
    APP_CDN_URL=http://localhost:8000/storage

    Then create a symbolic link for storage:

    php artisan storage:link
  9. Start the Backend Server:

    Start the Laravel development server:

    php artisan serve

    Visit http://localhost:8000 to verify the backend is running.

  10. Optional: Configure Stripe (for Payment Integration):

If you want to test the payment functionality, configure Stripe:

STRIPE_PUBLIC_KEY=your_public_key
STRIPE_SECRET_KEY=your_secret_key
STRIPE_WEBHOOK_SECRET=your_webhook_secret

Point a Stripe webhook at /api/public/webhooks/stripe and subscribe it to payment_intent.succeeded, payment_intent.payment_failed, charge.succeeded, charge.updated, charge.refunded, refund.created, refund.updated, account.updated, payout.paid, payout.updated and terminal.reader.action_failed (box office card readers).

  1. Optional: Enterprise features:

Reserved seating, the box office and enterprise single sign-on are Hi.Events Enterprise features. Set APP_LICENCE_KEY in .env to the licence key you received: it removes the "Powered by Hi.Events" notice and unlocks the Enterprise features your licence includes. Without a key they stay off, and everything else works as normal.

For development and testing, you can set APP_LICENCE_KEY to development instead. That unlocks them with a "Development licence" notice shown to ticket buyers, and must not be used for real events. A superadmin (php artisan user:make-superadmin <user id>) can check the licence status at /admin/licence.

  1. Optional: Reverse proxies and rate limiting:

Rate limits are keyed by client IP. The default, APP_TRUSTED_PROXIES=*, trusts whichever proxy connects to the app and reads the client IP from its X-Forwarded-For. That works with no proxy or a single proxy, but lets clients that reach the app directly spoof their IP. Behind two or more proxies (for example Cloudflare in front of Traefik, Caddy or nginx) the default sees the outer proxy as the client, so many visitors share one rate limit. In both cases, list every proxy between the visitor and the app instead (cloudflare expands to Cloudflare's published ranges), including the frontend server if it calls the API from another host:

APP_TRUSTED_PROXIES=127.0.0.1,10.0.0.0/8,cloudflare

If the frontend server's address can't be listed (for example it has no fixed IP), set the same random value on the backend and the frontend server instead, so server-rendered pages keep each visitor's IP:

APP_SSR_SHARED_SECRET=a_long_random_string

Frontend Setup

1. Create the .env File:

Navigate to the frontend directory and copy the example .env file:

cd frontend
cp .env.example .env

2. Configure Frontend .env:

Update the .env file with the following settings:

VITE_API_URL_CLIENT=http://localhost:8000
VITE_API_URL_SERVER=http://localhost:8000
VITE_FRONTEND_URL=http://localhost:5678
VITE_STRIPE_PUBLISHABLE_KEY=pk_test_XXXXXXXX

3. Install Dependencies:

Install the frontend dependencies:

yarn install

4. Set Environment Variables:

Set the environment variables before starting the frontend app.

  • Windows:

    $env:VITE_API_URL_CLIENT="http://localhost:8000"
    $env:VITE_API_URL_SERVER="http://localhost:8000"
    $env:VITE_FRONTEND_URL="http://localhost:5678"
    $env:VITE_STRIPE_PUBLISHABLE_KEY="pk_test_XXXXXXXX"
  • Linux/Mac:

    export VITE_API_URL_CLIENT="http://localhost:8000"
    export VITE_API_URL_SERVER="http://localhost:8000"
    export VITE_FRONTEND_URL="http://localhost:5678"
    export VITE_STRIPE_PUBLISHABLE_KEY="pk_test_XXXXXXXX"

5. Build and Start the Frontend:

Run the following commands to build and start the frontend application:

yarn build
yarn start

Visit http://localhost:5678 to view the frontend.

Troubleshooting

  1. Composer Install Errors:
    Ensure the required PHP extensions are installed. Check by running:

    php -m
  2. Database Connection Issues:
    Verify the database credentials in the .env file and ensure the PostgreSQL service is running.

  3. Mail Server Errors:
    Ensure that your mail server credentials (e.g., Mailtrap) are correct or use the log driver for local email logging.

  4. Frontend not connecting to the backend:
    Ensure the API URLs are set correctly in both the frontend .env file and the backend .env file. Also, verify that environment variables are properly exported in the terminal.