Before installing, ensure the following infrastructure-level security measures are in place:
The application does not encrypt data at rest at the application level. Disk-level encryption MUST be enabled on the server hosting this system to protect database contents, uploaded files, and configuration secrets.
| Platform | Method | Verification |
|---|---|---|
| AWS EC2 | Enable EBS encryption on all attached volumes | AWS Console > EC2 > Volumes > Encrypted column |
| Azure VM | Enable Azure Disk Encryption (ADE) | az vm encryption show --name <vm> |
| Bare metal / VM | LUKS / dm-crypt on all data partitions | lsblk — look for crypt type |
| Docker | Encrypt the host's data volume | Verify host disk encryption |
Warning: Running this system on an unencrypted disk exposes personal data (driver names, emails, reservations, inspection photos) to physical access attacks. See
docs/SECURITY_AUDIT.mdsection 9 for details.
- Ubuntu 22.04/24.04 LTS
- PHP 8.1+ with extensions: pdo, pdo_mysql, curl, json, mbstring
- MySQL 8.0+ or MariaDB 10.6+
- Apache 2.4+ with mod_rewrite, mod_headers
- Snipe-IT v6.x or v7.x installed and configured
- Composer
cd /var/www
git clone https://github.com/VitorMRodovalho/SnipeScheduler-FleetManager.git snipescheduler
cd snipeschedulercomposer install --no-devcp config/config.example.php config/config.php
nano config/config.phpConfigure:
- Database credentials (db_booking section)
- Snipe-IT API URL and token
- Microsoft OAuth credentials (optional)
- LDAP settings (optional)
- SMTP settings for notifications
mysql -u root -pCREATE DATABASE snipescheduler CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'snipescheduler'@'localhost' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON snipescheduler.* TO 'snipescheduler'@'localhost';
FLUSH PRIVILEGES;
EXIT;sudo chown -R www-data:www-data /var/www/snipescheduler
sudo chmod 640 /var/www/snipescheduler/config/config.phpsudo nano /etc/apache2/sites-available/snipescheduler.confAlias /booking /var/www/snipescheduler/public
<Directory /var/www/snipescheduler/public>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>Enable site and modules:
sudo a2ensite snipescheduler
sudo a2enmod rewrite headers
sudo systemctl reload apache2sudo crontab -eAdd:
# Send notifications every 5 minutes
*/5 * * * * /usr/bin/php /var/www/snipescheduler/cron/send_notifications.php
# Daily backup at 2 AM
0 2 * * * /usr/local/bin/backup-snipescheduler.shFollow the Snipe-IT Configuration section in the main README.md.
Visit: https://your-domain.com/booking/
sudo chown -R www-data:www-data /var/www/snipescheduler- Verify Snipe-IT API token has correct permissions
- Check API URL ends without trailing slash
- Ensure user exists in Snipe-IT with email address
- Check user is in appropriate group (Drivers, Fleet Staff, or Fleet Admin)