diff --git a/contrib/netbox-housekeeping.service b/contrib/netbox-housekeeping.service new file mode 100644 index 000000000..4b0361fcb --- /dev/null +++ b/contrib/netbox-housekeeping.service @@ -0,0 +1,17 @@ +[Unit] +Description=NetBox Housekeeping Service +Documentation=https://docs.netbox.dev/ +After=network-online.target +Wants=network-online.target + +[Service] +Type=simple + +User=netbox +Group=netbox +WorkingDirectory=/opt/netbox + +ExecStart=/opt/netbox/venv/bin/python /opt/netbox/netbox/manage.py housekeeping + +[Install] +WantedBy=multi-user.target diff --git a/contrib/netbox-housekeeping.timer b/contrib/netbox-housekeeping.timer new file mode 100644 index 000000000..16facb05c --- /dev/null +++ b/contrib/netbox-housekeeping.timer @@ -0,0 +1,13 @@ +[Unit] +Description=NetBox Housekeeping Timer +Documentation=https://docs.netbox.dev/ +After=network-online.target +Wants=network-online.target + +[Timer] +OnCalendar=daily +AccuracySec=1h +Persistent=true + +[Install] +WantedBy=multi-user.target diff --git a/docs/administration/housekeeping.md b/docs/administration/housekeeping.md index 212b8308d..674ceb312 100644 --- a/docs/administration/housekeeping.md +++ b/docs/administration/housekeeping.md @@ -7,7 +7,13 @@ NetBox includes a `housekeeping` management command that should be run nightly. * Deleting job result records older than the configured [retention time](../configuration/miscellaneous.md#job_retention) * Check for new NetBox releases (if [`RELEASE_CHECK_URL`](../configuration/miscellaneous.md#release_check_url) is set) -This command can be invoked directly, or by using the shell script provided at `/opt/netbox/contrib/netbox-housekeeping.sh`. This script can be linked from your cron scheduler's daily jobs directory (e.g. `/etc/cron.daily`) or referenced directly within the cron configuration file. +This command can be invoked directly, or by using the shell script provided at `/opt/netbox/contrib/netbox-housekeeping.sh`. + +## Scheduling + +### Using Cron + +This script can be linked from your cron scheduler's daily jobs directory (e.g. `/etc/cron.daily`) or referenced directly within the cron configuration file. ```shell sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping @@ -16,4 +22,28 @@ sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-hou !!! note On Debian-based systems, be sure to omit the `.sh` file extension when linking to the script from within a cron directory. Otherwise, the task may not run. -The `housekeeping` command can also be run manually at any time: Running the command outside scheduled execution times will not interfere with its operation. +### Using Systemd + +First, create symbolic links for the systemd service and timer files. Link the existing service and timer files from the `/opt/netbox/contrib/` directory to the `/etc/systemd/system/` directory: + +```bash +sudo ln -s /opt/netbox/contrib/netbox-housekeeping.service /etc/systemd/system/netbox-housekeeping.service +sudo ln -s /opt/netbox/contrib/netbox-housekeeping.timer /etc/systemd/system/netbox-housekeeping.timer +``` + +Then, reload the systemd configuration and enable the timer to start automatically at boot: + +```bash +sudo systemctl daemon-reload +sudo systemctl enable --now netbox-housekeeping.timer +``` + +Check the status of your timer by running: + +```bash +sudo systemctl list-timers --all +``` + +This command will show a list of all timers, including your `netbox-housekeeping.timer`. Make sure the timer is active and properly scheduled. + +That's it! Your NetBox housekeeping service is now configured to run daily using systemd.