3.2 KiB
README
system-helpers - Collection of helper systemd services, systemd timers and shell scripts for common tasks.
It can help you out for small servers where you think a proper monitoring and alerting system like Prometheus and AlertManager is too much.
The notifier script can send notifications via mail or gotify.
system-helpers collection provides the following helpers
- notifier which sends notifications via mail or gotify (see see notifier)
- checking if systemd services and timers are running (see man systemd_check)
- borgmatic backup (see exposed systemd services borgmatic@ which require a valid borgmatic.yml file in /etc/borgmatic or your $HOME/.config/borgmatic)
- restic backup (see /usr/share/doc/system-helpers/restic for an example mybackup)
- checking if docker containers are running (see man docker_check)
- batch docker-compose upgrades (see man docker_compose_update)
- dynamic dns update (see man docker_compose_update)
- memory and disk checks (see man disk_space_alert and man memory_usage_alert)
- docker housekeeping for removing unused docker containers, volumes and images
- update check for pacman (ArchLinux specific, see man check_updates)
Provided systemd services mostly support mail notifications if they have failed
via systemd_failure_notify
.
See /usr/share/doc/system-helpers
for example configurations which should
be copied inside $HOME or /etc depending on the helper script.
Installation
Package repository for Arch Linux
Use the custom provided ArchLinux repository hosted at aur.myservermanager.com
[repo-aur-myservermanager-com]
SigLevel = Never
Server = https://aur.myservermanager.com
Package build for Arch Linux
- Clone this repository
- Build a
pacman
package for ArchLinux viamakepkg -csi
inside the_pkg/
folder
system-helpers-sync script to synchronize files to locations
- Clone this repository
- Run
./system-helpers-sync
and pick an action which should be self-explaining
Usage
Scripts make heavy use of notifier script which should be configured properly.
Otherwise, services and scripts don't depend on each other, but have hints that they can be combined (out-commented line in service files for systemd_failure_notify@.service
for example).
Examples are given inside usr/share/doc/system-helpers
and man pages are also available.
FAQ
User cannot use network-online.target
By default, no user unit can depend on system events like network-online.target
.
To enable this, you need to link the proper .target
which you like to use inside
the user service before.
systemctl --user link /usr/lib/systemd/system/network-online.target
This would make network-online.target
available after a reboot to the user who issued the command.
network-online.target
doesn't recognize DNS correctly
If you like to set Persistent=true
, then you should probably equip the related .service
file with a ExecStartPre=/bin/bash -c 'until host captiveportal.myservermanager.com; do sleep 1; done'
or any domain you think is 100% reachable.