Setup Cron or systemd timers for the Nextcloud Preview Generator
Guest post by @morph027
If you’re using the fantastic Nextcloud and like to feel comfortable browsing all your auto-uploaded photos like once upon a time you did in some proprietary Picasa or so, you can benefit from the Preview Generator, which will take care of pre-rendering the thumbnails. This means faster, smoother scrolling and previewing your images, both in your browser and on mobile devices!
As it states you must add some cron magic to get it working and the Nextcloud folks asked for a tutorial, here’s how to do it with cron or (my preference) with systemd timers.
Prerequisites
- we need to setup the job as the system user running Nextcloud (e.g.
www-data
,nginx
,httpd
, … – depends on your distribution). You can find out by looking at the owner of the nextcloud files usingls -la
- we need to use the absolut path to the
php
executable (which php
) - we need to use the absolut path to Nextclouds
occ
file, depends in which folder your Nextcloud has been installed (e.g./var/www/nextcloud/occ
)
Cron
Add or create a new cronjob for the Nextcloud user:
crontab -e -u www-data
Using your favourite editor, add something like this, which will run the job at 04:00:
0 4 * * * /usr/bin/php -f /var/www/nextcloud/occ preview:pre-generate
Systemd timers
Systemd also has the possibility to run specific tasks at specific times or events. called Timers. You need to create 2 unit files:
/etc/systemd/system/nextcloud-preview-generator.service
[Unit]
Description=Nextcloud Preview Generator
[Service]
Type=oneshot
User=www-data
ExecStart=/usr/bin/php -f /var/www/nextcloud/occ preview:pre-generate
[Install]
WantedBy=basic.target
/etc/systemd/system/nextcloud-preview-generator.timer
[Unit]
Description=Run Nextcloud Preview Generator daily at 04:00
[Timer]
OnCalendar=*-*-* 4:00:00
Persistent=true
[Install]
WantedBy=timers.target
- systemd reload
systemctl daemon-reload
- activate the timer
systemctl enable nextcloud-preview-generator.timer
- start the timer
systemctl start nextcloud-preview-generator.timer