rembrembdocs

This is a technology preview. “LiteFS” is a distributed file system that enables you to sync SQLite data across instances of your application.

Read further on the official LiteFS documentation and follow along a LiteFS-configured sample Laravel repository here.

Laravel Specific Configuration

Take note of the following important steps in configuring your Laravel Fly App with LiteFS:

  1. You’ll have to configure SQLite connection in your fly.toml file:
[env]
    ...
    DB_CONNECTION="sqlite"
    DB_DATABASE="/var/www/html/storage/database/database.sqlite"
  1. Since we’re saving the SQLite database in the storage directory, make sure to mount a volume on it by following this guide here.

  2. Execute litefs mount instead of starting the server in .fly/entrypoint.sh:

  3. Make sure to properly configure the configuration file( etc/litefs.yml ) read by LiteFS:

fuse:
  # Point to the directory containing your DB_DATABASE in fly.toml
  dir: "/var/www/html/storage/database"

  # Allow none-root access to the directory above--required for web access
  allow-other:true

# Start the server, this was previously run in .fly/entrypoint.sh
exec: "supervisord -c /etc/supervisor/supervisord.conf"
  1. Include a ( etc/fuse.conf ) file to enable allow-other option above to work.

  2. Revise the generated Dockerfile to include the LiteFS image, install required packages, and copy the configuration files etc/litefs.yml and etc/fuse.conf to a proper location LiteFS can read.

  3. Create a middleware to forward write requests to the primary node using fly-replay

  4. Use a non-file session driver to allow fly-replay to work on Laravel CSRF protection.