- for Apache A+ SSL configuration check https://gist.github.com/GAS85/42a5469b32659a0aecc60fa2d4990308
- for Apache HTTP2 enablement check https://gist.github.com/GAS85/8dadbcb3c9a7ecbcb6705530c1252831
- nextcloud-auditlog.sh - Perform Audit log analyse for a given time and output in cacti format
- nextcloud-av-notification.sh - Perform nextcloud log analyse and send notification to any user
- nextcloud-file-sync.sh - Do External Shares rescan only
- nextcloud-preview.sh - Automate preview generation
- nextcloud-rsync-to-remote.sh - Do data Folder rsync to remote via SSH with key Authentication, or into archive
- nextcloud-scripts-config.conf - Configuration file
- nextcloud-system-notification.sh - Get System Notifications into Nextcloud
- nextcloud-usage-report.sh - Generate report in cacti format
- Nextcloud Talk Bots
- nextcloud-bot-links-list - List for a Links Nextcloud Talk bot
- nextcloud-bot-links.sh - Links Nextcloud Talk bot
- nextcloud-bot-rate-1-10.sh - Nextcloud Talk bot to generate simple 1 to 10 rate
- nextcloud-bot-pass.sh - Nextcloud Talk bot to generate random password
Central configuration file, very handy if you are using more then one script from this banch. Options are:
- Your NC OCC Command path e.g.
COMMAND=/var/www/nextcloud/occ
- Your NC log file path e.g.
LOGFILE=/var/www/nextcloud/data/nextcloud.log
- Your log file path for other output if needed e.g.
CRONLOGFILE=/var/log/next-cron.log
- Your PHP location if different from default e.g.
PHP=/usr/bin/php
Perform Audit log analyse for a given time and output in cacti format. "Auditing / Logging" App must be enabled. Example:
sudo -u www-data /var/www/cacti/scripts/nextcloud_auditlog.sh -n
Login_UnknownUser:6 FileAccess_UnknownUser:0 FileWritten_UnknownUser:0 FileCreated_UnknownUser:0 FileDeleted_UnknownUser:0 New_Share_UnknownUser:0 Share_access_UnknownUser:0 Preview_access_UnknownUser:0
Syntax is nextcloud-auditlog.sh.sh -h?Hv <user>
-h, or ? for this help
-H will generate Human output
-c will generate clean uptput with only valid data
-n will generate information about non registered users, e.g. CLI User, or user trying to login with wrong name, etc.
<user> will generate output only for a particluar user. Default - all users will be fetched from the nextcloud
TODO Adjust for common config file and set limit to the users amount.
Perform nextcloud log analyse and send notification to any user. Made to avoid this Issue
Basically it works out from the box. Only that you have to check you nextcloud path, log path and create a log file for php occ
output.
Will do external ONLY shares rescan for nextcloud.
Put it in
/usr/local/bin/
with chmod 755
Run it under nextcloud user (for me it is www-data) basically twice per day at 2:30 and 14:30. You can run it also hourly. This is my cron config (for more cron exampels, plesae refer to manpages):
30 2,14 * * * perl -e 'sleep int(rand(1800))' && /usr/local/bin/nextcloud-file-sync.sh #Nextcloud file sync
Here I add perl -e 'sleep int(rand(1800))' to inject some random start time within 30 Minutes, but since it scans externals only it is not necessary any more. Your cron job config to run it hourly could be:
@hourly /usr/local/bin/nextcloud-file-sync.sh
If you would like to perform WHOLE nextcloud re-scan, please add -all to command, e.g.:
./nextcloud-file-sync.sh -all
Lets go through what it does (valid for commit 44d9d2f):
COMMAND=/var/www/nextcloud/occ <-- This is where your nextcloud OCC command located
OPTIONS="files:scan" <-- This is "Command" to run, just live it as it is
LOCKFILE=/tmp/nextcloud_file_scan <-- Lock file to not execute script twice, if already ongoing
LOGFILE=/var/www/nextcloud/data/nextcloud.log <-- Location of Nextcloud LOG file, will put some logs in Nextcloud format
CRONLOGFILE=/var/log/next-cron.log <-- location for bash log. In case when there is an output by command generated. AND IT IS GENERATED...
Script will generate NC log output:
I have had some issues (like described here https://help.nextcloud.com/t/occ-files-cleanup-does-it-delete-the-db-table-entries-of-the-missing-files/20253) in older NC versions, so I added workaround from line 60 till 67 as files:cleanup
command, nut sure if it is needed now, but it does not harm anything.
Since last update, Application will detect if it is already run and will not be executed twice/parallel (https://help.nextcloud.com/t/clarity-on-the-crontab-settings-for-the-preview-generator-app/6144/54), so you can added it e.g. to execute each 20 Minutes as cron job directly. This means that nextcloud-preview.sh is not needed anymore, only make sense if you would like to have execution information directly in nextcloud logs.
This script will generate NC log output:
This script will do backup via RSYNC to remote machine via SSH Key authentication. You can edit key --exclude=FolderToExclude
to exclude folders such as:
data/appdata*/preview
exclude Previews - they could be newly generated,data/*/files_trashbin/
exclude users trash-bins,data/*/files_versions/
exclude users files Versions,data/updater*
exclude updater backups and downloads,*.ocTransferId*.part
exclude partly uploaded data from backup.
Or you can even combine and do rsync into archive (with remote authentication via SSH Key) if you set CompressToArchive=true
As per this tread I added simple script that will do check if updates or reboot is required and show it as NC notification. Works on Ubuntu 16.04+.
You only have to specify user from the Administrator group to get notifications via USER="admin"
This script works with https://apps.nextcloud.com/apps/user_usage_report
Will generate report and output it in cacti format. Supports Argument as "user" if you need to check statistic for one user only run ./nextcloud-usage_report.sh user to get specific user information. AS-IS without any warranty. Output fields are:
storage_all, storage_used, shares_new, files_all, files_new, files_read
This script work as a Talk Chat bot. Will return you usefull links specifyed in nextcloud-links-list
.
To add bot simply execute:
sudo -u www-data php /var/www/nextcloud/occ talk:command:add links links "/usr/local/bin/nextcloud-bot-links.sh {ARGUMENTS} {USER}" 2 3
More information about is under https://nextcloud-talk.readthedocs.io/en/latest/commands/
In a code, please specify absolute link to the nextcloud-links-list
as list
, e.g.:
list="/usr/local/bin/nextcloud_links_list"
Output example:
/links git
Hey, here is something useful for you:
Your git is under https://domain/git
Known Bug/Feature: it will return all lines with matched words, e.g. if you are typing /links Your
, you will get whole list from example below.
This is a list of usefull Links or other infor for a Talk Chat bot. Simply one line per output. E.g.:
Your wiki is under https://domain/wiki
Your git is under https://domain/git
Your notes are under https://domain/index.php/apps/notes
Basically you can put in this list whatever to be shown.
This script work as a Talk Chat bot. Will return you (girs) rate from 1 till 10. To add bot simply execute:
sudo -u www-data php /var/www/nextcloud/occ talk:command:add rate rate "/usr/local/bin/nextcloud-bot-rate-1-10.sh {ARGUMENTS}" 2 3
More information about is under https://nextcloud-talk.readthedocs.io/en/latest/commands/
Output example:
/rate
9
This script work as a Talk Chat bot. Will return you random generated 16 (or any length) Characters password. To add bot simply execute:
sudo -u www-data php /var/www/nextcloud/occ talk:command:add pass pass "/usr/local/bin/nextcloud-bot-pass.sh {ARGUMENTS}" 1 3
Please make sure that you put 1 as response
argument, this will ensure that only requester can see the output. For more information please follow https://nextcloud-talk.readthedocs.io/en/latest/commands/
Output example:
/pass 20
Generated with Urandom
tC1qPQpYJNesjl3BLRFC
Generated with OpenSSL
paRbAxtcU8+w6aN/SBF3
Generated with Bash random
3G5DAqyUeaN!Ewx0HqjO