LaraSail is a CLI tool for Laravel to help you sail the servers of the DigitalOcean.
You'll need a DigitalOcean account before getting started (Signup here), then you'll need to create a New Droplet
. Make sure to select Ubuntu Server:
SSH into your server and run the following command:
curl -sL https://github.com/thedevdojo/larasail/archive/master.tar.gz | tar xz && source larasail-master/install
You can make sure it's installed by running:
larasail -h
larasail setup
The default configuration will install Nginx
, PHP 8.2
, and MySQL 8
. If you wish to use PHP 7.1
, 7.2
, 7.3
, 7.4
, 8.0
, 8.1
or 8.3
you can include the argument php71
/php72
/php73
/php74
/php80
/php81
/php83
like so:
larasail setup php71 # Install with PHP 7.1
larasail setup php72 # Install with PHP 7.2
larasail setup php73 # Install with PHP 7.3
larasail setup php74 # Install with PHP 7.4
larasail setup php80 # Install with PHP 8.0
larasail setup php81 # Install with PHP 8.1
larasail setup php83 # Install with PHP 8.3
By default, LaraSail will set up the latest version of MySQL. To opt for MariaDB instead, kindly pass mariadb
to larasail setup
as the second or third parameter like so:
larasail setup mariadb # will install default PHP version (7.4) and MariaDB
larasail setup php80 mariadb # will install the selected PHP version (8.0 in this case) and MariaDB
larasail setup mariadb php80 # same as above
By default, LaraSail does not install a Redis server. To opt to install redis
, pass redis
option to larasail setup
as the second or third parameter like so:
larasail setup php82 redis
or
larasail setup redis
After setting up the server you can create a new project by running:
larasail new <project-name> [--jet <livewire|inertia>] [--teams] [--www-alias]
This will automatically create a project folder in /var/www
and set up a host if the provided project name contains periods (they will be replaced with underscores for the directory name). By default, LaraSail sets up the Nginx site configuration and Let’s Encrypt SSL certificate for your domain. If you would like both the www
alias and root domain setup (i.e. example.com
and www.example.com
) kindly pass the --www-alias
flag.
Wave - The Software as a Service Starter Kit, designed to help you build the SAAS of your dreams. 🚀 💰
LaraSail allows you to create a new Wave project automatically by adding --wave
flag to the new
command as follows:
larasail new <project-name> [--wave]
Just like Laravel above, this will create a project folder, setup the Nginx site configuration and Let’s Encrypt SSL certificate for your domain. By default, you will be prompted to create a project database and if successful, will migrate and seed the database.
Alternatively, you can clone a repository or create a new Laravel app within the /var/www
folder:
cd /var/www && laravel new mywebsite
If you want to include Laravel Jetstream into your project, you need to specify the --jet
option:
cd /var/www && laravel new mywebsite --jet
Then, you'll need to setup a new Nginx host by running:
larasail host mywebsite.com /var/www/mywebsite --www-alias
larasail host
accepts three parameters:
- Your website domain (mywebsite.com)
- The location of the files for your site (/var/www/mywebsite/public)
- Optional flag if you would like to include your project's
www
alias:www.mywebsite.com
(--www-alias)
Finally, point your domain to the IP address of your new server. And wallah, you're ready to rock 🤘 with your new Laravel website. If you used the --www-alias
flag, don't forget to add your domain's www CNAME
record
When installing and setting up LaraSail there are two passwords that are randomly generated:
- The password for the
larasail
user created - The default MySQL password
To get the larasail
user password you can type in the following command:
larasail pass
And the password for the larasail
user will be displayed. Next, to get the default MySQL root password you can type the following command:
larasail mysqlpass
And the MySQL root password will be displayed.
After you have created your project you can create a database and user for it by using the following command:
larasail database init [--user larasail] [--db larasail] [--force]
By default it will create a database and the user larasail
and grant all permissions to that user.
TIP: If you are in the project directory when you run this command, it will also try to update the .env
file
with the newly generated credentials.
After you have created a database, you can show the newly generated passwords using the following command:
larasail database pass
When you SSH into your server you may want to switch users back to the larasail
user, you can do so with the following command:
su - larasail
Make sure to star this repository and watch it for future updates. Thanks for checking out LaraSail. ⛵
If you are contributing, please read the contributing file before submitting your pull requests.