Scheduled Tasks (Cron Job)
Votlie requires a cron job to run background tasks. This is a one-time setup that keeps your board running smoothly.
Why You Need a Cron Job
A cron job runs a command on your server at regular intervals. Votlie uses it to handle tasks that need to run in the background without manual intervention.
Setting Up
In cPanel
- Log in to cPanel
- Go to Cron Jobs
- Set the interval to Once Per Minute (
* * * * *) - Enter this command:
cd /path-to-your-votlie && php artisan schedule:run >> /dev/null 2>&1
Replace /path-to-your-votlie with the actual path to your Votlie installation directory (e.g., /home/username/public_html).
- Click Add New Cron Job
Via SSH
If you have SSH access, add the cron entry:
crontab -e
Add this line:
* * * * * cd /path-to-your-votlie && php artisan schedule:run >> /dev/null 2>&1
What It Handles
The cron job manages these tasks:
| Task | Description |
|---|---|
| Scheduled announcements | Publishes announcements at the specified time |
| Stuck update recovery | Detects and recovers updates that failed mid-process |
| Weekly digest | Sends periodic notification emails (if enabled) |
Verifying
To check if your cron job is working:
- Create a scheduled announcement set for a few minutes in the future
- Wait for the scheduled time to pass
- Check if the announcement was published automatically
If it wasn't published, try these steps:
- SSH into your server and run the command manually to check for errors:
cd /path-to-your-votlie && php artisan schedule:run
- Check your cron path - Make sure the path in the cron entry matches your actual Votlie installation directory
- Check PHP is accessible - Run
php -vvia SSH to confirm PHP works from the command line - Use the full PHP path - Some hosting providers require the full path to the PHP binary (e.g.,
/usr/local/bin/phpor/usr/bin/php) instead of justphp
SaaS Mode Tasks
If you're running the Extended License (SaaS mode), the cron job also handles these additional tasks:
| Task | Frequency | Description |
|---|---|---|
| Enforce subscriptions | Daily | Suspends accounts with expired subscriptions |
| Send trial expiring reminders | Daily | Sends warning emails at 7, 3, and 1 day before trial expiry |
| Expire trials | Hourly | Expires trials that have passed their end date |
| Cleanup pending tenants | Daily | Removes abandoned or incomplete signups |
| Purge deleted tenants | Daily | Permanently removes tenants deleted more than 7 days ago (grace period) |
| Verify domains DNS | Every 5 minutes | Checks DNS records for custom domain configurations |
| Process domain pipeline | Every 15 minutes | Processes pending custom domain setup and provisioning |
| Check SSL expiry | Daily | Monitors SSL certificate status and warns before expiry |
The cron job is essential in SaaS mode. Without it, trials won't expire, subscriptions won't be enforced, and domains won't be provisioned.
Troubleshooting
| Problem | Solution |
|---|---|
| Cron not running | Verify the path is correct. Test by running the command manually via SSH. |
| PHP not found | Use the full PHP path (e.g., /usr/local/bin/php) instead of just php |
| Permission denied | Ensure the cron user has read/execute permissions on the Votlie directory |
Next Steps
- Updates & Backups - Keep Votlie up to date
- Troubleshooting - Fix common problems