autopilot-ansible
Autopilot
Autopilot is a (cloud) webhosting control panel for managing multiple servers, sites and WordPress installations. We use Autopilot at Sitepilot for our managed WordPress webhosting platform. With Autopilot you can:
- Provision WordPress optimized web servers and load balancers.
- Monitor server and site health of the provisioned servers and sites.
- Manage and maintain WordPress sites.
Autopilot is build on top of Laravel and uses Ansible to provision servers, users, databases and sites on Ubuntu 20.04 LTS servers.
Supported Server Providers
Autopilot supports the following server providers:
If your preferred provider is not baked into Autopilot, you can always use the Custom VPS option. There are a few requirements to ensure that this works successfully:
- The server your connecting to must be running a fresh installation of Ubuntu 20.04 LTS.
- Your server must be accessible by the Autopilot host.
- There must be a root user with no password.
Web Server Configuration
Packages & Services
The following packages/services will be installed and configured on web servers (together with dependencies):
- OpenLitespeed (web server)
- LSPHP 7.4
- LSPHP 7.3
- Composer
- WPCLI
- WordMove
- UFW (firewall)
- Fail2Ban
- OpenSSH Server & SFTP
- SSMTP (email relay)
- Restic (for backups)
- Docker
- Docker Compose
- Docker Redis 5
- Docker MariaDB 10.4
- Docker phpMyAdmin 5
- Docker Node Exporter (for monitoring)
Users are isolated and allowed to use SFTP with password authentication (chroot directory /opt/sitepilot/users/%u
).
Tools
-
phpMyAdmin:
http://<domain.name>/.sitepilot/pma/
. -
Health check:
http://<domain.name>/.sitepilot/health/
. -
Node Exporter:
http://<domain.name>/.sitepilot/node-exporter/
.
Filesystem
-
Users folder:
/opt/sitepilot/users
. -
Site public folder:
/opt/sitepilot/users/{{ user.name }}/{{ app.name }}/public
. -
Site logs folder:
/opt/sitepilot/users/{{ user.name }}/{{ app.name }}/logs
. -
OpenLitespeed service folder:
/opt/sitepilot/services/olsws
. -
MySQL service folder:
/opt/sitepilot/services/mysql
. -
Redis service folder:
/opt/sitepilot/services/redis
. -
Node Exporter service folder:
/opt/sitepilot/services/node-exporter
. -
phpMyAdmin service folder:
/opt/sitepilot/services/phpmyadmin
.
Load Balancer Configuration
Packages & Services
The following packages/services will be installed and configured on load balancer servers (together with dependencies):
- Caddy Web Server (for proxy and auto ssl)
- UFW (firewall)
- Restic (for backups)
- Node Exporter (for monitoring)
Filesystem
-
Caddy vhosts folder:
/opt/sitepilot/services/caddy/vhosts
. -
Caddy logs folder:
/opt/sitepilot/services/caddy/logs
.
Monitoring
Autopilot uses Prometheus, Alertmanager, Blackbox Exporter and Grafana to monitor servers and sites. These services are included in the Autopilot Stack.
Installation & Contributing
Licenses
- Laravel Nova License: Autopilot uses Laravel Nova for managing resources. A valid Laravel Nova license is required when installing Autopilot. Composer will prompt for the username and password to validate your license while installing packages.
Installation
The recommended way to install Autopilot is using the preconfigured Autopilot Stack. You can find the installation instructions here.
Contributing
Thank you for considering contributing to Autopilot! Follow these steps to install Autopilot on your server:
- Clone this repository to your web server.
-
Copy the example environment file and modify it to your needs:
cp .env.example .env
. -
Install Composer packages with
composer install
. NOTE: Composer will prompt for your Laravel Nova username and password to validate your license. -
Generate an application key with
php artisan key:generate
. -
Migrate and seed the database with
php artisan migrate --seed
. -
Navigate to the application domain and login. Default user:
admin@sitepilot.io
, default password:supersecret
.
Environment Requirements
The following software must be installed on the server in order to manually install Autopilot:
- PHP7.4
- Ansible
- Composer
NOTE: These packages are included in the Autopilot Docker container.
Commands
-
Autopilot uses Laravel Horizon to process Redis queues. To start the configured queue workers run:
php artisan horizon
. -
Autopilot uses Laravel Task Scheduling to schedule tasks. To test scheduled tasks run:
php artisan schedule:run
.
NOTE: These commands are preconfigured to run in the Autopilot Docker container.
Screenshots
License
MIT / BSD
Author
Autopilot was created in 2020 by Nick Jansen.