Compare commits

...

2452 commits

Author SHA1 Message Date
Franzi c9b393c6dc
update travelynx to 2.6.9 2024-04-28 21:40:46 +02:00
Franzi 9e78b9e07b
python3.12 compat 2024-04-28 21:40:35 +02:00
Franzi 65af9ae0c5
update netbox to 3.7.6 2024-04-28 20:57:44 +02:00
Franzi 516a543719
update forgejo to 7.0.1 2024-04-28 20:57:31 +02:00
Franzi dbf17424d2
update element-web to 1.11.65 2024-04-28 20:57:14 +02:00
Franzi 09e59af95f
bundles/nginx: listen ... http2; is deprecated 2024-04-24 23:04:06 +02:00
Franzi 610c1d0978
update forgejo to 1.21.11-1 2024-04-20 18:35:00 +02:00
Franzi 0bfcd8df45
update travelynx to 2.6.7 2024-04-20 18:31:44 +02:00
Franzi 27cb0cb0df
update mautrix-whatsapp to 0.10.7 2024-04-20 18:31:30 +02:00
Franzi d02d26cb5e
update forgejo to 1.21.11-1 2024-04-20 18:31:13 +02:00
Franzi bbc69dfd25
bundles/icinga2: re-add statusmonitor 2024-04-20 18:30:39 +02:00
Franzi e64ae3aef7
bundles/icinga2: run check_mounts check as well 2024-04-17 06:42:58 +02:00
Franzi 1ec545e080
update element-web to 1.11.64 2024-04-17 06:33:37 +02:00
Franzi 7491ec840c
bundles/dovecot: add full text indexing 2024-04-14 12:17:44 +02:00
Franzi a155fe22cb
Revert "home.router: disable pppd restart at night"
This reverts commit 493dc91e0d.
2024-04-14 10:09:08 +02:00
Franzi 0f9222424e
dns/kunbox.net: add htz-cloud.pirmasens to SPF 2024-04-13 11:05:18 +02:00
Franzi 6be9fb3614
bundles/pacman: 'dnsutils' is now part of 'bind' 2024-04-09 06:09:03 +02:00
Franzi ab61444a1f
bundles/letsencrypt: do not monitor renew timer 2024-04-09 06:06:29 +02:00
Franzi f8b833720a
bundles/systemd-timers: better exclude_from_monitoring support 2024-04-09 06:06:02 +02:00
Franzi 33ae4796d4
update paperless to 2.7.2 2024-04-09 06:03:11 +02:00
Franzi 8f09170b44
update travelynx to 2.6.5 2024-04-09 06:01:01 +02:00
Franzi a6e7359ec0
update netbox to 3.7.5 2024-04-09 06:00:42 +02:00
Franzi 128ac48fd6
update forgejo to 1.21.10-0 2024-04-09 06:00:23 +02:00
Franzi 4a44ae1048
kunbox.net: fix tlsrpt address 2024-04-09 06:00:05 +02:00
Franzi ed05a74f56
update travelynx to 2.6.4 2024-04-03 17:27:40 +02:00
Franzi 896781e53d
update travelynx to 2.6.3 2024-04-02 21:54:31 +02:00
Franzi c0c83338ad
bundles/icinga2: do not send out URGENT for recovery messages 2024-04-02 15:06:52 +02:00
Franzi b028c20758
update element-web to 1.11.63 2024-03-31 13:47:53 +02:00
Franzi efeee3fa62
update travelynx to 2.5.23 2024-03-31 13:47:15 +02:00
Franzi 139d5ff948
htz-cloud.wireguard: actually allow wg.c3voc.de to connect 2024-03-31 12:45:26 +02:00
Franzi df8955fa35
bundles/infobeamer-monitor: better state dump output 2024-03-25 14:54:59 +01:00
Franzi 713f7e02d8
update forgejo to 1.21.8-0 2024-03-24 09:06:48 +01:00
Franzi 272bccf42d
update paperless-ngx to 2.6.3 2024-03-23 12:19:24 +01:00
Franzi a3d582c2c5
update travelynx to 2.5.21 2024-03-23 12:19:10 +01:00
Franzi cad026c1ef
update mautrix-whatsapp to 0.10.6 2024-03-23 12:18:49 +01:00
Franzi a027faa8ca
fix tests 2024-03-23 10:35:02 +01:00
Franzi 773e8d118f
add repo.libs.faults.dict_as_toml 2024-03-23 10:34:41 +01:00
Franzi 1d5bcf74c0
remove bundle:openvpn-client 2024-03-23 10:27:30 +01:00
Franzi 9b4a473236
htz-cloud.wireguard: add c3voc vpn connection 2024-03-23 10:19:56 +01:00
Franzi aa0d4e5a76
kunsi-p14s: set correct ip 2024-03-23 10:19:35 +01:00
Franzi e6f6229b87
bundles/wireguard: do not generate PSKs for unmanaged nodes 2024-03-23 10:19:15 +01:00
Franzi 104d1f11bf
bundles/wireguard: support s2s connection to other services 2024-03-22 22:52:12 +01:00
Franzi ae14265abc
bundles/matrix-synapse: add sliding-sync proxy 2024-03-17 18:40:28 +01:00
Franzi a4e51c5d54
home.router: remove dns search domain 2024-03-16 14:49:28 +01:00
Franzi 6296ab583d
add node attribute for all hosts that don't use letsencrypt ssl certs 2024-03-16 11:04:49 +01:00
Franzi f5b87d995b
bump _.home.kunbox.net 2024-03-16 11:01:56 +01:00
Franzi abb408c907
carlene: ensure kunsi can write to the franzi.business vhost 2024-03-16 10:51:56 +01:00
Franzi bd0cb5e1b4
update element-web to 1.11.61 2024-03-16 10:49:04 +01:00
Franzi 4c5167fefa
update paperless-ngx to 2.6.2 2024-03-16 10:48:26 +01:00
Franzi a344bde87d
update netbox to 3.7.4 2024-03-16 10:48:05 +01:00
Franzi 1573bdc384
update forgejo to 1.21.7-0 2024-03-16 10:47:37 +01:00
Franzi 4d92211862
home.hass: use pyenv for homeassistant 2024-03-07 08:23:04 +01:00
Franzi ac10630fb9
add bundle:pyenv 2024-03-07 08:15:23 +01:00
Franzi 6b387c9d11
add dummy htz-cloud.molly-connector 2024-03-06 23:02:18 +01:00
Franzi 0d362bdb22
EOL htz-cloud.sewfile 2024-03-06 20:06:42 +01:00
Franzi e386b44442
bundles/paperless: PLEASE just import my files 2024-03-04 21:23:19 +01:00
Franzi dd80579fae
bundles/paperless: add missing dependency 2024-03-04 21:23:00 +01:00
Franzi faa30962aa
bundles/paperless: restart please 2024-03-04 21:20:39 +01:00
Franzi 232e087905
bundles/paperless: please, just import documents 2024-03-04 21:02:19 +01:00
Franzi e3d7cae251
net.ipv4.ip_forward -> net.ipv4.conf.all.forwarding 2024-03-03 15:44:31 +01:00
Franzi 0fa9ef91ae
kunsi-p14s: add dataset for nextcloud client 2024-03-03 13:16:53 +01:00
Franzi f5a1a50472
carlene: add sewfile zfs dataset 2024-03-03 12:47:24 +01:00
Franzi 8d8f457468
bundles/nginx: add mjs to mime types 2024-03-03 12:44:41 +01:00
Franzi ffc9c1651c
fix some leftover ULA addressing 2024-02-29 07:40:36 +01:00
Franzi b34879d0ca
update element-web to 1.11.59 2024-02-29 07:40:19 +01:00
Franzi 32e67ff5ec
update paperless to 2.5.4 2024-02-29 07:39:05 +01:00
Franzi 409a1c900a
remove ULA from remaining home nodes 2024-02-26 19:56:23 +01:00
Franzi 3749be6144
home.router: remove ipv6-only vlan 2024-02-26 19:54:59 +01:00
Franzi c5550bf552
bundles/unbound: add option to disable dns64 even when jool is installed 2024-02-26 19:26:01 +01:00
Franzi 699c7acf93
bundles/radvd: increase intervals again 2024-02-26 19:25:43 +01:00
Franzi 79c4dcdf97
Revert "change a bunch of nodes to use their ipv6 address as hostname"
This reverts commit e73dcf16e3.
2024-02-26 19:12:13 +01:00
Franzi 661d8895dc
home.{downloadhelper,paperless}: add ipv6 unique local addresses 2024-02-26 07:49:02 +01:00
Franzi a045e701a6
home.router: add bundle:jool, fix dns 2024-02-26 07:30:50 +01:00
Franzi 575fe91685
bundles/radvd: fix syntax 2024-02-26 07:27:25 +01:00
Franzi 12c6b5fc54
add bundle:jool 2024-02-26 07:27:18 +01:00
Franzi 4514541e8f
bundles/radvd: decrease RDNSS lifetime 2024-02-26 06:41:59 +01:00
Franzi 0d0548311c
bundles/powerdns: add private ipv6 addresses as well 2024-02-26 06:34:30 +01:00
Franzi e73dcf16e3
change a bunch of nodes to use their ipv6 address as hostname 2024-02-26 06:34:23 +01:00
Franzi decbcf9bfd
Merge branch 'feature/kunsi-ipv6-only-vlan' 2024-02-26 06:04:58 +01:00
Franzi 304ce8aa54
home.router: a bit more firewall rules 2024-02-25 20:56:13 +01:00
Franzi b89ba32f4c
home.router: allow forwarding for new vlan 2024-02-25 20:55:53 +01:00
Franzi 7c9bb42c03
home.switch-rack: new vlan 2024-02-25 20:51:02 +01:00
Franzi 9e59bb044a
nodes/home.*: add ipv6 site-local ip addressing and v6-only vlan 2024-02-25 20:50:25 +01:00
Franzi 9c4d1c94a5
htz-cloud: fix routes for vpn 2024-02-25 19:14:13 +01:00
Franzi 577a175bd0
update forgejo to 1.21.6-0 2024-02-25 19:04:55 +01:00
Franzi 182be4e690
update netbox to 3.7.3 2024-02-25 19:02:23 +01:00
Franzi 6bb72f4b27
update travelynx to 2.5.20 2024-02-25 19:01:53 +01:00
Franzi 7d4624ce62
remove users/$user/is_admin metadata, directly write sudo_commands instead 2024-02-25 15:29:10 +01:00
Franzi 02e25f89ff
home.nas: prepare for new NAS disks 2024-02-25 14:47:55 +01:00
Franzi c6552e8dd2
bundles/smartd: do not try to monitor encrypted devices 2024-02-25 14:45:47 +01:00
Franzi 781264432a
kunsi-seibert-x1 -> fkusei-locutus 2024-02-20 16:41:58 +01:00
Franzi 20b1e5dccc
voc.pretalx: update pretalx to 2024.1.0 2024-02-18 21:38:06 +01:00
Franzi 281696d411
htz-cloud.afra: fedi.afra.berlin is gone 2024-02-18 21:23:31 +01:00
Franzi 9df3e5539d
htz-cloud.pirmasens: use domain_aliases to redirect to main domain 2024-02-18 21:21:51 +01:00
Franzi b60fb4ff60
update travelynx to 2.5.17 2024-02-17 05:00:03 +01:00
Franzi 26ee966bd6
bundles/paperless: fix config for static directory 2024-02-17 04:45:54 +01:00
Franzi 72f756a686
update paperless-ngx to 2.5.3 2024-02-17 04:37:38 +01:00
Franzi 898ebe4d6b
update element-web to 1.11.58 2024-02-17 04:37:16 +01:00
Franzi 012726a2ce
bundles/paperless: ensure we run collectstatic and restart services 2024-02-17 04:36:39 +01:00
Franzi 297726f297
bundles/backup-client: don't monitor backups for nodes which have exclude_from_monitoring 2024-02-13 14:24:27 +01:00
Franzi ac7f73588d
update paperless-ngx to 2.5.1 2024-02-13 14:18:45 +01:00
Franzi 8c4611452e
htz-hel.backup-sophie: allow sophie to access 2024-02-13 14:18:30 +01:00
Franzi 418015b484
update matrix-media-repo to 1.3.4 2024-02-13 14:14:34 +01:00
Franzi 698f203936
bundles/nginx: add option to not redirect domain aliases 2024-02-13 14:01:40 +01:00
Franzi 050931edf2
bundles/nginx: redirect domain_aliases to primary domain 2024-02-13 13:57:53 +01:00
Franzi fa375d0d69
carlene: keep git.kunsmann.eu alias around 2024-02-13 13:47:55 +01:00
Franzi 8f28781572
update travelynx to 2.5.16 2024-02-09 21:02:38 +01:00
Franzi 2ca460269e
update netbox to 3.7.2 2024-02-09 21:02:02 +01:00
Franzi c934bc45aa
update forgejo to 1.21.5-0 2024-02-04 17:40:06 +01:00
Franzi e2ed513169
update powerdnsadmin to 0.4.2 2024-02-04 17:27:05 +01:00
Franzi 512454a949
update paperless-ngx to 2.4.3 2024-02-04 17:26:52 +01:00
Franzi 80ca8b7e50
update element-web to 1.11.57 2024-02-04 17:26:33 +01:00
Franzi 8df380357e
update travelynx to 2.5.15 2024-02-04 17:26:13 +01:00
Franzi dcb9db3639
bundles/users: source users bashrc after loading global bashrc instead of overwriting it 2024-02-04 17:25:17 +01:00
Franzi c02a1f2a90
clean up some users 2024-02-03 19:12:53 +01:00
Franzi 643151c052
add home.wled-raketenlaemp 2024-01-30 21:02:23 +01:00
Franzi a3cc5a9347
bundles/kea-dhcp-server: add kea-lease-list script 2024-01-30 21:01:20 +01:00
Franzi e3b63a99c2
carlene: add some mail addresses to blocked 2024-01-23 09:31:02 +01:00
Franzi 980f4cb41a
bundles/nftables: add "globally blocked ips" 2024-01-23 09:30:41 +01:00
Franzi 5ffbe50b1e
add bundle:telegraf_airgradient 2024-01-23 09:30:13 +01:00
Franzi bb56f0fb9a
bundles/nftables: add feature to block ips 2024-01-21 11:44:13 +01:00
Franzi ee58509e93
bundles/postfix: add feature to block email recipients 2024-01-21 11:43:43 +01:00
Franzi 57c76e5eba
update travelynx to 2.5.11 2024-01-21 11:18:33 +01:00
Franzi fa8d05fc74
bundles/mixcloud-downloader: add elisa 2024-01-21 11:17:05 +01:00
Franzi 8fa488e411
bundles/icinga2: only send sms for HOST alerts 2024-01-21 11:16:46 +01:00
Franzi 28d4839822
update paperless to 2.4.0 2024-01-20 10:58:46 +01:00
Franzi ec183da69b
update netbox to 3.7.1 2024-01-20 10:58:32 +01:00
Franzi 87e30e84fa
update forgejo to 1.12.4-0 2024-01-20 10:58:12 +01:00
Franzi 44baf7cbf9
update element-web to 1.11.55 2024-01-20 10:57:56 +01:00
Franzi ccfe2ff0b0
home.nas: allow TV to access jellyfin without https
for some reason, connecting to the hostname fails, and connecting to the
ip using https leads to certificate errors
2024-01-15 21:52:48 +01:00
Franzi 70127f797b
home.kodi-wohnzimmer: set dummy/exclude_from_monitoring 2024-01-13 14:13:08 +01:00
Franzi 17334a8e3e
update paperless-ngx to 2.3.3 2024-01-13 14:13:05 +01:00
Franzi edc95ac2ab
update travelynx to 2.5.10 2024-01-13 14:13:03 +01:00
Franzi 58d978292a
update element-web to 1.11.53 2024-01-13 14:13:01 +01:00
Franzi 739ce09e60
bundles/homeassistant: requires ffmpeg now
atleast it's complaining about the lack of ffmpeg in its logs ...
2024-01-13 14:12:59 +01:00
Franzi f917f9a2b7
kunsi-p14s: remove voc-tracker-worker
we have a vm for that
2024-01-13 14:12:57 +01:00
Sophie Schiller e9d4c85676 wled-blobkette is new! 2024-01-13 14:12:20 +01:00
Franzi d5491648f2
bundles/mixcloud-downloader: download zotanmew sets 2024-01-03 22:25:59 +01:00
Franzi bc63ef97ab
bundles/arch-with-gui: install pipewire-zeroconf 2024-01-03 15:11:05 +01:00
Franzi fabe11d5b2
update travelynx to 2.5.9 2024-01-03 14:16:25 +01:00
Franzi 3bddab5f67
bundles/arch-with-gui: ensure we have avahi installed and running 2024-01-03 12:59:21 +01:00
Franzi 7c70c600f4
bundles/infobeamer-monitor: only alert online devices once 2024-01-01 11:38:39 +01:00
Franzi dfadffd921
add home.lgtv-wohnzimmer 2024-01-01 10:15:56 +01:00
Franzi fa107dcc3f
update paperless-ngx to 2.2.1 2024-01-01 10:12:51 +01:00
Franzi a05a809131
update travelynx to 2.5.7 2024-01-01 10:12:38 +01:00
Franzi adba83feea
update netbox to 3.7.0 2024-01-01 10:12:24 +01:00
Franzi 4889ea4d31
update mautrix-telegram to 0.15.1 2024-01-01 10:12:03 +01:00
Franzi 46e00d6fc8
bundles/nodejs: only install nodesource packages if debian does not ship that version 2024-01-01 10:11:11 +01:00
Franzi a929f24977
bundles/infobeamer-cms: more and better information 2023-12-31 08:50:45 +01:00
Franzi ec1efaafcc
bundles/infobeamer-cms: move static files outside repo root 2023-12-29 08:19:33 +01:00
Franzi 8dde3dba0b
home.downloadhelper: adjust home ip range 2023-12-28 11:32:44 +01:00
Franzi e33cc65cb1
bundles/infobeamer-monitor: only dump state if device is online 2023-12-27 14:55:15 +01:00
Franzi 2e2e8cf7c0
voc.infobeamer-cms: device has changed 2023-12-27 12:15:42 +01:00
Franzi c5ea690621
bundles/infobeamer-cms: less security needed 2023-12-27 12:12:24 +01:00
Franzi 14c01e3bf0
bundles/infobeamer-monitor: more alerts 2023-12-26 23:16:26 +01:00
Franzi 9be370f8df
bundles/infobeamer-monitor: improve code a bit 2023-12-26 15:02:56 +01:00
Franzi b5475df467
voc.infobeamer-cms: add infobeamer-monitor 2023-12-26 14:50:24 +01:00
Franzi 2670d60906
bundles/infobeamer-cms: new version requires new configs 2023-12-26 14:49:04 +01:00
Franzi 3ddc75d846
voc.infobeamer-cms: allow uploads on day 4 as well 2023-12-26 09:14:25 +01:00
Sophie Schiller 66bb1a80c6 voc.infobeamer-cms: move event start date to day 0 2023-12-25 23:00:32 +01:00
Franzi d9f9690518
update travelynx to 2.5.4 2023-12-25 10:40:17 +01:00
Franzi 2875bb7160
update element-web to 1.11.52 2023-12-25 10:28:43 +01:00
Franzi 8331c04b51
update forgejo to 1.21.3-0 2023-12-25 10:28:25 +01:00
Franzi e7e2fd184f
bundles/bird: fix bw test 2023-12-25 10:22:33 +01:00
Franzi 3b7e14755c
bundles/wireguard: clean up leftovers 2023-12-25 10:19:34 +01:00
Franzi 9cf5fa2e5f
ssl: bump home.kunbox.net 2023-12-25 10:11:18 +01:00
Franzi 005804d839
voc.infobeamer-cms: remove device kunsi-dev 2023-12-24 12:10:16 +01:00
Franzi 41d909f34d
update travelynx to 2.5.3 2023-12-19 07:48:14 +01:00
Franzi 3ea9da16e8
voc.infobeamer-cms: add all rooms and interrupts 2023-12-18 10:12:17 +01:00
Franzi 08628f4721
voc.infobeamer-cms: 37C3 2023-12-18 09:13:41 +01:00
Franzi 2fddfcd4ff
update mautrix-whatsapp to 0.10.5 2023-12-18 06:53:52 +01:00
Franzi 8ca2cfeeb2
update paperless-ngx to 2.1.3 2023-12-16 12:10:54 +01:00
Franzi 8435b2401f
update netbox to 3.6.7 2023-12-16 12:09:09 +01:00
Franzi 50bc26deaf
kunsi-p14s: use net.ifnames=0 2023-12-16 10:41:26 +01:00
Franzi b11fece803
EOL GCE 2023-12-16 10:23:44 +01:00
Franzi 24373d0ac9
bundles/icinga2: 15min downtime is enough for unattended upgrades 2023-12-16 10:19:33 +01:00
Franzi 5b19b2052d
remove rx300 leftovers 2023-12-13 21:38:13 +01:00
Franzi 9a026b1fd9
dismantle gce nameservers, part 1 2023-12-13 21:38:08 +01:00
Sophie Schiller b22ee8aa30 miniserver: new stickers 2023-12-13 21:31:51 +01:00
Franzi eb30240dc3
update paperless to 2.1.2 2023-12-13 19:55:30 +01:00
Franzi 3cff203bec
update forgejo to 1.21.2-1 2023-12-13 19:55:04 +01:00
Franzi 2fc8b125e3
update forgejo to 1.21.2-0 2023-12-12 07:28:20 +01:00
Franzi 86b8cd8edf
bundles/wireguard: remove wg_health_check 2023-12-10 17:01:01 +01:00
Franzi f3269ce979
bundle/wireguard: fix firewall for home.router 2023-12-10 16:59:53 +01:00
Franzi cd48cc5911
bump versatel and telekom ip ranges 2023-12-10 16:59:47 +01:00
Franzi 2497800f4a
home.router: remove wg external_hostname 2023-12-10 16:59:24 +01:00
Franzi 493dc91e0d
home.router: disable pppd restart at night 2023-12-10 16:59:14 +01:00
Franzi 63d42c6b42
bundles/wireguard: add no_autoconnect option 2023-12-10 16:58:52 +01:00
Franzi ffb5125ddd
bundles/wireguard: add option to set settings based on a specific peer 2023-12-10 14:48:24 +01:00
Franzi 0084257872
kunsi-p14s: nftables rules order is important 2023-12-09 13:42:31 +01:00
Franzi 4e0f286381
update paperless to 2.1.1 2023-12-08 07:56:59 +01:00
Franzi c8bb51715e
update netbox to 3.6.6 2023-12-07 21:12:47 +01:00
Franzi 526a0ec64d
update element-web to 1.11.51 2023-12-07 21:12:36 +01:00
Franzi 9a3134cf46
update paperless-ngx to v2.1.0 2023-12-07 21:12:27 +01:00
Franzi 4e50bfe1a2
htz-cloud.wireguard: wg for oneplus7 2023-12-05 07:21:38 +01:00
Franzi 81bb8653d8
update forgejo to 1.21.1-0 2023-11-29 16:43:08 +01:00
Franzi a21102724a
bundles/basic: use metadata.get() 2023-11-29 16:41:03 +01:00
Franzi d364b3c152
update mautrix-telegram to 0.15.0 2023-11-29 16:40:43 +01:00
Franzi 7b646110f9
add home.o2-joggler 2023-11-26 20:33:12 +01:00
Franzi 308b66c407
bundles/apt: explicitely uninstall python3-packaging 2023-11-26 11:14:17 +01:00
Franzi 7199371065
update element-web to 1.11.50 2023-11-26 10:41:16 +01:00
Franzi 22fb8fc162
add home.wled-aftonsparv 2023-11-25 12:40:40 +01:00
Franzi 935f68ee97
bundles/icinga2: remove map.spam-rbl.com from SPAM BLOCKLIST check
points to sale.domainserviceplatform.com nowadays
2023-11-24 08:23:56 +01:00
Franzi 1bce530ba1
update matrix-whatsapp to 0.10.4 2023-11-18 14:29:03 +01:00
Franzi 48b453ceed
update element-web to 1.11.49 2023-11-18 14:28:40 +01:00
Franzi 9bde59d7e3
carlene: update netbox to 3.6.5 2023-11-12 11:32:27 +01:00
Franzi 400b10789a
home.paperless: update debian bookworm, update to paperless-ngx 2023-11-12 11:28:40 +01:00
Franzi b454fe4745
htz-cloud.{pirmasens,wireguard}: update to debian bookworm 2023-11-12 11:01:50 +01:00
Franzi 75ef2e7bb9
bundles/wireguard: uninstall dkms package for debian > 11 2023-11-12 11:00:43 +01:00
Franzi d6db192f53
automatix fixes 2023-11-12 11:00:37 +01:00
Franzi 90ca65eb9f
carlene: remove die-brontosaurier-waren-es.org 2023-11-11 21:09:47 +01:00
Franzi 210f17da53
add ns-sargeras 2023-11-11 20:41:07 +01:00
Franzi 6f318f21ae
bundles/powerdns: use schema provided by the powerdns package 2023-11-11 20:38:45 +01:00
Franzi 1ae02ad4ec
bundles/php: some opcache settings 2023-11-11 20:16:33 +01:00
Franzi c473f730d2
htz-cloud.pirmasens: move salonkatrin.de to new website 2023-11-11 10:14:00 +01:00
Franzi 807024eb98
update element-web to 1.11.48 2023-11-08 07:51:11 +01:00
Franzi 529e999e69
voc.pretalx: more recent versions of everything please 2023-11-08 07:50:18 +01:00
Franzi 9476771565
update matrix-media-repo to 1.3.3 2023-11-04 14:14:22 +01:00
Franzi 99ca3b6282
home.nas: get jellyfin hardware transcoding to work 2023-10-30 20:14:15 +01:00
Franzi 0b155a8a4d
carlene: update travelynx to 2.5.1 2023-10-30 20:14:01 +01:00
Sophie Schiller 60fffd6714 remove phanpy 2023-10-27 19:29:33 +02:00
Franzi f9ef74600f
remove c3voc-jira
lives in c3voc infrastructure and monitoring now
2023-10-27 18:54:51 +02:00
Franzi 32afd183b1
update element-web to 1.11.47 2023-10-27 18:54:33 +02:00
Franzi 74bcebfd05
update netbox to 3.6.4 2023-10-22 08:59:42 +02:00
Franzi 01ffa3cc89
update mautrix-whatsapp to 0.10.3 2023-10-22 08:59:29 +02:00
Franzi 0e03038bdb
bundles/voc-tracker-worker: use EnvironmentFile 2023-10-22 08:58:48 +02:00
Franzi ea42188904
bundles/oidentd: disable socket based activation 2023-10-22 08:58:31 +02:00
Franzi 08bf3b6565
kunsi-p14s: disable ipv6 forwarding, we don't need that 2023-10-16 22:27:09 +02:00
Franzi 588f1218c2
htz-cloud.wireguard: fix firewall 2023-10-16 22:26:29 +02:00
Franzi 7a9401cd6c
kunsi-p14s: always have voc ip set up, enable forwarding and nat through wireless interface 2023-10-15 16:09:15 +02:00
Franzi ebc59f2843
update element-web to 1.11.46 2023-10-10 16:29:50 +02:00
Franzi 3ab970a04a
update netbox to 2.4.1 2023-10-09 07:35:52 +02:00
Franzi fb55226ba0
update forgejo to 1.20.5 2023-10-09 07:35:50 +02:00
Franzi b712142fd1 Merge pull request 'bw/phanpy add fediverse interface' (#65) from phanpy into main
Reviewed-on: #65
2023-10-08 16:00:26 +00:00
Sophie Schiller 34428034dc bw/phanpy add fediverse interface 2023-10-08 16:54:34 +02:00
Franzi 3c77ff530d
update travelynx to 2.4.0 2023-10-03 14:29:28 +02:00
Franzi 60a8c70cae
home.winkeeinhorn-vm: send email for node health 2023-10-01 17:00:10 +02:00
Franzi 3767825b84
ssl: bump *.home.kunbox.net 2023-10-01 16:57:13 +02:00
Franzi 7cfe098b20
update all the things
* element-web -> 1.11.45
* netbox -> 3.6.3
* travelynx -> 2.3.1
2023-09-30 17:38:54 +02:00
Franzi 497ecb5279
EOL htz-cloud.pleroma 2023-09-30 17:38:49 +02:00
Franzi d88645c7bd
move wireguard connection between kunsi-p14s and htz-cloud.wireguard to port 1194 2023-09-25 10:44:09 +02:00
Franzi ad9a920a48
bundles/icinga2: please only use "real" network interfaces instead of some vpn transfer ips 2023-09-24 21:07:21 +02:00
Franzi cd48cf495d
rework firewall setup 2023-09-24 21:01:51 +02:00
Franzi be62c1270f
remove isc-dhcp-server 2023-09-24 19:25:03 +02:00
Franzi b9d4204060
add wireguard connection between htz-cloud.wireguard and kunsi-p14s 2023-09-24 18:58:03 +02:00
Franzi a09b5b98ca
bundles/wireguard: disable health_checks if auto_connection is false 2023-09-24 18:57:27 +02:00
Franzi 458606649e
bundles/wireguard: add option to route networks through vpn 2023-09-24 18:56:50 +02:00
Franzi 0e40b03060
bundles/wireguard: only try to do full mesh if *we* are doing full mesh 2023-09-24 18:56:18 +02:00
Franzi 53ff288d89
bundles/systemd-networkd: combine templates for interfaces 2023-09-24 18:54:47 +02:00
Franzi e27e374983
bundles/vmhost: qemu-headless does not exist anymore, apparently 2023-09-24 18:49:31 +02:00
Franzi d6eb0b4228
bundles/bird: do not auto-generate config if peer does not use bird 2023-09-24 18:48:24 +02:00
Franzi 4084e764e4
add nginx proxy to jellyfin 2023-09-24 16:48:19 +02:00
Franzi 361bb6a563
install jellyfin onto home.nas 2023-09-24 15:26:00 +02:00
Franzi 74baeb4bf4
bundles/apt: suport deb822-style sources 2023-09-24 15:22:14 +02:00
Franzi 787607b5a1
automatix/upgrade_debian_bookworm: always upgrade zfs pools 2023-09-24 14:49:02 +02:00
Franzi c2460e5291
remove *.franzi.business wildcard cert 2023-09-24 10:52:51 +02:00
Franzi 77ed050ade
install oidentd on carlene, fix dependencies 2023-09-24 10:40:47 +02:00
Franzi 2d3d0ca02a
EOL OVH, EOL rx300 2023-09-24 10:34:54 +02:00
Franzi 6f31d6c0e4
add daisy to wireguard mesh 2023-09-23 16:46:45 +02:00
Franzi d999895450
home.router: let dyndns have ipv6 please 2023-09-23 16:42:00 +02:00
Franzi 951d254c7a
add location information to daisy 2023-09-23 15:15:28 +02:00
Franzi 07de570175
auto-generate full wireguard mesh between all nodes in libs.s2s.WG_AUTOGEN_NODES 2023-09-23 15:06:16 +02:00
Franzi e9f3268e15
clean up some leftovers 2023-09-23 15:06:03 +02:00
Franzi 3a0ed4a7f5
bundles/wireguard: autogenerate port number based on index in WG_AUTOGEN_NODES 2023-09-23 15:04:47 +02:00
Franzi d47f7db708
bundles/wireguard: only try to auto-generate ips and ports if nodes are present in WG_AUTOGEN_NODES 2023-09-23 15:04:11 +02:00
Franzi 0d79216ae5
bundles/wireguard: fix KeyError when running with no peers 2023-09-23 15:03:44 +02:00
Franzi 799cff884b
remove a bunch of deprecated nodes 2023-09-23 15:03:01 +02:00
Franzi 667fd6a2f0
update netbox to 3.6.2 2023-09-23 10:14:11 +02:00
Franzi 4a9596988d
update forgejo to 1.20.4-1 2023-09-23 10:13:56 +02:00
Franzi c444722291
add automatix to upgrade to debian bookworm 2023-09-23 10:12:12 +02:00
Franzi c59a3038a1
bundles/wide-dhcp-client: fix some bugs 2023-09-23 09:23:41 +02:00
Franzi a61a3816ed
hello, daisy! 2023-09-20 18:34:59 +02:00
Franzi a926825b4b
libs/defaults: quad9 is apparently half-broken, just use cloudflare instead 2023-09-20 18:21:57 +02:00
Franzi dda3c4162c
bundles/postfix: ensure /etc/mailname exists before installing postfix 2023-09-20 17:46:04 +02:00
Franzi c6b01aa219
update mautrix-whatsapp to 0.10.2 2023-09-20 14:43:25 +02:00
Franzi 8d2daeeb77
update mautrix-telegram to 0.14.2 2023-09-20 14:43:02 +02:00
Franzi 5d69595bbf
update pretalx to 2023.1.3 2023-09-19 15:05:41 +02:00
Franzi b17d7bccf6
update travelynx to 2.2.2 2023-09-19 15:05:19 +02:00
Franzi aab7a1abc4
update mautrix-whatsapp to 0.10.1 2023-09-19 15:04:57 +02:00
Franzi 3bf0e1124e
bundles/rspamd: disable greylisting
This only gets in the way. If mail is spam, it will get delivered to the
junk mail folder anyways.
2023-09-17 15:44:43 +02:00
Franzi 32141b6e98
update element-web and matrix-media-repo 2023-09-16 13:07:50 +02:00
Franzi 049cc899be
update travelynx to 2.2.1 2023-09-13 17:06:27 +02:00
Franzi d4f7f1b08d
update element-web to 1.11.42 2023-09-13 16:03:06 +02:00
Franzi 40a283d5c9
update element-web to 1.11.41 2023-09-12 20:15:33 +02:00
Franzi 4f260932c3
bundles/wireguard: health checks for everyone 2023-09-12 20:15:19 +02:00
Sophie Schiller 15eaa94397 miniserter: element-web update 2023-09-12 20:05:43 +02:00
Franzi 9bde0d9410
home.router: upgrade to bookworm and switch to kea-dhcp-server 2023-09-10 22:02:14 +02:00
Franzi aaf67f1a3d
bundles/apt: bookworm has their own firmware repo 2023-09-10 22:00:19 +02:00
Franzi 234e81431d
bundles/wireguard: easier snat setup 2023-09-10 21:27:03 +02:00
Franzi e70a86a6c1
htz-cloud.aurto: remove no longer needed keys 2023-09-10 21:16:02 +02:00
Franzi 5b1d814d40
bundles/icinga2: more timeout for check_spam_blocklist 2023-09-10 21:15:31 +02:00
Franzi 563735d31a
add new status page to icinga 2023-09-10 09:48:20 +02:00
Franzi b38bc67a60
move aurto to hetzner cloud 2023-09-09 23:02:42 +02:00
Franzi 7845faeac3
htz-cloud.wireguard: add IPv4 NAT 2023-09-09 23:02:40 +02:00
Franzi 5238937044
bundles/powerdns: do not put private ipv4 into dns if public ipv6 exists 2023-09-09 23:02:38 +02:00
Franzi 5fda0ab464
aurto.kunbox.net IN CNAME aurto.htz-cloud.kunbox.net 2023-09-09 23:02:36 +02:00
Sophie Schiller 30604db869 hedgedoc: makee usable on bookworm 2023-09-09 22:42:53 +02:00
Franzi e7a652503f
update htz-cloud.{afra,miniserver} to bookworm 2023-09-09 21:09:52 +02:00
Franzi 54d55bbb8d
update forgejo to 1.20.4 2023-09-09 21:09:30 +02:00
Franzi 40aeeab265
update matrix-media-repo to 1.3.1 2023-09-09 20:39:23 +02:00
Franzi b38ba55ed3
bundles/forgejo: fix missing slash 2023-09-09 20:31:05 +02:00
Franzi 1f2266302f
s/autojenkins/forgejo-carlene/ 2023-09-09 19:37:44 +02:00
Franzi cb6f12b218
add bundle:kea-dhcp-server 2023-09-09 18:40:10 +02:00
Franzi d9cb324bb6
update pretalx to 2023.1.0 2023-09-09 17:48:22 +02:00
Franzi 25a484f04e
remove ovh nodes from monitoring 2023-09-09 17:46:30 +02:00
Franzi f061196f0d
bundles/icinga2: add snmp package, needed for check_snmp to work 2023-09-09 17:02:51 +02:00
Franzi f2b538a168
bundles/homeassistant: allow more time for checking stuff 2023-09-09 16:54:33 +02:00
Franzi 711230a472
rx300: disable sms 2023-09-09 16:45:28 +02:00
Franzi b3b305076f
move die-brontosaurier-waren-es.org to carlene 2023-09-09 16:44:04 +02:00
Franzi 20ff2f40f4
add wireguard tunnel between htz-cloud and icinga2 2023-09-09 16:12:28 +02:00
Franzi fe4d4abc9c
bundles/wireguard: fix max interface length 2023-09-09 16:10:49 +02:00
Franzi a2ceb8cc3a
bundles/bird: announce subnets via all ips 2023-09-09 16:10:33 +02:00
Franzi 2b51812118
libs.tools.resolve_identifier(): add option to filter out linklocal ips and only physical interfaces 2023-09-09 15:37:37 +02:00
Franzi 6539923644
update travelynx to 2.2.0 2023-09-09 15:28:29 +02:00
Franzi 4a0aa81e8d
carlene: add new icinga2 host to ntfy exemptions 2023-09-09 15:28:07 +02:00
Franzi bf6ed289e1
bundles/icinga2: fix stupid in check_spam_blocklist 2023-09-09 14:24:34 +02:00
Franzi e6e9e425fc
move icinga2 to new host 2023-09-09 14:12:24 +02:00
Franzi 99e261fe24
libs/s2s: switch to static list of wireguard peers 2023-09-09 14:11:39 +02:00
Franzi 5db3856218
bundles/icinga2: remove obsolete check 2023-09-09 14:10:58 +02:00
Franzi e029329a03
bundles/icinga2: handle dig status messages in check_spam_blocklist 2023-09-09 14:10:27 +02:00
Franzi 8f500b121c
voc.infobeamer-cms: add hexchen 2023-09-09 13:56:17 +02:00
Franzi deb0c7b597
bundles/unbound: ensure /usr/share/dns exists 2023-09-09 13:55:58 +02:00
Franzi d1bb94fd74
bundles/icinga2: more auto-generation of stuff 2023-09-09 13:55:16 +02:00
Franzi 7df6b1d13a
bundles/wireguard: name wg interfaces according to their peers 2023-09-09 13:55:03 +02:00
Franzi 7b8740601f
carlene: update netbox to 3.6.1 2023-09-07 07:23:19 +02:00
Franzi 7e335cc3ae
move some stuff from rx300 to carlene 2023-09-03 18:26:54 +02:00
Franzi 9dacd4a14b
move mta-sts vhost to carlene 2023-09-03 18:22:51 +02:00
Franzi e2e5eaa236
bundles/nextcloud: more upload limit please 2023-09-03 18:15:17 +02:00
Franzi 5863105d64
dns: move kunbox.net to carlene 2023-09-03 18:10:55 +02:00
Franzi 895f26d2f3
rx300: remove radicale 2023-09-03 17:24:42 +02:00
Franzi e087daae94
nextcloud: add cache-control headers to static assets 2023-09-03 12:28:53 +02:00
Franzi 0964bd1695
update travelynx to 2.1.2 2023-09-03 12:20:40 +02:00
Franzi 94bee38ca7
bundles/php: fix some typos 2023-09-03 12:20:24 +02:00
Franzi a33076186b
bundles/nextcloud: install php-apcu 2023-09-03 12:19:34 +02:00
Franzi 2d201ebf0e
new access points, who dis? 2023-09-03 12:02:36 +02:00
Franzi ad24c0ea5b
add bundle:nextcloud to carlene 2023-09-02 21:14:38 +02:00
Franzi 0001b5639b
kunsi-p14s: bug has been fixed 2023-09-02 20:49:34 +02:00
Franzi ea77c68e16
bundles/nginx: hide content security headers coming from php 2023-09-02 20:49:05 +02:00
Franzi 72607adbfe
bundles/nginx: allow vhosts to set their own index files 2023-09-02 20:48:41 +02:00
Franzi 8cfcefcfc4
bundles/matrix-stickerpicker: fix backup paths 2023-09-02 20:48:15 +02:00
Franzi b08c9fb5a4
replace matrix-dimension on rx300 with matrix-stickerpicker on carlene 2023-09-02 13:36:15 +02:00
Franzi fc75e92a78
dns: new mail server 2023-09-01 06:21:15 +02:00
Franzi 194c60ddb2
bundles/ntfy: do not create timing logs 2023-09-01 06:20:19 +02:00
Franzi 59fd245a3f
add dynamic node attribute for last apply
so we can check if something has changed in the repo since the last
apply
2023-09-01 06:16:09 +02:00
Franzi 43d26650b0
update netbox to 3.6.0 2023-09-01 06:15:54 +02:00
Franzi e3784158de
update element-web to 1.11.40 2023-09-01 06:15:38 +02:00
Franzi dd8fd452eb
move mail from rx300 to carlene 2023-09-01 05:55:27 +02:00
Franzi 97afd6c522
bundles/php: add php8.2 2023-09-01 05:54:54 +02:00
Franzi a838f6c5bd
bundles/postfixadmin: move vhost generation to reactor 2023-09-01 05:54:23 +02:00
Franzi b01dcb0ff9
bundles/nginx: enable creating logs for debugging purposes 2023-09-01 05:53:37 +02:00
Franzi 553ed05ba2
remove freifunk access points, replace with aruba 2023-08-30 19:39:36 +02:00
Franzi 01531c62de
bundles/rsyslogd: keep more logfiles 2023-08-28 17:26:34 +02:00
Franzi d450a43a96
switches-mikrotik: add rsyslog server 2023-08-28 17:25:34 +02:00
Franzi 39576fda38
add bundle:rsyslogd 2023-08-28 17:21:48 +02:00
Franzi 36dac3be7c
bundles/weechat: fix weechat fifo path 2023-08-27 11:13:35 +02:00
Franzi ab3f2df29f
update travelynx to 2.1.1 2023-08-27 10:30:22 +02:00
Franzi bb478430b9
migrate ntfy from rx300 to carlene 2023-08-27 09:38:06 +02:00
Franzi ad2312b715
matrix stuff: make journal usable again 2023-08-27 09:28:57 +02:00
Franzi 7dda27b69d
migrate miniflux from rx300 to carlene 2023-08-27 09:17:55 +02:00
Franzi 50cba7cb49
bundles/miniflux: use metadata.get() 2023-08-27 09:17:34 +02:00
Franzi 0190555f16
bundles/matrix-synapse: do not log every request 2023-08-27 09:17:12 +02:00
Franzi 757e9e6bb8
bundles/nginx: add option to disable anon_timing log 2023-08-26 17:21:23 +02:00
Franzi c6bb00c124
bundles/systemd: ensure we're not logging to syslog 2023-08-26 07:28:12 +02:00
Franzi 8cf2dde6e0
add bundle:weechat, migrate weechat from rx300 to carlene 2023-08-25 12:52:31 +02:00
Franzi c6120accc1
bundles/icinga2: fix monitoring config 2023-08-25 11:11:48 +02:00
Franzi d0302d826a
bundles/icinga2: add icingaweb2 monitoring config 2023-08-25 11:09:36 +02:00
Sophie Schiller 0977dd5042 miniserver: move webdump to zfs 2023-08-24 19:30:25 +02:00
Sophie Schiller 48d3f8eee6 miniserver hedgedoc update 2023-08-24 19:13:09 +02:00
Franzi bca4d152ea
bundles/zfs: print zfs status output if pool is not online 2023-08-24 07:41:37 +02:00
Franzi 33d42e2472
bundles/matrix-synapse: ensure we're logging to journal 2023-08-23 17:25:41 +02:00
Franzi e754b68f06
carlene: update travelynx to 2.0.3 2023-08-23 17:18:34 +02:00
Franzi bf9b9b4189
home.hass: update to bookworm 2023-08-23 17:18:11 +02:00
Franzi 10a9e61026
bundles/homeassistant: changes for bookworm 2023-08-23 17:17:42 +02:00
Franzi daae710624
bundles/forgejo: fix version string in update check 2023-08-23 13:47:38 +02:00
Franzi 8482f6a270
{c3voc,entropia}-jira: more monitoring 2023-08-23 13:46:44 +02:00
Franzi a8adde8c63
update forgejo to 1.20.3-0 2023-08-23 12:40:37 +02:00
Franzi 6aa0114db5
update mautrix-whatsapp to 0.10.0 2023-08-23 12:39:31 +02:00
Franzi 7a1dc40584
voc.infobeamer-cms: new domain and update for cccamp23 2023-08-23 12:19:56 +02:00
Franzi aecaebcefd
carlene: add web vhost for skye 2023-08-23 12:19:24 +02:00
Franzi 20d1c0af05
update netbox to 3.5.8 2023-08-23 12:18:58 +02:00
Franzi 4b6f680248
update element-web to 1.11.39 2023-08-23 12:18:25 +02:00
Franzi 8ec785ffd8
update element-web to 1.11.38 2023-08-05 08:33:42 +02:00
Franzi 1834bedf91
remove htz-cloud.luther 2023-08-04 08:07:41 +02:00
Franzi 726023db17
htz-cloud.miniserver: update hedgedoc to 1.9.9 2023-08-02 19:51:50 +02:00
Franzi 5604763303
update element-web to 1.11.37 2023-08-02 16:49:29 +02:00
Franzi 5f0ba20622
move forgejo from rx300 to carlene 2023-08-02 16:38:32 +02:00
Franzi d3f55dc821
htz-cloud.afra: add fedi redirects 2023-08-02 16:38:14 +02:00
Franzi b692b09c00
rename bundle:gitea to bundle:forgejo 2023-08-02 16:37:48 +02:00
Franzi f1045172fd
rx300: delete unused configs 2023-08-02 08:09:30 +02:00
Franzi 88ccd3ca72
migrate netbox from rx300 to carlene 2023-08-02 08:07:36 +02:00
Franzi a16fcdd935
migrate travelynx to carlene 2023-08-01 21:22:28 +02:00
Franzi c121110f00
bundles/travelynx: prepare for bookworm 2023-08-01 21:21:31 +02:00
Franzi 3826ccf4ec
remove reboot mails, noone does care about these anyway 2023-07-26 08:29:37 +02:00
Franzi 3a8e3ce01b
home.kodi-wohnzimmer: do not reboot automatically 2023-07-26 08:24:25 +02:00
Franzi 92acae3cbe
move element-web from rx300 to carlene 2023-07-23 15:48:07 +02:00
Franzi 4b434e7946
bundles/mixcloud-downloader: fix username 2023-07-23 14:04:01 +02:00
Franzi 00cbabea1b
bundles/mixcloud-downloader: fix duplicate 2023-07-23 14:02:09 +02:00
Franzi 80e0a29a31
htz-cloud.afra: update element-web to 1.11.36 2023-07-23 13:59:48 +02:00
Franzi 9d1fc65b82
update mautrix-whatsapp to 0.9.0 2023-07-23 13:59:45 +02:00
Franzi 21ec75a398
carlene: technician replugged the network cable to the other port :/ 2023-07-23 13:59:40 +02:00
Franzi 3ab8eb88bd
move matrix from rx300 to carlene 2023-07-23 13:59:37 +02:00
Franzi 272a11f7d3
bundles/postgresql: remove version-specific options 2023-07-23 13:59:34 +02:00
Franzi 9aacb8f506
htop: less room for cpus please 2023-07-23 13:59:32 +02:00
Franzi 76eef92ee2
bundles/postgresql: some improvements 2023-07-23 13:59:29 +02:00
Franzi 54d0c42da6
bundles/matrix-synapse: auto-trust all own servers as keyservers 2023-07-23 13:59:26 +02:00
Sophie Schiller f12d19fec6 htz-cloud.miniserver: fix element-web 2023-07-22 15:52:28 +02:00
Franzi e9ee2039d5
bundles/smartd: ignore non-digit values in telegraf stats 2023-07-13 21:41:52 +02:00
Franzi 471e2ba6f6
bundles/{influxdb2,telegraf}: it's always the same, just use 'stable main' 2023-07-13 21:41:22 +02:00
Franzi 838b61a2b9
bundles/grafana: remove useless "power on hours" graph 2023-07-13 21:40:55 +02:00
Franzi 8d5fe0d926
carlene: add smartd 2023-07-13 21:31:44 +02:00
Franzi 6b27128b6d
bundles/systemd-timers: add exclude_from_monitoring 2023-07-13 21:31:25 +02:00
Franzi 3936e64227
bundles/smartd: use systemd-timers 2023-07-13 21:31:11 +02:00
Franzi bbfa985e1d
bundles/smartd: ignore partitions in smartd check 2023-07-13 21:30:49 +02:00
Franzi d0825a51ee
bundles/smartd: unit names have changed 2023-07-13 21:30:29 +02:00
Franzi 14ec3c0ee2
gce: disable ipv6
Because this is "the cloud"™, gce does not support ipv6.
2023-07-13 20:48:04 +02:00
Franzi 59c913b97c
carlene: add bundle:check-mail-received 2023-07-13 20:28:33 +02:00
Franzi 97307fc6f3
nodes.py: demagify toml nodes 2023-07-13 20:28:28 +02:00
Franzi 70bd7d295d
bundles/cron: less strict dependencies 2023-07-13 20:19:17 +02:00
Franzi 40c90163ad
EHLO carlene 2023-07-13 20:09:04 +02:00
Franzi cff3fe558e
bundles/zfs: more ordering please 2023-07-13 20:04:43 +02:00
Franzi 5fa8c72863
debian bookworm time \o/ 2023-07-13 20:02:38 +02:00
Franzi a5677e7d15
ssl: bump _.franzi.business 2023-07-13 08:04:17 +02:00
Franzi c6b20aea4e
ssl: bump _.home.kunbox.net 2023-07-13 08:04:04 +02:00
Franzi b8600255fc
update netbox to 3.5.6 2023-07-11 05:55:11 +02:00
Franzi cba412ecc1
update forgejo to 1.19.4-0 2023-07-11 05:54:44 +02:00
Franzi fa4ea575b4
bundles/users: show last five logins on login 2023-07-11 05:40:39 +02:00
Sophie Schiller e9ee11cd08 element-web updates 2023-07-10 18:45:58 +02:00
Franzi d5f5fd853b
bundles/element-web: remove --openssl-legacy-provider 2023-06-29 05:39:30 +02:00
Franzi dff2bb0289
htz-cloud.afra: moar power plx 2023-06-29 05:38:55 +02:00
Franzi c3fe24c7b9
update element-web to 1.11.34 2023-06-29 05:37:55 +02:00
Franzi 91b3d2f850
update mautrix-whatsapp to 0.8.6 2023-06-29 05:20:00 +02:00
Franzi 341a43baf3
update netbox to 3.5.4 2023-06-29 05:18:19 +02:00
Franzi 3a2006739c
update mautrix-telegram to 0.14.1 2023-06-29 05:17:35 +02:00
Franzi 8968252ba6
bundles/nginx: fix content_type for logrotate config 2023-06-21 23:27:30 +02:00
Franzi 6fb982e94c
rx300: update travelynx to 1.32.0 2023-06-21 23:25:26 +02:00
Franzi 2e6e80d1c5
voc.infobeamer-cms: gpn21 2023-06-21 23:25:19 +02:00
Franzi 42e20b122c
bundles/icinga2: add non-listing results to check_spam_blocklist 2023-06-21 23:25:12 +02:00
Sophie Schiller 85b95576c4 infobeamer-cms: additional moderators 2023-06-10 11:01:53 +02:00
Sophie Schiller d17b146476 hedgedoc new release 2023-06-04 23:17:55 +02:00
Franzi 0ca35a2e7e
update netbox to 3.5.3 2023-06-03 16:31:21 +02:00
Franzi d360dfb087
update mautrix-telegram to 0.14.0 2023-06-03 16:31:08 +02:00
Franzi 712454c1e3
bundles/postgresql: more cache, please 2023-06-03 13:21:23 +02:00
Franzi 5b9ce2faa1
fix trailing whitespace in tmux.conf of sophie 2023-05-26 10:49:23 +02:00
Franzi 55f80b468e
bundles/matrix-registration: fix bugs 2023-05-26 10:48:01 +02:00
Franzi c3701da258
add htz-cloud.afra 2023-05-26 07:11:25 +02:00
Franzi e6111efe2d
bundles/matrix-registration: configurable client_redirect 2023-05-26 07:11:22 +02:00
Sophie Schiller b8805c6f97 bw/data new tmux theme for sophie 2023-05-25 00:57:51 +02:00
Franzi 829ebccad6
update travelynx to 1.31.4 2023-05-23 19:33:30 +02:00
Franzi 926776fba2
update netbox to 3.5.2 2023-05-23 19:29:27 +02:00
Franzi 9fc0004746
add option to exclude hosts from public status page 2023-05-21 06:59:34 +02:00
Franzi b35bfc85e9
ovh.icinga2: fix simple-icinga-dashboard 2023-05-20 20:12:24 +02:00
Franzi 2607049f8d
add bundle:matrix-registration 2023-05-20 15:15:35 +02:00
Franzi 6374f6b71e
bundles/matrix-synapse: support home servers without appservices 2023-05-20 15:10:57 +02:00
Franzi c44badb1e1
update matrix.org gpg key 2023-05-20 15:07:24 +02:00
Franzi 6a573b3231
README: add system naming 2023-05-20 15:00:07 +02:00
Franzi 1708f6ae17
bundles/matrix-synapse: include signing key in backups 2023-05-20 14:23:52 +02:00
Franzi 3a5c944926
scripts/passwords-for: ensure keys are strings 2023-05-20 14:07:25 +02:00
Franzi b1567443ca
bundles/zfs: support other cpu architectures 2023-05-20 12:38:27 +02:00
Franzi 0db4c19457
htz-cloud.sewfile: update to debian bullseye 2023-05-20 12:19:46 +02:00
Franzi b955633a23
automatix/upgrade_debian_bullseye: do zfs another way 2023-05-20 11:47:39 +02:00
Franzi 2d433264e7
htz-cloud.influxdb: update to debian bullseye 2023-05-20 11:25:43 +02:00
Franzi 32e6e61a3b
bundles/systemd: fix dependencies 2023-05-20 11:25:26 +02:00
Franzi cff42ef0f7
update home.downloadhelper to debian bullseye 2023-05-20 11:13:48 +02:00
Franzi c07b428cc9
add automatix script to upgrade systems to debian bullseye 2023-05-20 11:13:42 +02:00
Franzi 3aedd7395b
update htz-cloud.luther to debian bullseye 2023-05-20 10:53:15 +02:00
Franzi 048fb83ee7
bundles/apt: support spreading unattended-upgrades in a group 2023-05-20 07:46:23 +02:00
Franzi 92cca7f396
isort the repo 2023-05-20 07:46:02 +02:00
Franzi 604170f133
Jenkinsfile: remove isort check, because it behaves differently between venv and non-venv mode 2023-05-20 07:44:23 +02:00
Franzi 9b1cea1e1d
update mautrix-whatsapp to 0.8.5 2023-05-19 22:01:40 +02:00
Franzi a44a3b3024
ns-ghirahim: set postfix relayhost 2023-05-19 21:58:20 +02:00
Franzi 768a445e84
dns/kunbox.net: fix primary name server 2023-05-16 20:31:05 +02:00
Franzi a6f865104c
rename nameservers, once again 2023-05-16 20:05:40 +02:00
Franzi 1260410eae
bundles/powerdns: split "add ip to autoprimaries" and "fix hostname for autoprimary" 2023-05-16 19:56:21 +02:00
Franzi 261c284f2f
add ns-digitalocean 2023-05-16 19:25:23 +02:00
Franzi 6d2cf0fa24
bundles/powerdns: ensure primary servers are in database 2023-05-16 19:25:17 +02:00
Franzi f8416215d5
ns-ionos: move powerdnsadmin webinterface to new hostname 2023-05-16 18:08:00 +02:00
Franzi a4bb7f89ec
rename ns-primary to ns-ionos 2023-05-16 17:58:31 +02:00
Franzi b68a80c8c3
home.nas: replace failed disk 2023-05-16 13:01:04 +02:00
Franzi a15cc2f121
wip 2023-05-15 15:56:42 +02:00
Franzi 1ed9a4ff15
update travelynx to 1.31.2 2023-05-15 12:11:32 +02:00
Franzi 034047dcd8
update netbox to 3.5.1 2023-05-15 12:09:22 +02:00
Franzi 6449797b06
update forgejo to 1.19.3-0 2023-05-15 12:09:09 +02:00
Franzi 77930b9a2f
update element-web to 1.11.32 2023-05-15 12:09:06 +02:00
Franzi b2ad9ce3d8
bundles/jugendhackt_tools: fix static root 2023-05-15 12:08:57 +02:00
Franzi 906994b50f
rx300: add bundle:jugendhackt_tools 2023-05-06 17:27:02 +02:00
Franzi 714fa88d72
bundles/ntfy: fix directory modes 2023-05-06 17:26:59 +02:00
Franzi 556e0d75c8
home.nas: add another backup folder 2023-05-06 17:26:57 +02:00
Franzi f12a176759
bundles/sysctl: we need 99-sysctl.conf on debian 2023-05-06 17:26:54 +02:00
Sophie Schiller 83930e12bc sophie's desktopbackups 2023-04-29 13:15:36 +02:00
Franzi e59aa59124
update grafana gpg key 2023-04-28 16:47:09 +02:00
Franzi 87184bc07b
update netbox to 3.5.0 2023-04-28 16:45:01 +02:00
Franzi 5a594ad308
update element-web to 1.11.30 2023-04-28 16:44:48 +02:00
Franzi 9a32534c49
bundles/icinga2: remove uceprotect level 2 from check_spam_blocklist 2023-04-28 16:42:55 +02:00
Franzi 7b8eb63672
rx300: update forgejo to 1.19.1-0 2023-04-23 15:16:51 +02:00
Franzi acc3f3022a
rx300: update mautrix-whatsapp to 0.8.4 2023-04-23 15:16:25 +02:00
Franzi 1c42226a42
ssl: bump _.home.kunbox.net 2023-04-23 15:14:10 +02:00
Franzi ac8c1fd3f3
ssl: bump _.franzi.business 2023-04-23 15:13:50 +02:00
Franzi d78102adb8
voc.pretalx: is bullseye now 2023-04-23 13:22:01 +02:00
Franzi f2e238d879
update ALL the things 2023-04-13 17:50:26 +02:00
Sophie Schiller 19feb78bf6 Merge pull request 'htz-cloud.miniserver: remove nonfunctional dimension' (#62) from sophie-dimension-cleanup into main
Reviewed-on: #62
2023-04-09 22:49:10 +00:00
Franzi b3e490720e
bundles/icinga2: add notification support via ntfy 2023-04-09 17:32:36 +02:00
Franzi 25aabad865
voc.infobeamer-cms: add jwacalex 2023-04-09 14:36:14 +02:00
Franzi c6cf997102
bundles/ntfy: add option to disable unauthorized writes 2023-04-09 12:24:23 +02:00
Franzi f17117d640
add hooks/test_apply_dummy_mode 2023-04-09 12:24:03 +02:00
Franzi 5ff46edd8c
voc.infobeamer-cms: prepare for easterhegg 2023-04-09 12:10:29 +02:00
Franzi 4d46401629
bump bundlewrap 2023-04-09 12:10:17 +02:00
Franzi 3e497c3545
rx300: install ntfy 2023-04-09 12:10:04 +02:00
Franzi 95d5c0cfc8
bundles/ntfy: update config to more recent version 2023-04-09 12:09:28 +02:00
Franzi 2297f1dacf
kunsi-p14s: more packages please 2023-04-03 18:39:42 +02:00
Franzi d7d46c2681
rx300: update travelynx to 1.30.11 2023-04-03 18:39:14 +02:00
Sophie Schiller e573f42730 htz-cloud.miniserver: remove nonfunctional dimension 2023-04-02 12:14:27 +02:00
Franzi 68c4ee9482
update element-web to 1.11.28 2023-04-01 07:08:32 +02:00
Franzi a27ac38bec
add bundle:telegraf-monitors-mikrotik 2023-04-01 07:01:03 +02:00
Franzi 4bcf15a64c
voc.pretalx: do rsync backups, too 2023-04-01 06:59:13 +02:00
Franzi 9a6be52b05
bundles/backup-client: use set instead of list 2023-04-01 06:58:48 +02:00
Franzi 60fc0e64e7
bundles/{apt,pacman}: ignore sshd processes spawned by user nobody 2023-04-01 06:50:37 +02:00
Franzi 28298d3ce6
replace predefined ssh keys with generated ones 2023-03-31 21:45:09 +02:00
Franzi 8d3e913a8c
kunsi-p14s: br0 contains all wired interfaces 2023-03-31 16:47:43 +02:00
Franzi bbbcfee042
add group switches-mikrotik 2023-03-31 16:47:27 +02:00
Franzi 5af85ad535
remove home.sw02 2023-03-29 18:36:14 +02:00
Franzi a9874ce8fb
htz-cloud.influxdb: switch ip has changed 2023-03-29 18:22:34 +02:00
Franzi 83f720d234
bump netbox-dump 2023-03-29 18:19:17 +02:00
Franzi 7ff8319f09
home.nas: fix firewall and interface names 2023-03-29 18:19:14 +02:00
Franzi 9b11e69a73
home.router: fix vlans 2023-03-29 18:19:11 +02:00
Franzi 3c921e5d2e
rename home.bubble01 to home.mitel-rfp35 2023-03-29 18:19:07 +02:00
Franzi 5116ba8a27 home.downloadhelper: fix vlan id 2023-03-29 16:17:44 +00:00
Franzi 7eb2bf68d8 home.switch-rack: use password for authentication 2023-03-29 16:17:44 +00:00
Franzi fe7d57aca0 home.downloadhelper: more vlans 2023-03-29 16:17:44 +00:00
Franzi f6da1f6d71 home.nas: rotate all the vlans 2023-03-29 16:17:44 +00:00
Franzi 317a3df11d home.router: rotate all the vlans 2023-03-29 16:17:44 +00:00
Franzi fe9716088a home.downloadhelper: rotate all the vlans 2023-03-29 16:17:44 +00:00
Franzi 64716d12cf bump netbox dump for home.switch-rack 2023-03-29 16:17:44 +00:00
Franzi 0522425218
rx300: we need bigger emails 2023-03-29 10:48:06 +02:00
Franzi ee68c9075b
rx300: update netbox to 3.4.7 2023-03-28 23:17:29 +02:00
Franzi 6835793d6a
rx300: update travelynx to 1.30.9 2023-03-28 22:16:59 +02:00
Franzi 6c48c25a94
update element-web to 1.11.26 2023-03-28 19:18:45 +02:00
Franzi 8ec7f9e992
rx300: update forgejo to 1.19.0-2 2023-03-28 19:18:26 +02:00
Franzi f254b9bb12
kunsi-p14s: fix mountpoint for rootfs 2023-03-27 14:09:00 +02:00
Franzi ca614efec1
add home.switch-rack 2023-03-26 15:58:29 +02:00
Franzi 190833c54a
bundles/lldp: do not run for routeros devices 2023-03-26 15:58:09 +02:00
Franzi 66c6a92ec5
scripts/netbox-dump: also add interface type and ip addresses 2023-03-26 15:21:16 +02:00
Franzi a738b49aa4
add scripts/netbox-dump 2023-03-22 21:19:41 +01:00
Franzi 08aadcaf36
rx300: update netbox to 3.4.6 2023-03-21 07:29:55 +01:00
Franzi 51cdcba9e9
rx300: update mautrix-whatsapp to 0.8.3 2023-03-21 07:29:37 +01:00
Franzi 8da5650134
htz-cloud.miniserver: update element-web to 1.11.25 2023-03-21 07:29:15 +01:00
Franzi 445ec0ea15
rx300: update element-web to 1.11.25 2023-03-19 15:43:50 +01:00
Franzi e3b1d14fe7
bundles/miniflux: fix proxy settings 2023-03-19 15:43:34 +01:00
Franzi cc49d34475
bundles/matrix-synapse: add script to reset the federation timeout 2023-03-19 15:43:09 +01:00
Franzi b1b8df7dd8
remove some old scripts 2023-03-19 15:42:43 +01:00
Franzi 9c590635b6 kunsi-p14s: install sdl_ttf 2023-03-14 09:24:12 +01:00
Franzi de6579140d
rx300: update travelynx to 1.30.7 2023-03-12 10:59:52 +01:00
Franzi 985bb3cdec
ns-primary: update powerdnsadmin to 0.4.0 2023-03-12 10:59:35 +01:00
Franzi 5272a212a7
voc.pretalx: update broadcast-tools to 1.1.0 2023-03-07 18:23:22 +01:00
Franzi b1d032df90
voc.pretalx: update pretalx to 2.3.2 2023-03-07 18:22:55 +01:00
Franzi d4e1da0689
update ALL the things! 2023-03-03 21:23:02 +01:00
Franzi 6cb56ab2ec
rx300: allow more postgresql connections 2023-02-17 05:03:39 +01:00
Franzi 5c4fc37a37
update mautrix-whatsapp to 0.8.2 2023-02-17 05:03:25 +01:00
Franzi 68d51450fd
update forgejo to 1.18.3-1 2023-02-17 05:03:01 +01:00
Franzi d57844928d
update matrix-media-repo to 1.2.13 2023-02-17 05:02:40 +01:00
Franzi 4975562fbc
update element-web to 1.11.23 2023-02-17 05:02:13 +01:00
Franzi 25e03582b0
entropia-jira- stuff has changed 2023-02-17 05:01:28 +01:00
Franzi b49dc56c33
Jenkinsfile: also check using isort 2023-02-05 17:36:16 +01:00
Franzi 4122a7ccf8
isort the repo 2023-02-05 17:30:58 +01:00
Franzi 429bc2a7c6
bundles/homeassistant: fix .provides() 2023-02-05 17:28:52 +01:00
Franzi 6f9fb78d4e
rx300: update netbox to 3.4.4 2023-02-05 17:25:37 +01:00
Franzi bb1b430d16
rx300: update forgejo to 1.18.3-0 2023-02-05 17:25:18 +01:00
Franzi 1906e7c256
bundles/gitea: derive version number from installed gitea 2023-02-05 17:24:50 +01:00
Franzi 7dcad0d584
update element-web to 1.11.22 2023-02-04 16:30:53 +01:00
Franzi 077b25f67e
bundles/miniflux: repo has changed
... also now everything is unsigned, yeaaaaaaaaaaaah
2023-02-02 19:29:28 +01:00
Franzi 527181bba8
home.router: fix dyndns hostname 2023-01-29 11:15:59 +01:00
Franzi 53e189c644
ssl: bump _.home.kunbox.net 2023-01-29 11:14:31 +01:00
Franzi eeceebfd23
dns: add new primary nameserver 2023-01-29 11:06:58 +01:00
Franzi 7bd8237876
bashrc: add 'ipa' alias 2023-01-29 11:03:38 +01:00
Franzi 55bebda4d4
bundles/powerdns: fix socket path for telegraf 2023-01-29 11:02:49 +01:00
Franzi ef16a2d081
bundles/powerdns: rework zone file generation 2023-01-29 11:01:48 +01:00
Franzi 264ea3e8a7
bundles/systemd-networkd: remove isc-dhcp-client 2023-01-29 10:13:26 +01:00
Franzi 109914c039
bundles/powerdnsadmin: create virtualenv after packages are installed 2023-01-29 10:04:47 +01:00
Franzi 8df4441028
rx300: update netbox to 3.4.3 2023-01-29 09:44:28 +01:00
Franzi 733e4bf0e5
rx300: update mautrix-whatsapp to 0.8.1 2023-01-29 09:44:09 +01:00
Franzi 6cec7e2c9c
rx300: update element-web to 1.11.20 2023-01-29 09:43:49 +01:00
Franzi f6b0c587d0
rename some gitea stuff to forgejo 2023-01-29 09:42:36 +01:00
Franzi a8e2e6b5ad
bundles/gitea: adjust config for 1.18 2023-01-29 09:40:38 +01:00
Franzi 17aee0f6bb
update gitea to forgejo 1.18.2-1 2023-01-29 09:35:29 +01:00
Franzi a3218ac41f
bundles/sshmon: fix hostname in check_forgejo_for_new_release 2023-01-29 09:35:05 +01:00
Franzi 932fd9e994
scripts/letsencrypt-wildcard: remove trailing dot from dns records
we're now using a delegated zone, thus this is wrong there
2023-01-29 09:26:52 +01:00
Franzi 2e6e6b663e
bundles/powerdns: also send out notify to all secondaries 2023-01-29 09:21:59 +01:00
Franzi 74d44535a8
dns: fix cname for acme-challenge 2023-01-29 09:11:02 +01:00
Franzi cb2b01a2b4
dns: fix cname for acme-challenge 2023-01-29 08:56:13 +01:00
Franzi 9684e94e4d
dns: switch everything but kunbox.net to psql 2023-01-29 08:47:50 +01:00
Franzi c93a4d0a99
powerdns: switch to AXFR for secondarie 2023-01-29 08:35:08 +01:00
Franzi 31e614ab3b
bundles/powerdns: allow exposing API to the world 2023-01-29 08:06:27 +01:00
Franzi 60585a3716
bundles/homeassistant: fix typo 2023-01-29 07:04:38 +01:00
Franzi c717e86f70
bundles/homeassistant: fix website_check 2023-01-29 07:03:28 +01:00
Franzi ff8928dd0b
remove openhab, move backups to hass 2023-01-29 06:54:48 +01:00
Franzi ba97cd432f
bundles/icinga2: icingaweb2 apparently ships monitoring module by itself 2023-01-29 06:45:34 +01:00
Franzi f45a759a43
ssl: bump _.franzi.business 2023-01-29 06:42:07 +01:00
Franzi b4b3fec8a7
move franzi.business to psql-managed zone 2023-01-29 06:41:47 +01:00
Franzi 1899dfc278
dns: update to debian bullseye and postgresql 15 2023-01-28 18:10:35 +01:00
Franzi d8aa1e80d0
get rid of molly-guard 2023-01-28 18:10:32 +01:00
Franzi e634c184c0
data/powerdns: convert some zones to psql 2023-01-28 18:10:29 +01:00
Franzi 07dce73bca
bundles/sshmon: get rid of sysstat 2023-01-28 18:10:24 +01:00
Franzi c5ccc31ad9
get rid of molly-guard 2023-01-28 18:10:21 +01:00
Franzi ab76721ddb
bundles/powerdnsadmin: install psycopg2 in venv 2023-01-28 18:10:18 +01:00
Franzi b460085bb0
bundles/powerdns: enable superslave if supported 2023-01-28 18:10:14 +01:00
Franzi ba3bf20db7
new gpg key for influxdb repo 2023-01-28 18:10:12 +01:00
Franzi 5ed4c1e9bd
update netbox to 3.4.2 2023-01-28 18:10:09 +01:00
Franzi 446e0d057e
update travelynx to 1.29.4 2023-01-28 18:10:05 +01:00
Sophie Schiller e393f3cc3c htz-cloud/miniserver element-web update 2023-01-27 20:35:49 +01:00
Sophie Schiller 7ee2d08007 element-web update 2023-01-19 17:53:32 +01:00
Franzi c94aef55a5
bundles/dovecot: enable sieve logging 2022-12-31 16:33:10 +01:00
Franzi 970d97b0a2
nodes/home.wled-wohnzimmer: new mac address 2022-12-30 20:35:05 +01:00
Franzi c04ce63c35
bundles/arch-with-gui: more packages via bundle, less via nodefile 2022-12-29 13:45:06 +01:00
Franzi 070b466abe
bundles/travelynx: update bundle for new version 2022-12-27 13:38:53 +01:00
Franzi 82143e34ad
update travelynx to 1.28.5 2022-12-27 13:38:39 +01:00
Franzi 9dae384cd1 Merge pull request 'homassistant' (#56) from homassistant into main
Reviewed-on: #56
2022-12-24 17:32:36 +00:00
Sophie Schiller 3019ee4355 home.hass: add api secret for update check 2022-12-24 17:52:04 +01:00
Sophie Schiller 52983a51a9 homeassistant: rework update check 2022-12-24 17:51:42 +01:00
Franzi 638363e927
bundles/php: rework bundle, fix directory permissions 2022-12-24 16:12:22 +01:00
Franzi 9a45e3c30e
bundles/gitea: fix wrong monitoring command 2022-12-24 13:45:44 +01:00
Franzi 648a80362e
bundles/sshmon: actually install the check 2022-12-24 08:45:48 +01:00
Franzi e28494e9a0
update element-web to 1.11.17 2022-12-23 15:06:12 +01:00
Franzi 931f3cd583
bundles/gitea: set update check to check for forgejo update 2022-12-23 14:57:32 +01:00
Franzi face47b9fe
voc.pretalx: update downstream plugin to 1.1.5 2022-12-23 14:49:17 +01:00
Franzi df303b3487
bundles/homeassistant: set websockets=True in nginx config 2022-12-22 20:01:35 +01:00
Sophie Schiller edeffee5c2 first running hass stuff 2022-12-22 18:59:27 +01:00
Sophie Schiller 107fd6872b home.hass add metadata 2022-12-22 17:53:10 +01:00
Sophie Schiller c407a4520a blind dev result of homeassistant 2022-12-22 17:37:13 +01:00
Franzi fcb546baf6
bundles/nodejs: fix repo name 2022-12-22 17:32:36 +01:00
Franzi f2e4d9e731
remove obsolete README files 2022-12-22 17:27:48 +01:00
Franzi 0c402791a9
convert a bunch of dummy nodes to toml 2022-12-22 17:25:51 +01:00
Franzi e67033db8c
add home.hass basic node file 2022-12-22 17:21:38 +01:00
Franzi c5e45cbafc
bundles/sshmon: add check_forgejo_for_new_release 2022-12-22 12:13:53 +01:00
Franzi 120dfea24f
bump bundlewrap to 4.16 2022-12-22 12:13:36 +01:00
Franzi 3db7168589
move default nameservers to libs/defaults 2022-12-22 12:13:13 +01:00
Franzi 90823b7984
bundles/postfix: lessen smtpd security restrictions 2022-12-20 08:55:44 +01:00
Franzi caa54051ff
bundles/zfs: please, just restart zed 2022-12-18 11:43:38 +01:00
Franzi 8621c726bb
bundles/systemd: fix edgecase in check_timesyncd_sync 2022-12-18 11:34:21 +01:00
Franzi a008a47559
update netbox to 3.4.1 2022-12-17 11:48:14 +01:00
Franzi 97486a6e68
update mautrix-whatsapp to 0.8.0 2022-12-17 11:47:59 +01:00
Franzi ee761507a2
bundles/{icinga2,influxdb}: fix file permissions 2022-12-17 11:45:10 +01:00
Franzi 6d49889f2f
bundles/systemd: systemd-timesyncd not showing offset is an error 2022-12-17 11:41:37 +01:00
Franzi 8a0ae4fa10
bundles/systemd: explicitely use all four ntp.org timeserver pools
turns out, only 2.pool.ntp.org has IPv6, but we won't get any IPv6
addresses when querying pool.ntp.org
2022-12-17 11:39:45 +01:00
Franzi eaab905735
bundles/systemd: add monitoring for systemd-timesyncd 2022-12-16 16:15:57 +01:00
Franzi e12b9e6c12
uninstall chrony and ntpd everywhere 2022-12-16 15:32:09 +01:00
Franzi 191b74a6d3
update netbox to 3.4.0 2022-12-16 15:25:49 +01:00
Franzi 195b87a457
update postfixadmin to 3.3.13 2022-12-16 15:25:32 +01:00
Franzi bd64d52edb
bundles/gce-workaround: uninstall chrony 2022-12-16 15:24:51 +01:00
Franzi d6da47fc1e
bundles/systemd: also manage systemd-timesyncd 2022-12-16 15:10:52 +01:00
Franzi 5dc60eb24e
bundles/openvpn-client: do not manage config directory group 2022-12-16 15:10:03 +01:00
Franzi f790e2cee0
bundles/vnstat: rework bundle 2022-12-12 07:56:23 +01:00
Franzi 9c8523ab49
home.{nas,router}: fixup icinga dependencies 2022-12-11 18:03:09 +01:00
Franzi 1189b58cd2
home.router: new hardware 2022-12-11 17:43:33 +01:00
Franzi afa1e4abb7
move usv telegraf info collection to influxdb host 2022-12-11 17:42:59 +01:00
Franzi c8dd809057
bundles/wireguard: better nftables rules 2022-12-11 17:42:39 +01:00
Franzi e8d24bc363
bundles/pppd: automatically add interface entry for ignored interface 2022-12-11 17:42:08 +01:00
Franzi 86990b92ea
update netbox to 3.3.9 2022-12-07 18:19:24 +01:00
Franzi bed37a8392
update postfixadmin to 3.3.12 2022-12-07 18:19:11 +01:00
Franzi 1b3c789b7c
update element-web to 1.11.16 2022-12-07 18:18:52 +01:00
Franzi d86dc32f51
bundles/mixcloud-downloader: improvements 2022-12-07 18:06:44 +01:00
Franzi 15ea875742
home.nas: add bundle:mixcloud-downloader 2022-12-07 04:24:38 +01:00
Franzi 615f6107bc
bundles/element-web: only set --openssl-legacy-provider if using nodejs >= 17 2022-11-27 19:56:36 +01:00
Franzi dd420c4574
update mautrix-telegram to 0.12.2 2022-11-27 19:50:07 +01:00
Franzi 5d239177bc
update element-web to 1.11.15 2022-11-27 19:49:51 +01:00
Franzi 48514f0e61
voc.pretalx: update pretalx to newer version 2022-11-27 19:48:39 +01:00
Franzi ca18a8d231
bundles/pretalx: ignore update check if no version was specified 2022-11-27 19:48:13 +01:00
Franzi 6b2a6e64b3
rx300: remove unicornsden map 2022-11-27 19:46:40 +01:00
Franzi 98d6c117df
kunsi-p14s: add smedia-priv vpn connection 2022-11-22 18:45:37 +01:00
Franzi d64657feef
bundles/openvpn-client: fix permissions for /etc/openvpn/client 2022-11-22 18:45:19 +01:00
Franzi b7de8b3a4d
bundles/grafana: new repo, who dis? 2022-11-21 19:32:47 +01:00
Franzi bc589011d2
add c3voc vpn to kunsi-p14s 2022-11-21 19:31:49 +01:00
Franzi f3d741de41
remove paste.kunsmann.eu vhost and redirect 2022-11-16 19:19:56 +01:00
Sophie Schiller 0033d6309f nodefoobar hedgedoc whatever 2022-11-16 19:19:41 +01:00
Sophie Schiller 24bfc8c7bd htz-cloud.miniserver update hedgedoc 2022-11-16 18:55:26 +01:00
Franzi 72cbe56b5f
bundles/nodejs: make nodejs version configurable 2022-11-16 18:54:52 +01:00
Franzi 29dd1ee561
update netbox to 3.3.8 2022-11-16 18:54:49 +01:00
Franzi 84f5dc65c0
update mautrix-whatsapp to 0.7.2 2022-11-16 18:54:43 +01:00
Sophie Schiller cad4037a38 bw/htz-hel.backup-sophie add dataset for smartphone 2022-11-16 18:48:41 +01:00
Franzi 2ea914dc0b
bundles/minecraft: collect metrics more often 2022-11-13 18:13:18 +01:00
Franzi 7a14084417
bundles/minecraft: add monitoring via icinga2 2022-11-13 17:48:22 +01:00
Franzi 019d5ce2b6
bundles/minecraft: add monitoring via telegraf 2022-11-13 17:47:19 +01:00
Franzi cb1222600d
update element-web to 1.11.14 2022-11-13 14:38:13 +01:00
Franzi 7f9d7ccfc3
voc.pretalx: update broadcast_tools plugin to 1.0.1 2022-11-07 04:46:59 +01:00
Franzi 52e36f7ae1
bundles/redis: use a lot less snapshots 2022-11-06 19:08:35 +01:00
Franzi e6e563fb33
bundles/systemd-timers: use bash, because we're using bash if 2022-11-06 19:08:13 +01:00
Franzi 3dce0fb6ac
add bundle:minecraft to rx300 2022-11-06 18:52:38 +01:00
Franzi fba5d6a782
bundles/{jenkins-ci,openhab}: bump openjdk version 2022-11-06 18:52:14 +01:00
Franzi a1b7006cdc
bump as3320 and as8881 routes 2022-11-06 18:51:48 +01:00
Franzi b0a43fb128
bundles/users: enable color output in ipb 2022-11-06 14:27:35 +01:00
Franzi 545d107baf
ssl: bump _.home.kunbox.net 2022-11-06 08:07:43 +01:00
Franzi cea68687d3
ssl: bump _.franzi.business 2022-11-06 08:07:30 +01:00
Franzi 73e6ba0872
bundles/{matrix-dimension,mx-puppet-discord}: nodejs-dependency-hölle, once again 2022-11-05 07:47:07 +01:00
Franzi ee9f7b8875
bundles/element-web: requires legacy openssl provider for now 2022-11-04 07:29:11 +01:00
Franzi aa01329dbf
bundles/nodejs: update to nodejs 18 2022-11-04 07:28:53 +01:00
Franzi e1fe424df9
bundles/basic: support configuring /etc/environment 2022-11-04 07:28:14 +01:00
Franzi 8b1ccb760a
bundles/ntfy: fix formatting errors 2022-11-04 07:27:38 +01:00
Franzi fdfd12683f
update netbox to 3.3.7 2022-11-04 07:08:40 +01:00
Franzi c7b27bd724
update element-web to 1.11.13 2022-11-04 07:08:38 +01:00
Franzi 40cec956a9
home.nas: add jenny 2022-11-04 07:08:35 +01:00
Franzi 3db6078d9b
bundles/postfix: set tls ciphers to medium to increase compatibility with centos 2022-11-04 07:08:33 +01:00
Sophie Schiller 1bed137116 Merge pull request 'add-ntfy' (#54) from add-ntfy into main
Reviewed-on: #54
2022-10-23 13:15:10 +00:00
Sophie Schiller 16fb0fd1fa htz-cloud.miniserver: enable zfs 2022-10-23 15:13:13 +02:00
Sophie Schiller bd3c92aac9 bundles/ntfy fix various typos 2022-10-19 17:23:57 +02:00
Sophie Schiller 014c7e5be8 bundles/ntfy add more nginx options 2022-10-19 16:33:36 +02:00
Sophie Schiller 6e23f84a39 bundles/ntfy various fixes 2022-10-19 15:38:10 +02:00
Sophie Schiller a8cf858d44 bundles/ntfy: first draft 2022-10-19 15:24:39 +02:00
Franzi deba777a80
update netbox to 3.3.5 2022-10-16 21:34:04 +02:00
Franzi 2cecb14112
update mautrix-whatsapp to 0.7.1 2022-10-16 21:33:48 +02:00
Franzi 7fdaa3c26e
update gitea to 1.17.3 2022-10-16 21:33:31 +02:00
Franzi 6ac1583a23
update element-web to 1.11.10 2022-10-16 21:33:10 +02:00
Franzi 2095696131
bundles/mautrix-telegram: disable backfilling 2022-10-16 21:29:53 +02:00
Franzi f42597260d
htz-cloud.influxdb: disallow metrics endpoint 2022-10-02 11:05:16 +02:00
Franzi 8c77e5824a
bundles/grafana: disable metrics 2022-10-02 11:00:06 +02:00
Franzi 82ed8e1d3a
update mautrix-telegram 0.12.1 2022-09-29 18:21:51 +02:00
Franzi 98864c2d55
update element-web to 1.11.8 2022-09-29 18:21:03 +02:00
Franzi c907f6d1e7
rx300: update mautrix-whatsapp to 0.7.0 2022-09-22 06:08:12 +02:00
Franzi 06906f715b
rx300: update netbox to 3.3.4 2022-09-22 06:07:39 +02:00
Franzi afd306a23a
ovh.icinga2: remove _.qzwi.de monitoring 2022-09-22 06:04:18 +02:00
Franzi 988d7e08a0
bundles/travelynx: use carton instead of cpanm 2022-09-22 06:03:51 +02:00
Franzi b642153e58
rx300: update netbox to 3.3.3 2022-09-16 04:44:51 +02:00
Franzi 86742758c7
update element-web to 1.11.5 2022-09-14 17:32:34 +02:00
Franzi 79bfef9c35
rx300: update travelynx to 1.23.12 2022-09-14 17:31:12 +02:00
Franzi edaa22dab6
bundles/infobeamer-cms: fix nginx config 2022-09-11 11:38:13 +02:00
Franzi 038f19ea5e
bundles/unbound: use systemd-timers 2022-09-11 11:32:26 +02:00
Franzi d9be69d3a9
bundles/systemd-timers: don't auto-reset alerts 2022-09-11 11:26:57 +02:00
Franzi f004591e98
bundles/letsencrypt: use systemd-timers 2022-09-11 11:26:24 +02:00
Franzi 944c66354b
bundles/mx-puppet-discord: github is archived, gitlab is the new hotness 2022-09-10 18:10:14 +02:00
Franzi 0f6b757a34
update netbox to 3.3.2 2022-09-09 06:20:53 +02:00
Franzi 95ebed94dc
update gitea to 1.17.2 2022-09-09 06:20:37 +02:00
Sophie Schiller 70c7ab7b3a critical element-web fix 2022-08-31 21:08:39 +02:00
Franzi 2b29a9727c
update netbox to 3.3.1 2022-08-29 19:25:23 +02:00
Franzi 00dddba445
update gitea to 1.17.1 2022-08-29 19:25:12 +02:00
Franzi a1bea394f2
update mautrix-telegram to 0.12.0 2022-08-29 19:24:57 +02:00
Franzi 2fd94c2a4b
bundles/hedgedoc: fix nginx config 2022-08-29 19:24:33 +02:00
Franzi b84cd780b3
rx300: add DENOG to rspamd ignore list 2022-08-19 07:30:55 +02:00
Franzi aa5c7ff8b4
block access to the go /debug/pprof/ endpoint 2022-08-19 07:26:01 +02:00
Franzi 0113b9a565
update netbox to 3.2.9 2022-08-16 20:32:42 +02:00
Franzi 24ce6487bd
update mautrix-whatsapp to 0.6.1 2022-08-16 20:32:23 +02:00
Franzi 89eddad1a3
update element-web to 1.11.3 2022-08-16 20:32:08 +02:00
Franzi 65d65187f1
ssl: bump _.franzi.business 2022-08-16 20:31:50 +02:00
Franzi 2a15887fb6
ssl: bump _.home.kunbox.net 2022-08-16 20:31:32 +02:00
Franzi 84917649dd
bundles/arch-with-gui: have pytz available in i3pystatus 2022-08-14 12:47:52 +02:00
Franzi 97126f443e
dns: add sewfile.htz-cloud.kunbox.net to SPF for franzi.business 2022-08-12 06:40:46 +02:00
Franzi 08bc40827d
rx300: update netbox to 3.2.8 2022-08-08 21:54:47 +02:00
Franzi 6b641890c3
bundles/grafana: replace the useless builtin of telegraf with something more useful 2022-08-07 10:16:07 +02:00
Franzi f6d6ef7aa7
update netbox to 3.2.7 2022-08-03 21:02:16 +02:00
Franzi 3714880406
update gitea to 1.17.0 2022-08-03 21:02:05 +02:00
Franzi 2a041629af
update element-web to 1.11.2 2022-08-03 21:01:46 +02:00
Franzi 416599abab
rx300: update travelynx to 1.23.3 2022-07-25 10:10:05 +02:00
Franzi a1ce8bf91a
bundles/sudo: purge directory after package installation 2022-07-25 10:08:26 +02:00
Franzi 5539957eb6
bundles/molly-guard: empty directories after package has been installed 2022-07-25 10:07:54 +02:00
Franzi 9036458aa8
rx300: update mautrix-whatsapp to 0.6.0 2022-07-17 10:30:23 +02:00
Franzi 86cc900d74
rx300: update gitea to 1.16.9 2022-07-17 10:30:05 +02:00
Franzi 1f32a92296
update netbox to 3.2.6
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-07-12 20:30:54 +02:00
Franzi 0d13e60a21
rx300: add more email domains to blocklist 2022-07-12 20:30:35 +02:00
Franzi feeb785425
update hedgedoc to 1.9.4 2022-07-12 20:30:06 +02:00
Franzi 3e65a185f6
update element-web to 1.11.0 2022-07-12 20:29:35 +02:00
Franzi 2a938d19f1
bundles/gitea: disable registration by default 2022-07-12 20:28:59 +02:00
Franzi 696377cfbc
voc.infobeamer-cms: prepare for MCH2022
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-07-10 19:58:22 +02:00
Franzi 9736576d0d
rx300: cleaned up spam gitea accounts
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-07-10 13:32:29 +02:00
Franzi dd5a97eced
bundles: add dependency to systemd-networkd 2022-07-10 13:32:11 +02:00
Franzi ac0f849871
rx300: update travelynx to 1.22.6
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-07-02 20:01:08 +02:00
Franzi 5111e0c897
gce.bind01: update powerdnsadmin to 0.3.0
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-06-28 21:41:58 +02:00
Franzi 4f89345c8c
rx300: update netbox to 3.2.5 2022-06-21 06:33:30 +02:00
Franzi 53cce20d68
rx300: update mautrix-whatsapp to 0.5.0
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-06-18 10:24:33 +02:00
Franzi 7b922841b7
rx300: update element-web to 1.10.15 2022-06-18 10:24:12 +02:00
Franzi ce670e4d1e
gce.bind01: update powerdnsadmin to 0.2.5 2022-06-18 10:23:45 +02:00
Sophie Schiller 076b19f8fb htz-cloud.miniserver: update element-web
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-06-15 19:24:26 +02:00
Franzi 4b7f6faac2
update element-web to 1.10.14
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-06-11 20:47:17 +02:00
Franzi 8312910588
rx300: update travelynx to 1.22.5
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-06-06 08:53:15 +02:00
Franzi 1d58955ced
bundles/zfs: increase timeout for ZFS OLD SNAPSHOTS check
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-06-05 09:30:44 +02:00
Franzi 8446e8eda2
rx300: update netbox to 3.2.4
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-06-05 09:26:42 +02:00
Franzi c34f3ebbc3
ssl: bump _.home.kunbox.net and _.franzi.business 2022-05-27 19:27:28 +02:00
Franzi 313f43f66b
update element-web to 1.10.13 2022-05-27 19:26:51 +02:00
Franzi 29f64946b1
rx300: update mautrix-whatsapp to 0.4.0
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-05-19 07:44:15 +02:00
Franzi 064b4c5f36
rx300: update gitea to 1.16.8 2022-05-19 07:44:09 +02:00
Sophie Schiller aeb8467e5e miniserver: gpn intros
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-05-17 22:09:00 +02:00
Franzi d6bb5e973e
voc.infobeamer-cms: add gpn20 people
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-05-16 14:37:35 +02:00
Franzi 51c9506a19
move pacman/no_extract to bundle metadata defaults 2022-05-16 10:52:14 +02:00
Franzi 9730a2be13
bundles/wireguard: fix permissions for wireguard netdev files 2022-05-16 10:48:26 +02:00
Franzi bd5f65d7a4
rx300: add c3kl mail server to rspamd
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-05-14 09:22:19 +02:00
Franzi 303ca11c2e
update netbox to 3.2.3 2022-05-14 09:22:01 +02:00
Franzi 1c247bc4bd
update element-web to 1.10.12 2022-05-14 09:21:39 +02:00
Franzi 3614c23ef8 kunsi-p14s: add some paths to pacman/no_extract 2022-05-08 19:39:13 +02:00
Franzi b86251f79c
voc.infobeamer-cms: prepare for GPN20 2022-05-07 18:38:37 +02:00
Franzi a98190139d
rx300: update gitea to 1.16.7
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-05-06 10:51:06 +02:00
Franzi 15b97d0edd
kunsi-p14s: let's try a more recent kernel
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-04-30 12:31:35 +02:00
Franzi 8cc116c0c4
bundles/zfs: respect pacman/linux-lts option 2022-04-30 12:30:32 +02:00
Franzi 12e21d893f
rx300: update netbox to 3.2.2
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-04-30 09:13:22 +02:00
Franzi 3d2a97851b
kunsi-p14s: reinstate bridge, try disabling ipv6 on wifi
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-04-30 09:10:14 +02:00
Franzi b9da0221bc
rx300,htz-cloud.miniserver: Updates
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
- update element-web to 1.10.11
- update gitea to 1.16.6
- update mautrix-telegram to 0.11.3
- update mautrix-whatsapp to 0.3.1
2022-04-27 05:43:22 +02:00
Franzi 3cdd6ce6ba
kunsi-p15s: add zfs dataset for /video 2022-04-27 05:42:11 +02:00
Franzi 8414e3580b
fkusei-locutus: install voc-tracker-worker 2022-04-27 05:41:37 +02:00
Franzi 7fffdbab32
bundles/voc-tracker-worker: improve bundle 2022-04-27 05:40:20 +02:00
Franzi a38b66a7c5
bundles/nfs-client: minor fixes 2022-04-27 05:39:34 +02:00
Franzi 74b3a513f6
bundles/pacman: make NoExtract user-configurable
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-04-22 15:47:47 +02:00
Franzi 8145fb22e8
add bundle:voc-tracker-worker 2022-04-22 15:43:34 +02:00
Franzi 7126831a93
update element-web to 1.10.10
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-04-15 06:37:24 +02:00
Franzi fc2a69fc2c
rx300: update netbox to 3.2.1 2022-04-15 06:37:09 +02:00
Franzi 553dc3cb9f
kunsi-p14s: remove network bridge
Something causes the network to hang when switching from wired to
wireless networking. I want to eliminate as much problems as possible.
2022-04-15 06:35:50 +02:00
Sophie Schiller 5979d8a1f9 hedgedoc: use global yarn in systemd unit
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-04-11 00:34:56 +02:00
Sophie Schiller e76e48604e miniserver hedgedoc update 2022-04-11 00:34:33 +02:00
Franzi ca69969dad
bundles/backup-server: disable ZFS OLD SNAPSHOTS check
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-04-06 18:13:23 +02:00
Franzi 4390256abc
bundles/zfs: add metadata option to disable ZFS OLD SNAPSHOTS check 2022-04-06 18:13:01 +02:00
Franzi a2d8979b91
rx300: update travelynx to 1.22.3
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-04-03 17:42:59 +02:00
Franzi 1e9a4417be
nodes: set some zfs caching metadata 2022-04-03 17:42:56 +02:00
Sophie Schiller 9c74aed36e updaaaates
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-04-03 16:45:33 +02:00
Franzi 3b78343219
kunsi-p14s: add zfs pool definition
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-04-03 09:50:50 +02:00
Franzi 5640556ad9
bundles/zfs: run scrub for each pool separately 2022-04-03 09:48:28 +02:00
Franzi 4823653214
bundles/systemd-networkd: remove usage of systemd-resolved
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
Something in the combination of arch+zfs+netctl+resolved+ipv6 leads to
hanging dns, which in turn leads to hanging everything.
2022-04-03 09:01:10 +02:00
Franzi 891823376f
bundles: add missing dependency to yarn
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-04-03 08:38:20 +02:00
Franzi a340071ad8
bundles/oidentd: provide our own systemd unit file
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-04-03 08:32:07 +02:00
Franzi d99a784e3a
htz-hel.backup-kunsi: use /dev/disk/by-id for encrypted devices
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-04-03 08:23:42 +02:00
Franzi 75fc89d160
rx300: update element-web to 1.10.8
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-04-03 08:17:02 +02:00
Franzi ddd29bef3b
bundles: install yarn globally instead of in each individual bundle 2022-04-03 08:16:35 +02:00
Franzi 193c038bab
rx300: update matrix-media-repo to 1.2.12 2022-04-03 08:05:49 +02:00
Franzi 4ecf7ccb46
bundles/matrix-media-repo: download prebuilt executable instead of building ourselves 2022-04-03 08:05:46 +02:00
Sophie Schiller a5f76e98ec htz-cloud.miniserver: element-web update
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-30 22:08:25 +02:00
Franzi d8f8f1377f
bundles/arch-with-gui: install sipcalc and inkscape
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-30 18:28:46 +02:00
Franzi ac48462043
bundles/icinga2: icingaweb2 roles.ini needs another option
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-30 17:29:27 +02:00
Franzi 7b9686977d
bundles/backup-client: do backups between 00:00 and 02:59
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-30 17:23:10 +02:00
Franzi 6d9d0ee738
rx300: update netbox to 3.1.10
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-25 17:26:51 +01:00
Franzi d336fc8506
rx300: update gitea to 1.16.5
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-24 18:29:28 +01:00
Franzi dbf5cf88a8
rx300: update element-web to 1.10.7 2022-03-24 18:27:41 +01:00
Franzi 7c49ac59f5
more packages, please
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-24 18:14:50 +01:00
Franzi 2f8306a14a
bundles/pacman: fix archzfs-kernels repo name
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-23 21:04:12 +01:00
Franzi 26a26db886
kunsi-p14s: add dataset for movies
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
Having them on a separate dataset away from the usual data allows us to
easily exclude them from backups and snapshots - they are done at the
source, no need to do them here, too.
2022-03-23 20:30:25 +01:00
Franzi eb958aed1f
fkusei-locutus: install sdl_ttf
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-23 20:21:15 +01:00
Franzi 950c88aab2
bundles/pacman: install archzfs repo and archzfs-kernels repo if node has bundle:zfs
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-23 19:19:21 +01:00
Franzi 2189cd1ef9
voc.infobeamer-cms: allow sophieschi
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-20 13:37:25 +01:00
Franzi 489c2386de
voc.infobeamer-cms: prepare for divoc
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-20 12:35:26 +01:00
Franzi 916403f8d3
kunsi-p14s: have imagemagick and inkscape 2022-03-20 12:35:22 +01:00
Sophie Schiller 1677670441 fossgis die drölfte
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-20 11:13:43 +01:00
Franzi 3873d683ee
aurto: do unattended-upgrades one hour after the host
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-19 07:21:26 +01:00
Franzi 26b3e4101f
rx300: more email blocklist for gitea
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-19 07:13:33 +01:00
Franzi ec45f6da4c
rx300: update gitea to 1.16.4
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-19 07:08:55 +01:00
Franzi 3e7e355dd6
rx300: update mautrix-whatsapp to 0.3.0 2022-03-19 07:02:54 +01:00
Franzi c983c50d21
bundles/icinga2: fix timeperiods 2022-03-19 07:02:48 +01:00
Sophie Schiller b24af786fc bw/htz-cloud.miniserver element-web update
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-18 19:35:48 +01:00
Sophie Schiller 11cd77436e fossgis die drölfte
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-15 21:48:26 +01:00
Franzi 206cdfe128
bundles/systemd: fix dependencies
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-13 15:19:01 +01:00
Franzi 7604fef734
bundles/icinga2: use ip addresses for monitoring instead of hostnames
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-13 15:15:47 +01:00
Franzi 5179edb458
bundles/wireguard: fix forwarding firewall rules 2022-03-13 15:15:08 +01:00
Franzi c0ebd25ffc
bundles/systemd: systemd-timesyncd gets started automatically 2022-03-13 15:14:40 +01:00
Franzi 212ba72b30
bundles/nftables: workaround does not work for debian buster 2022-03-13 14:13:59 +01:00
Franzi aa3ce32a7c
bundles/systemd: systemd-timesyncd package requires debian bullseye 2022-03-13 14:12:05 +01:00
Franzi eab9d6f97c
ovh.icinga2: update to debian bullseye and php 8.0
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-13 14:07:55 +01:00
Franzi c71d827691
bundles/icinga2: add some missing config 2022-03-13 14:07:28 +01:00
Franzi 690c0b7050
bundles/nftables: restart on failure 2022-03-13 14:07:08 +01:00
Franzi a9d4cc73c1
bundles/systemd: ensure we have systemd-timesyncd installed and running 2022-03-13 14:06:40 +01:00
Franzi 28b235514a
bundles/zfs: fix compatibility to older zfs versions
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-13 12:58:07 +01:00
Franzi 8397739634
bundles/backup-server: fix bug in retaining
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-13 09:24:45 +01:00
Franzi 008940d75f
bundles/users: add journalctl bash alias 2022-03-13 09:21:10 +01:00
Franzi cd1a33ccbb
bundles/zfs: refactor zfs-auto-snapshot
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-13 09:18:14 +01:00
Franzi dab6065b89
bundles/vmhost: svc_systemd:virtlogd gets triggered by socket, too
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-13 08:42:51 +01:00
Franzi 65efdc2e2c
bundles/pacman: disable pam_faillock 2022-03-13 08:42:48 +01:00
Franzi a4fb9a15b5
bundles/backup-server: increase timeout for monitoring checks 2022-03-13 08:42:44 +01:00
Sophie Schiller d989abcf68 open firewall to rechenmonster for fossgis releasing
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-12 11:37:32 +01:00
Franzi f56703df2e
bundles/dovecot: filter X-Spam-Status, not X-Spam-Flag
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
The latter is YES even if the overall score is very low because of
IP allowlisting.
2022-03-12 10:24:06 +01:00
Franzi 759a711dc5
bundles/rspamd: remove from_name from dmarc reporting config
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-12 10:08:04 +01:00
Franzi 7a257279cf
rx300: update netbox to 3.1.9
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-12 09:33:37 +01:00
Franzi 6a9da7efa5
bundles/arch-with-gui: add workaround for broken bw test
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-12 09:03:45 +01:00
Franzi 72cf616114
bundles/zfs: use zfs-import-scan instead of zfs-import-cache
Last night, rx300 rebooted. After a reboot, the disks were detected
in another order (but still, all were detected!), so the cachefile did
no longer match, leading to breaking the import.

Running `zpool import` manually worked, because that will ignore the
cachefile. So, why do we depend on the cache file on boot up? The added
reliability of zfs-import-scan beats the speed of zfs-import-cache in
any way.
2022-03-12 09:03:42 +01:00
Franzi 42a66751e1
bundles/vmhost: don't try to start libvirtd on every apply 2022-03-12 09:03:38 +01:00
Franzi 4a03a9f89c
bundles/icinga2: fix directory permissions for /etc/icingaweb2 2022-03-12 09:03:35 +01:00
Franzi d7b47d2560
bundles/jenkins: jenkins.war has moved 2022-03-12 09:03:32 +01:00
Franzi 403b67ee48
bundles/vmhost: install pkg_pacman:edk2-ovmf 2022-03-12 09:03:28 +01:00
Sophie Schiller 59cd441292 open firewall to rechenmonster for fossgis releasing
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-11 16:39:46 +01:00
Franzi 757f1cb3cd
bundles/vmhost: prepare for arch linux
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-11 13:58:38 +01:00
Franzi 29f7aef27a
kunsi-p14s: create network bridge for ethernet interfaces 2022-03-11 08:56:02 +01:00
Franzi 93351340d0
move thermald package back to fkusei-locutus
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-10 21:09:26 +01:00
Franzi 15ae3b7a0b
move some configuration from nodes to bundle:arch-with-gui
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-10 21:00:45 +01:00
Franzi e181be3fc6
bundles/wireguard: better dependency management 2022-03-10 21:00:42 +01:00
Franzi 7a8d7b630e
fkusei-locutus: install freerdp 2022-03-10 21:00:38 +01:00
Sophie Schiller 8a2ee1bd00 open firewall to rechenmonster for fossgis releasing
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-10 18:20:56 +01:00
Sophie Schiller 6c6066d93a open firewall to rechenmonster for fossgis releasing
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-09 20:31:13 +01:00
Franzi 64448af027
add node fkusei-locutus
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-09 13:07:55 +01:00
Franzi 0082d3e014
bundles/zfs: ensure some targets are started on arch linux 2022-03-09 13:05:57 +01:00
Franzi c7e5002f17
bundles/wireguard: support arch linux and other netmasks than /31 2022-03-09 13:05:01 +01:00
Franzi 05a2e501ce
bundles/bird: support arch linux 2022-03-09 13:04:34 +01:00
Franzi c023c144c3
bundles/arch-with-gui: install firefox 2022-03-09 13:03:56 +01:00
Franzi f969b05468
bundles/arch-with-gui: i3pystatus requires python-virtualenv 2022-03-09 13:02:35 +01:00
Sophie Schiller 4458afe654 open firewall to rechenmonster for fossgis releasing
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-08 15:06:42 +01:00
Franzi a280998eb4
kunsi-p14s: install maim
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-06 16:44:18 +01:00
Franzi b351703953
bundles/c3voc-addons: implement addidional_update_commands
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-06 12:57:48 +01:00
Franzi a693e90aa3
bundles/nodejs: auto-upgrade npm
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-06 12:50:04 +01:00
Franzi 50ea6a92a5
bundles/apt: introduce additional_update_commands for updating other stuff 2022-03-06 12:49:46 +01:00
Sophie Schiller a0e943a243 another hedgedoc update
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-06 12:29:15 +01:00
Franzi e3c2650a89
home.nas: add inbox
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-06 11:09:57 +01:00
Franzi 56bafd73be
bundles/nginx: refine fastcgi config
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-05 18:55:51 +01:00
Franzi 70be652309
kunsi-p14s: install abcde
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-05 14:20:29 +01:00
Franzi ca861a78fb
bundles/grafana: do not auto-refresh dashboards
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-05 13:49:17 +01:00
Franzi 8ed4aa3751
bundles/pacman: don't extract systemd-homed pam module
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-05 13:45:28 +01:00
Franzi 14e7fff081
bundles/grafana: improve config 2022-03-05 13:45:16 +01:00
Franzi 371652fbe8
nodes: set icinga notification period to daytime for some nodes
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-05 08:31:48 +01:00
Franzi 65ba43525f
bundles/icinga2: introduce new notification period 'daytime' 2022-03-05 08:29:10 +01:00
Franzi 2a57eec1e3
gce.dns03: fix indentation
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-05 08:13:33 +01:00
Franzi 1019341e5d
rx300: update gitea to 1.16.3
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-05 08:10:14 +01:00
Franzi 32c47d3d2f
update postfixadmin to 3.3.11 2022-03-05 08:09:57 +01:00
Franzi 98cd2df8ff
bundles/nginx: add certificate name to icinga check
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-02 07:19:15 +01:00
Franzi be3dd6662e
kunsi-p14s: more packages
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-02 07:12:38 +01:00
Franzi 3b482f42ae
ovh.icinga2: fix typo in pos(t)gresql metadata
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-02 07:06:01 +01:00
Franzi b94de31f34
data/ssl: bump _.home.kunbox.net 2022-03-02 07:05:08 +01:00
Franzi 64371a5926
data/ssl: bump _.franzi.business 2022-03-02 07:04:50 +01:00
Franzi 24fb5321b9
rx300: update element-web to 1.10.6
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-01 18:54:18 +01:00
Franzi 6684aaf380
rx300: update travelynx to 1.22.1
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-01 06:47:48 +01:00
Franzi 696727d0d1
rx300: update element-web to 1.10.5 2022-03-01 06:38:53 +01:00
Franzi 0ba3df7385
bundles/zfs: unmount backup-snapshots recursively
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-03-01 06:32:23 +01:00
Franzi 931d566736
bundles/backup-server: fix stupid in check_backup_for_node
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-28 21:09:04 +01:00
Franzi e909144544
bw/bundles/postgresql: do not auto-detect postgresql version from debian version
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-27 12:51:53 +01:00
Sophie Schiller 58a093aa69 htz-cloud.miniserver: updaaaaaateeeeeeeees
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-27 12:44:07 +01:00
Franzi e69b8e5a66
move entropia-jira monitoring to dedicated node
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-26 14:35:43 +01:00
Franzi b62e9066bd
rx300: update gitea to 1.16.2 2022-02-26 14:12:57 +01:00
Franzi a1336c282b
ovh.icinga2: add monitoring for entropia-jira
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-26 14:05:11 +01:00
Franzi e1f7c691c3
bundles/nfs-server: fix trailing whitespace
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-20 19:45:40 +01:00
Franzi 83fb1a5e11
bundles/nfs-client: decrease timeout, set some default mount options
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-20 19:44:05 +01:00
Franzi dcb563b31e
bundles/systemd-networkd: remove BindCarrier
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-20 12:36:21 +01:00
Franzi 88891b44be
bundles/nfs-server: ensure nfs runs on managed ports, fix firewall rules
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-20 08:24:38 +01:00
Franzi 6267b4c33d
bundles/nfs-server: fix package name
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-19 20:09:53 +01:00
Franzi 0a4da160fd
bundles/matrix-media-repo: add RestartSec 2022-02-19 20:02:08 +01:00
Franzi 18e154b772
kunsi-p14s: install virt-manager
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-19 19:07:19 +01:00
Franzi 945e349d61
bundles/jenkins-ci: add systemd unit file
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-19 18:53:49 +01:00
Franzi bd45def053
bundles/{lldpd,nfs-server}: fix dependencies
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-19 17:49:53 +01:00
Franzi 5de7e0245a
home.rechenmonster: fix trailing whitespace
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-19 17:46:14 +01:00
Franzi 18674a1a4a
bundles/icinga2: always print status line in check_usv_snmp
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-19 17:44:46 +01:00
Franzi 07d5a8cdae
bundles/systemd-networkd: add BindCarrier to bonds
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-19 11:29:29 +01:00
Franzi 7e58e9c667
bundles/icinga2: simplify template
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-19 09:23:00 +01:00
Franzi 75e1ab0db4
home.rechenmonster: enable smartd, sort metadata
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-18 22:37:20 +01:00
Franzi 8434eacd94
bundles/{lldp,nfs-server,smartd}: move package dependencies to metadata 2022-02-18 22:37:07 +01:00
Sophie Schiller a01c28da21 various bundles: fix dependencies
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-18 22:18:44 +01:00
Sophie Schiller 3455e6daa2 add more config to rechenmonster 2022-02-18 22:18:27 +01:00
Sophie Schiller 266fd5aaa8 home.rechenmonster: upgrade to real node
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-18 21:21:26 +01:00
Franzi 14fed8bc6e
bundles/zfs: move scrub to systemd-timer
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-18 21:10:50 +01:00
Franzi 40825cec87
hooks/test_zfs_consistency: allow unmanaged pools for arch systems
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-18 19:55:35 +01:00
Franzi 19dee89039
rx300: pin version of mx-puppet-discord for now
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-18 19:02:57 +01:00
Franzi b4dca888c8
rx300: update travelynx to 1.22.0 2022-02-18 18:43:26 +01:00
Franzi 94eff087a0
bundles/users: remove PROMPT_COMMAND from bashrc 2022-02-18 17:03:54 +01:00
Franzi 468a0b0023
bundles/icinga2: remove unused code in hosts_template
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-18 16:25:59 +01:00
Franzi d35770c122
bundles/icinga2: rework config generation - use one file per host instead of one per bundle
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-18 12:25:34 +01:00
Franzi 5aa9f50c79
rx300: update netbox to 3.1.8
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-17 18:09:07 +01:00
Franzi 4883b4ebd0
rx300: update mautrix-whatsapp to 0.2.4 2022-02-17 18:08:47 +01:00
Franzi a1026692da
rx300: update element-web to 1.10.4 2022-02-17 18:08:27 +01:00
Franzi 1f6520ac02
bundles/sshmon: ignore prereleases and drafts 2022-02-17 18:08:02 +01:00
Franzi 19207649dd
kunsi-p14s: more packages
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-17 18:03:54 +01:00
Franzi 22759ca52a
bundles/postfix: enable smtps
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-15 18:21:12 +01:00
Franzi 83d58791bb
bundles/postgresql: set recordsize=8K for zfs
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-14 22:05:09 +01:00
Franzi 31e698b8a5
rx300: update mautrix-telegram to 0.11.2 2022-02-14 21:55:12 +01:00
Franzi be6e780217
rx300: update element-web to 1.10.3 2022-02-14 21:54:52 +01:00
Franzi 4c034fb8aa
kunsi-p14s: install 'ag' 2022-02-14 21:54:13 +01:00
Franzi e51ad5993a
bundles/users: ensure we have kitty terminfo
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-14 20:45:57 +01:00
Franzi 6944da6769
fix syntaxerrors
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-14 07:56:51 +01:00
Franzi 33d2d5beff
bundles/pacman: fix unattended-upgrades 2022-02-14 07:54:44 +01:00
Franzi 1ee0b38133
bundles/telegraf: properly support arch linux
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-14 07:11:14 +01:00
Franzi 26c7900e32
kunsi-p14s: install pdf viewer 2022-02-14 07:10:58 +01:00
Franzi 5d7f9d4dd1
kunsi-p14s: more packages
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-13 17:05:51 +01:00
Franzi 8d72ca805d
kunsi-p14s: clean up after setup 2022-02-13 09:54:20 +01:00
Franzi 24951f3070
kunsi-p14s: add nfs-client 2022-02-13 09:54:06 +01:00
Franzi e45237d70e
bundles/icinga2: do not check scam blocklists
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-13 09:51:03 +01:00
Franzi 3c4700eb6d
bundles/openhab: clean up old backups before doing new ones 2022-02-13 09:48:37 +01:00
Franzi 60c31d2d11
bundles/pacman: add opt-in unattended-upgrades
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-13 09:43:52 +01:00
Franzi 14b402cdf3
bundles/backup-server: fix TypeError in check_backup_for_node 2022-02-13 09:42:59 +01:00
Franzi e4c317f677
add bundle:systemd-boot
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-13 09:24:11 +01:00
Franzi 998a529d4c
EOL kunsi-t470 2022-02-13 09:24:00 +01:00
Franzi 3c763820ed
bundles/pacman: ensure we have man 2022-02-13 09:23:30 +01:00
Franzi 8c442ede2c
kunsi-p1s: document journal dataset 2022-02-13 08:57:38 +01:00
Franzi 77e152f8ce
bundles/pacman: enable paccache.timer to clean up old package versions 2022-02-13 08:55:26 +01:00
Franzi 5d7872042b
bundles/backup-server: add metadata backup-client/one_backup_every_hours 2022-02-12 19:04:15 +01:00
Franzi 9a8e7abef4
kunsi-p14s: do backups 2022-02-12 18:56:54 +01:00
Franzi 5be2610a86
bundles/systemd-networkd: don't manage resolv.conf if using resolved 2022-02-12 18:54:56 +01:00
Franzi 262e935510
bump bundlewrap to 4.13.6 2022-02-12 18:11:22 +01:00
Franzi 03d1ada220
bundles/zfs: explicitely set mountpoint for all datasets 2022-02-12 18:09:40 +01:00
Franzi 32b732e509
bundles/arch-with-gui: add some backup paths 2022-02-12 18:08:04 +01:00
Franzi b426ce811c
kunsi-p14s: more packages 2022-02-12 18:07:47 +01:00
Franzi c073599f6f
add kunsi-p14s, add bundle:arch-with-gui
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-12 14:06:53 +01:00
Franzi 87bf6fac68
bundles/zfs: use systemd-timers for zfs snapshots
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-02-12 11:29:26 +01:00
Franzi c1bb43286d
bundles/zfs: support arch linux 2022-02-12 11:24:50 +01:00
Franzi 961a2891a0
bundles/systemd-networkd: fix systemd-resolved not getting started 2022-02-12 11:24:19 +01:00
Franzi 556c2b6efe
libs.firewall: add rfc1918 to named networks 2022-02-12 11:23:27 +01:00
Franzi 8e9097a8c1
home.nas: split nas_permissions timer to multiple commands
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-02-07 07:01:50 +01:00
Franzi 40485ced8a
bundles/systemd-timers: add support for multiple commands in timer 2022-02-07 07:01:19 +01:00
Franzi 39e9ececa2
add error_context() to groups.py and nodes.py 2022-02-07 06:57:58 +01:00
Franzi bc4f6e507a
bundles/c3voc-addons: fix .provides()
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-02-06 15:31:28 +01:00
Franzi 7ee80bd2bd
rx300: update gitea to 1.16.1
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-06 15:25:36 +01:00
Franzi 6d1a24b034
bundles/gitea: use github releases instead of dl.gitea.io (which is slow) 2022-02-06 15:25:33 +01:00
Sophie Schiller 198b2c31fb another oom inducing element update
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-06 13:46:20 +01:00
Franzi a627437fce
bundles/systemd-timers: fix shebang in check
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-06 13:42:08 +01:00
Franzi 1b3cd8dd10
rx300: move cron job to systemd timers
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-06 13:41:09 +01:00
Franzi 46e6b0f704
home.nas: move cron jobs to systemd timers 2022-02-06 13:40:54 +01:00
Franzi 0674b3f8db
bundles/netbox: move housekeeping to systemd timers 2022-02-06 13:40:33 +01:00
Franzi 0599c4dae0
add bundle:systemd-timers 2022-02-06 13:39:52 +01:00
Franzi 2a3a26c333
home.nas: system is no longer backup target, do run scrub at night 2022-02-06 08:51:44 +01:00
Franzi d51d7316d0
bundles/backup-client: remove duplicate space
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-05 15:39:55 +01:00
Franzi c43129104d
home.nas: more backup paths 2022-02-05 15:39:33 +01:00
Franzi e83f684c0f
voc.pretalx: revert broadcast-tools plugin to release version
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-05 11:44:29 +01:00
Franzi 12af28cb13
bundles/pretalx: specifying a revision is now mandatory 2022-02-05 11:42:18 +01:00
Franzi 0d865c93d4
bundles/cron: use MAILTO=, rework metadata syntax 2022-02-05 11:41:41 +01:00
Franzi 533f8075ca
voc.pretalx: plugin for media.ccc.de uses 'main' now 2022-02-05 11:41:21 +01:00
Franzi f7943761e2
rx300: update netbox to 3.1.7
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-04 18:33:02 +01:00
Franzi bc2fd6d3dd
rx300: update element-web to 1.10.1
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-02-03 17:20:25 +01:00
Franzi 4cfbdb32d6
bundles/apt: check for "reboot required" in icinga check only
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
This avoids the need to manually adjust the status file after a reboot of
the server.
2022-01-30 11:43:14 +01:00
Franzi 11969b6064
bundles/travelynx: changing the imprint does not require restarting the worker process
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-01-29 09:24:23 +01:00
Franzi 557c9f51a4
rx300: adjust imprint template for travelynx
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
we do have logs, we're just not storing any user-identifying data
2022-01-29 09:22:27 +01:00
Franzi c6078e566c
home.nas: uninstall youtube-dl
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-01-24 20:04:10 +01:00
Franzi 8a24af27ee
bundles/openhab: backup-client/pre-hooks must not be a list
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-01-24 07:29:36 +01:00
Franzi b14f5aea58
bundles/openhab: also include /usr/share/openhab/addons in backups
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-01-24 07:28:26 +01:00
Franzi 031d647864
bundles/openhab: do full backup in backup-pre-hooks
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-01-24 07:26:34 +01:00
Sophie Schiller 248133a632 bw/home.wled-wohnzimmer set new mac address
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-01-23 13:55:43 +01:00
Franzi 0ccb983b28
bundles/apt: fix metadata key mess (unattended-upgrades vs unattended_upgrades)
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-01-23 05:47:42 +01:00
Franzi 07157b6335
home.nas: disable automatic reboot after updates 2022-01-23 05:09:36 +01:00
Franzi a6b7e5aabb
bump bundlewrap to 4.13.5 2022-01-22 07:10:02 +01:00
Franzi 2d8ac1d561
fix trailing whitespace for webdump.sophies-kitchen.eu
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-01-19 21:17:09 +01:00
Sophie Schiller 7161cc345b htz-cloud.miniserver: add htdocs
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-01-19 20:48:08 +01:00
Franzi 22cc208e54
rx300: update netbox to 3.1.6
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-01-17 19:51:44 +01:00
Franzi 69c36394d1
update element-web to 1.9.9 2022-01-17 19:51:29 +01:00
Franzi 1b5c53f8f9
rx300: update mautrix-whatsapp to 0.2.3
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-01-17 07:28:11 +01:00
Franzi 13853a7407
rx300: update gitea to 1.15.10
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-01-15 10:20:44 +01:00
Franzi 993fa8fa60
fix ip for proxmox-backupstorage 2022-01-14 13:47:32 +01:00
Franzi 7bdc32f03b
rx300: update travelynx to 1.12.4
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-01-14 12:57:14 +01:00
Franzi b21c8f6dbb
bundles/pacman: fix SyntaxError
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-01-13 16:04:37 +01:00
Franzi a02a2363e5
update mautrix-telegram to 0.11.1
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-01-13 16:02:31 +01:00
Franzi 05f87bad77
home.nas: do some backups 2022-01-13 15:56:57 +01:00
Franzi b94c5fa020
data/backup/keys: remove comment from key for home.openhab 2022-01-13 15:55:20 +01:00
Franzi 0dd9b061b9
bundles/scansnap: fix backup metadata 2022-01-13 15:54:49 +01:00
Franzi 5b2e5fc838
bundles/backup-server: do not alert for one missing day of backups
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-01-09 08:26:08 +01:00
Franzi 5df546754f
bundles/pacman: fix install_gui package definition 2022-01-09 08:23:59 +01:00
Franzi 40a9ac4523
bundles/sshmon: add check if OOM killer was active
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-01-07 18:07:33 +01:00
Franzi 14e4415e5f
bundles/backup-client: rework backup generation
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-01-07 08:29:34 +01:00
Franzi 4e5cb69d1c
rx300: update netbox to 3.1.5
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-01-06 23:55:42 +01:00
Franzi 583a5ca594
htz-hel.backup-kunsi: disable backup check
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-01-05 22:57:33 +01:00
Franzi b20e729298
bundles/backup-server: add option to disable "last backup" check 2022-01-05 22:57:30 +01:00
Franzi c535ce24a4
bundles/backup-client: show timezone in backup check 2022-01-05 22:57:26 +01:00
Sophie Schiller 5acfd4e657 htz-hel.backup-sophie: open mosh and iperf ports
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-01-05 22:46:40 +01:00
Franzi 35104cb8ce
bundles/backup-client: add check for last backup of specific client
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-01-05 22:44:55 +01:00
Franzi fa2f12375c
rx300: fix sha1sum for gitea
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
From Discord:
> INFO: v1.15.9 release build checksums will change
> Reason: there where two builds: the first tag did not build docker images (unrelated issue) and we had to restart it, the second time it did run successfully but reupload of artifacts to github failed this time :/
> So there was a missmatch with checksum of artifacts from dl.gitea.io & github
> -> we just restarted the pipeline to resolve that again
2022-01-05 12:41:41 +01:00
Franzi b5f93ceb48
bundles/zfs: fix typo
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-01-05 10:03:54 +01:00
Franzi c9054a243a
backups: do backup rotation ourselves instead of relying on zfs-auto-snapshot 2022-01-05 09:59:09 +01:00
Franzi b6eb12ed90
bundles/zfs: add option to disable snapshots for dataset tree 2022-01-05 09:52:20 +01:00
Franzi b40a8235d2
proxmox-backupstorage: add some documentation 2022-01-05 08:05:16 +01:00
Franzi a3300cde98
bundles/paperless: ensure we're doing backups of the actual data, too
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-01-05 07:50:22 +01:00
Franzi a34c6539fd
move proxmox-backupstorage to htz-hel 2022-01-04 18:05:53 +01:00
Franzi fd1e2690f8
remove home.octoprint-leapfrog
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-01-04 17:35:59 +01:00
Sophie Schiller 8684c2cf82 switch miniserver backups to HEL
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-01-04 17:29:27 +01:00
Franzi 3e0269ba99
bundles/backup-{client,server}: use node names, only deploy users to correct backup server
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-01-04 17:15:56 +01:00
Franzi 05aa78c254
htz-hel.backup-kunsi: add kunsi-t470 to backup users 2022-01-04 16:13:24 +01:00
Franzi 3d90f544bf
groups/linux: change backup host to htz-hel.backup-kunsi
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-01-04 15:52:24 +01:00
Franzi 5a34d9d58c
bundles/systemd-networkd: add option to enable RA for nodes without dhcp 2022-01-04 15:47:05 +01:00
Franzi 460a04278f
gce.bind01: exclude from backups 2022-01-04 15:36:30 +01:00
Franzi 245b2219ee
bundles/backup-client: spread backups further apart 2022-01-04 15:34:53 +01:00
Franzi 95c04354ba
groups/htz-hel: fix location
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-01-04 15:29:30 +01:00
Franzi 2c4eb03214
bundles/backup-server: auto-import pool after decrypting
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-01-04 15:24:22 +01:00
Franzi 67b8697808
add htz-hel.backup-kunsi
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-01-04 15:18:41 +01:00
Franzi 7c9be01a4f
groups: add htz and htz-hel 2022-01-04 15:18:27 +01:00
Franzi fb931df4f0
bundles/apt: add flag to disable automatic rebooting
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-01-04 15:15:19 +01:00
Franzi 4c59479d5c
bundles/backup-server: add option for encrypted devices 2022-01-04 15:15:16 +01:00
Franzi d0b8ccef64
add bundle:dm-crypt 2022-01-04 15:15:13 +01:00
Franzi 906b63b123
move hostname stuff to libs.tools.resolve_identifier 2022-01-04 15:15:11 +01:00
Franzi 02f4547652
add proxmox-backupstorage 2022-01-04 15:15:08 +01:00
Franzi 36a4ebcdd6
bundles/powerdns: also try to use node.hostname for dns generation 2022-01-04 15:15:03 +01:00
Franzi 226fac0d78
nodes.py: use setdefault() 2022-01-04 15:15:00 +01:00
Sophie Schiller 3a3ce5c5fd Merge pull request 'htz-hel/backup-sophie add new node' (#50) from backup-sophie into main
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
Reviewed-on: #50
Kunsi saud this is fine despite the jenkins errors.
2022-01-04 14:08:26 +00:00
Sophie Schiller e654a0b46e fix indentation
Some checks failed
kunsi/bundlewrap/pipeline/pr-main There was a failure building this commit
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2022-01-04 14:59:37 +01:00
Sophie Schiller ab8c11c0bd htz-hel/backup-sophie add new node
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
kunsi/bundlewrap/pipeline/pr-main There was a failure building this commit
2022-01-04 14:40:05 +01:00
Franzi 29000d3b8e
rx300: update netbox to 3.1.4
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-01-04 08:27:31 +01:00
Franzi d288222e8e
voc.pretalx: add check-mail-received 2022-01-02 14:51:11 +01:00
Franzi dc2b2ae86b
bundles/check-mail-received: move check source to icinga2 itself 2022-01-02 14:50:32 +01:00
Franzi 8be40c4adc
rx300: update gitea to 1.15.9
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-01-02 13:43:02 +01:00
Franzi f99697ddc1
rx300: update netbox to 3.1.3 2022-01-02 13:38:40 +01:00
Franzi 59fd71ac6f
update mautrix-telegram to 0.11.0 2022-01-02 13:38:23 +01:00
Franzi 390f18a3a4
hooks: test zfs metadata consistency 2021-12-29 13:23:07 +01:00
Franzi 0b4f0e142f
bundles/zfs: explicitely set canmount and mountpoint if not specified
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-28 16:58:42 +01:00
Franzi 803e1dc411
bundles/mautrix-whatsapp: no need for regular restarts any more 2021-12-28 16:48:43 +01:00
Franzi e30f7f44ef
voc.pretalx: use release 1.1.0 of downstream plugin
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-27 13:35:59 +01:00
Franzi 5cf32673fe
voc.pretalx: update to 2.3.1
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-26 04:23:22 +01:00
Franzi 509f8cfd49
add group voc
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-25 20:11:34 +01:00
Franzi 956185fde1
home.nas: fix local mqtt topic for c3voc bridge 2021-12-25 20:11:09 +01:00
Franzi cab71d60ba
voc.pretalx: temporary use fork of pretalx-downstream plugin 2021-12-25 20:10:41 +01:00
Franzi 7cfe080e6f
bundles/sshmon: add check_pypi_for_new_release
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-25 11:40:23 +01:00
Franzi 0ac0fe072d
bundles/pretalx: wait for migrations before regenerating css and rebuilding stuff
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-25 10:00:26 +01:00
Franzi 352b028e58
voc.pretalx: update pretalx to 2.3.0, broadcast_tools to rc3 branch
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-25 09:52:21 +01:00
Franzi 44fcdc7d11
bundles/icinga: set cascade_skip=False for icinga_notification_wrapper
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-24 16:29:18 +01:00
Sophie Schiller d6ec8de7c6 cleanup duplicated metadata
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-24 15:39:28 +01:00
Franzi 6292dd4c71
bundles/infobeamer-cms: config is toml now, deploy to src/
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-24 15:30:25 +01:00
Sophie Schiller b39d87f33f infobeamer-cms: set sensible start time
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-24 14:56:02 +01:00
Franzi cda1dc2095
bundles/infobeamer-cms: use curl -s
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-24 13:04:31 +01:00
Franzi 7dc584d8cb
bundles/infobeamer-cms: adjust config to new version
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-24 12:17:14 +01:00
Franzi ba294f6a6c Merge pull request 'Add new Node and bundle for infobeamer-cms' (#49) from sschi-infobeamer-cms into main
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
Reviewed-on: #49
2021-12-24 10:57:58 +00:00
Franzi caf2ff6a30
update matrix-media-repo to 1.2.10
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-24 09:23:58 +01:00
Franzi 230dd5e3ab
bw/ssl: bump _.home.kunbox.net
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-24 09:11:21 +01:00
Franzi 0383fa0a67
bundles/{rspamd,netbox}: update redis database number 2021-12-24 09:09:28 +01:00
Sophie Schiller 678f558f4a infobeamer-cms: WHITESPACE
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
kunsi/bundlewrap/pipeline/pr-main This commit looks good
2021-12-23 19:45:24 +01:00
Sophie Schiller 18e30178a4 letsencrypt: add openssl package
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-12-23 19:39:12 +01:00
Sophie Schiller 2e4cccea00 voc.infobeamer-cms: update network config 2021-12-23 19:39:12 +01:00
Sophie Schiller bac2a369c4 infobeamer-cms: make usable 2021-12-23 19:39:12 +01:00
Sophie Schiller bf125a73b1 infobeamer-cms: initial commit 2021-12-23 19:39:06 +01:00
Franzi d288923969
get redis database mapping from libs.defaults
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-23 07:39:08 +01:00
Franzi b6b5beaa27
bundles/netbox: send update notification mails 2021-12-22 11:12:34 +01:00
Franzi b8a109efb0
bundles/sshmon: rewrite check_github_for_new_release 2021-12-22 11:09:26 +01:00
Franzi 58192620b9
rx300: update netbox to 3.1.2
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-22 11:03:47 +01:00
Franzi 7a596298e2
rx300: update gitea to 1.15.8 2021-12-22 11:03:31 +01:00
Franzi 1057f45eb9
update element-web to 1.9.8 2021-12-22 11:03:08 +01:00
Franzi 38b449af35
bundles/letsencrypt: only run dehydrated after installing it
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-19 14:17:41 +01:00
Franzi c5b7b0f97e
ovh.icinga2: add _.qzwi.de certificate check
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-19 06:36:41 +01:00
Franzi de3580a7d3
bundles/letsencrypt: ensure-some-certificate shouldn't create 10-year-certs 2021-12-19 06:36:11 +01:00
Franzi 04450d4b4c
bundles/sudo: disable syslog spam
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-19 06:23:05 +01:00
Franzi 5261375574
bundles/pppd: add systemd-timer to automatically update dyndns 2021-12-19 06:21:04 +01:00
Franzi 573287e6f1
rx300: update mautrix-whatsapp to 0.2.2
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-18 18:54:21 +01:00
Franzi 376dba347f
bundles/php: allow configuring of memory_limit and clear_env 2021-12-18 18:54:00 +01:00
Franzi 2b06c77439
bundles/pppd: allow dynamic configuration of nftables rules
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-14 16:18:11 +01:00
Franzi 20bbb3eb8e
libs/firewall: add AS3320 (Telekom) 2021-12-14 16:09:31 +01:00
Franzi 0101e0c92d
bundles/nftables: store rules in dedicated files instead of nftables.conf
All checks were successful
kunsi/bundlewrap/pipeline/pr-main This commit looks good
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-14 15:27:30 +01:00
Franzi 1742f51778
libs.tools.resolve_identifier: add support for named networks
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-14 13:24:26 +01:00
Franzi 969b45d9f7
kunsi-t470: limit openssh to RFC1918 and ipv6 2021-12-14 12:42:16 +01:00
Franzi c6c5d40084
bundles/nftables: add support for restricting to "all ipv6" and "all ipv4" 2021-12-14 12:40:54 +01:00
Franzi d2f1bb406d
rx300: update netbox to 3.1.1
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-14 09:33:01 +01:00
Franzi 3fb125f043
update element-web to 1.9.7 2021-12-14 09:32:15 +01:00
Franzi 3399b30efc
rx300: update travelynx to 1.12.3 2021-12-13 08:18:54 +01:00
Franzi 5018826a6a
rx300: update element-web to 1.9.6
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-12 08:36:42 +01:00
Franzi e2efe87308
rx300: update netbox to 3.1.0 2021-12-12 08:36:18 +01:00
Franzi 0e54a4e298
ssl: bump _.franzi.business 2021-12-12 08:01:16 +01:00
Franzi 999bdf3336
nodes/kunsi-t470: allow RFC1918 ips to access obs websocket
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-09 10:24:02 +01:00
Sophie Schiller 6638f8ce9f htz-cloud.miniserver: update element-web
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-07 16:04:32 +01:00
Sophie Schiller d52ce706b6 htz-cloud.miniserver: update hedgedoc
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-07 15:56:43 +01:00
Franzi 7eec5c42e3
bundles/icinga2: do not send sms or mail for services when sms/mail was disabled for host
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-04 20:07:36 +01:00
Franzi 0531ecd217
bundles/gitea: downloading gitea does not need restarting
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
we're stopping gitea beforehand, then start it again afterwards. No need
to restart it again.
2021-12-04 20:01:35 +01:00
Franzi 14eb529fb7
rx300: update gitea to 1.15.7
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-04 20:00:35 +01:00
Franzi d44c87e8a7
move SPAM BLOCKLIST check to icinga2 itself
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
somehow, we tend to get false positives if we run that check on the
node itself.
2021-11-28 07:26:41 +01:00
Franzi 70cb460934
fix matrix-dimension to fixed git revision, since master is broken
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-11-27 15:21:29 +01:00
Franzi bcf664ed66
update element-web and netbox
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-11-27 11:13:57 +01:00
Franzi 74f5b25f0d
various fixes, remove some TODOs 2021-11-27 10:40:20 +01:00
Franzi a76c60f881
bundles/nftables: fix shebang 2021-11-26 18:36:16 +01:00
Franzi df849873a9
voc.pretalx: fix url for pretalx_broadcast_tools, update 0.2.0
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-11-22 20:57:58 +01:00
Franzi 6cf6307d97
rx300: fix php packages 2021-11-22 20:34:02 +01:00
Franzi 02a2338250
voc.pretalx: update pretalx-lower-thirds to 0.1.2
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-11-21 13:36:00 +01:00
Franzi 632a1f6e75
voc,pretalx: install plugin lower_thirds
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-11-21 09:42:02 +01:00
Franzi 998b776b9f
bundles/kodi: fix .provides()
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-11-15 21:45:41 +01:00
Franzi e4e340e431
bundles/grafana: fix spanning for battery row
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-11-15 21:36:45 +01:00
Franzi 52fbcfb43e
bundles/grafana: add some filling to battery row
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-11-15 21:31:15 +01:00
Franzi 7969ae9ebe
bundles/grafana: fix value for battery dashboard row
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-11-15 21:26:23 +01:00
Franzi e17d1ab02f
add bundle:telegraf-battery-usage
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-11-15 21:18:42 +01:00
Franzi 330ce6d3a2
rx300: update netbox to 3.0.10
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-11-13 19:18:00 +01:00
Franzi c1c717e055
update mautrix-telegram to 0.10.2 2021-11-13 19:17:30 +01:00
Franzi f97f5ea518
rx300: update mautrix-whatsapp to 0.2.1
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-11-11 15:42:39 +01:00
Franzi e10ac0e57f
bundles/matrix-{media-repo,synapse}: catch all them metrics into influxdb
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-11-09 18:26:52 +01:00
Franzi e58b447eb7
rx300,htz-cloud.miniserver: update element-web to 1.9.4
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-11-09 18:10:29 +01:00
Franzi 7f82b8f754
gce.bind01: update powerdnsadmin to 0.2.4 2021-11-09 18:10:25 +01:00
Franzi 8f6b8632f5
bundles/{element-web,hedgedoc,powerdnsadmin}: use 'yarn install --ignore-scripts' 2021-11-09 18:10:22 +01:00
Franzi e6428ce029
rx300: add sha1 hash of mautrix-whatsapp 2021-11-09 18:10:19 +01:00
Franzi 33b6700848
bundles/mautrix-whatsapp: use precompiled binary 2021-11-09 18:10:17 +01:00
Franzi 4a4f45bc9d
rx300: update netbox to 3.0.9 2021-11-09 18:10:14 +01:00
Franzi 0d62b4fa55
rx300: update mautrix-whatsapp to 0.2.0 2021-11-09 18:10:11 +01:00
Sophie Schiller eef463afbd hedgedoc: forbid access to metrics and stats
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-11-09 11:58:11 +01:00
Sophie Schiller 55798ac704 hedgedoc: add telegraf config for hedgedoc metrics
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-11-09 11:48:03 +01:00
Franzi 8e1f827f44
rx300: update mautrix-whatsapp to 0.1.10
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-11-02 18:56:43 +01:00
Franzi c0b5dbe89a
home.openhab: fix backup server address
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-11-02 18:03:19 +01:00
Franzi f7845e89de
rx300: add nginx access to rspamd web interface 2021-10-31 18:34:33 +01:00
Franzi 3f4de13f8a
rx300: raumzeitlabor uses ARC now
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-10-31 18:28:28 +01:00
Franzi 0398df8f3a
bundles/openhab: fix website_check_string
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-10-31 10:31:13 +01:00
Franzi 0412c9042a
bundles/wireguard: fix stderr handling of wg_health_check
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-10-31 09:49:37 +01:00
Franzi f482874310
home.openhab: install and configure openhab
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-10-31 09:43:53 +01:00
Franzi aa8f19d948
update PORT_MAP 2021-10-31 09:43:42 +01:00
Franzi 2f885e7bfb
bundles/kodi: allow websocket port in firewall 2021-10-31 09:43:07 +01:00
Franzi ee86b5a121
bundles/wireguard: less spammy output for wg_health_check
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-30 19:36:20 +02:00
Franzi c04ad04c75
rx300: update travelynx to 1.21.2
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-30 14:31:44 +02:00
Franzi de839880ff
rx300: update mautrix-whatsapp to 0.1.9
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-29 18:33:54 +02:00
Franzi f2c8d93f57
rx300: update gitea to 1.15.6 2021-10-29 18:33:34 +02:00
Sophie Schiller 96757aa1bb htz-cloud.miniserver: update element-web
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-27 00:17:48 +02:00
Sophie Schiller 411819c872 Merge remote-tracking branch 'origin/main' into main
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-27 00:10:06 +02:00
Sophie Schiller e4149575ed allow users to make pads editable 2021-10-27 00:08:27 +02:00
Franzi 84f6cca167
rx300: update gitea to 1.15.5
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-26 15:39:54 +02:00
Franzi 25f7da7f98
rx300: update element-web to 1.9.3 2021-10-26 15:39:32 +02:00
Franzi 980bea3351
add node home.openhab 2021-10-26 15:38:01 +02:00
Franzi 68506ae41b
rx300: update netbox to 3.0.8
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-20 18:04:18 +02:00
Franzi 0a131b4248
bundles/grafana: add voltages and power usage to ipmitool
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-18 19:48:19 +02:00
Franzi 8300f48541
add bundle:ipmitool, add grafana dashboard row
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-18 19:42:27 +02:00
Franzi 92b2e19e44
bundles/grafana: fix line width for fans 2021-10-18 19:41:16 +02:00
Franzi 3775bcb9db
bundles/telegraf: add cache directory 2021-10-18 19:34:20 +02:00
Franzi 5885e4b043
bundles/users: add lsb_release and local date to status line
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-16 07:42:19 +02:00
Franzi 29eef9ec59
htop: fix sorting 2021-10-16 07:38:57 +02:00
Franzi 94cba4283b
bundles/pretalx: fixup cron
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-15 20:10:46 +02:00
Franzi 86953e60bd
bundles/pretalx: add script to automatically set is_administrator and is_staff based on group membership
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-15 20:03:15 +02:00
Franzi f02088d9fe
nodes/home.router: enable wg_health_check
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-14 09:02:29 +02:00
Franzi 095d425de1
bundles/wireguard: do not run wg_health_check during bw apply 2021-10-14 09:02:01 +02:00
Franzi 9188b28b7a
bundles/wireguard: add wg_health_check
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-14 08:54:54 +02:00
Franzi f79365304c
update element-web to 1.9.2
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-12 20:22:03 +02:00
Franzi 8b7844bd2f
update netbox to 3.0.7
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-11 21:27:47 +02:00
Franzi 6b8cef164f
update gitea to 1.15.4
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-11 21:25:47 +02:00
Franzi 871b26c920
update element-web to 1.9.1 2021-10-11 20:57:43 +02:00
Franzi 61e5591628
bundles/systemd-networkd: fix bridge-in-bridge-setup on home.nas not working properly
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-11 20:46:07 +02:00
Franzi 2662fa5976
.gitignore: ignore more stuff
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-07 18:25:34 +02:00
Franzi 505af6b503
update netbox to 3.0.6
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-07 16:11:51 +02:00
Franzi c907b9b39d
data/ssl: bump _.home.kunbox.net 2021-10-07 16:11:48 +02:00
Sophie Schiller 134342d3e5 wireguard: add new psk and pupkey for sophie
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-03 10:26:21 +02:00
Franzi 4380e80192
nodes/ovh.wireguard: reenable wireguard connection to sophie-ejgwthink
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-03 10:13:25 +02:00
Franzi 2d1f638894
nodes/ovh.wireguard: fix wireguard vpn connection to kunsi-oneplus3
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-10-03 10:07:29 +02:00
Franzi b7482008df
home.router: add hosts entry for wireguard box
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-09-30 06:48:22 +02:00
Franzi 8656f99f8e
bundles/wireguard: re-add reconnect script for added resiliency
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-09-30 06:37:42 +02:00
Franzi 13057d6f76
home.router: remove openvpn client 2021-09-29 20:36:34 +02:00
Franzi 074184bb96
update netbox to 3.0.4
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-09-29 19:56:21 +02:00
Franzi 89f91f3857
nodes: add bird to wireguard nodes
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-09-29 19:47:14 +02:00
Franzi 30d4d989fc
add bundle:bird 2021-09-29 19:45:18 +02:00
Franzi fe44417b14
bundles/systemd-networkd: add dummy interfaces 2021-09-29 19:44:37 +02:00
Franzi 996ef6e115
bundles/nftables: more sorted() 2021-09-29 19:44:13 +02:00
Franzi 5f1f4fd654
bundles/wireguard: add option 'snat_to' for connections 2021-09-29 19:43:29 +02:00
Franzi 902840ee7f
bundles/wireguard: use one wireguard connection per peer instead of one for all 2021-09-29 19:27:13 +02:00
Franzi 8110ec508e
update element-web to 1.9.0
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-09-28 16:19:18 +02:00
Franzi 8688726d94
rx300: also gzip svg images 2021-09-25 14:44:00 +02:00
Franzi c9717043bb
rx300: add some caching to franzi.business
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-09-25 14:42:00 +02:00
Franzi 2b0e3a4bf0
bundles/powerdns: use only public ips or those attached to physical interfaces to create dns records
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-09-25 11:08:18 +02:00
Franzi b81153e957
bundles/netbox: fix upgrade command
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-09-22 16:43:59 +02:00
Franzi 05d69c1f12
bundles/powerdns: use named-checkzone to verify zone integrity 2021-09-22 16:42:26 +02:00
Franzi 0edb7137f4
update netbox to 3.0.3 2021-09-22 16:42:10 +02:00
Franzi dc193ad4e8
update gitea to 1.15.3 2021-09-22 16:40:45 +02:00
Franzi bb8910d15f
bundles/gitea: use metadata.get() 2021-09-22 16:38:27 +02:00
Franzi c2e503d2d5
bump bundlewrap to 4.12.0 2021-09-22 16:36:23 +02:00
Franzi b21f7c856a
bundles/gitea: switch to new file type 'download' 2021-09-21 07:55:15 +02:00
Franzi fbb13e4c2f
bump _.franzi.business
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-09-19 19:40:05 +02:00
Franzi 51960556de
nodes/aurto: add note to put added packages to file
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-09-16 19:33:14 +02:00
Franzi ed2bb66e3e
bundles/basic: add links to icinga, grafana and nginx vhosts to login message 2021-09-16 19:33:11 +02:00
Franzi 5a7d0b0afd
bundles/icinga2: don't skip everything if check_sipgate_account_balance can't get applied 2021-09-16 19:33:08 +02:00
Franzi 74ba98624b
home.nas: install requirements for compiling yate 2021-09-16 19:33:05 +02:00
Sophie Schiller c9f9a27096 bundle/hedgedoc add new csp defaults
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-09-14 20:23:01 +02:00
Sophie Schiller 738dbd94a0 bundle/hedgedoc improve dependencies 2021-09-14 20:23:01 +02:00
Sophie Schiller 624b7526a1 nodes/htz-cloud.miniserver bump hedgedoc version 2021-09-14 20:23:01 +02:00
Sophie Schiller 481c1c85e5 bundle/nginx set instead of HTTPS 2021-09-14 20:23:01 +02:00
Franzi 4214b0a4ee
update element-web to 1.8.5
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-09-14 19:41:37 +02:00
Sophie Schiller 0664bc36b2 security update for element-web
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-09-13 21:39:42 +02:00
Sophie Schiller 77a14a0017
bundle/hedgedoc remove quoting inconsistencies
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-09-11 20:24:10 +02:00
Sophie Schiller 1f6da4f15e Merge pull request 'hedgedoc-bundle' (#47) from hedgedoc-bundle into main
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
Reviewed-on: #47
2021-09-11 18:11:58 +00:00
Sophie Schiller 09da9a8d92 bundle/hedgedoc improve config rendering to not produce errors with faults
Some checks are pending
kunsi/bundlewrap/pipeline/head This commit looks good
kunsi/bundlewrap/pipeline/pr-main Build started...
2021-09-11 20:07:52 +02:00
Sophie Schiller 3d3994789e bundle/hedgedoc update wbsite check
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-09-11 19:56:49 +02:00
Sophie Schiller fcb39260c3 nodes/htz-cloud.miniserver add hedgedoc config
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-09-11 19:47:55 +02:00
Sophie Schiller 478a8da9f4 bundles/hedgedoc add new bundle 2021-09-11 19:47:28 +02:00
Franzi 25d7657e7d
update netbox to 3.0.2
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-09-11 11:45:46 +02:00
Franzi b159ecd744
dns: add tickets.franzi.business 2021-09-09 09:30:40 +02:00
Franzi f77d6df1e5
bundles/matrix-dimension: fix dependencies
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-09-08 15:16:00 +02:00
Franzi 05f9712b24
bundles/rspamd: change dmarc reporting sender to working address
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-09-08 14:43:22 +02:00
Franzi 3561a829d2
rx300: install bind9utils 2021-09-08 14:36:52 +02:00
Franzi de6249c65d
dns: fix some errors 2021-09-06 16:42:14 +02:00
Franzi 38ba67a335
remove group 'htz' 2021-09-06 16:08:23 +02:00
Franzi cd31340c34
remove htz.ex42-1048908 2021-09-06 16:06:23 +02:00
Franzi 78fda4f9e9
bundles/rspamd: do not try to resolve faults in items.py
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-09-06 09:28:30 +02:00
Franzi e743de5404
dns: add comment about why kunbox.net does not use DMARC 2021-09-06 09:24:40 +02:00
Franzi 3039a0900e
bundles/rspamd: add alias for dmarc reports 2021-09-06 09:14:18 +02:00
Franzi e78c4ed056
update gitea to 1.15.2 2021-09-06 09:13:11 +02:00
Franzi 97ae55427d
update travelynx to 1.21.1 2021-09-06 09:12:15 +02:00
Franzi 4ca0926546
bundles/rspamd: send dmarc reports 2021-09-06 09:11:36 +02:00
Sophie Schiller 530462e9d2 add recipes vhost
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-09-02 14:25:07 +02:00
Franzi 43bcd75e87
update netbox to 3.0.1
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-09-02 07:52:11 +02:00
Franzi ab139513e4
nodes/ovh.icinga2: switch sipgate to access tokens
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-09-01 14:10:31 +02:00
Franzi a174b133ed
update element-web to 1.8.2
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-08-31 16:04:42 +02:00
Franzi 45c2556a80
dns: allow salonkatrin.de DMARC notifications
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-08-29 09:59:38 +02:00
Franzi be2580b7f6
nodes/htz-cloud.pirmasens: add user autojenkins 2021-08-27 21:31:10 +02:00
Franzi c7fd6ee041
bundles/grafana: make rspamd row more pretty
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-08-25 15:15:09 +02:00
Franzi 2940bfd3d8
bundles/rspamd: add telegraf metrics
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-08-23 22:24:59 +02:00
Franzi ad159cc29a
update gitea to 1.15.0
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-22 09:00:27 +02:00
Franzi 3f38497585
bundles/vmhost: add metadata reactor to add all admins to 'libvirt' group
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-22 07:25:46 +02:00
Franzi 65462ca536
bundles/nginx: default redirect mode should be 308 2021-08-22 07:20:45 +02:00
Franzi f6231f2d66
nodes/htz.ex42-1048908: there are no more VMs
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-22 07:17:16 +02:00
Franzi ece7b343f9
nodes/home.router: disable sms alerts for now
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-22 07:14:47 +02:00
Franzi 08485aa827
nodes/home.nas: add second bridge where LAN is available untagged 2021-08-22 07:13:32 +02:00
Franzi 48d48d2f5c
groups/{gce,home,ovh}: fix postfix relayhost
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-22 06:36:56 +02:00
Franzi d94df613c5
bundles/netbox: fix ADMINS
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-21 12:46:55 +02:00
Franzi 5a499b9321
nodes/rx300: add netbox config
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-08-21 12:44:14 +02:00
Franzi 00272f51e0
nodes/rx300: add netbox
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-21 12:33:05 +02:00
Franzi c6fe9d5eb2
bundles/postfix: fix .provides() 2021-08-21 12:32:47 +02:00
Franzi b0d2503f08
add bundle:netbox 2021-08-21 12:32:40 +02:00
Franzi f077346930
nodes/htz.ex42-1048908: remove postgresql
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-08-21 12:12:30 +02:00
Franzi 4cb89d699c
bundles/grafana: fix missing derivative() in dovecot row 2021-08-21 08:39:39 +02:00
Franzi 0bc84e596e
dns: add warnochwas.de and emails.sexy
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-08-21 08:29:04 +02:00
Franzi 45dcd890b2
update travelynx to 1.21.0 2021-08-21 08:25:37 +02:00
Franzi 12ca6f4ff7
bundles/postfix: open up SMTPS 2021-08-21 08:12:21 +02:00
Franzi a39a72b27e
dns: fix DMARC
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-21 08:11:09 +02:00
Franzi dd05b62442
nodes/htz.ex42.1048908: EOL vliedel.random.franzi.business
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-21 07:57:56 +02:00
Franzi f98a769aa1
nodes/rx300: update postfixadmin 2021-08-21 07:56:36 +02:00
Franzi ee75e9d4ce
nodes/htz-cloud.miniserver: set icinga_options/pretty_name 2021-08-21 07:54:40 +02:00
Franzi ae5e4b9ee6
nodes: fix journal size for rx300
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-21 07:52:58 +02:00
Franzi a2083b9ca0
nodes: fix rspamd metadata 2021-08-21 07:48:31 +02:00
Franzi 3da3c00310
bundles/rspamd: changing of .map files does not need restarting 2021-08-21 07:48:02 +02:00
Franzi c3960b0dfd
dns: EOL vliedel.random.franzi.business 2021-08-21 07:47:41 +02:00
Franzi ea9abc5f73
bundles/grafana: add dashboard row for dovecot 2021-08-21 07:47:24 +02:00
Franzi 2a7ab3a183
move mail to rx300 2021-08-21 07:34:18 +02:00
Franzi 96f1604879
bundles/dovecot: some fixes
- fix postfix/myhostname default
- ensure old_stats plugin is enabled
- ensure permissions for old_stats plugin
- ensure /etc/dovecot/ssl exists
- remove unneeded configuration files
2021-08-21 07:31:22 +02:00
Franzi 8301664d9a
bundles/{grafana,influxdb2}: fix more permissions
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-20 13:33:28 +02:00
Franzi 72d91767ec
bundles/influxdb: fix INFLUXDB PROCESS check 2021-08-20 13:25:40 +02:00
Franzi 949e139978
bundles/telegraf: influxdata has bullseye repos now 2021-08-20 13:25:22 +02:00
Franzi e800ccfe10
nodes/rx300: there are now packages for bullseye in nginx and rspamd repos
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-20 13:14:06 +02:00
Franzi dd30590420
update mautrix-telegram to 0.10.1
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-20 12:31:22 +02:00
Franzi f0987ccb44
bundles/unbound: automatically restart unbound if dns resolution fails for more than five minutes
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-19 20:03:24 +02:00
Franzi 35938ead04
bundles/unbound: less caching of negative results 2021-08-19 20:02:27 +02:00
Franzi 1a9c74d3d8
htz.ex42-1048908: add c3voc ip ranges to rspamd ignore list
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-17 18:49:18 +02:00
Franzi 4167d3cb22
update to bw 4.11.2
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-17 18:10:35 +02:00
Franzi 649473e4b5
update element-web to 1.8.1
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-08-17 16:47:40 +02:00
Franzi 5b3ec48687
nodes/voc.pretalx: update to 2.2.0 2021-08-17 16:47:24 +02:00
Franzi 5bbd188b0b
bundles/pretalx: no sudo for rebuilding 2021-08-17 16:46:58 +02:00
Franzi d507f6794f
bundles/apt: ensure we have ncurses-term
If that's not installed, we get weird drawing issues in tmux.
2021-08-17 16:42:26 +02:00
Franzi 25ea5af2db
bundles/smartd: add cronjob to schedule a monthly long test
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-08-15 16:22:34 +02:00
Franzi bd10dc578f
bundles/pppd: refactor check_dyndns_update
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
We don't care about what the DNS provider said when updating the ip
address. The only thing we care about is wether the current external ip
of the system matches the resolved ip address.
2021-08-14 08:00:43 +02:00
Franzi 1d8733d0c2
update postfixadmin to 3.3.10
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-09 16:51:34 +02:00
Franzi bb519adb2c
bundles/backup-client: more logging, fix wrong variable name 2021-08-08 07:47:07 +02:00
Franzi c14bb43993
bundles/grafana: fix derivative for wireguard last handshake time
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-07 23:32:39 +02:00
Franzi 36de4f0c58 Merge pull request 'nginx-error-pages' (#45) from nginx-error-pages into main
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
Reviewed-on: #45
2021-08-07 20:10:01 +00:00
Sophie Schiller e8d1582ed4 bw/nginx i hate whitespace
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
kunsi/bundlewrap/pipeline/pr-main This commit looks good
2021-08-07 22:01:40 +02:00
Sophie Schiller 6e3603553f bw/nginx retab everything
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
kunsi/bundlewrap/pipeline/pr-main There was a failure building this commit
2021-08-07 21:59:07 +02:00
Sophie Schiller ab21983a4f bw/nginx add not found page and deployment of error pages
Some checks failed
kunsi/bundlewrap/pipeline/pr-main There was a failure building this commit
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-08-07 21:52:39 +02:00
Sophie Schiller 856c9be73f bw/nginx moar fancy css 2021-08-07 21:23:51 +02:00
Sophie Schiller a09953a849 bw/nginx let's not use inline css
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-08-07 20:51:03 +02:00
Sophie Schiller 940416c684 bw/nginx add first draft of error page
Some checks failed
kunsi/bundlewrap/pipeline/head There was a failure building this commit
2021-08-07 20:35:12 +02:00
Franzi d9d98116e6
bundles/grafana: increase proxy_read_timeout for /api/ds/query
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-07 20:02:57 +02:00
Franzi ea7a8236ce
update gitea to 1.14.6
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-07 19:34:07 +02:00
Franzi 0a77b72cd3
update mautrix-whatsapp to 0.1.8
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-07 18:57:31 +02:00
Franzi 05de574471
bundles/backup-client: sleep a bit if backup did finish non-zero to increase chances of success 2021-08-07 10:30:19 +02:00
Franzi 04cee2b4c3
bundles/icinga2: fix file permissions
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-07 07:13:41 +02:00
Franzi b677eaf187
bundles/grafana: fix file permissions 2021-08-07 07:03:15 +02:00
Franzi da49a907f7
bundles/nftables: set RemainAfterExit=yes 2021-08-07 07:01:00 +02:00
Franzi 8eb7cbf6fd
bundles/mautrix-whatsapp: don't restart so often 2021-08-07 07:00:27 +02:00
Franzi 8fd73e09de
bundles/backup-client: retry backups
rsync just fails too often in the last couple of days. I don't want to
babysit this every morning.
2021-08-07 06:59:33 +02:00
Franzi 3c105d3295
bundles/mautrix-*: repository has moved
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-06 16:25:21 +02:00
Franzi ffefb56f83
bundles/chekc-mail-received: increase sshmon timeout
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-04 16:07:13 +02:00
Franzi 0f425036b2
bundles/backup-client: fix newlines
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-04 15:55:14 +02:00
Franzi 55d481b86c
update element-web to 1.7.34 2021-08-04 15:44:15 +02:00
Franzi 91a527c35a
bundles/mautrix-telegram: change animated stickers to webm 2021-08-01 12:41:47 +02:00
Franzi b94ab9de9c
bundles/nodejs: fix type for apt repo items
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-01 08:20:06 +02:00
Franzi 58d2576ec9
bundles/backup-server: fix dependencies
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-01 07:57:48 +02:00
Franzi e596b45344
bundles/backup-client: actually show which rsync call produced which error 2021-08-01 07:57:22 +02:00
Franzi 1ae328d8f3
items/zfs_*: improve
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-30 15:44:34 +02:00
Franzi 9f8878ae8f
bundles/pacman: manage pacman.conf
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-30 14:27:30 +02:00
Franzi 9a3d78c38b
nodes/rx300: add gce systems to postfix mynetworks
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-30 07:02:59 +02:00
Franzi 407d84a8c6
bundles/matrix-synapse: add option to automatically provision other nginx vhosts with wellknown data
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-29 17:33:48 +02:00
Franzi 2f79f55da5
bundles/mautrix-whatsapp: fix cronjob
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-29 17:13:08 +02:00
Franzi 40922473b7
aurto: add f2k1de ssh keys
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-28 16:10:12 +02:00
Franzi e71fbdd235
aurto: add e1mo ssh keys
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-26 18:49:40 +02:00
Franzi df137f73a6
bundles/apt: symlink /usr/bin/python to python3
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-25 13:32:59 +02:00
Franzi e51e1113bb
bundles/sysctl: work around debian bug
The debian systemd will silently overwrite /etc/sysctl.d/99-sysctl.conf
with a symlink to /etc/sysctl.conf. We don't want that.
2021-07-25 13:31:00 +02:00
Franzi 6b231dff49
htz.ex42-1048908: add raumzeitlabor ips to rspamd allowlist
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-25 09:53:45 +02:00
Franzi 4082540b7d
home.nas: add one more ssh key to qcn user
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-25 09:40:49 +02:00
Franzi e77c31fb07
nodes/rx300: move paste.franzi.business to /var/www, add cronjob to clean up old stuff
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-24 12:23:07 +02:00
Franzi 0d9e9ffa4b
home.nas: add read-only rsync user for movie storage
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-24 12:10:54 +02:00
Franzi 4666f1c923
bundles/users: remove duplicate keys from ssh pubkeys 2021-07-24 12:10:03 +02:00
Franzi 36219dbb95
nodes/rx300: add pkg_apt:libpod-parser-perl
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-24 07:18:35 +02:00
Franzi 183dfbe00b
nodes/rx300: set correct data for security.txt
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-24 07:13:35 +02:00
Franzi 9aa389ea28
bundles/matrix-media-repo: less strict rate limits
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-23 20:17:06 +02:00
Franzi 804516c2f4
move matrix-dimension to rx300 2021-07-23 20:02:57 +02:00
Franzi e7023d087b
bundles/matrix-dimension: add zfs 2021-07-23 19:53:49 +02:00
Franzi 79e6c841a7
bundles/grafana: add dashboard row for unbound
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-23 19:34:55 +02:00
Franzi 2b8ede117a
nodes/rx300: install unbound 2021-07-23 19:15:08 +02:00
Franzi d4d353f0b6
move radicale to rx300
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-23 13:03:47 +02:00
Franzi ff90f8cbca
bundles/radicale: add metadata reactor for nginx vhost 2021-07-23 12:56:29 +02:00
Franzi ca9e661b97
move oidentd to rx300
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-23 10:07:35 +02:00
Franzi b5530b15ee
move weechat to rx300 2021-07-23 10:04:32 +02:00
Franzi c0af623782
nodes/rx300: disable postfixadmin vhost for now
Some checks are pending
kunsi/bundlewrap/pipeline/head Build queued...
2021-07-23 08:14:17 +02:00
Franzi b565d5c882
move matrix stuff to rx300 2021-07-23 07:58:50 +02:00
Franzi 905a7917f8
bundles/matrix*: fix directories/repos 2021-07-23 07:58:15 +02:00
Franzi 46fcd1670f
fix mac address for home.winkeeinhorn-vm
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-22 16:24:51 +02:00
Franzi dcba3a446f
update element-web to 1.7.33 2021-07-22 16:15:40 +02:00
Franzi 58f33b86c4
nodes/rx300: prepare for moving mail
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-18 07:56:49 +02:00
Franzi 66fce8e076
bundles/rspamd: fix some dependencies 2021-07-18 07:56:26 +02:00
Franzi c9a1de5a8e
bundles/postfixadmin: fix backup path to be able to use zfs snapshots 2021-07-18 07:55:52 +02:00
Franzi 6cadf33ae3
bundles/postfix: support having postfixadmin without setting myhostname 2021-07-18 07:55:19 +02:00
Franzi 84d55c246a
items/zfs_dataset: remove automatic dependency detection for now
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
This basically reverts commit 1086ed28c3
2021-07-17 19:40:41 +02:00
Franzi cee2a41771
items/zfs_pool: rewrite item to support all kinds of zfs pools
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-17 18:12:57 +02:00
Franzi 9111d49bf4
bundles: fix missing stuff
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-17 16:59:39 +02:00
Franzi fc0495f13a
bundles/rspamd: dkim key can be a string, too 2021-07-17 16:18:18 +02:00
Franzi 61062c8312
bundles/matrix-dimension: disable update check until there are releases
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
... we're using 'master' for now.
2021-07-17 13:06:49 +02:00
Franzi 32c0ad3bd6
bundles/matrix-synapse: auto-configure nginx vhost
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-17 12:38:04 +02:00
Franzi 574b3a833a
nodes/htz.ex42-1048908: fix metadata option for matrix-media-repo 2021-07-17 12:16:43 +02:00
Franzi 71a6f08ebf
nodes: use _.franzi.business certificate everywhere
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-17 12:02:14 +02:00
Sophie Schiller ff526a7f7f Merge pull request 'matrix-dimension' (#44) from matrix-dimension into main
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
Reviewed-on: #44
2021-07-17 09:58:18 +00:00
Franzi 6a144cf991
bundles/users: add option to enable lingering
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-17 11:33:43 +02:00
Franzi 9fc86a4d9f
move paste.kunsmann.eu to paste.franzi.business, die-brontosaurier-waren-es.org to rx300 2021-07-17 10:53:35 +02:00
Franzi eb566fa5c5
move kunbox.net and kunsmann.eu to rx300 2021-07-17 10:26:38 +02:00
Franzi 2959d19391
nodes/htz.ex42-1048908: add note about which bundles need migrating to rx300 2021-07-17 10:18:19 +02:00
Franzi ce9f6dd7ba
bundles: add zfs dataset to bundles 2021-07-17 10:17:39 +02:00
Franzi 337b660f5a
bundles/matrix-synapse: ensure matrix-synapse does not mess with our homeserver.yaml
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-17 09:32:49 +02:00
Franzi 77f785135d
groups/home: add icinga host dependencies
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-17 09:21:43 +02:00
Franzi cbeb42c8ae
bundles/matrix-media-repo: add zfs 2021-07-17 09:12:11 +02:00
Franzi 1086ed28c3
items/zfs_dataset: add automatic dependency for all files, directories and git_deploy of a dataset 2021-07-17 09:10:56 +02:00
Franzi b3e322ae08
nodes/ovh.icinga2: icingaweb2 needs mysql now 2021-07-17 09:04:04 +02:00
Sophie Schiller 07dbcb51f4 bw/htz-cloud.miniserver bump element-web version
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
kunsi/bundlewrap/pipeline/pr-main This commit looks good
2021-07-17 01:09:33 +02:00
Sophie Schiller 58691904fc bw/matrix-dimension repair syntax errors 2021-07-17 01:09:33 +02:00
Sophie Schiller d076384ead bw/matrix-dimension remove unneeded metadata 2021-07-17 01:09:33 +02:00
Sophie Schiller 6ceb47a92e bw/matrix-dimension get all the things 2021-07-17 01:09:33 +02:00
Sophie Schiller 2b1c53e47a bw/matrix-dimension disable logfile 2021-07-17 01:09:33 +02:00
Sophie Schiller aa639dc913 bw/matrix-dimension switch to generic vhost name 2021-07-17 01:09:33 +02:00
Sophie Schiller 71a1a4d59b bw/matrix-dimension enable process monitoring 2021-07-17 01:09:33 +02:00
Sophie Schiller f40036422f bw/matrix-dimensions fix typos 2021-07-17 01:09:33 +02:00
Sophie Schiller 568a73efaf bw/matrix-dimension switch listening port 2021-07-17 01:09:33 +02:00
Sophie Schiller 9fb5293c80 bw/matrix-dimension switch to dedicated user 2021-07-17 01:09:33 +02:00
Sophie Schiller 2a78fa95a1 bw/htz-cloud.miniserver cleanup extras 2021-07-17 01:09:33 +02:00
Sophie Schiller ebee3b3de5 bw/matrix-dimension witespaaaaaaaace 2021-07-17 01:09:33 +02:00
Sophie Schiller 8ee59cd036 bundle/matrix-dimension enable backups 2021-07-17 01:09:33 +02:00
Sophie Schiller fd6f42cef7 bw/htz-cloud.miniserver set differend recursors 2021-07-17 01:09:33 +02:00
Sophie Schiller a5b6250c86 bw/bundle matrix-dimension this might actually work 2021-07-17 01:09:33 +02:00
Sophie Schiller c52482e98b bw/bundle matrix-dimension add first draft 2021-07-17 01:09:33 +02:00
Franzi 6022bac0ef
have more bundles provide nginx metadata for themselves 2021-07-16 14:20:01 +02:00
Franzi 2ca14d0f62
nodes/rx300: update gitea to 1.14.5 2021-07-16 14:12:35 +02:00
Franzi 999f413dfc
move wiki.franzi.business to rx300 2021-07-16 13:34:20 +02:00
Franzi 9e305fc854
bundles/element-web: fix nginx webroot path
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-15 18:44:02 +02:00
Franzi 8aac46206a
remove obsolete metadata from htz.ex42-1048908 2021-07-15 18:41:43 +02:00
Franzi 7d73c29ccd
move element-web to rx300 2021-07-15 18:41:27 +02:00
Franzi f7098b0d35
bundles/element-web: move to /opt (and zfs, if we have that) 2021-07-15 18:40:48 +02:00
Franzi afdfc0f8f2
data/ssl: bump _.home.kunbox.net
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-15 18:23:45 +02:00
Franzi 1d2ff1744f
nodes/rx300: update travelynx to 1.20.3
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-13 21:12:40 +02:00
Franzi 133627ace2
bundles/unbound: prefer ipv4 if using pppoe
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-13 20:51:58 +02:00
Franzi 3c2f245b71
bundles/mx-puppet-discord: remove "Discord" in room name for now
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-11 16:38:59 +02:00
Franzi a210ada211
README: jenkins has moved
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-11 15:58:26 +02:00
Franzi 72f148425a
bundles/jenkins-ci: add ssh keys and config
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-11 15:47:45 +02:00
Franzi 0a14d46cf2
bundles/jenkins: add zfs dataset 2021-07-11 15:29:42 +02:00
Franzi 3871893c9b
move jenkins to rx300 2021-07-11 15:24:08 +02:00
Franzi 8da40eab67
nodes/rx300: add php 8.0 2021-07-11 15:23:49 +02:00
Franzi a66d9c5765
bundles/mx-puppet-discord: add (Discord) to room and user names
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-11 12:29:05 +02:00
Franzi 7fef4d7a00
nodes/aurto: add n0emis ssh keys
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-10 21:57:04 +02:00
Franzi b193971625
bundles/postfix: fix some needed files not being present in chroot on arch
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-10 16:16:56 +02:00
Franzi 8f4db6f2ba
bundles/postfix: install pkg_pacman:s-nail 2021-07-10 15:59:03 +02:00
Franzi fe5b7b7335
nodes/htz-cloud.pirmasens: add bundle:check-mail-received 2021-07-10 15:54:02 +02:00
Franzi 3351767d56
add bundle:check-mail-received
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-10 14:22:19 +02:00
Franzi 76b859c629
libs.faults: add ensure_fault_or_none() and join_faults() 2021-07-10 14:21:56 +02:00
Franzi 5781869f03
nodes/{aurto,rx300}: send a daily test message to a t-online address to keep our "reputation"
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-10 13:04:08 +02:00
Franzi 6c9809b165
bundles/grafana: add guest cpu time to cpu graph
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-10 10:05:26 +02:00
Franzi b17ce5f905
nodes/htz.ex42: fix git.kunsmann.eu redirect url 2021-07-09 18:21:01 +02:00
Franzi 1e026c1769
nodes/rx300: update gitea to 1.14.4
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-09 18:19:15 +02:00
Franzi 6a4b24c0f2
fix git urls in repo
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-09 17:27:12 +02:00
Franzi 1f25d0052e
add legacy redirect for git.kunsmann.eu 2021-07-09 17:26:54 +02:00
Franzi d0bdcacc94
nodes/rx300: install correct dependencies for franzi.business deployment
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-07-09 16:38:26 +02:00
Franzi 1927837205
bundles/gitea: add /var/lib/gitea to backups 2021-07-09 16:22:37 +02:00
Franzi 9bf0b8a0b0
bundles/gitea: use zfs datasets for all data 2021-07-09 16:22:10 +02:00
Franzi 82dd354f92
bundles/gitea: fix permissions for /home/git/.ssh 2021-07-09 16:15:38 +02:00
Franzi bd77f8da93
move franzi.business to rx300 2021-07-09 16:11:53 +02:00
Franzi c2cb5a2546
move gitea to rx300 2021-07-09 15:57:39 +02:00
Franzi 95c5e0b6ea
bundles/gitea: use generic vhost name 2021-07-09 15:55:31 +02:00
Franzi 4a30aeaab6
nodes/htz.ex42-1048908: fix matrix server wellknown stuff
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-05 20:05:47 +02:00
Franzi 3c23de4dfa
bundles/grafana: fix nginx vhost config
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-04 20:10:19 +02:00
Franzi 9021c6f853
bundles/grafana: fix permissions for some files and directories
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-04 20:06:35 +02:00
Franzi cbc0a1a927
nodes/htz.ex42-1048908: fix X-Forwarded-For header for matrix-media-repo
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-04 20:03:22 +02:00
Franzi b5ab21549d
bundles/nginx: rename 'proxy' metadata to 'locations', support more generic options, move extras files to metadata
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-04 19:28:03 +02:00
Sophie Schiller a3a228fc2d bw/htz-cloud.miniserver bump element-web version
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-04 13:32:18 +02:00
Franzi e2c901dbe4
Jenkinsfile: enable BW_PASS_DUMMY_MODE
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-02 19:31:54 +02:00
Franzi af53a610bb
use bundlewrap-pass for human-used passwords
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-07-02 19:29:52 +02:00
Franzi c87a8e2f15
bundles/pretalx: use pip install -e for locally existing code
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-02 18:45:59 +02:00
Franzi e091adaa64
bundles/nginx: increase buffer sizes
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-02 18:21:57 +02:00
Franzi 9c1b4f5dbe
move travelynx.franzi.business to rx300
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-02 16:15:31 +02:00
Franzi b7935e59e7
nodes/home.paperless: increase max_body_size 2021-07-02 15:49:17 +02:00
Franzi 8ef6522ead
bundles/travelynx: needs directory to git_deploy into 2021-07-02 15:48:48 +02:00
Franzi f9e2715b30
bundles/systemd-networkd: removal of unmanaged files must also trigger restart of systemd-networkd 2021-07-02 15:03:47 +02:00
Franzi 7ac7c1a2b7
bundles/cron: ensure cron is installed and running 2021-07-02 06:36:51 +02:00
Franzi a2501ed2cb
nodes/rx300: update to debian bullseye
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-01 18:23:30 +02:00
Franzi 683ad81015
dns: fix CNAME for status.franzi.business 2021-07-01 18:23:11 +02:00
Franzi 9816da4f85
bundles/postgresql: only install postgresql-server-dev-* if needed 2021-07-01 18:22:38 +02:00
Franzi 210ae8dd2e
bundles/zfs: debian bullseye does not need zfs from backports 2021-07-01 18:19:24 +02:00
Franzi 6d5085c1e7
move unicornsden.franzi.business to rx300
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-01 17:40:07 +02:00
Franzi 5ebed4a0fb
dns: switch to CNAME records for some hosts
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-01 17:32:25 +02:00
Franzi 686aa533e8
bundles/grafana: change logBase for nginx timing dashboard
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-01 16:34:17 +02:00
Franzi ba30015f7f
nodes/rx300: set pretty name for status page 2021-07-01 16:15:03 +02:00
Franzi 0f383cfb2c
move miniflux to rx300, change domain to rss.franzi.business
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-07-01 16:10:06 +02:00
Franzi d32f675de7
bundles/miniflux: use vhost with generic name 2021-07-01 16:04:56 +02:00
Franzi 68e79b4883
bundles/nginx: only add well-known alias for vhosts which use letsencrypt 2021-07-01 16:04:46 +02:00
Franzi 20f4c182ad
bundles/pacman: ensure we have run-parts
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-30 06:22:06 +02:00
Franzi d4dabc90c5
nodes/aurto: also backup aurto database
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-29 16:39:05 +02:00
Franzi 7f27762054
bundles/zfs: report *used*, not free storage space 2021-06-29 15:18:31 +02:00
Franzi 73ebf746f9
nodes/{aurto,rx300}: add backups 2021-06-29 14:58:14 +02:00
Franzi da6a607033
nodes/rx300: add nginx, letsencrypt, postgresql 2021-06-29 14:24:10 +02:00
Franzi f01e24f995
bundles/postgresql: wait 10s after restarting 2021-06-29 14:23:51 +02:00
Franzi faae70bbb1
nodes/aurto: add ssl to nginx vhost 2021-06-29 14:14:18 +02:00
Franzi 7b00e7484e
fix monitoring for arch linux hosts
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-28 19:59:54 +02:00
Franzi dfbdbe73bd
bundles/icinga2: only nodes which have bundle:apt have unattended-upgrades (for now) 2021-06-28 19:48:05 +02:00
Franzi 95ed5c6932
groups/arch: do not set exclude_from_monitoring by default 2021-06-28 19:45:26 +02:00
Franzi a594337965
nodes/{aurto,rx300}: lives in a data center now
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-28 19:42:51 +02:00
Franzi 450fb3f87a
bundles/kodi: do not install libcec4
All checks were successful
bundlewrap/pipeline/head This commit looks good
It's not available in bullseye (but libcec6), but we don't need it
anyway, because we're not using cec here.
2021-06-27 07:17:05 +02:00
Franzi cd6e4b9767
bundles/influxdb2: disable atime for zfs dataset
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-26 08:19:55 +02:00
Franzi bb15d1217f
nodes/home.nas: more ram
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-26 06:18:01 +02:00
Franzi 2193e0ca53
bundles/grafana: fix units for zfs panels
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-25 20:16:13 +02:00
Franzi 7d4a99344b
bundles/zfs: enable autotrim on debian bullseye and above
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-25 20:05:35 +02:00
Franzi 1c10be5cdc
bundles/zfs: add per-dataset metrics 2021-06-25 20:04:30 +02:00
Franzi 9cc324f84c
bundles/backup-server: enable compression for backups 2021-06-25 20:04:10 +02:00
Franzi a793bb5fc1
bundles/zfs: rename zfs_arc_max_mb to zfs_arc_max_gb
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-25 18:39:06 +02:00
Franzi b36018f36b
nodes/htz.ex42-1048908: update travelynx to 1.20.1 2021-06-25 18:37:07 +02:00
Sophie Schiller b949ba3e72 bw/home.kodi-wohnzimmer update to bullseye
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-23 18:07:43 +02:00
Franzi 7f290dfce6
nodes/htz.ex42-1048908: pkg_apt:oidentd is managed by bundle:oidentd
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-20 21:44:32 +02:00
Franzi 68865895e5
bundles/grafana: set decimals=0 for fan speed info 2021-06-19 14:18:30 +02:00
Franzi 8d331b0086
bundles/nginx: always use first of month for security.txt expiry
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-19 08:49:10 +02:00
Franzi d4659fd189
update gitea to 1.14.3 2021-06-19 08:47:32 +02:00
Franzi 8c47b74ec3
update travelynx to 1.20.0 2021-06-18 13:09:38 +02:00
Franzi 5a8f7f4075
update mautrix-telegram, update mautrix-whatsapp 2021-06-16 07:15:20 +02:00
Franzi fc5e163fb9
bundles/miniflux: use health check endpoint
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-12 10:11:17 +02:00
Franzi e3578e669c
nodes/home.nas: add cronjob
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-12 08:56:38 +02:00
Franzi 05670ac2bb
bundles/icinga2: less code for icinga statusmonitor
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-11 16:49:12 +02:00
Franzi 1e13e632c9
nodes/rx300: remove lldp, set correct ip
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-11 15:02:43 +02:00
Franzi 611954e199
nodes/kunsi-t470: add a bridge on ethernet to be able to use vms 2021-06-11 15:02:03 +02:00
Franzi 1b70a4247c
upgrade element-web to 1.7.30 2021-06-11 12:58:37 +02:00
Franzi 455d4d7551
bundles/sshmon: fix occasional KeyErrors in check_cpu_stats
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-06 17:59:58 +02:00
Franzi 94dba9139b
bundles/mosquitto: rewrite tasmota-telegraf-plugin using paho-mqtt library
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-06 15:17:34 +02:00
Franzi fa4fe51155
bundles/backup-client: do logging
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-06 08:05:41 +02:00
Franzi 3fc51d9eba
nodes/home.nas: move scrub to where it does not interfere with backups 2021-06-06 08:03:16 +02:00
Franzi 82d2e5b416
bundles/grafana: hide empty/zero values in lm-sensors dashboard row
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-05 21:39:48 +02:00
Franzi 840d8228ed
bundles/grafana: fix line width for lm-sensors dashboard row
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-05 15:58:00 +02:00
Franzi db83b1614b
bundles/nginx: add anonymous timing logging for http requests
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-05 15:53:02 +02:00
Franzi 72d4826dbb
remove bundle:netdata - we have telegraf and grafana now
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-05 13:28:25 +02:00
Franzi 91cf6cd1e5
move lm-sensors to its own bundle, add to hardware systems 2021-06-05 12:23:09 +02:00
Franzi 5dde5d1642
bundles/apt: no --force-confdef in unattended upgrades
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-05 11:13:51 +02:00
Franzi 6138db1089
bundles/matrix-synapse: no statistics 2021-06-05 11:13:19 +02:00
Franzi ff85191bbe
bundles/radvd: fix typo
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-04 07:28:40 +02:00
Franzi 95856a2c2d
add bundle:sysctl 2021-06-04 07:28:26 +02:00
Franzi 8d21e15106
bundles/pppd: restart nftables if it isn't running 2021-06-04 07:20:59 +02:00
Franzi 1fbc08f74b
bundles/nginx: add a default security.txt to all vhosts
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-03 18:57:25 +02:00
Franzi 0a7e5bcdcd
move default values to libs/defaults 2021-06-03 18:27:45 +02:00
Franzi 5369490b79
bundles/postfix: fix spam blocklist timeout 2021-06-03 14:31:03 +02:00
Franzi 949690ad59 Merge pull request 'nftables' (#41) from kunsi-nftables into main
All checks were successful
bundlewrap/pipeline/head This commit looks good
Reviewed-on: https://git.kunsmann.eu/kunsi/bundlewrap/pulls/41
2021-06-03 12:21:08 +00:00
Franzi 5c83287057
EOL bundle:iptables
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-03 13:59:50 +02:00
Franzi d569b00960
modify nodes and bundles for new nftables syntax 2021-06-03 13:59:36 +02:00
Franzi ecb67d012b
bundles/nftables: introduce 2021-06-03 13:57:50 +02:00
Franzi faf27a3940
bundles/nfs-server: support using node names for shares
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-03 07:45:56 +02:00
Franzi f84e9c533f
nodes/aurto: add nginx, move aurto to dedicated user
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-01 17:00:09 +02:00
Franzi a6434bd8d0
create dedicated user for kunsi work laptop 2021-06-01 16:55:16 +02:00
Franzi 09397e2597
bundles/users: fix adding of non-admin users 2021-06-01 16:53:29 +02:00
Franzi 47c18913ca
bundles/pacman: install htop 2021-06-01 16:53:14 +02:00
Franzi fba83415c7
bundles/letsencrypt: prepare for arch linux 2021-06-01 16:52:52 +02:00
Franzi cf3c45fdd5
bundles/nginx: prepare for arch linux 2021-06-01 16:52:03 +02:00
Franzi 6b90d568cf
bundles/postfix: use dig in check_spam_blocklist instead of a python library
All checks were successful
bundlewrap/pipeline/head This commit looks good
The library isn't available as a debian package, so we would have to
manually install that every time the python package updates its minor
version number.
2021-05-29 09:29:40 +02:00
Franzi d756e3daf8
nodes/kunsi-t470: fix scansnap mount path 2021-05-29 09:21:18 +02:00
Franzi 79facf2409
nodes/home.paperless: set backup target
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-24 19:19:24 +02:00
Franzi 3468b719ed
bundles/nginx: default vhost always supports letsencrypt 2021-05-24 19:19:10 +02:00
Sophie Schiller c395438a41 update element-web
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-24 19:12:33 +02:00
Sophie Schiller 1461cf2827 bw/home.paperless-sophie add sophie's paperless host
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-24 19:04:59 +02:00
Franzi 6bfcd87976
bundles/paperless-ng: ensure we have static files
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-24 15:02:04 +02:00
Sophie Schiller 9a60d36a03 scan bright colors
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-24 11:01:13 +02:00
Franzi 5d4ca086e6
bundles/scansnap: do ocr in a separate process to speed up scanning
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-24 10:24:01 +02:00
Franzi d193ec8ef3
bundles/paperless: set some options 2021-05-24 10:23:19 +02:00
Franzi df3e18b476
bundles/paperless: fix media path
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-23 18:41:56 +02:00
Franzi fa59c547a9
nodes/home.paperless: add vhost extras for static files
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-23 18:11:57 +02:00
Franzi 22c98a4206
nodes/home.paperless: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-23 17:41:19 +02:00
Franzi aaf937a89f
nodes/kunsi-t470: add automount for scansnap 2021-05-23 15:24:21 +02:00
Franzi 3a44a9fbfb
bundles/vmhost: only install qemu-kvm for debian buster and older
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-23 14:54:47 +02:00
Franzi 46f7aa93ef
bundles: fix dependencies 2021-05-23 14:54:24 +02:00
Franzi 8dc66421c0
bundles/basic: don't rewrite /etc/locale.gen every time 2021-05-23 14:53:45 +02:00
Franzi 56a36f8cae
nodes/htz.ex42-1048908: add proxy headers to matrix-synapse
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-05-23 14:38:17 +02:00
Franzi 24066d89a2
nodes/aurto: add vm
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-05-23 14:36:22 +02:00
Franzi 17f3537d74
nodes/kunsi-*: use new groups 2021-05-23 14:36:19 +02:00
Franzi 5a182fadef
make some bundles arch-compatible, more default packages for arch 2021-05-23 14:36:16 +02:00
Sophie Schiller c136c33a58 add missing proxy headers
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-21 23:51:53 +02:00
Sophie Schiller c200e4002e add dimension
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-21 23:37:11 +02:00
Franzi 27f8cfb187
allow sophies element to access franzis dimension
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-21 20:36:43 +02:00
Franzi 0fda52337c
nodes/htz-ex42-1048908: update matrix wellknown urls
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-21 20:33:14 +02:00
Franzi e7dce1c36b
nodes/rx300: monitoring
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-20 18:24:35 +02:00
Franzi 522cecb9fb
nodes/rx300: add smartd 2021-05-20 18:24:23 +02:00
Franzi 78498b5a46
nodes/rx300: a bit less ram
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-20 17:51:50 +02:00
Franzi 97cbef06a2
bundles/grafana: remove derivative from temperature and fan graphs
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-20 06:51:10 +02:00
Franzi 8568298a4e
bundles/grafana: make sure we have backups of the grafana database
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-19 20:56:34 +02:00
Franzi e54135b014
bundles/telegraf: it's "command" for execd, not "commands", because ... who knows
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-19 20:50:18 +02:00
Franzi df192e543b
bundles/transmission: add telegraf statistics
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-05-19 20:12:52 +02:00
Franzi 3b3bdeecab
bundles/pacman: add lm_sensors to telegraf, add dashboard row 2021-05-19 18:46:22 +02:00
Franzi c74a249a00
nodes/kunsi-seibert-x1: don't try to manage networking 2021-05-19 18:35:45 +02:00
Franzi 9e07af289e
bundles/scansnap: don't try to delete output directory
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-19 06:35:18 +02:00
Sophie Schiller 4d33539a63 bump element-web to 1.7.28
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-17 17:27:40 +02:00
Sophie Schiller d307bc0556 bw/htz-cloud.miniserver enable backups
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-16 19:54:18 +02:00
Franzi 3e9c28b8ae
bundles/zfs: no 'set -e' in backup-pre-hook
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-16 07:53:27 +02:00
Franzi 976aa251d1
bundles/zfs: actually unmount snapshots before trying to destroy them
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-16 07:43:31 +02:00
Franzi 479b730be4
bundles/zfs: introduce zfs-snapshot-backups, enable backups for nodes which need zfs-snapshot-backups
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-15 20:32:23 +02:00
Franzi 93e36156a0
bundles/grafana: disable editing of tasmota dashboard 2021-05-15 18:38:12 +02:00
Franzi 25b305bddf
bundles/mosquitto: fix .provides()
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-15 08:58:15 +02:00
Franzi 32826ed131
bundles/mosquitto: add telegraf stats for tasmota devices
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-05-15 08:52:37 +02:00
Franzi eb6ae208cb
bundles/grafana: fix file system permissions
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-15 07:33:21 +02:00
Franzi d9595ad8e6
bundles/icinga2: fix typo in check_usv_snmp 2021-05-15 07:28:15 +02:00
Franzi d51cded72d
nodes/home.router: use debian buster nginx repo for now
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-15 06:58:42 +02:00
Franzi 07c3d93e7d
bundles/miniflux: make sure to restart process if it crashes
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-15 06:50:11 +02:00
Franzi 8e45b93b78
bundles/powerdnsadmin: yarn isn't installed globally any more
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-14 20:15:49 +02:00
Sophie Schiller 8bde57be4b bw/htz-cloud.miniserver install matrix and other components
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-14 20:07:55 +02:00
Sophie Schiller d3c9550463 bundle/postgresql add dependencies, remove redundant config 2021-05-14 20:06:42 +02:00
Sophie Schiller a656eb7eb3 bundle/nodejs remove yarn install 2021-05-14 20:05:04 +02:00
Sophie Schiller 88cfbc0699 bundle/matrix-synapse update dependencies, improve postgres database
creation
2021-05-14 20:03:56 +02:00
Sophie Schiller bd19749971 bundle/matrix-media-repo update dependencies and needs 2021-05-14 20:02:39 +02:00
Sophie Schiller 3c5e778016 bundle:/element-web install yarn from npm instead of apt 2021-05-14 20:01:19 +02:00
Sophie Schiller ea73de81e5 remove dummy from miniserver
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-14 15:00:37 +02:00
Franzi f92eb37bfc
nodes/htz-cloud.influxdb: increase login timeout
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-14 12:27:58 +02:00
Franzi 459c7731cb
bundles/backup-client: use --compress-level=1 instead of -z 2021-05-14 10:47:58 +02:00
Franzi 1fce93ad30
update postfixadmin setup password 2021-05-13 09:15:55 +02:00
Franzi dccdd4d97f
nodes/home.octoprint-vielschichtigkeit: remove node
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-13 09:11:33 +02:00
Franzi 7775f33679
bundles/apt: move patchday to 21:00 UTC 2021-05-13 09:10:33 +02:00
Franzi 835726f3a7
nodes: update postfixadmin to 3.3.9 2021-05-13 09:01:45 +02:00
Franzi 762a4d34c1
nodes/htz.ex42-1048908: update gitea and element-web
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-11 17:44:35 +02:00
Franzi fab9a41024
bundles/c3voc-addons: use new way of doing updates, too
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-11 06:21:42 +02:00
Franzi c41c43cd5c
nodes/home.nas: more snapshot for storage/nas 2021-05-08 11:07:12 +02:00
Franzi 276bd6ae8d
bundles/apt: rework upgrade-and-reboot mechanics to be more robust
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-08 08:31:04 +02:00
Franzi f33f638d88
nodes/htz-cloud.miniserver: set dummy=True
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-04 17:34:22 +02:00
Franzi 2bcc0bd22a
nodes/ovh.icinga2: install unbound
All checks were successful
bundlewrap/pipeline/head This commit looks good
seems quad9 isn't as stable as we'd want them to be :(
2021-05-03 19:36:47 +02:00
Franzi a971bf5d3b
nodes: add work laptop
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-02 20:53:10 +02:00
Franzi c976be62d7
bundles/grafana: only refresh managed dashboards every minute
All checks were successful
bundlewrap/pipeline/head This commit looks good
After all, we're only getting data every minute, so there's no point
in refreshing more often.
2021-05-02 19:57:32 +02:00
Franzi a2fa68f9e4
bundles/grafana: fix typo in dashboard for home.usv01
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-02 18:05:01 +02:00
Franzi e6345bce30
bundles/grafana: disable editing of dashboard for home.usv01 2021-05-02 18:02:07 +02:00
Franzi 974a5039f5
bundles/grafana: add dashboard for home.usv01 2021-05-02 17:50:31 +02:00
Franzi c1b1dc1a29
bundles/grafana: add support for custom managed dashboards 2021-05-02 17:49:40 +02:00
Franzi fe668fd5d4
bundles/grafana: add "traffic per interface" graphs, fix naming of values
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-02 15:01:22 +02:00
Franzi 0f387102b3
bundles/postgresql: do not collect metrics for telegraf database
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-02 14:01:26 +02:00
Franzi ada87897a4
bundles/grafana: add wireguard graphs 2021-05-02 13:55:41 +02:00
Franzi 40160fb25a
bundles: remove telegraf metrics from systemd-networkd and icinga2 2021-05-02 13:18:35 +02:00
Franzi 3b1d1f7e94
add postgresql metrics to telegraf/grafana
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-02 13:09:01 +02:00
Franzi 1bc47fa231
bundles/grafana: fix y axis for disk iops graph
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-02 12:07:49 +02:00
Franzi ae0bb8ed58
bundles/postfix: rework exporter for better usability 2021-05-02 12:06:53 +02:00
Franzi 9b9465502a
bundles/grafana: add postfix graph
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-02 11:55:34 +02:00
Franzi 0b972bc464
bundles/grafana: add nginx
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-02 11:34:55 +02:00
Franzi b299edbef4
bundles/grafana: add "free" to memory row
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-02 11:05:01 +02:00
Franzi 7d9ce7aed9
add pretty name for status page to some nodes
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-02 10:54:27 +02:00
Franzi 68fed2439d
bundles/apt: fix "set -x" call
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-02 10:45:21 +02:00
Franzi c548a88ee7
bundles/grafana: introduce, add to htz-cloud.influxdb 2021-05-02 10:44:50 +02:00
Franzi 1a1ea721d9
bundles/telegraf: also work for arch linux systems 2021-05-02 07:32:54 +02:00
Franzi 8c276b53a6
nodes/home.nas: enable x11 forwarding for admins
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-01 15:18:21 +02:00
Franzi 75fea7aa34
bundles/gitea: add a ssh key, enable git hooks for htz.ex42-1048908
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-01 14:27:31 +02:00
Franzi 8f4023c1c5
nodes/htz.ex42-1048908: update matrix-media-repo to 1.2.8
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-01 12:25:00 +02:00
Franzi 8a95dfa90a
nodes/home.downloadhelper: restrict lldp to vlan 42
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-01 10:05:24 +02:00
Franzi 3de85e6717
bundles/webfs: introduce 2021-04-30 19:40:45 +02:00
Franzi 30efde6eb3
bundles/apt: remove unneeded if
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-30 13:30:10 +02:00
Franzi b235519ecf
bundles/apt: "set -xeuo pipefail" for upgrade-and-reboot
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-30 12:51:09 +02:00
Franzi 8fd83241ca
bundles: ensure apt/repos/*/items is a set 2021-04-30 12:49:59 +02:00
Franzi bac0ac0b00
nodes/htz.ex42-1048908: update element-web to 1.7.26
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-27 19:05:26 +02:00
Franzi c2c59892fe
nodes/htz.ex42-1048908: add die-brontosaurier-waren-es.org to nginx
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-25 12:06:38 +02:00
Franzi 671b460855
nodes/htz.ex42-1048908: add unicornsden.franzi.business 2021-04-25 10:04:56 +02:00
Franzi 44d42de81c
bundles/nginx: only redirect to ssl for sites which actually have ssl enabled
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-25 09:20:16 +02:00
Franzi 690e56f558
scripts/letsencrypt-wildcard: import script to repo
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-25 09:11:21 +02:00
Franzi a8e07c62c3
nodes/home.router: add ssl to vnstat nginx vhost 2021-04-25 09:10:05 +02:00
Franzi d98a1adfd9
bundles/ssl: support using a preexisting ssl certificate 2021-04-25 09:09:23 +02:00
Franzi 019d658442
bundles/icinga2: add check_usv_snmp
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-25 08:02:04 +02:00
Franzi 1360a36a95
nodes/home.router: poll switch and usv more often 2021-04-24 14:58:09 +02:00
Franzi ffd899534a
bundles/telegraf: use node.metadate.get() everywhere
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-24 14:51:01 +02:00
Franzi e5c49ab172
nodes/home.router: add snmp plugin to telegraf
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-24 14:32:27 +02:00
Franzi 5b32ae836d
nodes/htz.ex42-1048908: update travelynx to 1.19.13
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-24 13:45:37 +02:00
Franzi e9ce0ce869
bundles/systemd-networkd: add missing key to .provides()
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-24 12:38:51 +02:00
Franzi 966ee7dae9
bundles/unbound: set correct statistics interval 2021-04-24 12:00:09 +02:00
Franzi a9692317d2
bundles/telegraf: temporarily hardcode a repo path
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-04-24 11:47:28 +02:00
Franzi 6772b3b5d0
bundles: various fixes for telegraf plugins
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-04-24 11:45:58 +02:00
Franzi a980e22ecb
bundles/telegraf: support requesting additional capabilities and/or groups 2021-04-24 11:44:55 +02:00
Franzi f78c024edc
groups/linux: add influxdb auth data
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-24 10:36:52 +02:00
Franzi 2f222371c3
nodes/htz-cloud.influxdb: add influxdb2 to node 2021-04-24 10:35:41 +02:00
Franzi 1a0e68e2e7
dns: add influxdb.kunsmann.eu 2021-04-24 10:34:11 +02:00
Franzi dc0695e38f
bundles/influxdb: introduce 2021-04-24 10:17:56 +02:00
Franzi c97d9ab948
bundles/postfix: use own postqueue exporter 2021-04-24 10:17:05 +02:00
Franzi 76f46ca7d5
bundles/telegraf: add sudoers file 2021-04-24 10:12:56 +02:00
Franzi 2432075f9a
bundles/telegraf: ensure telegraf is running, restart on config changes 2021-04-24 10:05:52 +02:00
Franzi f58e66f701
bundles/c3voc-addons: make sure we're not accidentially overwriting c3voc telegraf config 2021-04-24 09:44:31 +02:00
Franzi 2667a2c00d
libs: replace libs.toml.dict_to_toml with libs.faults.resolve_faults
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-24 09:39:08 +02:00
Franzi 4e175e998e
nodes/htz-cloud.influxdb: add node
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-04-24 09:14:28 +02:00
Franzi a37d31973a
bundles: add some telegraf plugins 2021-04-24 09:14:25 +02:00
Franzi 5e0541aef8
bundles/telegraf: introduce 2021-04-24 09:14:21 +02:00
Franzi 433754590d
groups/htz-cloud: make sure to uninstall cryptsetup
All checks were successful
bundlewrap/pipeline/head This commit looks good
Gives some warnings on initramfs regeneration.
2021-04-24 09:13:37 +02:00
Franzi 90a84fc9da
htz-cloud: add wireguard node, add internal network to nodes
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-24 08:53:20 +02:00
Franzi 0a3210c703
nodes/htz.ex42-1048908: update travelynx to 1.19.12
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-24 08:09:31 +02:00
Sophie Schiller 883caac939 add new wireguard keys
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-23 21:23:43 +02:00
Franzi ebb6d287b2
bundles/icinga2: add node name to automatic downtime comment
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-23 14:30:34 +02:00
Franzi e05b306702
apt/gpg-keys: update matrix.org gpg key
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-23 14:15:50 +02:00
Franzi 8b14575657
bundles/postgresql: add metadata keys for some performance related config options 2021-04-23 14:02:04 +02:00
Franzi 616feb54b2
bundles/sshmon: fix an issue where check_mounts couldn't properly detect systemd mount units 2021-04-23 14:01:24 +02:00
Franzi 8687cd6bfa
nodes/home.nas: set zfs snapshot settings for storage/scan
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-21 18:26:10 +02:00
Franzi c0ff320281
bundles/scansnap: set proper permissions for /srv/scansnap 2021-04-21 18:25:37 +02:00
Franzi c79b3f77c2
bundles/scansnap: cleanup old scans 2021-04-21 18:20:47 +02:00
Franzi 0c0a8e6263
bundles/scansnap: chown files to nobody-nogroup 2021-04-21 18:18:27 +02:00
Franzi b5fb5dd6c2
bundles/scansnap: introduce, add to home.nas 2021-04-21 17:58:16 +02:00
Franzi 5e49e3204b
bundles/nfs-server: sort shares 2021-04-21 17:56:53 +02:00
Franzi 24362768fb
bundles/dhcpd: rework metadata
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-20 18:18:17 +02:00
Franzi 3bd851aae5
nodes/htz.ex42-1048908: add new entropia IPs to rspamd/ignore_spam_check_for_ips
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-19 20:59:55 +02:00
Franzi 0028e0fcd0
nodes/home.downloadhelper: do not send hostname via dhcp
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-19 20:42:15 +02:00
Franzi 12c04cf3be
bundles/users: some more bash config 2021-04-19 20:39:57 +02:00
Franzi 7738736120
nodes/htz.ex42-1048908: update matrix-media-repo to 1.2.7
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-19 18:12:26 +02:00
Franzi 8536e87475
bundles/systemd-networkd: some more dhcp settings
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-18 11:05:42 +02:00
Franzi 51ee9be424
bundles/radvd: advertise atleast every 30 seconds 2021-04-18 11:05:10 +02:00
Franzi 0c59af2fdc
nodes/home.octoprint-vielschichtigkeit: set exclude_from_monitoring 2021-04-17 09:40:02 +02:00
Franzi 4973c63e62
bundles/icinga2: remove icinga_options/downtime_also_for, add host dependencies via icinga_options/also_affected_by
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-17 09:21:51 +02:00
Franzi 4d5e75df68
bundles/icinga2: introduce icinga_options/downtime_also_for
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-17 03:43:08 +02:00
Franzi 6a88040826
bundles/nginx: disable Federated Learning of Cohorts for all hosts
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-16 18:36:50 +02:00
Franzi ad5e628957
nodes/htz.ex42-1048908: update gitea to 1.14.1
Some checks are pending
bundlewrap/pipeline/head Build queued...
2021-04-16 16:33:46 +02:00
Franzi c3e3fc75bf
nodes/htz.ex42-1048908: update element-web to 1.7.25
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-12 17:33:43 +02:00
Franzi bc8050cd3c
bundles/postfix: fix connection limits for smtpd
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-11 21:56:37 +02:00
Franzi ab13ed1ef5
apt/gpg-keys: update php gpg key 2021-04-11 21:44:47 +02:00
Franzi b04a207262
nodes/htz.ex42-1048908: add some blocked email domains
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-11 18:20:16 +02:00
Franzi 9e1e3acfea
nodes/htz.ex42-1048908: update gitea to 1.14.0
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-11 18:12:23 +02:00
Franzi f0eb6f0d1b
bundles/vnstat: add favicon to web dashboard
All checks were successful
bundlewrap/pipeline/head This commit looks good
As requested by sophie
2021-04-11 14:35:49 +02:00
Franzi b68726c413
nodes/ovh.icinga2: add custom page title to status.franzi.business
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-11 11:27:49 +02:00
Franzi e809ed4859
bundles/vnstat: changes in systemd unit files must trigger daemon-reload
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-11 11:18:42 +02:00
Franzi dca56140aa
bundles/simple-icinga-dashboard: use systemd-timers, use virtualenv
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-11 11:17:09 +02:00
Franzi 26c2be07cf
bundles/vnstat: adjust vnstati calls for debian bullseye
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-11 09:01:58 +02:00
Franzi 69279ba34f
bundles/postfix: be a bit more relaxed when checking for smtp errors
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-10 16:50:16 +02:00
Franzi 018bdb2f83
bundles/matrix*: better monitoring
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-10 16:40:44 +02:00
Franzi 9618e388c3
bundles/simple-icinga-dashboard: only resolve faults when rendering the template, not earlier
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-10 16:33:32 +02:00
Franzi 36bd6f5755
bundles/simple-icinga-dashboard: config is a toml file now
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-04-10 16:08:52 +02:00
Franzi b33ddaadb5
bundles/simple-icinga-dashboard: add replacements 2021-04-10 15:43:37 +02:00
Franzi 9587bae4fe
nodes/gce.*: fix typo in metadata
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-10 15:11:48 +02:00
Franzi fc7655469f
icinga2: add pretty_name for status page
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-10 15:05:29 +02:00
Franzi efd2875b17
bundles/c3voc-addons: add sms to NGINX VHOST checks 2021-04-10 15:04:34 +02:00
Franzi 8c292ff8e0
nodes/htz.ex42-1048908: update gitea to 1.13.7
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-10 14:40:48 +02:00
Franzi 8b2771cd63
Revert "bundles/systemd-networkd: fix vlan support for bridges and bonds"
All checks were successful
bundlewrap/pipeline/head This commit looks good
This reverts commit 02146a81d6.
2021-04-10 13:34:49 +02:00
Franzi ef84b3f889
Revert "bundles/systemd-networkd: no need for a specific order in /etc/systemd/network/"
All checks were successful
bundlewrap/pipeline/head This commit looks good
This reverts commit b679f568eb.

Documentation says order is irrelevant, but it is not. If we do not use
ordering, vlan interfaces are defined before the parent interfaces, which
leads to systemd-networkd not applying config for the parent interfaces.
2021-04-10 12:22:08 +02:00
Franzi 0d1a220b7b
bundles/systemd-networkd: generate unique mac address for vlan interfaces 2021-04-10 12:18:23 +02:00
Franzi ac58f2a10c
nodes/home.router: fix dhcp config for dmz 2021-04-10 12:09:24 +02:00
Franzi 197ebe2e38
bundles/systemd-networkd: add BindCarrier to bridges
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-10 11:41:23 +02:00
Franzi 00d46cb1b1
bundles/pppd: fix typo in restart-pppoe-if-no-public-ip 2021-04-10 09:49:40 +02:00
Franzi af6b16cc35
bundles/pppd: fix KeyError in restart-pppoe-if-no-public-ip
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-10 09:38:47 +02:00
Franzi 3a7d612c7a
nodes/home.router: update to bullseye 2021-04-10 09:20:34 +02:00
Franzi 02146a81d6
bundles/systemd-networkd: fix vlan support for bridges and bonds 2021-04-10 09:18:45 +02:00
Sophie Schiller 913f2cde8f switch to new kodi with old name
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-09 21:13:24 +02:00
Sophie Schiller 995ae2f55f add new kodi minion
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-09 20:54:53 +02:00
Franzi 103c213583
add scripts/list-all-ips
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-09 19:03:24 +02:00
Franzi 28eb3f023c
nodes/home.openwebrx: reuse pi for home.octoprint-leapfrog
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-05 19:50:36 +02:00
Franzi 7bb5179b4f
nodes/htz.ex42-1048908: update travelynx to 1.19.10
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-05 15:28:55 +02:00
Franzi fd63d3d857
nodes/voc.pretalx: only set content-security-policy for requests to django itself, not for media and static endpoints
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-05 10:16:06 +02:00
Franzi 24f04e59aa
nodes/voc.pretalx: work around content-security-policy issues
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-05 08:18:21 +02:00
Franzi aad27851bb
bundles/miniflux: proxy all images
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-04 22:16:14 +02:00
Franzi 68b8cf28d3
nodes/home.{nas,router}: fix firewall for netdata and nginx
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-04 11:30:50 +02:00
Franzi e36a352a42
bundles: fix usage of set() vs {}
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-04 10:34:55 +02:00
Franzi c418102000
bundles/netdata: fix iptables default 2021-04-04 10:30:45 +02:00
Franzi 513eb4bed6
bundles/mosquitto: add monitoring
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-03 09:43:24 +02:00
Franzi 2027308249
bundles/zfs: fix typo in check_zpool_space 2021-04-03 09:41:17 +02:00
Franzi 9cbf866de7
bundles/mosquitto: introduce, add to node home.nas
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-03 09:36:47 +02:00
Franzi f8bbe00d47
overall better handling and usage of exceptions
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-02 18:57:13 +02:00
Franzi 5d5930265a
bundles/postfix: remove print statement 2021-04-02 18:29:33 +02:00
Franzi 61cf881a03
bundles/pretalx: add bash_alias for manage.py
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-02 14:59:56 +02:00
Franzi 4a3be10add
bundles/apt: fix if in upgrade-and-reboot 2021-04-02 13:40:55 +02:00
Franzi 6712d98040
nodes/htz-cloud.miniserver: remove dummy metadata, add monitoring 2021-04-02 13:40:10 +02:00
Franzi a24fb12c21
bundles/apt: introduce restart_triggers (restart services if another service has been upgraded)
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-04-02 08:12:51 +02:00
Franzi 7ca24d27d3
bundles/apt: add a bit of code to remove old, unused kernel images 2021-04-02 08:11:17 +02:00
Franzi 8a0c8f32ae
bundles: less Restart=on-failure, more Restart=always 2021-04-02 08:05:33 +02:00
Franzi 5b276368b8
bundles/wireguard: iptables/bundle_rules should be a list
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-01 17:13:24 +02:00
Franzi 17f9aa9c3e
bundles/icinga2: disable command module
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-01 17:12:35 +02:00
Franzi c5eb2f4f70
bundles/icinga2: do not send recovery emails 2021-04-01 17:11:42 +02:00
Franzi 763a071acc
nodes/htz.ex42-1048908: update mautrix-whatsapp to 0.1.6
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-01 17:03:42 +02:00
Franzi 957cac5ebc
bundles/postfix: disable SPAM BLOCKLIST check if relayhost is set 2021-04-01 17:00:53 +02:00
Franzi 3481d4e13c
have ovh systems relay mail via htz.ex42-1048908, too 2021-04-01 17:00:23 +02:00
Franzi 61c6188454
bundles/postfix: mynetworks now supports identifiers 2021-04-01 16:59:49 +02:00
Franzi b7222e2cd1
bundles/systemd-networkd: fix typo in routes
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-01 16:31:57 +02:00
Franzi 6e423c24fb
bundles/wireguard: rework metadata.py
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-04-01 16:27:31 +02:00
Franzi b679f568eb
bundles/systemd-networkd: no need for a specific order in /etc/systemd/network/ 2021-04-01 16:26:06 +02:00
Franzi d787f8b0a3
bundles/systemd-networkd: rework routes 2021-04-01 16:25:24 +02:00
Franzi b52a196c73
bundles/nginx: add configuration option for client_max_body_size
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-30 21:26:25 +02:00
Franzi b7583bc8cc
nodes/voc.pretalx: install some plugins
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-30 19:52:31 +02:00
Franzi da9fe36646
bundles/pretalx: support installing plugins 2021-03-30 19:52:03 +02:00
Franzi 8503a4a946
nodes/htz.ex42-1048908: update travelynx to 1.19.9
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-30 18:22:35 +02:00
Franzi e924cc1322
nodes/htz.ex42-1048908: update element-web to 1.7.24 2021-03-30 18:22:19 +02:00
Franzi 72831ee386
nodes/home.nas: one cronjob for permissions instead of three
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-28 16:44:01 +02:00
Franzi 7345543fa2
bundles/mx-puppet-discord: remove logging to files, disable presence logging
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-28 11:29:16 +02:00
Franzi c388d5ea1e
bundles/postgresql: fix restart dependencies
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-28 09:39:08 +02:00
Franzi 35e4bbf04b
bundles/postfix: remove postscreen usage
All checks were successful
bundlewrap/pipeline/head This commit looks good
postscreen isn't able to share its cache file between
instances, which leads to the server simply accepting
mails for the port on which postscreen starts up later.
Since we can't predict which port this will be, we
simply remove postscreen alltogether.

Yes, i know i could just remove postscreen for port 2525.
2021-03-28 09:00:37 +02:00
Franzi ce39850bda
bundles/postfix: fix .provides() for iptables reactor
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-28 08:56:22 +02:00
Franzi 9fe4e2933d
bundles/postfix: add firewalling for port 2525
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-03-28 08:37:51 +02:00
Franzi a4b2dc29a9
bundles/miniflux: don't clean up old entries
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-28 08:04:41 +02:00
Franzi 85d9b9fdac
nodes/htz-cloud.sewfile: move seafile data to zfs
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-27 14:03:33 +01:00
Franzi 0ca57e8e24
nodes/htz-cloud.sewfile: also backup mysql database
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-27 13:49:23 +01:00
Franzi 39c1d34bbb
bundles/sshmon: fix disk space usage limits 2021-03-27 12:07:49 +01:00
Franzi 8f0f635484
bundles/basic: change load graph for cpu graph 2021-03-27 12:06:12 +01:00
Franzi 568a31586f
bundles/apt: fix permissions for /etc/kernel/postinst.d/unattended-upgrades
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-27 08:31:29 +01:00
Franzi f514e200f0
bundles/mautrix-whatsapp: restart bridge daily again
All checks were successful
bundlewrap/pipeline/head This commit looks good
It seems neither WhatsApp nor WhatsApp Web are designed for 24/7
connections, thus leading to all kinds of weird side effects like
"Bridge thinks it's connected, but no messages get through at all"
or "WhatsApp is running, but the Bridge can't connect to it"
2021-03-27 08:21:41 +01:00
Franzi 83db4ba886
nodes/home.nas: add firewalling for yate sip server
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-26 18:55:20 +01:00
Franzi f98720b57b
bundles/dhcpd: sort dchp leases by ip in bash alias
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-26 09:27:52 +01:00
Franzi 8d7e5d3f66
nodes/htz.ex42-1048908: update matrix-media-repo to 1.2.6
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-26 09:06:35 +01:00
Franzi 65490b1d20
bundles/apt: log stdout and stderr separately in upgrade-and-reboot
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-26 09:02:48 +01:00
Franzi 4bd61fedde
nodes/htz.ex42-1048908: update gitea to 1.13.6
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-25 17:44:55 +01:00
Franzi 27753d50c4
bundles/postfix: use threading in check_spam_blocklist
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-25 17:42:59 +01:00
Franzi fdcec012f3
bundles/postfix: add SPAM BLOCKLIST check for every non-private IP attached to the server
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-22 20:24:14 +01:00
Franzi b99176be49
bundles/kodi: add iptables rules
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-21 19:10:49 +01:00
Franzi 75f5c58764
dns/franzi.business: fix matrix federation port in SRV record
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-21 18:12:27 +01:00
Franzi 50438d940e
nodes/htz.ex42-1048908: update gitea to 1.13.5
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-21 17:55:43 +01:00
Franzi 28dd9694af
add bundle:oidentd
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-21 17:40:58 +01:00
Franzi 6a6198c9b9
bundles/wireguard: move iptables rules to metadata reactor
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-21 15:26:29 +01:00
Franzi 559f743ce2
nodes/voc.pretalx: no localized strings in website_check_string
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-21 12:59:08 +01:00
Franzi 691c3e7bc2
iptables: add some missing rules
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-21 12:27:03 +01:00
Franzi 087bc4c669
nodes: iptables for all
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-21 11:44:52 +01:00
Franzi 3bc5e55400
bundles/iptables: don't apply iptables rules if a rules file is missing 2021-03-21 11:44:27 +01:00
Franzi 4b00c8b55a
bundles/unbound: do not bind to 0.0.0.0 if qemu is installed 2021-03-21 11:43:53 +01:00
Franzi 5a0aa82ec9
bundles/powerdns: fix missing imports 2021-03-21 11:43:17 +01:00
Franzi 62f7080db9
bundles/nfs-server: add iptables config 2021-03-21 11:24:21 +01:00
Franzi 626075ee94
nodes/htz.ex42-1048908: add some iptables rules for unmanaged services
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-03-21 11:12:42 +01:00
Franzi 850d860d59
bundles/powerdns: add iptables config 2021-03-21 11:12:18 +01:00
Franzi 31ddea7649
bundles/dovecot: add iptables config 2021-03-21 11:12:03 +01:00
Franzi 5775001301
bundles/postfix: add iptables config 2021-03-21 11:11:49 +01:00
Franzi c9f008ad82
bundles/openssh: move iptables rules to metadata reactor
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-21 10:37:28 +01:00
Franzi b943d2d465
rework iptables configuration
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-21 10:30:04 +01:00
Franzi d3ea06c3e8
nodes/htz.ex42-1048908: update matrix-media-repo to 1.2.5
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-19 15:00:00 +01:00
Franzi 41dac92e1a
nodes/htz.ex42-1048908: update element-web to 1.7.23
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-17 14:15:38 +01:00
Franzi 841a86aa61
dns/kunbox.net: remove duplicate entries, disable dmarc
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-15 11:59:21 +01:00
Franzi 9e1685531c
nodes/home.router: add iptables rule for mail
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-15 11:48:35 +01:00
Franzi 3fcd81960e
bundles/postfix: allow configuring mynetworks
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-15 11:41:35 +01:00
Franzi 52cab71fec
bundles/wireguard: also allow outgoing traffic
How did this ever work without this rule?
2021-03-15 09:00:35 +01:00
Franzi adb808a683
bundles/users: more colourful bash for everyone
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-14 17:14:08 +01:00
Franzi 70665abb0b
nodes/htz.ex42-1048908: allow http traffic to radicale web without authentication
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-14 17:04:00 +01:00
Franzi d596d46783
nodes/htz.ex42-1048908: update travelynx to 1.19.8 2021-03-14 17:03:34 +01:00
Franzi 6f80303782
add scripts/generate-wireguard-client-certificate
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-14 14:32:49 +01:00
sophie 6ae0d31840 Merge pull request 'sophies-stuff' (#36) from sophies-stuff into main
All checks were successful
bundlewrap/pipeline/head This commit looks good
Reviewed-on: https://git.kunsmann.eu/kunsi/bundlewrap/pulls/36
2021-03-13 12:43:44 +00:00
Sophie Schiller 800a4fc956 remove trailing whitespace
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-13 13:39:59 +01:00
Sophie Schiller c062c38971 remove trailing whitespace
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-03-13 13:38:24 +01:00
Sophie Schiller e8e513e6d4 bw/miniserver new vhost
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-03-13 13:31:41 +01:00
Sophie Schiller a8fd397a3d add work ssh key
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-11 22:27:30 +01:00
Sophie Schiller 718b7a9ce8 add firewall
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-11 22:18:03 +01:00
Sophie Schiller 36b6e801e5 update bashrc 2021-03-11 22:18:03 +01:00
Sophie Schiller f8bea96752 plagiarize weechat setup 2021-03-11 22:18:03 +01:00
Sophie Schiller 33be3a90d2 bw/htz-miniserver initial nodefile 2021-03-11 22:18:03 +01:00
Franzi f6ecf2a465
bundles/nfs-client: support arch linux
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-11 15:24:06 +01:00
Sophie Schiller c87611c2e2 bw/kodi add backports repo
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-08 21:06:25 +01:00
Franzi bac372ae67
nodes/htz.ex42-1048908: update gitea to 1.13.4
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-07 18:58:33 +01:00
Franzi f57681b098
nodes: move wireguard stuff to 172.19.136.0/25
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-07 14:39:04 +01:00
Franzi 8b07fce738
bundles/unbound: decrease statistics-interval until debian has 1.19 and we're actually able to use them 2021-03-06 10:03:22 +01:00
Franzi f214f70cd4
bundles/basic: add textual cpu stats to htop 2021-03-06 09:58:22 +01:00
Franzi 7e57c0f03e
bundles/basic: current htop version in debian does not support DiskIO nor NetworkIO
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-06 09:56:05 +01:00
Franzi 08d34b0e09
nodes/kunsi-t470: change mode of /home/kunsi 2021-03-06 09:55:32 +01:00
Franzi 629922626b
nodes/htz.ex42-1048908: update matrix-media-repo to 1.2.4
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-06 09:45:54 +01:00
Franzi ebcf8e4445
bundles/matrix-media-repo: also restart matrix-media-repo after updating
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-05 07:21:23 +01:00
Franzi 84ece2731c
did anyone say updates?
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-05 07:20:08 +01:00
Franzi 2adf3c6a72
bundles/sshmon: increase acceptable amount of cpu steal
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-01 15:52:55 +01:00
Franzi 5f17afcbac
nodes/htz.ex42-1048908: update element-web to 1.7.22
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-01 15:41:03 +01:00
Franzi e435ae582a
bundles/icinga2: add monitoring for IdoPgsqlConnection
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-01 15:36:29 +01:00
Franzi 3adfb9779a
bundles/molly-guard: introduce, add to systems
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-26 17:58:20 +01:00
Franzi 51ca74549e
bundles/basic: add htoprc
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-24 19:24:56 +01:00
Franzi 807b296078
nodes/htz-cloud.pleroma: add www subdomain
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-21 11:06:46 +01:00
Franzi 836f065382
bundles/pleroma: add website content check
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-20 22:11:19 +01:00
Franzi 452b7564c4 Merge pull request 'kunsi-pleroma-cybert-media' (#32) from kunsi-pleroma-cybert-media into main
All checks were successful
bundlewrap/pipeline/head This commit looks good
Reviewed-on: https://git.kunsmann.eu/kunsi/bundlewrap/pulls/32
2021-02-20 21:07:14 +00:00
Franzi b3ad49ac8d
nodes/htz-cloud.pleroma: do backups
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-20 22:05:42 +01:00
Franzi fec26ab38f
nodes/htz-cloud.pleroma: add debugging logs (gdpr-compatible)
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-20 21:12:40 +01:00
Franzi b470fddc12
bundles/nginx: add gdpr-compatible log format 2021-02-20 21:11:12 +01:00
Franzi 8cb172a1c1
bundles/pleroma: remove NoNewPrivileges=true, interferes with mail delivery 2021-02-20 20:57:00 +01:00
Franzi 9aeb690589
nodes/htz-cloud.pleroma: set postfix/myhostname to correct domain
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-20 20:49:35 +01:00
Franzi ca857091e4
nodes/htz-cloud.pleroma: auto activate users with work email address
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-20 20:45:53 +01:00
Franzi 017c2c3421
bundles/pleroma: allow database configuration
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-02-20 20:18:34 +01:00
Franzi f8c157ce50
bundles/pleroma: get it working
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-20 19:37:33 +01:00
Franzi 33fb9fb3f5
nodes/htz-cloud.pleroma: introduce 2021-02-20 19:14:23 +01:00
Franzi 1f3e7afb2c
bundles/pleroma: initial NON-WORKING version 2021-02-20 19:14:20 +01:00
Franzi 9b7454b57c
nodes/htz.ex42-1048908: add pkg_apt:mosh
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-20 18:06:20 +01:00
Franzi 5433859a86
bundles/letsencrypt: also check for chain.pem, nginx needs this
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-20 17:38:11 +01:00
Franzi e2d7d05783
bundles/systemd-networkd: manage apt packages via bundle:apt
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-20 17:35:45 +01:00
Franzi ad5c8cc0ab
bundles/postfix: only get certificate if actually needed
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-20 17:30:38 +01:00
Franzi 97a1b3ae85
bundles/zfs: add comment to action:modprobe-zfs
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-20 16:51:34 +01:00
Franzi 1c0a3ee8e7
bundles/postgresql: fix postgresql config path 2021-02-20 16:50:38 +01:00
Franzi 194de9ef2d
bundles/letsencrypt: fix some errors in letsencrypt-ensure-some-certificate
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-20 15:48:17 +01:00
Franzi 3fa81ddc85
bundles/gitea: use canned stop action 2021-02-20 15:47:35 +01:00
Franzi 74d81eb7ba
bundles/nginx: support disabling ssl for each vhost individually
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-20 14:25:27 +01:00
Franzi 228786f6aa
bundles/letsencrypt: generate a dummy certificate, if no certificate already exists 2021-02-20 13:52:40 +01:00
Franzi 014b6029c5
nodes/htz.ex42-1048908: update element-web config
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-20 11:10:08 +01:00
Franzi 1ac6559b9f
bundles/postgresql: add pg_query_mon 2021-02-20 10:56:20 +01:00
Franzi 56ff2a794f
nodes/home.router: enable sms notifications for monitoring 2021-02-19 14:46:29 +01:00
Franzi c0b8d35a47
bundles/icinga2: fix double emoji for WARNING state
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-19 14:03:00 +01:00
Franzi 2bccbf9ded
bundles/icinga2: add some emoji to sent SMS, don't send output via SMS if everything is fine
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-19 14:01:45 +01:00
Franzi bb661b391b Merge pull request 'nodes/home.router: add dhcp and ipv6 to DMZ' (#26) from kunsi-dmz-dhcp into main
All checks were successful
bundlewrap/pipeline/head This commit looks good
Reviewed-on: https://git.kunsmann.eu/kunsi/bundlewrap/pulls/26
2021-02-19 12:02:46 +00:00
Franzi debabe85b0 nodes/home.router: add dhcp and ipv6 to DMZ 2021-02-19 12:02:46 +00:00
Franzi 8ac9b2f204
bundles/matrix-synapse: add scripts/synapse-purge-unused-rooms
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-19 11:56:21 +01:00
Franzi b06532241b
bundles: use metastack syntax for metadata.get()
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-18 18:12:25 +01:00
Franzi 4be912ac31
nodes/kunsi-t470: add bundles systemd and systemd-networkd 2021-02-18 17:57:33 +01:00
Franzi 6e9fb7044a
bundles/systemd-networkd: add "enable-resolved" flag 2021-02-18 17:56:43 +01:00
Franzi fbf0371371
bundles/systemd: support different timezones 2021-02-18 17:56:06 +01:00
Franzi dba7beae1c
hooks/test_backup_metadata: no need to check metadata if node does not have bundle:backup-client
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-18 15:21:53 +01:00
Franzi 1abc0153f5
bundles/openssh: do not add deleted users to ssh config
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-02-18 15:12:30 +01:00
Franzi f036336f30
nodes/kunsi-t470: add bundle:lldp 2021-02-18 15:11:05 +01:00
Franzi 75224f0d5c
bundles/lldp: support arch linux 2021-02-18 15:10:50 +01:00
Franzi e54fd79bcd
nodes/kunsi-t470: add hosts entriesm, set default locale
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-02-18 14:52:06 +01:00
Franzi f4a644795e
bundles/basic: support setting a different default locale 2021-02-18 14:51:33 +01:00
Franzi 18572d56e6
nodes/kunsi-t470: introduce 2021-02-18 14:25:26 +01:00
Franzi 32d129015e
bundles/pacman: introduce, support pkg_pacman in some other bundles 2021-02-18 14:24:57 +01:00
Franzi 9bf7f856af
bundles/users: allow setting another shell 2021-02-18 14:24:09 +01:00
Franzi 8a2bef9b77
bundles/apt: move vim to default packages 2021-02-18 14:23:43 +01:00
Franzi 03840fd152
bundles/systemd: more options in journald.conf
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-18 10:29:38 +01:00
Franzi e0ffb4fd2f
postfixadmin: bump to 3.3.7 2021-02-18 10:28:34 +01:00
Franzi b1e665db7c
postfixadmin: bump to 3.3.6
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-17 17:54:20 +01:00
Franzi 4bd3945b6b
Jenkinsfile: add editorconfig checker
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-17 13:37:26 +01:00
Franzi 6118e6a530
Jenkinsfile: use less steps
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-17 13:14:21 +01:00
Franzi 3517facfc0
Jenkinsfile: move determinism to front (allows better parallelism)
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-17 12:13:31 +01:00
Franzi 8cef49cfce
editorconfig: add *.vault 2021-02-17 11:44:39 +01:00
Franzi fbb8840dff
add .editorconfig, format files correctly
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-17 10:56:18 +01:00
Franzi b42e39ed0a
get rid of check_rbl 2021-02-17 10:51:49 +01:00
Franzi 9d5d80457f
bundles/element-web: rename from riot-web, use tagged releases
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-16 12:49:02 +01:00
Franzi d1b1ca7729
nodes/home.openwebrx: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-16 08:43:10 +01:00
Franzi abb99ed58a
bundles/raspberrypi: remove isc-dhcp-client 2021-02-16 08:41:37 +01:00
Franzi d2260b4699
bundles/wireguard: use PersistentKeepalive to work around intermittent connection issues
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-15 15:16:44 +01:00
Franzi 5c1eba0d58
bundles: use a common metadata key for firewall restrictions, use repo.libs.tools.resolve_identifier()
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-15 14:16:35 +01:00
Franzi 9a2f9038c4
libs/tools: resolve_identifier supports ip networks, not ip addresses 2021-02-15 13:53:53 +01:00
Franzi 6527c985a7
nodes/home.router: add wg0 to allowed interfaces for netdata and nginx
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-14 21:42:50 +01:00
Franzi 9d0a602b49
nodes/ovh.wireguard: add config for kunsi-oneplus3 2021-02-14 21:41:01 +01:00
Franzi 56fce7d460
bundles/wireguard: add exclude_from_monitoring option for wireguard peers 2021-02-14 21:35:37 +01:00
Franzi 69605acfc9
dns: queere.eskalation.jetzt IN NS ns{1..4}.athena7.eu
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-14 17:32:43 +01:00
Franzi 2b7704630c
dns: add eskalation.jetzt 2021-02-14 17:22:25 +01:00
Franzi 12d47ea0bc
libs/tools: fix output of resolve_identifier() for bare ip addresses
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-14 17:04:52 +01:00
Franzi 358a1869f4
script/update-ssh-client-config: s/post-receive/post-checkout/
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-13 17:09:27 +01:00
Franzi cfd0863671
create script/update-ssh-client-config
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-13 16:39:55 +01:00
Franzi 65e6b8d053
bundles/backup-client: use a bash function to do backups instead of repeating the same code over and over 2021-02-13 09:18:00 +01:00
Franzi adeb8eff88
bundles/postgresql: only do database dumps if we're actually doing backups 2021-02-13 09:04:59 +01:00
Franzi 724537558e
bundles/postgresql: do a database dump before backing up the database
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-13 08:56:35 +01:00
Franzi 3d1468b214
bundles/backup-client: backup-pre-hooks should have numeric sorting 2021-02-13 08:37:49 +01:00
Franzi 7aeb46382d
bundles/zfs: move icinga2_api to metadata defaults 2021-02-13 08:37:00 +01:00
Franzi 2fbbaa1586
bundles/zfs: remove support for snapshot_only and snapshot_never (unused) 2021-02-13 08:36:10 +01:00
Franzi b20f369ea8
bundles/backup-client: metadata backup-pre-hooks now use /bin/sh by default 2021-02-13 08:26:46 +01:00
Franzi 077eaa265c
bundles/radicale: use Fault.as_htpasswd_entry() instead of pre-encrypting passwords 2021-02-13 08:17:31 +01:00
Franzi 978285bf32
bundles/matrix-media-repo: add backup/paths metadata 2021-02-13 08:09:48 +01:00
Franzi f52df58517
bundles: code style improvements
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-12 20:45:41 +01:00
Franzi 2af911c29f
nodes/voc.pretalx: move patchday to monday
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-12 18:53:34 +01:00
Franzi c0353d2911
bundles/apt: add option to configure patch-hour, not only patchday 2021-02-12 18:53:25 +01:00
Franzi 17dbba2c94
data/backup: remove unneeded keys for voc.pretalx
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-12 18:45:43 +01:00
Franzi 62e1d29617
nodes/voc.pretalx: backups are handled by voc now
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-12 18:41:50 +01:00
Franzi 767db8efdd
bundles/apt: add /etc/kernel/postinst.d/unattended-upgrades to ensure a reboot on kernel updates
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-12 18:12:24 +01:00
Franzi d4b110087f
bundles/matrix-media-repo: introduce, add to htz.ex42-1048908
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-12 16:01:35 +01:00
Franzi 638e37c05f
bundles: add Requires=postgresql.service to some services which require postgresql
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-12 13:28:52 +01:00
Franzi 493d7957fd
nodes/htz.ex42-1048908: install en_DK.UTF-8 locale
All checks were successful
bundlewrap/pipeline/head This commit looks good
apparently past me did weird stuff, so this locale is required for
some postgresql databases.
2021-02-12 04:06:51 +01:00
Franzi 9f8cbde7d7
bundles/transmission: always try to restart transmission
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-11 09:06:20 +01:00
Franzi a86e04683a
bundles/backup-client: fix missing space in generate-backup
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-09 07:17:25 +01:00
Franzi c25233b991
nodes: replace pkg_apt:redis with bundle:redis
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-07 21:09:39 +01:00
Franzi a09f565c78
nodes/htz.ex42-1048908: add backup-pre-hook to save weechat configs
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-07 20:47:57 +01:00
Franzi 0d1e987a6f
bundles/backup-client: add backup-pre-hooks (fixes #24) 2021-02-07 20:47:22 +01:00
Franzi a8690b13b8
bundles/rspamd: add "unless" to action:rspamd_assure_dkim_key_permissions
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-06 19:10:16 +01:00
Franzi ed04aebc4b
nodes/htz.ex42-1048908: update travelynx to 1.19.6
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-06 18:57:37 +01:00
Franzi a3d52d026e
nodes/htz.ex42-1048908: allocate more space to journal
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-06 12:49:58 +01:00
Franzi 988cf905d4
nodes/htz.ex42-1048908: update travelynx to 1.19.4
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-06 10:43:36 +01:00
Franzi eb431d8da8
bundles/postfix: also set alias_maps
All checks were successful
bundlewrap/pipeline/head This commit looks good
fixes "warning: dict_nis_init: NIS domain name not set - NIS lookups disabled"
2021-02-06 10:24:19 +01:00
Franzi db317ec355
nodes/htz.ex42-1048908: update gitea to 1.13.2
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-06 09:44:23 +01:00
Franzi 457052d42b
bundles/gitea: downloading gitea updates needs stopping it first 2021-02-06 09:43:54 +01:00
Franzi d7398135d1
nodes/home.wled-wohnzimmer: add node 2021-02-06 09:39:36 +01:00
Franzi b6d23aaed4
bundles/sshmon: use own check_cpu_stats script
Old script only checked iowait, which is not enough.
2021-02-06 09:38:50 +01:00
Franzi c185a5bacd
bundles/backup-client: do backups at 23:xx, so it won't interfere with upgrade-and-reboot
All checks were successful
bundlewrap/pipeline/head This commit looks good
There were still problems with systems starting their backups late in the hour,
but backup servers did upgrade-and-reboot early it the hour. This leads to
incomplete backups, if the machine is rebooting, too.
2021-02-06 09:36:44 +01:00
Franzi 7e15f8adc3
bundles/octoprint: multi-line-output for check_octoprint_update
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-02 20:20:11 +01:00
Franzi d0c0425b65
nodes/htz-cloud.pirmasens: fix website check for salonkatrin.de 2021-01-31 11:38:45 +01:00
Franzi 8523754935
bundles/users: add vim-keybindings for pane navigation to tmux.conf 2021-01-31 07:59:19 +01:00
Franzi bdc5b4de33
bundles/transmission: don't overwrite configs managed by transmission 2021-01-30 17:39:34 +01:00
Franzi 71f033b7c2
bundles/icinga2: fix dependencies for svc_systemd:icinga2
All checks were successful
bundlewrap/pipeline/head This commit looks good
icinga2 runs fine without any checks, so we now only depend on the other
configuration files managed by bw. This will also fix unwanted
dependencies, because 'file:' means *all* files, not only those provided
by this bundle. In the past, it wasn't possible to skip any file,
because that would result in icinga not properly restarting.
2021-01-30 17:31:05 +01:00
Franzi 569275329c
bundles/sshmon: remove INTERNET check
All checks were successful
bundlewrap/pipeline/head This commit looks good
We're using the internet to check these hosts, so if those hosts
wouldn't have an internet connection, the whole host would be
down, atleast as far as icinga can tell.
2021-01-30 11:47:55 +01:00
Franzi 161aec9314
bundles/powerdnsadmin: use tagged release
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-29 18:13:16 +01:00
Franzi f56852c27d
bundles/postfixadmin: use tagged release 2021-01-29 18:07:57 +01:00
Franzi fa462fbd0f
bundles/sshmon: use tag_name instead of human-readable name in check_github_for_new_release 2021-01-29 18:04:35 +01:00
Franzi b3e6063596
bundles/unbound: silence refresh-root-hints cronjob 2021-01-29 17:58:24 +01:00
Franzi c31066fea8
bundles/mautrix-whatsapp: restart weekly to work around 24/7 connection issues 2021-01-29 17:27:33 +01:00
Franzi fd421bf6f8
add bundle:redis, add redis support to pretalx
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-29 15:58:54 +01:00
Franzi ce76430b4d
bundles/mautrix-whatsapp: decrease log level to info
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-28 15:05:04 +01:00
Franzi 4efcc73f55
bundles/mautrix-whatsapp: ensure we're not using ssl for postgres
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-25 22:27:11 +01:00
Franzi f3d8a1412c
bundles/dovecot: better ssl
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-24 18:44:25 +01:00
Franzi 2aaf7cf8f8
bundles/nginx: better ssl 2021-01-24 18:44:13 +01:00
Franzi 614bdf9dec
bundles/basic: support creating additional locales 2021-01-24 07:49:49 +01:00
Franzi d344664fa1
bundles/basic: fix format for /etc/locale.gen
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-23 12:25:32 +01:00
Franzi 6b720c6c75
bundles/postgresql: only deploy packages if we have locales installed
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-23 12:06:38 +01:00
Franzi 4a9463db5f
bundles/basic: ensure a proper locale is installed 2021-01-23 12:05:59 +01:00
Franzi a160e7cf46
bundles/postgresql: improvements
All checks were successful
bundlewrap/pipeline/head This commit looks good
- support other postgresql versions
- manage configs using bw
2021-01-23 11:35:03 +01:00
Franzi 7f36516faa
groups/debian-sid: fix os_version attribute 2021-01-23 11:33:42 +01:00
Franzi 75d0de8a99
nodes/voc.pretalx: add os information 2021-01-23 11:33:04 +01:00
Franzi c41ee0f806
bundles/apt: fix logging for upgrade-and-reboot 2021-01-23 11:32:35 +01:00
Franzi 51101fc615
bundles/sudo: fix mode for /etc/sudoers
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-23 09:28:50 +01:00
Franzi c5109fbfe3
bundles/icinga2: no need to do metadata.copy() here
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-23 09:11:18 +01:00
Franzi 717159b61f
bundles/seafile: no need for sms for seafile process, we're already doing http content checks
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-01-23 09:09:30 +01:00
Franzi ad51400cae
requirements.txt: bump bundlewrap to 4.4.2 2021-01-23 09:08:47 +01:00
Franzi 52eebfeb16
nodes/rx300: add kunsi work laptop ssh keys 2021-01-22 19:07:25 +01:00
Franzi 63cdd470cf
bundles/c3voc-addons: support cron definition
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-19 13:34:23 +01:00
Franzi 0893156723
bundles/c3voc-addons: add upgrade-and-reboot to bundle
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-17 18:43:30 +01:00
Franzi 0f0ee046b1
bundles/c3voc-addons: some assertions to make sure we don't conflict with ansible
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-17 10:16:23 +01:00
Franzi 47012f9bff
nodes/voc.pretalx: add backups
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-17 09:17:10 +01:00
Franzi 1041e092b1
bundles/dhcpd: add bash alias for lease list 2021-01-17 09:12:32 +01:00
Franzi 4f62e25d5e
bundles/c3voc-addons: add nginx vhost monitoring
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-17 08:07:21 +01:00
Franzi 3b90426b4d
bundles/pretalx: fix needs for systemd units
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-17 08:01:15 +01:00
Franzi 2b0678063c
bundles/pretalx: new version needs to trigger regenerate_css, too
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-17 07:59:57 +01:00
Franzi b5cc8c2c57
bundles/pretalx: add to PORT_MAP.md, allocate a port
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-17 07:55:08 +01:00
Franzi 5d8cd80b38
nodes/voc.pretalx: add dummy network config
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-17 07:37:19 +01:00
Franzi 3b4ba137e7
nodes/voc.pretalx: add postfix 2021-01-17 07:36:57 +01:00
Franzi 35abb92daf
bundles/icinga2: do not schedule downtimes for hosts which do not do unattended-upgrades
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-16 22:31:51 +01:00
Franzi 173746fe9c
bundles/sshmon: ensure sshmon user is able to log in 2021-01-16 22:31:18 +01:00
Franzi 39aabd0546
bundles/backup-server: of course, we need to ignore hosts which have exclude_from_backups set
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-16 22:22:51 +01:00
Franzi ad84f62c0d
bundles/sshmon: do not rely on bundle:users to create sshmon user
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-01-16 22:21:27 +01:00
Franzi 988c71a6fb
nodes/voc.pretalx: monitoring 2021-01-16 22:14:34 +01:00
Franzi ec8802dd4a
bundles/backup-server: ignore all nodes which don't have bundle:backup-client 2021-01-16 22:12:49 +01:00
Franzi 9f0fc90679
bundles/pretalx: fix wrong metadata key 2021-01-16 22:12:16 +01:00
Franzi e4c3f5f2f2
nodes/voc.pretalx: add bundle:pretalx
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-01-16 22:04:03 +01:00
Franzi 70944d7065
bundles/pretalx: introduce 2021-01-16 22:03:38 +01:00
Franzi 0b9056bd2b
add pseudo-bundle to add configs to c3voc ansible managed hosts 2021-01-16 22:03:03 +01:00
Franzi bdac36bea8
dns: add mta-sts.kunbox.net
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-16 19:44:43 +01:00
Franzi 5d1fc22813
nodes/home.downloadhelper: install netdata
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-16 15:43:42 +01:00
Franzi 8fc0017378
bundles/backup-client: do backups at 00:xx, so it won't interfere with upgrade-and-reboot
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-15 15:31:36 +01:00
Franzi 9854fc9dbc
bundles/hostname: also set motd 2021-01-15 15:29:49 +01:00
Franzi db3a15310c
bundles/letsencrypt: fix concat_and_deploy comment
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-10 10:48:19 +01:00
Franzi af86236f42
nodes/htz.ex42-1048908: fix permissions for vliedel.random.franzi.business 2021-01-10 10:47:38 +01:00
Franzi dd35f5dcd5
nodes/htz.ex42-1048908: update travelynx to 1.19.3
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-10 10:03:12 +01:00
Franzi 4e6be9b51e
nodes/home.nas: less snapshots for storage/download 2021-01-10 10:02:25 +01:00
Franzi 659e35686e
bundles/iptables: removing rule files should also trigger iptables-enforce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-09 14:02:50 +01:00
Franzi 4f6b57676a
bundles/systemd-networkd: LACPTransmitRate=fast
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-09 12:52:03 +01:00
Franzi 00fd1df67a
bundles/wide-dhcp6c: stop, then start, instead of restart 2021-01-09 12:51:37 +01:00
Franzi 8e54d6eb23
add monitoring for freifunk nodes
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-09 11:03:23 +01:00
Franzi 19dd29e847
bundles/transmission: also allow tcp peer-port
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-08 17:06:26 +01:00
Franzi 33b85ff0de
bundles/transmission: add bundle, add to home.downloadhelper
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-08 17:00:08 +01:00
Franzi dca13263e2
bundles/systemd-networkd: add option for setting static routes 2021-01-08 16:09:59 +01:00
Franzi 17510b783c
bundles/nfs-client: do start automount units. Previous comment was wrong.
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-07 22:15:57 +01:00
Franzi c49d9ffc56
nodes/home.downloadhelper: add node, add storage on home.nas 2021-01-07 22:15:14 +01:00
Franzi fb42f9e667
bundles/dhcpd: catch keyerrors for nodes which do dhcp in unmanaged networks 2021-01-07 22:14:17 +01:00
Franzi 2d42e5f7dd
update bw to 4.3, add .provides() to metadata reactors
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-07 18:44:38 +01:00
Franzi 7f0fb7a6e2
bundles/influxdb: remove 2021-01-07 18:28:08 +01:00
Sophie Schiller 2ba4946975 update letsencrypt hashes
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-06 13:18:44 +01:00
Sophie Schiller f6eeda0235 update ip-addresses and macs
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-04 07:24:57 +01:00
Franzi ec13a1edaa
bundles/simple-icinga-dashboard: repo is public now
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-03 09:56:51 +01:00
Franzi af0fe1cfea
nodes/htz.ex42-1048908: add another key for vliedel
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-01-03 08:43:34 +01:00
Franzi 03d3ab6e9d
bundles/{netdata,nginx,unbound}: fix iptables rules (should also create ip6tables rules)
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2021-01-02 16:19:55 +01:00
Franzi e8d131b041
add simple-icinga-dashboard on status.franzi.business
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
fixes #20
2021-01-02 14:47:11 +01:00
Franzi 2ebf7ec32b
bundles/mautrix-whatsapp: disable log timestamps, journal takes care of that
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-02 14:01:26 +01:00
Franzi b8bcc6c499
bundles/mautrix-whatsapp: only log to journal
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-02 13:59:47 +01:00
Franzi 8752299e61
bundles/icinga2: add hostgroup for hosts which send SMS
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-02 12:58:52 +01:00
Franzi 4f57a6c0e3
icinga2: more checks should send sms
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-02 12:26:37 +01:00
Franzi 6e4c1ca502
nodes/htz.ex42-1048908: disable regular restart of mautrix-whatsapp
The issues seem to be fixed now
2021-01-02 12:19:18 +01:00
Franzi fc94e63467
nodes/{home.nas,rx300}: remove bond priority (unused) 2021-01-02 12:18:41 +01:00
Franzi 10fd67a0fd
bundles/systemd-networkd: fix LACP options
All checks were successful
bundlewrap/pipeline/head This commit looks good
fixes #25, hopefully
2021-01-02 11:00:10 +01:00
Franzi f329373a4a
bundles/systemd-networkd: remove settings from bond.netdev
All checks were successful
bundlewrap/pipeline/head This commit looks good
Why the fuck doesn't this work like it's written in the documentation?
2021-01-01 22:00:50 +01:00
Franzi 379dc9e1fe
nodes/home.nas: fix LACP priority 2021-01-01 21:59:49 +01:00
Franzi 16ea6ce0d5
bundles/systemd-networkd: disable STP on bridges 2021-01-01 21:59:21 +01:00
Franzi 48fc341137
bundles/backup-client: add monitoring for backups 2021-01-01 13:59:42 +01:00
Franzi ed325848ab
nodes/home.router: refine forwarding rules for enp1s0.23
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-31 22:30:10 +01:00
Franzi 1a9fadce70
nodes/home.router: allow ICMP and SSH via IPv6 to all hosts behind this router
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-31 21:28:15 +01:00
Franzi e9f225890a
nodes/ovh.icinga2: add some monitoring for external https vhosts
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-31 12:40:26 +01:00
Franzi 3e1d3b483e
bundles/mautrix-whatsapp: use -a for check_procs
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-31 12:31:14 +01:00
Franzi fede30c2cc
bundles/mautrix-whatsapp: introduce 2020-12-31 12:18:34 +01:00
Franzi 4a3cee1623
nodes/htz.ex42-1048908: remove voc-loudness-monitor 2020-12-29 19:05:40 +01:00
Franzi 914889da6c
bundles/vmhost: add option to exclude VM from monitoring
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-29 10:18:16 +01:00
Franzi ee0b8a569e
nodes/htz.ex42-1048908: update gitea to 1.13.1 2020-12-29 10:11:33 +01:00
Franzi 62d7baa3ec
bundles/icinga2: admins shall receive all notifications
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-27 09:09:40 +01:00
Franzi f5dcb808c4
dns: add mail to flauschehorn.sexy
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-25 16:35:04 +01:00
Franzi 31fdcae9ee
dns: add flauschehorn.sexy
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-25 16:18:46 +01:00
Franzi 55058bdfd9
nodes/home.{nas,usv01}: add comments about Dell Local Node Manager
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-25 15:26:23 +01:00
Franzi d72c43083d
nodes/rx300: set proper lldp hostname
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-25 14:45:41 +01:00
Franzi ca7f3ed4a6
bundles/octoprint: fix typo in check_octoprint_update
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-23 12:38:44 +01:00
Franzi e40f88aa69
bundles/unbound: only start unbound after pppoe.service has been started (fixes #23)
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-23 10:50:54 +01:00
Franzi 275249481f
bundles/octoprint: display version in update check, remove error states (we're monitoring this separately)
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-23 10:43:13 +01:00
Franzi 4d853c974c
nodes/home.{sw01,usv01}: add to monitoring
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-22 16:54:38 +01:00
Franzi d2be654206
bundles/unbound: enable prefetching 2020-12-22 09:24:10 +01:00
Franzi 5e45efb7ae
bundles/unbound: better caching 2020-12-22 09:22:37 +01:00
Franzi 5935aed0db
bundles/{netdata,pppd,radvd,vmhost,vnstat,wide-dhcp6c}: add monitoring
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-21 09:50:15 +01:00
Franzi 9d3d0bcc69
nodes/ovh.icinga2: add icinga2 api user for icinga2beamer
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-20 09:34:05 +01:00
Franzi 0b52f8e7e6
bundles/icinga2: allow limiting permissions for api users 2020-12-20 09:33:17 +01:00
Franzi 374ba3c16a
ovh.icinga2: add bundle:iptables
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-18 18:17:15 +01:00
Franzi 7bf77f9a49
home.nas: add ZFS cache disk to S.M.A.R.T. checks
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-18 18:00:32 +01:00
Franzi da4b139095
bundles/{radvd,wide-dhcp6c}: remove metadata key integrate-with-pppd
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-18 16:30:17 +01:00
Franzi fb7b11fdb6
htz.ex42-1048908: update travelynx to 1.19.2
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-18 16:02:19 +01:00
Franzi 6045debe9e
bundles/nginx: check ssl certificates
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-18 13:28:08 +01:00
Franzi ec62dfdb9a
home.kodi-wohnzimmer: disable smart checks 2020-12-18 08:42:36 +01:00
Franzi 5f5c3d5207
bundles/icinga2: admins shall receive more notifications
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-18 08:24:19 +01:00
Franzi 958f5893e6
bundles/zfs: adjust warning period for check_zfs_old_snapshots 2020-12-18 08:23:42 +01:00
Franzi 487e4d0df6
bundles/rspamd: add missing } 2020-12-18 08:21:56 +01:00
Franzi e81fcafe7a
bundles/powerdns: fix dependencies
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-12-18 06:41:24 +01:00
Franzi 63d455d242
bundles/rspamd: fix dependencies 2020-12-18 06:41:05 +01:00
Franzi 65db8b1625
bundles/systemd-networkd: faster miimon 2020-12-18 06:33:05 +01:00
Franzi ecb7a93073
bundles/pppd: silence restart-pppoe-if-no-public-ip 2020-12-18 06:32:18 +01:00
Franzi e33af1c845
bundles/unbound: refresh root-hint.txt once a week 2020-12-13 15:22:19 +01:00
Franzi 9c6fe48859
bundles/unbound: add netdata config
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-13 15:17:19 +01:00
Franzi 3eeb253e55
bundles/unbound: introduce, add to nodes
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-13 14:59:44 +01:00
Franzi c5e43188ca
bundles/radvd: support not announcing a nameserver 2020-12-13 14:59:10 +01:00
Franzi 057d4f0c4c
bundles/dovecot: autoexpunge Trash older than 360 days
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-13 11:55:28 +01:00
Franzi 18c56cce9a
bundles/dovecot: do not auto-subscribe to junk mailbox 2020-12-13 11:54:55 +01:00
Franzi 77b19762d4
nodes/htz.ex42-1048908: update travelynx to 1.19.0
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-12 11:43:49 +01:00
Franzi 58d99eb402
bundles/systemd: configure journald
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-12 10:39:57 +01:00
Franzi 2c062761e3
nodes/home.router: add work ssh keys 2020-12-12 09:12:26 +01:00
Franzi 41ff060e99
nodes/home.router: fix restart_pppd cronjob 2020-12-12 09:12:05 +01:00
Franzi cf4d0c1ca6
bundles/powerdnsadmin: ensure permissions of powerdnsadmin static directory
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-10 22:18:04 +01:00
Franzi 8be6f9b78d
bundles/apt: fix date call in check_unattended_upgrades 2020-12-10 22:15:31 +01:00
Franzi be15458e1e
bundles/powerdnsadmin: fix database upgrade
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-10 22:07:26 +01:00
Franzi 1d06d86205
bundles/wireguard: fix early fault resolve in metadata.py
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-10 16:39:26 +01:00
Franzi bd217f0666
bundles/pppd: automatically restart pppoe (once per hour) if no public ip address can be found
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-12-10 16:14:17 +01:00
Franzi b80c0b12fe
home.router: add c3voc vpn 2020-12-08 17:45:30 +01:00
Franzi 8a1a1bd8fd
home.router: sort metadata 2020-12-06 19:52:32 +01:00
Franzi 1a56b7d328
nodes/htz.ex42-1048908: update travelynx to 1.18.13
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-12-05 10:16:07 +01:00
Franzi 9398649db0
bundles/seafile: add icinga checks
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-12-05 09:28:54 +01:00
Franzi 2384b69d0e
nodes/htz.ex42-1048908: update gitea to 1.13.0
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-12-05 09:22:27 +01:00
Franzi febcacdfe3
icinga2: enable mails for update checks 2020-12-05 09:17:21 +01:00
Franzi 9850a27ee2
icinga2: disable sms for some hosts 2020-11-30 06:54:50 +01:00
Franzi 67d8293201
bundles/wireguard: one icinga2 check per peer
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-11-30 06:43:46 +01:00
Franzi 3ab39f9ede
dns: fix ip for part.of.the.trans-agenda.eu
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-29 13:49:21 +01:00
Franzi 295ff72b4b
bundles/smartd: introduce, add to hosts where *we* need to keep track of disk health
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-29 12:07:27 +01:00
Franzi 8456ac43c6
bundles/nfs-client: don't try to start automount units 2020-11-29 12:06:34 +01:00
Franzi 1bfeead5e8
nodes/home.nas: change nfs-mount options for /storage/nas 2020-11-29 12:05:51 +01:00
Franzi a549936e09
bundles/nfs-server: ensure nfs-kernel-server is started 2020-11-28 15:48:27 +01:00
Franzi d19f0dd5bd
nodes/home.nas: add backup target for kunsi-t470 2020-11-27 03:10:11 +01:00
Franzi 014b37082c
bundles/wireguard: send pings over vpn, if pppd reconnects 2020-11-27 03:09:37 +01:00
Franzi c1885e20b6
nodes/home.octoprint-vielschichtigkeit: fix ifnames, fix vhost 2020-11-25 21:26:21 +01:00
Franzi dc9e378908
bundles/icinga2: add icinga statusmonitor
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-22 18:56:04 +01:00
Franzi 12ce8d8f6e
bundles/icinga2: add automatic downtime for upgrade-and-reboot
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-22 13:28:14 +01:00
Franzi 3a56b0425c
bundles/icinga2: add default for vars.notification.mail, enable mail for check_sipgate_account_balance
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-22 11:44:09 +01:00
Franzi 9651d740ae
bundles/icinga2: add check_sipgate_account_balance, adjust check_interval
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-22 11:38:53 +01:00
Franzi 9cace7dace
bundles/icinga2: only include service_name in sms if it actually is a service
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-22 11:09:44 +01:00
Franzi 54219928e4
bundles/icinga2: only add user to on-call group if they have atleast one of (email, phone) set
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-22 11:07:02 +01:00
Franzi 8c6c691e5e
bundles/icinga2: implement SMS notifications 2020-11-22 10:34:49 +01:00
Franzi 22d5ba12ee
bundles/octoprint: don't try to resolve faults in metadata.py
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-22 09:07:28 +01:00
Franzi 15826c73b0
bundles/icinga2: send notifications
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-11-22 09:04:24 +01:00
Franzi d26b8ade45
remove some comments 2020-11-22 08:27:37 +01:00
Franzi 4a57926577
bundles/icinga2: set some notification options for checks 2020-11-22 08:24:44 +01:00
Franzi b114ba3ff8
bundles/postgresql: fix typo
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-11-22 07:40:34 +01:00
Franzi d428572461
bundles/icinga2: add servicegroup for every service which has checks
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-11-21 23:04:15 +01:00
Franzi 0bc4b5439c
bundles/icinga2: add hostgroup for every bw group
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-11-21 22:46:29 +01:00
Franzi 12cf03e03f
bundles/icinga2: generate icinga_users from users.json
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-11-21 21:46:41 +01:00
Franzi c77856f97a
bundles/vmhost: add info line to QEMU VM STATUS 2020-11-21 21:01:37 +01:00
Franzi 5639da4954
bundles/vmhost: add QEMU VM STATUS check
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-11-21 20:58:55 +01:00
Franzi 325f483a26
bundles/{gitea,mautrix-telegram}: add update check
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-11-21 20:35:51 +01:00
Franzi 4f5e462c94
bundles/octoprint: add update check 2020-11-21 20:35:29 +01:00
Franzi 91f2fd839b
bundles/sshmon: add check_github_for_new_release 2020-11-21 20:03:50 +01:00
Franzi a4ca98e79e
bundles/rspamd: add monitoring
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-21 18:55:45 +01:00
Franzi e6acda1f52
bundles/powerdns: add monitoring 2020-11-21 18:55:34 +01:00
Franzi 2fdeeca9c3
bundles/postgresql: add monitoring 2020-11-21 18:55:21 +01:00
Franzi 2f7f35c85a
bundles/matrix*: add monitoring 2020-11-21 18:55:06 +01:00
Franzi 1d450b9829
bundles/apt: fix statusfile output of unattended upgrades
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-21 18:07:01 +01:00
Franzi 7631ff9a5e
nodes/htz.ex42-1048908: update travelynx to 1.18.10
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-21 16:34:01 +01:00
Franzi 35025b40f6
bundles/sshmon: increase timeout for INTERNET check
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-21 16:17:16 +01:00
Franzi 5aee050c5d
bundles/wireguard: add icinga check 2020-11-21 16:15:34 +01:00
Franzi 58ca3fa9ae
bundles/wireguard: add netdev and network files, add iptables rules
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-21 15:38:38 +01:00
Franzi e2490df48e
nodes/ovh.wireguard: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-21 12:24:26 +01:00
Franzi 4557ce2538
libs/keys: add gen_privkey() and get_pubkey_from_privkey()
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-21 12:05:36 +01:00
Franzi 70513c47fa
nodes/home.*: set icinga_options
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-21 11:31:40 +01:00
Franzi 6cc0498e10
nodes/htz-cloud.pirmasens: more cpu, more ram
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-21 11:08:19 +01:00
Franzi 63fd31c226
bundles/icinga2: support specifying an alternative host for checks
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-21 10:58:57 +01:00
Franzi daa90a4668
move groups around 2020-11-21 10:55:09 +01:00
Franzi 5419bf31fb
bundles: fix some icinga checks 2020-11-21 10:30:05 +01:00
Franzi 11071914e0
bundles/icinga2: initial working draft 2020-11-21 10:29:36 +01:00
Franzi d3de7a27be
bundles/icinga2: add dependencies for icingaweb2 setup 2020-11-21 08:57:46 +01:00
Franzi 7fba53245a
nodes/htz-cloud.luther: always put requests to urls starting with /update to update.php
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-20 08:33:18 +01:00
Franzi beb55a7974
htz.ex42-1048908: update gitea to 1.12.6
Some checks are pending
bundlewrap/pipeline/head Build started...
2020-11-19 16:54:36 +01:00
Franzi cb93e6c160
htz.ex42-1048908: update mautrix-telegram to 0.9.0 2020-11-19 16:53:26 +01:00
Franzi 6ad28bb375
bundles/vnstat: add graph for "yesterday" 2020-11-19 16:52:45 +01:00
Franzi fd99334a66
bundles/vnstat: improve usability of web dashboard for mobile devices
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-16 21:43:51 +01:00
Franzi 6b11a7b2a8
bundles/vnstat: redirect cron output to /dev/null
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-16 17:10:14 +01:00
Franzi 7d78ac9db8
bundles/vnstat: add flag to generate statistics images, add to home.router
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-16 17:07:05 +01:00
Franzi 2d856a1e9a
bundles/nginx: add iptables rules
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-16 16:43:57 +01:00
Franzi 88dd587fb4
bundles/vnstat: introduce, add to home.router 2020-11-16 16:33:26 +01:00
Franzi 9fa3757a96
nodes/home.nas: add zfs dataset for yate installation 2020-11-16 15:28:16 +01:00
Franzi d0b2e2fb61
nodes/home.nas: fix permissions cronjobs
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-15 17:33:25 +01:00
Franzi 8343838dc6
bundles/nfs-client: don't touch permissions of mount directory by default
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-15 13:37:13 +01:00
sophie 75e199ae0d Merge pull request 'bundle/dhcpd: improvements' (#19) from kunsi-dhcpd-improvements into main
All checks were successful
bundlewrap/pipeline/head This commit looks good
Reviewed-on: https://git.kunsmann.eu/kunsi/bundlewrap/pulls/19
2020-11-15 12:34:41 +00:00
Franzi c9e5ae87a1
bundles/users: sort ssh keys
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-15 13:26:10 +01:00
Franzi 121dfb692c
bundles/netdata: use correct metadatum name
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-15 13:25:15 +01:00
Franzi 9df5cb1f16
bundles/dhcpd: remove hardcoded group in metadata reactor get_static_allocations()
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-15 13:23:24 +01:00
Franzi c597244a9d
bundles/dhcpd: adjust spacing in metadata processor for static leases
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-15 12:07:02 +01:00
Franzi d5bca495e0
bundles/dhcpd: remove some .get()
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-15 12:06:03 +01:00
Franzi ad569f073e
bundles/dhcpd: add iptables rules 2020-11-15 12:01:14 +01:00
Franzi cdef8cdb13
bundles/dhcpd: adjust indentation in dhcpd.conf 2020-11-15 12:00:58 +01:00
Franzi f6dafbc78e
nodes/home.router: use default settings for dhcp lease times 2020-11-15 11:58:55 +01:00
Franzi 4f9281a4a4
bundles/dhcpd: download oui.txt
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-15 11:40:33 +01:00
Franzi 2457d5b435
bundles/backup-client: redirect stderr to /dev/null
All checks were successful
bundlewrap/pipeline/head This commit looks good
We have monitoring to determine wether the backup succeeded or not.
No need for E-Mails, too.
2020-11-15 11:15:53 +01:00
Franzi 84d1984cc1
nodes/home.nas: add users to "nas" group, add cronjobs to ensure permissions on nas dataset
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-15 11:12:22 +01:00
Franzi 9e2cb92766
nodes/home.nas: add user f2k1de 2020-11-15 10:36:40 +01:00
Franzi da39da4a5f
nodes/home.router: add user f2k1de, to allow them to do port forwarding
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-15 10:07:29 +01:00
Franzi ccfa56ad5e
bundles/pppd: also wait for ppp interface to vanish before restarting
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-15 10:02:13 +01:00
Franzi 0aafeb96cd
bundles/pppd: make sure dependent services are stopped before restarting pppoe session 2020-11-15 09:56:06 +01:00
Franzi 7e4c69c3f1
groups/home: use default nameservers until we implemented a dns cache 2020-11-15 09:40:48 +01:00
Franzi d83dbbdd75
bundles/systemd-networkd: use some more options for bond interfaces 2020-11-15 09:39:44 +01:00
Franzi 5319cd1e8b
bundles/netdata: disable health checks 2020-11-14 16:55:29 +01:00
Franzi f9c255cd1b
dns: add second ipv6 to mx0.kunbox.net 2020-11-14 15:24:13 +01:00
Franzi 6d58f2387f
bundles/openssh: introduce, add to all nodes
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-14 14:46:59 +01:00
Franzi e56e875433
bundles/rspamd: switch to automatically-generated dkim key 2020-11-14 14:35:27 +01:00
Franzi 3213e462c5
bundles/netdata: only save to ram, keep less history 2020-11-14 14:34:38 +01:00
Franzi 1339564dc4
bundles/netdata: introduce, add to home.nas and home.router
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-14 14:05:28 +01:00
Franzi ff607777ce
bundles/backup-client: support using a non-standard ssh port
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-14 12:52:18 +01:00
Franzi f405dca771
bundles/pppd: add dyndns capability 2020-11-14 12:46:19 +01:00
Franzi 10732efa36
nodes/home.router: add port forwarding for home.nas
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-14 12:26:22 +01:00
Franzi c8272b933a
nodes/home.nas: do updates on saturday
This machine is the vmhost for our router. We don't want them
to be rebooting at the same time.
2020-11-14 12:25:52 +01:00
Franzi 0ca8edf656
bundles/apt: move patchday to metadata reactor, make patchday configurable 2020-11-14 12:24:55 +01:00
Franzi 32b7dda61f
bundles/iptables: add newline to rules files 2020-11-14 12:24:12 +01:00
Franzi 877744b0ba
bundles/pppd: send out a Router Solicitation on ifup
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-14 12:11:51 +01:00
Franzi a14580944b
bundles/{radvd,wide-dhcp6c}: improve handling of non-properly terminated ip-down scripts 2020-11-14 11:57:01 +01:00
Franzi 644eb37b82
bundles/radvd: introduce, add to home.router 2020-11-14 11:47:44 +01:00
Franzi fa224a9939
bundles/wide-dhcp6c: introduce, add to home.router 2020-11-14 11:34:16 +01:00
Franzi 6b4eae842b
nodes/home.router: go live
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-13 23:57:12 +01:00
Franzi 00ba7e49d6
bundles/pppd: accept RA on ppp interface 2020-11-13 23:56:59 +01:00
kunsi 06f6e454e3 Merge pull request 'HEIMIT-2342-add-dhcpd-config' (#18) from HEIMIT-2342-add-dhcpd-config into main
All checks were successful
bundlewrap/pipeline/head This commit looks good
Reviewed-on: https://git.kunsmann.eu/kunsi/bundlewrap/pulls/18
2020-11-13 22:36:04 +00:00
Sophie Schiller cbfc8c75ad bundles/dhcpd add defaults file and some escaping
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-13 23:30:49 +01:00
Sophie Schiller ef211f7356 update gitignore 2020-11-13 23:30:49 +01:00
Sophie Schiller dcf944b198 bundles/dhcpd add initial items, metadata and template 2020-11-13 23:30:49 +01:00
Franzi 6ba0f6df1d
bundles/systemd: make sure we're using UTC and NTP
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-13 23:26:13 +01:00
Franzi 0025482240
nodes/home.router: install cronjob to re-establish pppoe connection at night
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-13 23:07:18 +01:00
Franzi 870a5252e5
bundles/pppd: add iptables rules on ifup/ifdown 2020-11-13 23:04:43 +01:00
Franzi f65e216828
bundles/iptables: introduce, add to home.router
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-13 22:47:23 +01:00
Franzi f355d1ec7b
Jenkinsfile: don't try to send mails. Doesn't work.
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-13 22:16:20 +01:00
Franzi df9863ef31
bundles/openvpn-client: add 2020-11-13 22:15:36 +01:00
Franzi e515378497
bundles/backup-server: dummy nodes never do backups
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-11-13 21:58:35 +01:00
Franzi 42133b92de
nodes/home: add some dummy nodes
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-11-13 21:53:12 +01:00
Franzi 297c8c84fb
nodes/home.router: add pppd
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-13 21:41:24 +01:00
Franzi 3b829caaf6
bundles/pppd: introduce 2020-11-13 21:41:02 +01:00
Franzi b1860b7e01
bundles/systemd-networkd: add option to only create a .netdev file for interfaces 2020-11-13 21:40:44 +01:00
Franzi be2cdc39e8
nodes/home.router: add node
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-13 18:48:16 +01:00
Franzi 99071bd8ba
nodes/home.nas: use a vlan 2020-11-13 18:47:24 +01:00
Franzi f7c85ddd8a
nodes/rx300: add lldp 2020-11-13 18:46:52 +01:00
Franzi 223e799a87
nodes/home: ipv4 -> ips 2020-11-13 18:46:27 +01:00
Franzi 2631531fd2
nodes/home.nas: add vmhost bundle
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-13 16:29:42 +01:00
Franzi 75d86f3339
bundles/systemd-networkd: support vlans 2020-11-13 16:29:17 +01:00
Franzi 4213b60052
bundles/lldp: introduce, add to all nodes at home 2020-11-13 16:28:43 +01:00
Franzi b9b0a9c5ca
bundles/vmhost: install correct packages 2020-11-13 14:47:40 +01:00
Franzi 8246a8199c
nodes/htz-cloud.sewfile: add seafile data path
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-13 13:36:12 +01:00
Franzi df63f8c732
bundles/nginx: make sure /var/www exists 2020-11-13 13:35:02 +01:00
Franzi e91ac7e457
bundles/backup-client: fix detection of rsync errors
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-13 13:34:21 +01:00
Franzi 215c824893
dns: remove duplicate TLS-RPT entry for kunbox.net
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-13 13:22:00 +01:00
Franzi d31910368c
icinga2: install packages and dependencies 2020-11-13 13:19:26 +01:00
kunsi 277808a9c5 Merge pull request 'kunsi-feature-rspamd-rotating-keys' (#3) from kunsi-feature-rspamd-rotating-keys into main
All checks were successful
bundlewrap/pipeline/head This commit looks good
Reviewed-on: https://git.kunsmann.eu/kunsi/bundlewrap/pulls/3
2020-11-13 12:12:59 +00:00
Franzi 6bac83def2
bundles/rspamd: fix automatic generation of dkim key
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-13 13:11:26 +01:00
Franzi 6a2ecbdbf5
dns: add new DKIM signing key 2020-11-13 13:11:21 +01:00
Franzi cff0870e63
bundles/rspamd: refine auto-generation of dkim signing keys 2020-11-13 13:09:37 +01:00
Franzi 56f1b1a6c6
bundles/rspamd: first draft for automatically-rotating dkim keys 2020-11-13 13:09:34 +01:00
Franzi 52c36ae3fa
dns: add icinga.kunsmann.eu
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-13 13:04:53 +01:00
Franzi f04dac11e5
Merge branch 'kunsi-icinga2' into main
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-13 13:03:16 +01:00
Franzi cec8a14dfd
groups/all: do backups
All checks were successful
bundlewrap/pipeline/head This commit looks good
.. except for a couple of nodes which hold no important data
2020-11-13 12:59:06 +01:00
Franzi 45723a4c8a
nodes/home.nas: configure for backups 2020-11-13 12:58:23 +01:00
Franzi 741f3b0032
bundles/backup-client: fix cronjob 2020-11-13 12:57:50 +01:00
Franzi 0749fc75c5
bundles: add backup paths 2020-11-13 12:37:26 +01:00
Franzi f71653e3ce
bundles/backup-{client,server}: introduce 2020-11-13 12:36:52 +01:00
Franzi 59c1cb8551
items/zfs_pool: support raidz2 and raidz3 2020-11-13 11:24:30 +01:00
Franzi 05e8d83ebf
nodes/htz.ex42-1048908: update mautrix-telegram to 0.9.0-rc3
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-13 09:27:02 +01:00
Franzi 30ee0c8bdf
bundles/mx-puppet-discord: restart service after building new version 2020-11-13 09:26:34 +01:00
Franzi 56fd0049f7
nodes/htz-cloud.luther: add zfs dataset for website root
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-12 23:00:10 +01:00
Franzi e5c12f0628
bundles/nginx: create webroot directories after bundle:zfs is done 2020-11-12 22:59:46 +01:00
Franzi 2274e7aa37
bundles/nfs-server: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-12 19:59:02 +01:00
Franzi 5b1b7241b7
nodes/home.nas: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-12 19:40:41 +01:00
Franzi f2a0f0b46a
bundles/systemd-networkd: support bond and bridge interfaces 2020-11-12 19:38:10 +01:00
Franzi 633ccb97fd
bundles/zfs: rename zed -> zfs-zed 2020-11-12 19:36:28 +01:00
Franzi d01d89d432
bundles/apt: support debian 11 2020-11-12 18:40:19 +01:00
Franzi e395a42160
bundles/apt: no need to have apt-daily.timer running
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-12 15:10:59 +01:00
Franzi e82b4ba78b
nodes/htz.ex42-1048908: install oidentd 2020-11-11 16:32:51 +01:00
Franzi 504c4f2314
nodes/{htz.ex42-1048908,htz-cloud.pirmasens}: make sure we have redis installed 2020-11-11 16:29:27 +01:00
Franzi 087f4bb74d
groups/{gce,home}: send mail via mx0.kunbox.net
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-11 13:31:01 +01:00
Franzi 11701a67c8
dns: deploy MTA-STS
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-11 11:41:06 +01:00
Franzi e0f02ef0f7
Jenkinsfile: send mail to committer on failing build
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-11 09:13:10 +01:00
Franzi d47c39185b
bundles/php: no need to restart php if just installing the base packages
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-11 08:37:29 +01:00
Franzi 652fb72ccc
bundles/postfix: fix metadata reactor for letsencrypt 2020-11-11 08:35:36 +01:00
Franzi ea55a02215
nodes/htz-cloud.pirmasens: configure postfix, dovecot, rspamd, postfixadmin
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-11-10 20:35:35 +01:00
Franzi 9dd7589f12
bundles/postfix: add submission_header_cleanup file 2020-11-10 20:34:27 +01:00
Franzi 8180769120
bundles/postfix: add postmaster alias 2020-11-10 20:32:39 +01:00
Franzi f9bd2d695d
bundles/postfix: add SPAM BLOCKLISt for every non-private IP attached to the server
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-10 14:28:12 +01:00
Franzi aad1a742b7
bundles/icinga2: add ipv6-capable check_rbl script 2020-11-10 14:26:07 +01:00
Franzi f30aa48eca
bundles/icinga2: add sshmon private key
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-10 13:43:46 +01:00
Franzi a176a1aa65
bundles/icinga2: introduce, install checks, install sources.list, create postgres database
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-10 13:37:27 +01:00
Franzi a9c00409b4
bundles/mautrix-telegram: fix item dependency error
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-10 13:26:03 +01:00
Franzi 6cd02dc563
bundles: move non-login users to items.py
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-11-10 13:24:07 +01:00
Franzi d0647b2e3c
nodes/htz.ex42-1048908: remove legacy users 2020-11-10 13:13:44 +01:00
Franzi cca4fec761
bundles/users: get default user data from users.json 2020-11-10 13:12:36 +01:00
Franzi c090a9c2c2
bundles/users: move root user to metadata 2020-11-10 12:50:08 +01:00
Franzi 16e8c4fd00
scripts/passwords-for: sort metadata 2020-11-10 12:49:47 +01:00
Franzi 3fbe32518a
bundles/postgresql: rename users -> roles
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-10 12:37:58 +01:00
Franzi d087cea869
bundles/gitea: add monitoring 2020-11-10 11:32:59 +01:00
Franzi 985f47ca99
bundles/miniflux: add monitoring 2020-11-10 11:28:40 +01:00
Franzi a185e027f8
nodes: add website checks to nginx vhosts 2020-11-10 11:26:49 +01:00
Franzi 8cb997133a
bundles/nginx: add monitoring
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-10 10:57:04 +01:00
Franzi 65a8efc97f
bundles/zfs: fix monitoring metadata
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-10 10:35:01 +01:00
Franzi f80896fa3b
bundles/postfix: add monitoring 2020-11-10 10:21:37 +01:00
Franzi 420cea15d2
bundles/apt: add monitoring for unattended upgrades 2020-11-10 09:50:20 +01:00
Franzi 3088ae0ba0
bundles/sshmon: add key, add to all nodes 2020-11-10 09:15:51 +01:00
Franzi ca922ef5f7
scripts: add encrypt_file and passwords-for 2020-11-10 09:15:28 +01:00
Franzi 2e2c504111
groups/ovh: make sure default user is gone 2020-11-10 08:59:54 +01:00
Franzi 6ca0d863b1
bundles/sudo: use sudoers.d
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-09 20:39:35 +01:00
Franzi c7362df6c4
bundles/sshmon: import from work repository 2020-11-09 20:31:06 +01:00
Franzi eaf268aea9
libs/tools: change resolve_identifier() to return ipv4 and ipv6 separately
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-09 18:46:37 +01:00
Franzi 67386d9efa
bundles/cron: provide some environment, also manage /etc/crontab
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-09 18:24:01 +01:00
Franzi 1ffe8bd23e
nodes/htz.ex42-1048908: update travelynx to 1.18.8 2020-11-09 17:03:13 +01:00
Franzi a58c5877bf
bundles/gce-workaround: uninstall gce-disk-expand, too
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-09 16:48:28 +01:00
Franzi 4921e0b74f
bundles/systemd-networkd: use correct syntax for resolv.conf 2020-11-09 16:47:56 +01:00
Franzi 2e56feb27d
nodes/ovh.icinga2: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-09 16:40:15 +01:00
Franzi bd89cd4cb5
groups/locations: sort groups, add nameservers for google and home, add ovh 2020-11-09 16:39:57 +01:00
Franzi 6f87a1d240
bundles/systemd-networkd: also deploy resolv.conf 2020-11-09 16:38:59 +01:00
Franzi 394424951f
bundles/systemd-networkd: fix naming of GatewayOnlink 2020-11-09 16:38:35 +01:00
Franzi 78047da04a
bundles/postgresql: only install packages after we have a zfs dataset 2020-11-09 16:37:00 +01:00
Franzi 5bd642236c
bundles/postfix: only call newaliases if we already have postfix installed 2020-11-09 16:36:26 +01:00
Franzi 607da9d39b
bundles/powerdns: user resolve_identifier() for node-dns-entries 2020-11-09 15:37:48 +01:00
kunsi 5ffaa9b1c8 Merge pull request 'bundle/systemd-networkd' (#4) from interface-configuration into main
All checks were successful
bundlewrap/pipeline/head This commit looks good
Reviewed-on: https://git.kunsmann.eu/kunsi/bundlewrap/pulls/4
2020-11-09 14:27:51 +00:00
Franzi 44414f2375
libs/tools: adjust resolve_identifier() to new interface config 2020-11-09 15:23:44 +01:00
Franzi d90c9edc22
nodes: fix interface config 2020-11-09 15:16:29 +01:00
Franzi 91fd33cfa0
bundles/systemd-networkd: better dhcp support 2020-11-09 14:58:09 +01:00
Franzi 5e7c7671e0
bundles/systemd-networkd: proper config 2020-11-09 14:48:19 +01:00
Franzi fbb4e2f7a5
systemd-networkd: first draft 2020-11-09 14:08:32 +01:00
Franzi aa477322ac
dns: deploy TLS-RPT for domains we're doing mail for
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-09 13:18:09 +01:00
Franzi c3c510c609
bundles/mautrix-telegram: disable parallel file transfers for now 2020-11-09 13:17:38 +01:00
Franzi f96c53ee8a
nodes/htz.ex42-1048908: fix matrix.franzi.business nginx config 2020-11-09 13:06:03 +01:00
Franzi 835da4db4d
dns: remove wildcard entries
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-09 12:37:58 +01:00
Franzi ea10ed96e5
dns: fix DMARC records, fix SPF
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-09 12:17:26 +01:00
Franzi af97226512
nodes/htz.ex42-1048908: update mautrix-telegram to 0.9.2-rc2
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-09 12:16:06 +01:00
Franzi 06e30cf23c
bundles/mautrix-telegram: also upgrade pip when upgrading bridge 2020-11-09 12:15:37 +01:00
Franzi 90e3bb7fb2
bundles/mautrix-telegram: no need to provide our own alembic.ini 2020-11-09 12:12:04 +01:00
Franzi c0986eb956
bundles/mautrix-telegram: fix database migration
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-09 12:09:17 +01:00
Franzi 614b920890
bundles/mautrix-telegram: pin version until database migration is fixed
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-09 11:27:34 +01:00
Franzi 3ff5d8a7dd
bundles/postfix: add alias database
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-09 10:52:24 +01:00
Franzi d39cb5bd82
PORT_MAP: add new mail bundles
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-08 15:59:51 +01:00
Franzi 6a6a9748b4
nodes/rx300: add info about grub configuration
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-08 15:05:17 +01:00
Franzi 64cffad6a7
bundles/rspamd: silence clamav cronjob 2020-11-08 15:03:26 +01:00
Franzi 0eca42d188
bundles/dovecot: fix home directory for virtual mailboxes
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-08 13:00:44 +01:00
Franzi b4b988e5f2
bundles/postfix: disable TLS1.0 and 1.1, disable weak ciphers
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-08 12:24:37 +01:00
Franzi eddabb0043
dns: activate DMARC 2020-11-08 12:23:41 +01:00
Franzi f85349f0c5
bundles/postfixadmin: fix apt packages
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-08 11:53:51 +01:00
Franzi 0647a8203d
nodes/htz.ex42-1048908: add another ip to spamcheck bypass 2020-11-08 11:06:30 +01:00
Franzi 4ef9b119ef
nodes/htz.ex42-1048908: bump php to 7.4
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-11-08 10:57:01 +01:00
Franzi 15428b03be
bundles/rspamd: introduce, add to htz.ex42-1048908
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-11-08 10:43:51 +01:00
Franzi a236444fe5
bundles/dovecot: make sure to reload dovecot after letsencrypt 2020-11-08 10:42:08 +01:00
Franzi e36dbf0222
libs/tools: fix missing default in resolve_identifier() 2020-11-08 10:41:41 +01:00
Franzi b00b2aa245
bundles/dovecot: autoexpunge Junk folder
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-11-07 22:46:15 +01:00
Franzi 1b5ac55033
install postfix on all nodes, configure ex42-1048908 for incoming mail 2020-11-07 22:32:47 +01:00
Franzi 7080b0d89e
bundles/rspamd: create dummy bundle 2020-11-07 22:32:08 +01:00
Franzi 18b573a9c6
bundles/dovecot: introduce 2020-11-07 22:31:47 +01:00
Franzi f42dda5961
bundles/postfixadmin: introduce 2020-11-07 22:31:29 +01:00
Franzi 5550d2cc56
bundles/postfix: introduce 2020-11-07 22:31:18 +01:00
Franzi 88afba9ce9
bundles/mx-puppet-discord: add RestartSec= to systemd unit file 2020-11-07 09:40:22 +01:00
Franzi 7ab121e7e5
bundles/mautrix-telegram: install bridge from git repository 2020-11-07 09:39:57 +01:00
Franzi d7f578742b
bundles/mx-puppet-discord: put bridge repo into subdirectory
this avoids recreating config and registration on every update, which in turn
avoids restarting synapse
2020-11-07 09:08:10 +01:00
Franzi c481fc1327
nodes/htz.ex42-1048908: add php
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-07 09:06:11 +01:00
Franzi 3dc5962627
nodes/htz-cloud.luther: add needed config and packages for drupal
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-31 13:01:15 +01:00
Franzi f8bc4b2ad9
bundles/php: introduce 2020-10-31 13:00:38 +01:00
Franzi e2d8923dee
bundles/nginx: use metadata reactor to determine index files 2020-10-31 10:41:48 +01:00
Franzi 3ee570a47a
nodes/htz-cloud.luther: add postgresql config 2020-10-31 10:31:10 +01:00
Franzi f1f7086aab
bundles/postgresql: make sure we have postgres_role before adding postgres_db 2020-10-31 10:30:48 +01:00
Franzi 67c5c23194
bundles/nginx: support non-domain vhost names 2020-10-31 10:30:07 +01:00
Franzi 4873ec053e
nodes/htz-cloud.luther: add node
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-31 10:19:03 +01:00
Franzi 113221a9b2
bundles/nginx: make sure we have dhparam.pem 2020-10-31 10:18:40 +01:00
Franzi 9cc5c07466
bundles/letsencrypt: do not try to do authorizations without a webserver 2020-10-31 10:11:58 +01:00
Franzi 76fe68a3d1
bundles/zfs: fix dependencies, auto-load zfs module if not loaded 2020-10-31 10:11:15 +01:00
Franzi 8eeaabf615
bundles/nginx: use http 308 for https redirect
All checks were successful
bundlewrap/pipeline/head This commit looks good
basically "go away. nothing's here. use https forever."
2020-10-30 15:24:24 +01:00
Franzi 3c1361a2eb
nodes/htz-cloud.sewfile: fix ip addresses
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-27 18:15:01 +01:00
Franzi 1fd452b006
nodes/htz.ex42-1048908: fix permissions for paste.kunsmann.eu
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-27 18:03:52 +01:00
Franzi 20abb53260
nodes/htz.ex42-1048908: update travelynx to 1.18.7 2020-10-27 17:57:00 +01:00
Franzi 6c937e547d
nodes/rx300: increase ARC size to 16GB
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-25 16:49:36 +01:00
Franzi 554e7947ea
nodes/rx300: raidz for data disks 2020-10-25 16:46:45 +01:00
Franzi 50372572f4
bundles/zfs: improvements 2020-10-25 16:41:18 +01:00
Franzi 1c5e97a10f
nodes/rx300: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-25 13:54:19 +01:00
Franzi 3077d74318
bundles/users: alias s='sudo -i' 2020-10-25 13:21:04 +01:00
Franzi 351d779f20
bundles/users: add metadata entry for bash aliases 2020-10-25 13:19:46 +01:00
Franzi 2a992773f3
bundles/users: fish shell is gone everywhere 2020-10-25 13:17:26 +01:00
Franzi 831545d8b1
introduce node.metadata['hostname'] to other bundles, update nodefiles to reflect changes
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-25 11:14:46 +01:00
Franzi de73552700
nodes: add gce.dns02 and gce.dns03, remove AutoDNS nameservers
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-25 10:59:01 +01:00
Franzi b70f9c9c9d
bundles/powerdns: make sure every dns server is able to resolve every other dns server 2020-10-25 10:58:11 +01:00
Franzi a33d8e4201
bundles/powerdns: decrease RETRY time 2020-10-25 10:57:26 +01:00
Franzi 29f488c082
bundles/powerdns: put ip addresses of secondary nameservers into allow-axfer-ips
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-10-25 10:56:55 +01:00
Franzi 152bb56fdd
bundles/powerdns: remove superslave setting
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
debian currently does ship an older version, in which this
setting is enabled by default.
2020-10-25 10:55:17 +01:00
Franzi 7a3e3ad68f
bundles/powerdns: we don't need the node names of primary nameservers 2020-10-25 10:53:55 +01:00
Franzi 43bd6b4774
bundles/powerdns: only enable webserver and api on primary nameservers 2020-10-25 10:52:51 +01:00
Franzi 78c553faf9
bundles/nodejs: update to 14.x
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-24 17:20:50 +02:00
Franzi 7f7e53cecf
nodes/htz.ex42-1048908: update travelynx to 1.18.6
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-23 18:15:59 +02:00
Franzi 21dd1b615d
digitalocean is gone
All checks were successful
bundlewrap/pipeline/head This commit looks good
Didn't provide what i was looking for.
2020-10-23 15:30:22 +02:00
Franzi a0702416a0
bundles/radicale: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-23 15:22:35 +02:00
Franzi d76f69ab49
bundles/apt: more output for upgrade-and-reboot
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-23 06:26:19 +02:00
Franzi 2bc659af5f
bundles/users: add some bash aliases
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-23 06:06:59 +02:00
Franzi 246c408d83
nodes/htz.ex42-1048908: update travelynx to 1.18.5 2020-10-23 05:48:10 +02:00
Franzi 6398e668e1
bundles/apt: use DEBIAN_FRONTEND=noninteractive everywhere in upgrade-and-reboot
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-23 04:33:01 +02:00
Franzi 07dcb813f3
bundles/raspberrypi: add options for camera and gpu_mem
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-18 19:51:52 +02:00
Franzi f36e36d74a
nodes/htz.ex42-1048908: update nginx config for wiki.franzi.business 2020-10-18 19:30:23 +02:00
Franzi 48cc865892
bundles/nginx: make sure webroot directory exists
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-18 18:55:00 +02:00
Franzi fb27b4b00d
htz.ex42-1048908: add wiki.franzi.business to nginx
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-18 18:46:19 +02:00
Franzi 5c31cdccdd
bundles/kodi: fix path
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-18 16:53:19 +02:00
Franzi 4271c92d70
bundles/gitea: fix chmod
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-18 16:18:12 +02:00
Franzi e32ad2eb19
formatting
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-18 15:51:45 +02:00
Franzi ececab44b4
bundles/miniflux: introduce 2020-10-18 15:49:32 +02:00
Franzi 366374b4e5
bundles/apt: handle unattended-upgrades ourselves 2020-10-18 15:33:41 +02:00
Franzi b1992447f0
nodes/doc.lon1.*: fix zfs device name
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-18 15:02:34 +02:00
Franzi 4b51c1f82a
items/zfs_pool: use "parted -s" to avoid it prompting while changing stuff 2020-10-18 15:02:10 +02:00
Franzi a5088a5358
groups/locations: add doc 2020-10-18 15:01:18 +02:00
Franzi 55f304f1e1
htz.ex42-1048908: update travelynx to 1.18.4 2020-10-18 14:39:40 +02:00
Franzi c7ecf22c68
PORT_MAP: add powerdns
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-17 13:14:10 +02:00
kunsi 5635571f97 Merge pull request 'PowerDNS instead of bind9' (#2) from kunsi-feature-powerdns-instead-of-bind into main
All checks were successful
bundlewrap/pipeline/head This commit looks good
Reviewed-on: https://git.kunsmann.eu/kunsi/bundlewrap/pulls/2
2020-10-17 11:12:35 +00:00
Franzi ab4e1ac752
add __pycache__ to .gitignore
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-17 13:10:59 +02:00
Franzi ae7c3220e0
bundles/powerdns: fix NS records in zonefile header
Some checks are pending
bundlewrap/pipeline/head Build queued...
2020-10-17 13:04:28 +02:00
Franzi 4d6b867bb3
bundles/powerdns: add metadata reactor for automatic node-dns-generation
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-17 12:57:35 +02:00
Franzi 793220c0ec
bundles/powerdns: auto-generate zonefile header based on dns server nodes 2020-10-17 12:57:07 +02:00
Franzi 51e6d0534e
bundles/powerdns: fix Faults
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-17 10:50:21 +02:00
Franzi ca1646d394
bundles/powerdns: add support for zone transfers
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-10-16 23:02:47 +02:00
Franzi f2073e72ed
libs/tools: add resolve_identifier()
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-10-16 23:01:26 +02:00
Franzi 31cc74951b
bundles/powerdns: only reload pdns on zone changes, don't restart
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-10-16 20:40:05 +02:00
Franzi c5fc67660a
nodes/gce.bind01: add nginx for powerdnsadmin
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-10-16 20:25:17 +02:00
Franzi 7c1c0f5e80
bundles/powerdns: increase default TTL to 1 day 2020-10-16 20:16:34 +02:00
Franzi 0a115d2372
EOL bundles/bind 2020-10-16 20:12:47 +02:00
Franzi e5a7aad0e8
dns: fix missing "" for TXT records
Some checks failed
bundlewrap/pipeline/head There was a failure building this commit
2020-10-16 20:11:14 +02:00
Franzi 155c93f739
bundles/powerdns: fix schema import for pgsql 2020-10-16 20:10:55 +02:00
Franzi 9bba18d13e
bundles/powerdnsadmin: introduce 2020-10-16 20:10:34 +02:00
Franzi 0533e4087a
bundles/postgresql: install dev packages
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-16 19:24:40 +02:00
Franzi d442ab399e
bundles/powerdns: support pgsql 2020-10-16 19:24:12 +02:00
Franzi 2c1a825b7d
bundles/apt: make sure we have python3-dev 2020-10-16 19:14:15 +02:00
Franzi 8acc0a7bb1
bundles/apt: make sure we have build-essential and git 2020-10-16 19:12:26 +02:00
Franzi a553e736d1
bundles/powerdns: fix dependencies 2020-10-16 17:59:46 +02:00
Franzi 72abcae348
dns: ns-1.kunbox.net IN A 34.89.208.78 2020-10-16 17:56:13 +02:00
Franzi df852e8ef9
bundles/powerdns: more config, add bind backend
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-16 17:44:31 +02:00
Franzi fa67bd13f4
bundles/powerdns: minimal pdns.conf
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-16 13:19:44 +02:00
Franzi d029af554c
bundles/travelynx: make sure to restart worker service, too
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-16 13:03:52 +02:00
Franzi b30e7a0ed8
htz.ex42-1048908: update travelynx to 1.18.2 2020-10-16 13:01:49 +02:00
Franzi c5c0c923d1
home.kodi-wohnzimmer: switch to debian-multimedia repository to have kodi 18
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-15 19:34:22 +02:00
Franzi a08f483ac5
bundles/powerdns: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-13 19:06:22 +02:00
Franzi 591d3fb947
bundles/nfs-client: fix installation of automount units
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-10 17:25:39 +02:00
Franzi 697881ee23
home.kodi-wohnzimmer: make sure we have vaapi 2020-10-10 17:21:00 +02:00
Franzi 6a8768fb2f
bundles/nfs-client: introduce 2020-10-10 16:37:33 +02:00
Franzi 21da0a7b80
home.kodi-wohnzimmer: switch back to debian stable 2020-10-10 16:28:31 +02:00
Franzi 0ef0a5ff26
htz.ex42-1048908: update travelynx to 1.18.1 2020-10-10 13:31:59 +02:00
Franzi fdf7e31492
nodes/*: fix debian version (has no minor versions to differentiate) 2020-10-09 18:28:30 +02:00
Sophie Schiller 81a1af4c74 add new tmux config 2020-10-09 18:16:16 +02:00
Sophie Schiller 3170e75bbe update kodi to unstable 2020-10-09 18:12:56 +02:00
Franzi c478fb357d
nodes/home.kodi-wohnzimmer: change operating system, change hardware (now a NUC) 2020-10-09 17:47:36 +02:00
Franzi a955a7b84d
bundles/raspberrypi: do not set empty default for config.txt 2020-10-09 17:46:36 +02:00
Franzi c953d138ee
bundles/kodi: fix dependencies for alsa 2020-10-09 17:46:07 +02:00
Franzi 36e70a656b
nodes/home.kodi-wohnzimmer: use raspbian 32bit
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-03 19:27:34 +02:00
Franzi 5e8489a74c
bundles/kodi: add missing dependencies 2020-10-03 18:36:48 +02:00
Franzi c2bcd1f0d9
bundles/apt: add raspbian to supported OSes 2020-10-03 18:36:29 +02:00
Franzi 2387b196b2
bundles/kodi: use alsa instead of pulseaudio
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-03 17:00:13 +02:00
Franzi 672660d131
items/download: wrap node.run() in try..except to avoid killing the whole apply
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-03 16:33:41 +02:00
Franzi f312f590c1
nodes/htz.ex42-1048908: update gitea to 1.12.5 2020-10-03 16:18:50 +02:00
Franzi 018bdd1d00
bundles/kodi: also install addon repository
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-03 15:54:03 +02:00
Franzi 9b8c5450ec
bundles/raspberrypi: make sure dphys-swapfile is uninstalled 2020-10-03 15:10:28 +02:00
Franzi d394842929
nodes/home.kodi-wohnzimmer: install nfs-common
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-03 14:02:09 +02:00
Franzi 60cfe90a1d
bundles/raspberrypi: force maximum cpu frequency 2020-10-03 13:52:34 +02:00
Franzi 23ff7a145b
nodes/home.kodi-wohnzimmer: install kodi
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-03 13:36:44 +02:00
Franzi 32fd2f7a7b
bundles/kodi: introduce 2020-10-03 13:36:12 +02:00
Franzi fc44a9cd69
bundles/raspberrypi: enable audio, force hdmi mode 2020-10-03 13:35:44 +02:00
Franzi 92020f1c6e
nodes/home.kodi-wohnzimmer: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-27 17:18:34 +02:00
Franzi 675f8beea9
bundles/raspberrypi: improvements 2020-09-27 17:18:05 +02:00
Franzi 81db0e6e44
groups/home: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-27 16:47:10 +02:00
Franzi c2c9913514
allow setting hostname in metadata 2020-09-27 16:46:54 +02:00
Franzi 5d1e71e83e
bundles/raspberrypi: introduce 2020-09-27 16:46:26 +02:00
Franzi 01364c2c50
nodes/htz.ex42-1048908: update travelynx to 1.17.5
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-26 16:02:59 +02:00
Franzi 0784b85fbb
bundles/mx-puppet-discord: create registration.yaml using bw
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-26 15:34:12 +02:00
Franzi bf7e982fdb
bundles/bind: change zonefile header
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-26 15:20:37 +02:00
Franzi 4b41a00ac4
bundles/matrix-synapse: don't remove conf.d directory
We're taking care of that by deploying a override.conf instead
2020-09-26 15:20:08 +02:00
Franzi a67353e24f
Merge branch 'pending-new-bw-release' into main 2020-09-26 15:18:29 +02:00
Franzi 750f1ef20c
update bw to 4.2 2020-09-26 15:17:00 +02:00
Franzi c8adfcabf1
bundles/octoprint: add octoprint to dialout group 2020-09-26 15:16:09 +02:00
Franzi 91c4846129
bundles/mjpg-streamer: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-22 19:59:36 +02:00
Franzi 176a41e2f3
bundles/octoprint: add octoprint to gpio group
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-22 19:16:38 +02:00
Franzi d02538368a
bundles/octoprint: add systemd-wrapper script
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-22 18:52:11 +02:00
Franzi 7ea85247e0
bundles/nginx: proxy is a dict now, add some more configuration options
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-22 18:39:38 +02:00
Franzi d1672a9a45
bundles/octoprint: restart octoprint after changing unit file
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-22 18:11:42 +02:00
Franzi eee9b00f10
bundles/systemd: fix daemon-reload command 2020-09-22 18:11:09 +02:00
Franzi 44a6e8292a
bundles/bind: add node-dns-auto-generator 2020-09-20 18:56:53 +02:00
Franzi 6602e684c0
nodes/home.octoprint-vielschichtigkeit: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-20 15:47:07 +02:00
Franzi 151d8e92c3
bundles/nginx: do not set X-Forwarded-Proto if https is disabled, do not use http2 without ssl 2020-09-20 15:46:39 +02:00
Franzi 6a67b1a4ae
PORT_MAP: add octoprint 2020-09-20 15:12:40 +02:00
Franzi 84a78f5fec
bundles/octoprint: allow 'sudo /usr/bin/vcgencmd' 2020-09-20 15:12:18 +02:00
Franzi 577c3c7c49
bundles/sudo: change metadata key to 'sudo_commands' 2020-09-20 15:11:52 +02:00
Franzi 04c632953d
bundles/octoprint: introduce 2020-09-20 15:05:17 +02:00
Franzi d6799088c4
bundles/nginx: add metadata option to disable https 2020-09-20 14:36:43 +02:00
Franzi 2ac2982463
htz.ex42-1048908: update travelynx to 1.17.3
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-20 13:16:41 +02:00
Franzi bb0b6f2079
shuffle some ports around
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-20 13:16:08 +02:00
Franzi 3242d97cfa
bundles/mautrix-telegram: use pkg_pip 2020-09-20 10:30:13 +02:00
Franzi eede422e9a
shuffle some ports around 2020-09-20 10:29:19 +02:00
Franzi dc968b75e5
add port mapping table
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-20 10:16:22 +02:00
Franzi d1bbb5a855
bundles/travelynx: restart service when changing imprint
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-12 17:08:18 +02:00
Franzi 7f153cf174
travelynx: fix branch name for link to nginx config
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-12 17:06:16 +02:00
Franzi dd082d45e9
bundles/matrix-synapse: set suppress_key_server_warning if using matrix.org as trusted key server
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-12 13:22:16 +02:00
Franzi 6adc4a675f
bundles/mautrix-telegram: reload systemd when changing service file
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-12 13:03:15 +02:00
Franzi 2361466c84
bundles/mautrix-telegram: handle registration.yaml ourselves
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-12 12:59:34 +02:00
Franzi a69f049ce2
nodes/htz.ex42-1048908: update travelynx to 1.17.2
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-12 12:30:34 +02:00
Franzi f6ecaf3c29
bundles/mautrix-telegram: also deploy alembic.ini, make sure alembic ini gets called if alembic scripts dir does not exist
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-12 12:09:20 +02:00
Franzi cf2920f284
bundles/mautrix-telegram: introduce 2020-09-06 12:15:37 +02:00
Franzi 180802a669
bundles/apt: make sure we do have pip3 and virtualenv 2020-09-06 12:04:56 +02:00
Franzi 1744596296
bundles/matrix-synapse: deploy override.conf to make sure synapse doesn't try to load config from there
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-05 20:06:35 +02:00
Franzi 6a12b564ac
nodes/htz.ex42-1048908: update gitea, update travelynx
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-04 21:19:23 +02:00
Franzi a443272e02
bundles/gitea: make sure to restart gitea after downloading binary 2020-09-04 21:06:13 +02:00
Franzi e35f41c6dc
bundles/letsencrypt: change cronjob times
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-08-30 21:26:33 +02:00
Franzi 27d6c1880a
bundles/influxdb: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-08-30 12:07:06 +02:00
Franzi ccd4a09183
bundles/apt: allow variables {os} and {os_release} in sources.list entries 2020-08-30 12:06:19 +02:00
Franzi 77051c0a0e
bundles/nginx: clean up unmanaged nginx vhosts 2020-08-30 11:36:48 +02:00
Franzi f334b93756
nodes/doc.lon1.grafana: introduce node
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-08-30 11:27:15 +02:00
Franzi 626355178a
bundles/apt: make sure popularity-contest is uninstalled 2020-08-30 11:14:31 +02:00
Franzi f22b30e4fa
bundles/cron: purge unwanted data from /etc/cron.d 2020-08-30 11:14:10 +02:00
Franzi c8ae22da8a
I HATE GOOGLE (v3)
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-08-30 10:44:13 +02:00
Franzi 4708ae720b
nodes/htz.ex42-1048908: adjust number of worker processes 2020-08-30 10:34:16 +02:00
Franzi 664832313d
nodes/*: add cpu and ram info to nodefiles 2020-08-30 10:32:54 +02:00
Franzi b24253a64b
bundles/nginx: determine worker processes by cpu count by default 2020-08-30 10:32:29 +02:00
Franzi 768bad7b77
nodes/*: add README for subfolders
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-08-29 21:36:24 +02:00
Franzi 2e951c5814
Jenkinsfile: default branch is main, not master
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-08-29 21:32:22 +02:00
Franzi 049b77e702
bundles/postgresql: use zfs if possible
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-08-29 21:30:12 +02:00
Franzi 68a4359a8c
nodes/doc.lon1.icinga2: use zfs for data volume
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-08-29 21:11:19 +02:00
Franzi 4934eb46fb
bundles/zfs: import bundle from work repository 2020-08-29 21:10:59 +02:00
Franzi b690ae25b0
bundles/apt: use node.os and node.os_version to determine settings 2020-08-29 21:10:22 +02:00
Franzi 880184807b
nodes: use node.os and node.os_version correctly 2020-08-29 21:09:42 +02:00
Franzi 1cd5476398
nodes/doc.lon1.icinga2: add node 2020-08-29 19:32:34 +02:00
Franzi 007a617785
bundles/users: rework 2020-08-29 19:21:35 +02:00
Franzi 568c6b55c9
README: default branch is now "main"
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-08-21 21:19:23 +02:00
Franzi 0de62a0afa
bundles/postgresql: add apt packages, create root user
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-08-21 16:21:46 +02:00
Franzi b4122bf3f9
travelynx: add imprint
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-08-21 15:06:04 +02:00
Franzi 4a81c05f6d
I HATE GOOGLE (v2)
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-08-21 14:41:34 +02:00
Franzi 0d8332ec7e
bundles/gitea: auto-configure nginx vhost
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-08-20 15:49:11 +02:00
Franzi 1fb5787807
htz.ex42-1048908: can haz gitea?
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-08-20 15:34:27 +02:00
Franzi 55d6257243
bundles/users: only remove ssh key if we're managing configs 2020-08-20 15:34:05 +02:00
Franzi 7432c52a36
items/download: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-08-20 14:33:49 +02:00
780 changed files with 39103 additions and 1457 deletions

27
.editorconfig Normal file
View file

@ -0,0 +1,27 @@
root = true
[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.yaml]
indent_size = 2
[*.exs]
indent_size = 2
# possibly sql dumps
[*.sql]
indent_size = unset
# bundlewrap encrypted files
[*.vault]
end_of_line = unset
insert_final_newline = unset
[*.json]
insert_final_newline = unset

4
.gitignore vendored
View file

@ -1 +1,3 @@
.secrets.cfg
.secrets.cfg*
__pycache__
*.swp

47
Jenkinsfile vendored
View file

@ -5,50 +5,59 @@ pipeline {
steps {
sh """
[ -d venv ] && rm -rf venv
virtualenv -p python3 venv
. venv/bin/activate
pip install --upgrade pip
pip install --upgrade pip isort
pip install -r requirements.txt
"""
}
}
stage('bw test') {
stage('tests') {
parallel {
stage('ignore missing vaults') {
stage('syntax checking using editorconfig-checker') {
steps {
sh """
. venv/bin/activate
bw test --ignore-missing-faults
wget -Oec-linux-amd64.tar.gz https://github.com/editorconfig-checker/editorconfig-checker/releases/latest/download/ec-linux-amd64.tar.gz
tar -xzf ec-linux-amd64.tar.gz && rm ec-linux-amd64.tar.gz
bin/ec-linux-amd64 -no-color -exclude '^bin/'
"""
}
}
stage('dummy mode') {
when {
branch 'master'
}
steps {
sh """
. venv/bin/activate
export BW_VAULT_DUMMY_MODE=1
bw test
"""
}
}
stage('determinism') {
stage('config and metadata determinism') {
steps {
sh """
. venv/bin/activate
export BW_VAULT_DUMMY_MODE=1
export BW_PASS_DUMMY_MODE=1
bw test --metadata-determinism 3 --config-determinism 3
"""
}
}
stage('bw test -i') {
steps {
sh """
. venv/bin/activate
bw test --ignore-missing-faults
export BW_VAULT_DUMMY_MODE=1
export BW_PASS_DUMMY_MODE=1
bw test
"""
}
}
}
}
}
post {
always {
sh 'rm -rf venv'
sh """
rm -rf venv
rm -rf bin
"""
}
}
}

58
PORT_MAP.md Normal file
View file

@ -0,0 +1,58 @@
# Port Mapping Table
All the ports which are used by bundles. Collected here to be able to
easily find available ports for other bundles.
## TCP
Rule of thumb: keep ports below 10000 free for stuff that reserves ports.
| Port | bundle | usage |
| ----------- | -------------------- | ----- |
| 22 | openssh | sshd |
| 25 | postfix | postfix postscreen |
| 53 | powerdns | dns server |
| 80 | nginx | http |
| 113 | oidentd | oidentd |
| 143 | dovecot | dovecot imap |
| 443 | nginx | https |
| 587 | postfix | postfix submission |
| 993 | dovecot | dovecot imap |
| 2525 | postfix | postfix postscreen |
| 4190 | dovecot | dovecot managesieve |
| 5232 | radicale | radicale |
| 5432 | postgresql | postgres |
| 5900 | vmhost | qemu-system-x86 |
| 6379 | redis | redis |
| 6667 | | bitlbee |
| 8086 | influxdb2 | influx |
| 11332-11334 | rspamd | rspamd |
| 20000 | mx-puppet-discord | Bridge |
| 20010 | mautrix-telegram | Bridge |
| 20020 | mautrix-whatsapp | Bridge |
| 20030 | matrix-dimension | Matrix Integrations Manager|
| 20070 | matrix-synapse | sliding-sync |
| 20080 | matrix-synapse | client, federation |
| 20081 | matrix-synapse | prometheus metrics |
| 20090 | matrix-media-repo | media_repo |
| 20090 | matrix-media-repo | prometheus metrics |
| 21010 | grafana | grafana |
| 22000 | forgejo | forgejo |
| 22010 | jenkins-ci | Jenkins CI |
| 22020 | travelynx | Travelynx Web |
| 22030 | octoprint | OctoPrint Web Interface |
| 22040 | miniflux | Miniflux Web Interface |
| 22050 | radicale | radicale carddav and caldav server |
| 22060 | pretalx | gunicorn |
| 22070 | paperless-ng | gunicorn |
| 22080 | netbox | gunicorn |
| 22090 | jugendhackt_tools | gunicorn |
| 22100 | powerdnsadmin | gunicorn |
| 22110 | icinga2-statuspage | gunicorn |
| 22999 | nginx | stub_status |
| 22100 | ntfy | http |
## UDP
| Port | bundle | usage |
| ----------- | -------------------- | ----- |
| 53 | powerdns | dns server |
| 15000-15100 | voc-loudness-monitor | ffmpeg processes outputting rtp streams |

View file

@ -6,4 +6,17 @@ May also include some dummy nodes, for example for deploying websites
onto shared webhosting.
`bw test` runs according to Jenkinsfile after every commit.
[![Build Status](https://jenkins.kunsmann.eu/buildStatus/icon?job=bundlewrap%2Fmaster)](https://jenkins.kunsmann.eu/job/bundlewrap/job/master/)
[![Build Status](https://jenkins.franzi.business/buildStatus/icon?job=kunsi%2Fbundlewrap%2Fmain)](https://jenkins.franzi.business/job/kunsi/job/bundlewrap/job/main/)
## automatix
Ensure you set `bundlewrap: true` in your `~/.automatix.cfg.yaml`.
## system naming
All systems should be named after their location and use.
For example, influxdb hosted at hetzner cloud will be `htz-cloud.influxdb`.
The only exception to this are name servers, they are named after [demons
in fiction](https://en.wikipedia.org/wiki/List_of_demons_in_fiction).

View file

@ -0,0 +1,45 @@
name: Upgrade to debian bullseye
systems:
node: foonode
always:
- has_zfs=python: NODES.node.has_bundle('zfs')
pipeline:
- manual: "set icinga2 downtime: https://icinga.franzi.business/monitoring/host/schedule-downtime?host={SYSTEMS.node}"
# apply first so we only see the upgrade changes later
- local: bw apply {SYSTEMS.node}
- manual: update debian version in node groups
- local: "bw apply -o bundle:apt -s symlink:/usr/bin/python pkg_apt: -- {SYSTEMS.node}"
# double time!
- remote@node: DEBIAN_FRONTEND=noninteractive apt-get -y -q -o Dpkg::Options::=--force-confold dist-upgrade
- remote@node: DEBIAN_FRONTEND=noninteractive apt-get -y -q -o Dpkg::Options::=--force-confold dist-upgrade
# reboot into bullseye
- remote@node: systemctl reboot
- local: |
exit=1
while [[ $exit -ne 0 ]];
do
sleep 1
ssh {SYSTEMS.node} true
exit=$?
done
# fix zfs and reboot again
- has_zfs?remote@node: zpool import tank -f
- has_zfs?remote@node: zpool upgrade -a
- has_zfs?remote@node: systemctl reboot
- has_zfs?local: |
exit=1
while [[ $exit -ne 0 ]];
do
sleep 1
ssh {SYSTEMS.node} true
exit=$?
done
# final apply
- local: bw apply {SYSTEMS.node}

View file

@ -1,3 +0,0 @@
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "7";

View file

@ -1,27 +0,0 @@
Unattended-Upgrade::Origins-Pattern {
"origin=Debian,codename=${node.metadata['os_release']},label=Debian";
"origin=Debian,codename=${node.metadata['os_release']},label=Debian-Security";
// External packages
% for item in sorted(data.get('origins', set())):
"${item}";
% endfor
};
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::MinimalSteps "false";
% if data.get('mail', None):
Unattended-Upgrade::Mail "${data['mail']}";
Unattended-Upgrade::MailOnlyOnError "false";
% endif
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
% if data.get('reboot', True):
Unattended-Upgrade::Automatic-Reboot "true";
% else:
Unattended-Upgrade::Automatic-Reboot "false";
% endif

View file

@ -0,0 +1,38 @@
#!/bin/bash
statusfile="/var/tmp/unattended_upgrades.status"
if ! [[ -f "$statusfile" ]]
then
echo "Status file not found"
exit 3
fi
mtime=$(stat -c %Y $statusfile)
now=$(date +%s)
if (( $now - $mtime > 60*60*24*8 ))
then
echo "Status file is older than 8 days!"
exit 3
fi
exitcode=$(cat $statusfile)
case "$exitcode" in
abort_ssh)
echo "Upgrades skipped due to active SSH login"
exit 1
;;
0)
if [[ -f /var/run/reboot-required ]]
then
echo "OK, but updates require a reboot"
exit 1
else
echo "OK"
exit 0
fi
;;
*)
echo "Last exitcode was $exitcode"
exit 2
;;
esac

View file

@ -0,0 +1,9 @@
% for uri in sorted(uris):
Types: ${' '.join(sorted(data.get('types', {'deb'})))}
URIs: ${uri}
Suites: ${os_release}
Components: ${' '.join(sorted(data.get('components', {'main'})))}
Architectures: ${' '.join(sorted(data.get('architectures', {'amd64'})))}
Signed-By: /etc/apt/trusted.gpg.d/${name}.list.asc
% endfor

View file

@ -0,0 +1,47 @@
#!/bin/bash
set -xeuo pipefail
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get -y -q -o Dpkg::Options::=--force-confold dist-upgrade
DEBIAN_FRONTEND=noninteractive apt-get -y -q autoclean
DEBIAN_FRONTEND=noninteractive apt-get -y -q autoremove
% if clean_old_kernels:
existing=$(dpkg --get-selections | grep -E '^linux-(image|headers)-[0-9]' || true)
if [[ -z "$existing" ]]
then
echo "ERROR: No installed kernels found! Aborting!" >&2
exit 1
fi
current=$(uname -r | sed -r 's/-[a-zA-Z]+$//')
latest=$(echo "$existing" | sort --version-sort -t- -k 3,4 | tail -n 1 | sed -r 's/[^0-9]+([0-9]\.[^-]+-[0-9]+).*/\1/')
todelete=$(echo "$existing" | grep -v -E "($current|$latest)" | awk '{ print $1 }' || true)
if [[ -n "$todelete" ]]
then
DEBIAN_FRONTEND=noninteractive apt-get -qy purge $todelete
fi
% endif
% for command in sorted(additional_update_commands):
${command}
% endfor
% for affected, restarts in sorted(restart_triggers.items()):
up_since=$(systemctl show "${affected}" | sed -n 's/^ActiveEnterTimestamp=//p' || echo 0)
up_since_ts=$(date -d "$up_since" +%s || echo 0)
now=$(date +%s)
if [ $((now - up_since_ts)) -lt 3600 ]
then
% for restart in sorted(restarts):
systemctl restart "${restart}" || true
% endfor
fi
% endfor

View file

@ -0,0 +1,15 @@
#!/bin/sh
# /etc/kernel/postinst.d/unattended-upgrades
case "$DPKG_MAINTSCRIPT_PACKAGE::$DPKG_MAINTSCRIPT_NAME" in
linux-image-extra*::postrm)
exit 0;;
esac
if [ -d /var/run ]; then
touch /var/run/reboot-required
if ! grep -q "^$DPKG_MAINTSCRIPT_PACKAGE$" /var/run/reboot-required.pkgs 2> /dev/null ; then
echo "$DPKG_MAINTSCRIPT_PACKAGE" >> /var/run/reboot-required.pkgs
fi
fi

View file

@ -0,0 +1,3 @@
deb http://deb.debian.org/debian/ bookworm main non-free contrib non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main contrib non-free
deb http://deb.debian.org/debian/ bookworm-updates main contrib non-free

View file

@ -0,0 +1,3 @@
deb http://deb.debian.org/debian/ bullseye main non-free contrib
deb http://security.debian.org/debian-security bullseye-security main contrib non-free
deb http://deb.debian.org/debian/ bullseye-updates main contrib non-free

View file

@ -0,0 +1,3 @@
deb http://deb.debian.org/debian/ buster main non-free contrib
deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb http://deb.debian.org/debian/ buster-updates main contrib non-free

View file

@ -0,0 +1 @@
deb http://deb.debian.org/debian/ unstable main non-free contrib

View file

@ -0,0 +1 @@
deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi

View file

@ -0,0 +1,52 @@
#!/bin/bash
# With systemd, we can force logging to the journal. This is better than
# spamming the world with cron mails. You can then view these logs using
# "journalctl -rat upgrade-and-reboot".
if which logger >/dev/null 2>&1
then
# Dump stdout and stderr to logger, which will then put everything
# into the journal.
exec 1> >(logger -t upgrade-and-reboot -p user.info)
exec 2> >(logger -t upgrade-and-reboot -p user.error)
fi
. /etc/upgrade-and-reboot.conf
echo "Starting upgrade-and-reboot for node $nodename ..."
statusfile="/var/tmp/unattended_upgrades.status"
# Workaround, because /var/tmp is usually 1777
[[ "$UID" == 0 ]] && chown root:root "$statusfile"
logins=$(ps h -C sshd -o euser | awk '$1 != "root" && $1 != "sshd" && $1 != "sshmon" && $1 != "nobody"')
if [[ -n "$logins" ]]
then
echo "Will abort now, there are active SSH logins: $logins"
echo "abort_ssh" > "$statusfile"
exit 1
fi
softlockdir=/var/lib/bundlewrap/soft-$nodename
mkdir -p "$softlockdir"
printf '{"comment": "UPDATE", "date": %s, "expiry": %s, "id": "UNATTENDED", "items": ["*"], "user": "root@localhost"}\n' \
$(date +%s) \
$(date -d 'now + 30 mins' +%s) \
>"$softlockdir"/UNATTENDED
trap 'rm -f "$softlockdir"/UNATTENDED' EXIT
do-unattended-upgrades
ret=$?
echo "$ret" > "$statusfile"
if (( $ret != 0 ))
then
exit 1
fi
if [[ -f /var/run/reboot-required ]] && [[ "$auto_reboot_enabled" == "True" ]]
then
systemctl reboot
fi
echo "upgrade-and-reboot for node $nodename is DONE"

View file

@ -0,0 +1,2 @@
nodename="${node.name}"
auto_reboot_enabled="${node.metadata.get('apt/unattended-upgrades/reboot_enabled', True)}"

View file

@ -1,3 +1,23 @@
from bundlewrap.exceptions import BundleError
supported_os = {
'debian': {
10: 'buster',
11: 'bullseye',
12: 'bookworm',
99: 'unstable',
},
'raspbian': {
10: 'buster',
},
}
try:
supported_os[node.os][node.os_version[0]]
except (KeyError, IndexError):
raise BundleError(f'{node.name}: OS {node.os} {node.os_version} is not supported by bundle:apt')
actions = {
'apt_update': {
'command': 'apt-get update',
@ -10,39 +30,76 @@ actions = {
}
files = {
'/etc/apt/apt.conf.d/50unattended-upgrades': {
'content_type': 'mako',
'source': 'apt.conf-unattended-upgrades',
'context': {'data': node.metadata.get('apt', {}).get('unattended-upgrades', {})}
},
'/etc/apt/apt.conf.d/20auto-upgrades': {
'source': 'apt.conf-auto-upgrades',
'/etc/apt/sources.list': {
'source': 'sources.list-{}-{}'.format(node.os, supported_os[node.os][node.os_version[0]]),
'triggers': {
'action:apt_update',
},
},
'/etc/cloud': {
'delete': True,
},
'/etc/kernel/postinst.d/unattended-upgrades': {
'source': 'kernel-postinst.d',
'mode': '0755',
},
'/etc/netplan': {
'delete': True,
},
'/etc/upgrade-and-reboot.conf': {
'content_type': 'mako',
},
'/usr/local/sbin/upgrade-and-reboot': {
'mode': '0700',
},
'/usr/local/sbin/do-unattended-upgrades': {
'content_type': 'mako',
'mode': '0700',
'context': {
'additional_update_commands': node.metadata.get('apt/additional_update_commands', set()),
'clean_old_kernels': node.metadata.get('apt/clean_old_kernels', True),
'restart_triggers': node.metadata.get('apt/restart_triggers', {}),
}
},
'/usr/local/share/icinga/plugins/check_unattended_upgrades': {
'mode': '0755',
},
'/var/lib/cloud': {
'delete': True,
},
}
directories = {
'/etc/apt/sources.list.d': {},
'/etc/apt/sources.list.d': {
'purge': True,
'triggers': {
'action:apt_update',
},
},
}
svc_systemd = {
'apt-daily.timer': {
'running': False,
'enabled': False,
},
'apt-daily-upgrade.timer': {
'running': False,
'enabled': False,
},
}
pkg_apt = {
'apt-transport-https': {},
'unattended-upgrades': {},
'arping': {},
'at': {},
'build-essential': {},
'bzip2': {},
'curl': {},
'diffutils': {},
'dnsutils': {},
'git': {},
'grep': {},
'gzip': {},
'htop': {},
@ -52,20 +109,34 @@ pkg_apt = {
'lsof': {},
'mailutils': {},
'manpages': {},
'molly-guard': {},
'moreutils': {},
'mount': {},
'mtr': {},
'ncdu': {},
'netcat': {},
'ncurses-term': {},
'netcat-openbsd': {},
'nmap': {},
'python3': {},
'python3-dev': {},
'python3-setuptools': {
'needed_by': {
'pkg_pip:',
},
},
'python3-pip': {
'needed_by': {
'pkg_pip:',
},
},
'python3-virtualenv': {},
'rsync': {},
'tar': {},
'tcpdump': {},
'telnet': {},
'tmux': {},
'tree': {},
'unzip': {},
'vim': {},
'wget': {},
'whois': {},
'zip': {},
@ -73,25 +144,72 @@ pkg_apt = {
'cloud-init': {
'installed': False,
},
'molly-guard': {
'installed': False,
},
'netplan.io': {
'installed': False,
},
'popularity-contest': {
'installed': False,
},
'python3-packaging': {
'installed': False,
},
'unattended-upgrades': {
'installed': False,
},
}
for name, data in node.metadata.get('apt', {}).get('repos', {}).items():
files['/etc/apt/sources.list.d/{}.list'.format(name)] = {
'content_type': 'mako',
'content': "\n".join(data['items']),
'triggers': {
'action:apt_update',
if node.os_version[0] >= 11:
symlinks = {
'/usr/bin/python': {
'target': '/usr/bin/python3',
'needs': {
'pkg_apt:python3',
},
},
}
if data.get('install_gpg_key', True):
files['/etc/apt/sources.list.d/{}.list'.format(name)]['needs'] = {
'file:/etc/apt/trusted.gpg.d/{}.list.asc'.format(name),
for name, data in node.metadata.get('apt/repos', {}).items():
if 'items' in data:
files['/etc/apt/sources.list.d/{}.list'.format(name)] = {
'content_type': 'mako',
'content': ("\n".join(sorted(data['items']))).format(
os=node.os,
os_release=supported_os[node.os][node.os_version[0]],
),
'triggers': {
'action:apt_update',
},
}
elif 'uris' in data:
uris = {
x.format(
os=node.os,
os_release=supported_os[node.os][node.os_version[0]],
) for x in data['uris']
}
files['/etc/apt/sources.list.d/{}.sources'.format(name)] = {
'source': 'deb822-sources',
'content_type': 'mako',
'context': {
'data': data,
'name': name,
'os_release': supported_os[node.os][node.os_version[0]],
'uris': uris,
},
'triggers': {
'action:apt_update',
},
}
if data.get('install_gpg_key', True):
if 'items' in data:
files['/etc/apt/sources.list.d/{}.list'.format(name)]['needs'] = {
'file:/etc/apt/trusted.gpg.d/{}.list.asc'.format(name),
}
files['/etc/apt/trusted.gpg.d/{}.list.asc'.format(name)] = {
'source': 'gpg-keys/{}.asc'.format(name),
@ -100,6 +218,5 @@ for name, data in node.metadata.get('apt', {}).get('repos', {}).items():
},
}
if node.metadata.get('apt', {}).get('packages', {}):
for package, options in node.metadata['apt']['packages'].items():
pkg_apt[package] = options
for package, options in node.metadata.get('apt/packages', {}).items():
pkg_apt[package] = options

42
bundles/apt/metadata.py Normal file
View file

@ -0,0 +1,42 @@
defaults = {
'apt': {
'unattended-upgrades': {
'day': 5,
'hour': 21,
},
},
'icinga2_api': {
'apt': {
'services': {
'UNATTENDED UPGRADES': {
'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_unattended_upgrades',
},
},
},
},
}
@metadata_reactor.provides(
'cron/jobs/upgrade-and-reboot'
)
def patchday(metadata):
day = metadata.get('apt/unattended-upgrades/day')
hour = metadata.get('apt/unattended-upgrades/hour')
spread = metadata.get('apt/unattended-upgrades/spread_in_group', None)
if spread is not None:
spread_nodes = sorted(repo.nodes_in_group(spread))
day += spread_nodes.index(node)
return {
'cron': {
'jobs': {
'upgrade-and-reboot': '{minute} {hour} * * {day} root /usr/local/sbin/upgrade-and-reboot'.format(
minute=node.magic_number % 30,
hour=hour,
day=day%7,
),
},
},
}

View file

@ -0,0 +1,5 @@
context.exec = [
{ path = "pactl" args = "load-module module-native-protocol-tcp" }
{ path = "pactl" args = "load-module module-zeroconf-discover" }
{ path = "pactl" args = "load-module module-zeroconf-publish" }
]

View file

@ -0,0 +1,3 @@
[Autologin]
User=${user}
Session=i3.desktop

View file

@ -0,0 +1,110 @@
from os import listdir
from os.path import join
actions = {
'fc-cache_flush': {
'command': 'fc-cache -f',
'triggered': True,
'needs': {
'pkg_pacman:fontconfig',
},
},
'i3pystatus_create_virtualenv': {
'command': '/usr/bin/python3 -m virtualenv -p python3 /opt/i3pystatus/venv/',
'unless': 'test -d /opt/i3pystatus/venv/',
'needs': {
'directory:/opt/i3pystatus/src',
'pkg_pacman:python-virtualenv',
},
},
'i3pystatus_install': {
'command': ' && '.join([
'cd /opt/i3pystatus/src',
'/opt/i3pystatus/venv/bin/pip install --upgrade pip colour netifaces basiciw pytz',
'/opt/i3pystatus/venv/bin/pip install --upgrade -e .',
]),
'needs': {
'action:i3pystatus_create_virtualenv',
},
'triggered': True,
},
}
directories = {
'/etc/sddm.conf.d': {
'purge': True,
},
'/opt/i3pystatus/src': {},
'/usr/share/fonts/bundlewrap': {
'purge': True,
'triggers': {
'action:fc-cache_flush',
},
},
}
svc_systemd = {
'avahi-daemon': {
'needs': {
'pkg_pacman:avahi',
},
},
'sddm': {
'needs': {
'pkg_pacman:sddm',
},
},
}
git_deploy = {
'/opt/i3pystatus/src': {
'repo': 'https://github.com/enkore/i3pystatus.git',
'rev': 'current',
'triggers': {
'action:i3pystatus_install',
},
},
}
files['/etc/pipewire/pipewire-pulse.conf.d/50-network.conf'] = {}
for filename in listdir(join(repo.path, 'data', 'arch-with-gui', 'files', 'fonts')):
if filename.startswith('.'):
continue
if filename.endswith('.vault'):
# XXX remove this once we have a new bundlewrap release
# https://github.com/bundlewrap/bundlewrap/commit/2429b153dd1ca6781cf3812e2dec9c2b646a546b
from os import environ
if environ.get('BW_VAULT_DUMMY_MODE', '0') == '1':
continue
font_name = filename[:-6]
attrs = {
'content': repo.vault.decrypt_file_as_base64(join('arch-with-gui', 'files', 'fonts', filename)),
'content_type': 'base64',
}
else:
font_name = filename
attrs = {
'source': join('fonts', filename),
'content_type': 'binary',
}
files[f'/usr/share/fonts/bundlewrap/{font_name}'] = {
'triggers': {
'action:fc-cache_flush',
},
**attrs,
}
if node.metadata.get('arch-with-gui/autologin_as', None):
files['/etc/sddm.conf.d/autologin.conf'] = {
'context': {
'user': node.metadata.get('arch-with-gui/autologin_as'),
},
'content_type': 'mako',
'before': {
'svc_systemd:sddm',
},
}

View file

@ -0,0 +1,124 @@
assert node.os == 'arch'
defaults = {
'backups': {
'paths': {
'/etc/netctl',
},
},
'icinga_options': {
'exclude_from_monitoring': True,
},
'nftables': {
'input': {
'50-avahi': {
'udp dport 5353 accept',
'udp sport 5353 accept',
},
},
},
'pacman': {
'packages': {
# fonts
'fontconfig': {},
'ttf-dejavu': {
'needed_by': {
'pkg_pacman:sddm',
},
},
# login management
'sddm': {},
# networking
'avahi': {},
'netctl': {},
'rfkill': {},
'wpa_supplicant': {},
'wpa_actiond': {},
# shell and other gui stuff
'dunst': {},
'fish': {},
'kitty': {},
'libnotify': {}, # provides notify-send
'light': {},
'redshift': {},
'rofi': {},
# sound
'calf': {},
'easyeffects': {},
'lsp-plugins': {},
'pavucontrol': {},
'pipewire': {},
'pipewire-jack': {},
'pipewire-pulse': {},
'pipewire-zeroconf': {},
'qpwgraph': {},
# window management
'i3-wm': {},
'i3lock': {},
'xss-lock': {},
# i3pystatus dependencies
'iw': {},
'wireless_tools': {},
# Xorg
'xf86-input-libinput': {},
'xf86-input-wacom': {},
'xorg-server': {},
'xorg-setxkbmap': {},
'xorg-xev': {},
'xorg-xinput': {},
'xorg-xset': {},
# all them apps
'browserpass': {},
'browserpass-firefox': {},
'ffmpeg': {},
'firefox': {},
'gimp': {},
'imagemagick': {},
'inkscape': {},
'kdenlive': {},
'maim': {},
'mosh': {},
'mosquitto': {},
'mpv': {},
'pass': {},
'pass-otp': {},
'pdftk': {},
'pwgen': {},
'qpdfview': {},
'samba': {},
'shotcut': {},
'sipcalc': {},
'the_silver_searcher': {},
'tlp': {},
'virt-manager': {},
'xclip': {},
'xdotool': {}, # needed for maim window selection
},
},
}
@metadata_reactor.provides(
'backups/paths',
)
def backup_every_user_home(metadata):
paths = set()
for user, config in metadata.get('users', {}).items():
if config.get('delete', False):
continue
paths.add(config.get('home', f'/home/{user}'))
return {
'backups': {
'paths': paths,
},
}

View file

@ -0,0 +1,28 @@
#!/bin/bash
statusfile="/var/tmp/backup.monitoring"
if [[ ! -r "$statusfile" ]]
then
echo "cannot read $statusfile"
exit 3
fi
. "$statusfile"
if [[ -z "$msg" ]] || [[ -z "$status" ]] || [[ -z "$timestamp" ]]
then
echo "status file is corrupt, cannot read status"
exit 3
fi
two_days_ago=$(($(date +%s) - 86400*2))
if [[ $timestamp -lt $two_days_ago ]]
then
echo "last saved status is older than two days"
exit 2
fi
echo "$msg"
exit "$status"

View file

@ -0,0 +1,121 @@
#!/bin/bash
statusfile="/var/tmp/backup.monitoring"
logdir="/var/log/backup-client"
lock="/tmp/backup-client-is-running"
ssh_login="${username}@${server}"
ssh_opts="-o IdentityFile=/etc/backup.priv -o StrictHostKeyChecking=accept-new -p ${port}"
nodename="${node.name}"
<%text>
try="${1:-<unknown>}"
[[ -n "$DEBUG" ]] && set -x
do_backup() {
echo "==> starting backup for '$1'"
# Compress level 1 is a good compromise between speed and cpu usage.
rsync --compress-level=1 -aAP --numeric-ids --delete --relative \
--rsync-path="/usr/bin/rsync --fake-super" \
-e "ssh $ssh_opts" \
"$1" "$ssh_login":backups/
# Exit code 24 means some files have vanished during rsync.
# I don't know why, but this is very common, apparently?
exitcode=$?
echo "==> backup for '$1' exited $exitcode"
if [[ $exitcode != 0 ]] && [[ $exitcode != 24 ]]
then
rsync_errors+=" $1 ($exitcode)"
fi
}
on_exit() {
rmdir "$lock"
echo "*** END BACKUP RUN $(date '+%F %T %z') ***"
}
prepare_and_cleanup_logdir() {
# rsync logs tend to get very large. That's why we pipe them through
# gzip when writing. Because we're running multiple tries, we cannot
# rely on logrotate to rotate the logs, we have to do it ourselves.
# Of course that means we have to clean up after ourselves, too.
mkdir -p "$logdir"
find "$logdir" -type f -mtime +14 -name "*.log" -delete
find "$logdir" -type f -mtime +14 -name "*.gz" -delete
}
save_result_for_monitoring() {
code=$1
msg=$2
printf "status=%q\n" "$code" > "$statusfile"
printf "msg=%q\n" "$msg" >> "$statusfile"
printf "timestamp=%q\n" "$(date +%s)" >> "$statusfile"
}
if ! mkdir "$lock" >/dev/null 2>&1
then
save_result_for_monitoring 2 "could not get lock"
exit 1
fi
trap "on_exit" EXIT
# redirect stdout and stderr to logfile
prepare_and_cleanup_logdir
logfile="$logdir/backup--$(date '+%F--%H-%M-%S')--$$.log.gz"
echo "All log output will go to $logfile" | logger -it backup-client
exec > >(gzip >"$logfile")
exec 2>&1
# this is where the real work starts
ts_begin=$(date +%s)
echo "*** BEGIN BACKUP RUN $(date '+%F %T %z') ***"
echo "This is attempt $try"
echo "using ssh options [$ssh_opts]"
echo "using ssh login [$ssh_login]"
if ! [[ -f /etc/backup.priv ]]
then
save_result_for_monitoring 2 "/etc/backup.priv does not exist"
exit 100
fi
for i in /etc/backup-pre-hooks.d/*
do
[[ -x "$i" ]] || continue
echo "Running pre-hook '$i'"
if ! $i
then
save_result_for_monitoring 2 "pre-hook '$i' failed to run"
exit 1
fi
done
rsync_errors=""
</%text>
% for path in sorted(paths):
do_backup "${path}"
% endfor
<%text>
if [[ -n "$rsync_errors" ]]
then
save_result_for_monitoring 2 "rsync failed:$rsync_errors"
exit 1
fi
ssh $ssh_opts $ssh_login "sudo /usr/local/bin/rotate-single-backup-client $nodename" </dev/null
ssh_error=$?
if [[ $ssh_error -ne 0 ]]
then
save_result_for_monitoring 2 "rotating backups failed with status code $ssh_error"
exit 1
fi
ts_end=$(date +%s)
echo "Success"
save_result_for_monitoring 0 "Backup finished at $(date '+%F %T %z') (took $((ts_end - ts_begin)) seconds)"
</%text>

View file

@ -0,0 +1,22 @@
#!/bin/bash
# Try generating a backup multiple times. If one attempt succeeds, we're
# done. If not, there will be logs for every attempt, plus monitoring
# will read the result of the last backup.
for try in {1..3}
do
generate-backup "$try"
exitcode=$?
if [[ $exitcode -eq 100 ]]
then
# fatal error, cannot recover
exit 1
elif [[ $exitcode -eq 0 ]]
then
# successful backup
exit 0
else
sleep 60
fi
done

View file

@ -0,0 +1,74 @@
from os.path import join
if node.has_bundle('zfs'):
wanted_paths = node.metadata.get('backups/paths', set())
snapshot_paths = node.metadata.get('zfs/filesystems_with_backup_snapshots', {})
backup_paths = set()
for path in wanted_paths:
path_found = False
for zfs_paths in snapshot_paths.values():
if path in zfs_paths:
backup_paths.add(f'/mnt/backup-snapshot{path}')
path_found = True
if not path_found:
backup_paths.add(path)
else:
backup_paths = node.metadata.get('backups/paths', set())
if node.metadata.get('backups/exclude_from_backups', False):
# make sure nobody tries to do something funny
for file in {
'/etc/backup.priv',
'/usr/local/bin/generate-backup',
'/usr/local/bin/generate-backup-with-retries',
'/var/tmp/backup.monitoring', # status file
}:
files[file] = {
'delete': True,
}
else:
backup_target = repo.get_node(node.metadata.get('backup-client/target'))
files['/etc/backup.priv'] = {
'content': repo.libs.ssh.generate_ed25519_private_key(
node.metadata.get('backup-client/user-name'),
backup_target,
),
'mode': '0400',
}
files['/usr/local/bin/generate-backup'] = {
'content_type': 'mako',
'context': {
'username': node.metadata.get('backup-client/user-name'),
'server': backup_target.metadata.get('backup-server/my_hostname'),
'port': backup_target.metadata.get('backup-server/my_ssh_port'),
'paths': backup_paths,
},
'mode': '0700',
}
files['/usr/local/bin/generate-backup-with-retries'] = {
'mode': '0700',
}
files['/usr/local/share/icinga/plugins/check_backup_last_run'] = {
'mode': '0755',
}
files['/etc/logrotate.d/backup-client'] = {
'delete': True,
}
directories['/etc/backup-pre-hooks.d'] = {
'purge': True,
}
for hname, hcontent in node.metadata.get('backup-client/pre-hooks', {}).items():
files[f'/etc/backup-pre-hooks.d/50-{hname}'] = {
'content': '#!/bin/sh\n\n' + hcontent,
'mode': '0700',
}

View file

@ -0,0 +1,39 @@
from hashlib import md5
defaults = {
'backup-client': {
# unix user names cannot be longer than 32 characters.
# bundlewrap raises an error if the name is longer than 30 chars.
'user-name': 'c-' + md5(node.name.encode('UTF-8')).hexdigest()[:28],
},
}
@metadata_reactor.provides(
'cron/jobs/backup',
'icinga2_api/backup-client/services',
)
def cron(metadata):
if metadata.get('backups/exclude_from_backups', False):
return {}
return {
'cron': {
'jobs': {
# spread backups between 00:00 and 04:59 UTC
'backup': '{} {} * * * root /usr/local/bin/generate-backup-with-retries'.format(
(node.magic_number % 60),
(node.magic_number % 2),
),
},
},
'icinga2_api': {
'backup-client': {
'services': {
'BACKUP LAST RUN': {
'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_backup_last_run',
},
},
},
},
}

View file

@ -0,0 +1,57 @@
#!/usr/bin/env python3
from datetime import datetime
from json import load
from subprocess import check_output
from sys import argv, exit
from time import time
NODE = argv[1]
ONE_BACKUP_EVERY_HOURS = int(argv[2])
NOW = int(time())
HOUR_SECONDS = 60 * 60
snaps = set()
try:
with open(f'/etc/backup-server/config.json', 'r') as f:
server_settings = load(f)
# get all existing snapshots for NODE
for line in check_output('LC_ALL=C zfs list -H -t snapshot -o name', shell=True).splitlines():
line = line.decode('UTF-8')
if line.startswith('{}/{}@'.format(server_settings['zfs-base'], NODE)):
_, snapname = line.split('@', 1)
if 'zfs-auto-snap' in snapname:
# migration from auto-snapshots, ignore
continue
ts, bucket = snapname.split('-', 1)
snaps.add(int(ts))
if not snaps:
print('No backups found!')
exit(2)
last_snap = sorted(snaps)[-1]
delta = NOW - last_snap
print('Last backup was on {} UTC'.format(
datetime.fromtimestamp(last_snap).strftime('%Y-%m-%d %H:%M:%S'),
))
# One day without backups is still okay. There may be fluctuations
# because of transfer speed, amount of data, changes in backup
# schedule etc.
if delta > ((HOUR_SECONDS * (ONE_BACKUP_EVERY_HOURS + 1)) + (HOUR_SECONDS*24)):
exit(2)
elif delta > (HOUR_SECONDS * (ONE_BACKUP_EVERY_HOURS + 1)):
exit(1)
else:
exit(0)
except Exception as e:
print(repr(e))
exit(3)

View file

@ -0,0 +1,112 @@
#!/usr/bin/env python3
from json import load
from subprocess import check_call, check_output
from sys import argv
from time import time
NODE = argv[1]
NOW = int(time())
DAY_SECONDS = 60 * 60 * 24
INTERVALS = {
'daily': DAY_SECONDS,
'weekly': 7 * DAY_SECONDS,
'monthly': 30 * DAY_SECONDS,
}
buckets = {}
def syslog(msg):
check_output(['logger', '-t', f'backup-{NODE}', msg])
with open(f'/etc/backup-server/config.json', 'r') as f:
server_settings = load(f)
with open(f'/etc/backup-server/clients/{NODE}', 'r') as f:
client_settings = load(f)
# get all existing snapshots for NODE
for line in check_output('LC_ALL=C zfs list -H -t snapshot -o name', shell=True).splitlines():
line = line.decode('UTF-8')
if line.startswith('{}/{}@'.format(server_settings['zfs-base'], NODE)):
_, snapname = line.split('@', 1)
if 'zfs-auto-snap' in snapname:
# migration from auto-snapshots, ignore
continue
ts, bucket = snapname.split('-', 1)
buckets.setdefault(bucket, set()).add(int(ts))
syslog(f'classified {line} as {bucket} from {ts}')
# determine if we need to create a new snapshot
for bucket in INTERVALS.keys():
snapshots = sorted(buckets.get(bucket, set()))
if snapshots:
last_snap = snapshots[-1]
delta = NOW - last_snap
fresh_age = INTERVALS[bucket] - DAY_SECONDS
if delta > fresh_age:
# last snapshot is older than what we want. create a new one.
check_call(
'zfs snapshot {}/{}@{}-{}'.format(
server_settings['zfs-base'],
NODE,
NOW,
bucket,
),
shell=True,
)
buckets.setdefault(bucket, set()).add(NOW)
syslog(f'created new snapshot {NOW}-{bucket}')
else:
syslog(f'existing snapshot {last_snap}-{bucket} is fresh enough')
else:
check_call(
'zfs snapshot {}/{}@{}-{}'.format(
server_settings['zfs-base'],
NODE,
NOW,
bucket,
),
shell=True,
)
buckets.setdefault(bucket, set()).add(NOW)
syslog(f'created initial snapshot {NOW}-{bucket}')
# finally, see if we can delete any snapshots, because they are old enough
for bucket in INTERVALS.keys():
snapshots = sorted(buckets.get(bucket, set()))
if not snapshots:
syslog(f'something is wrong, there are no snapshots for {bucket}')
continue
# see comment in zfs-auto-snapshot about doing +1 here
keep_age = INTERVALS[bucket] * (client_settings[bucket]+1)
# oldest snapshots come first
for ts in snapshots[:-int(client_settings[bucket])]:
delta = NOW - ts
if delta >= keep_age:
check_call(
'zfs destroy {}/{}@{}-{}'.format(
server_settings['zfs-base'],
NODE,
ts,
bucket,
),
shell=True,
)
syslog(f'removing snapshot {ts}-{bucket}, age {delta}, keep_age {keep_age}')
else:
syslog(f'keeping snapshot {ts}-{bucket}, age not reached')
for ts in snapshots[int(client_settings[bucket]):]:
syslog(f'keeping snapshot {ts}-{bucket}, count')

View file

@ -0,0 +1,3 @@
% for username, nodename in sorted(clients.items()):
${username} ALL=NOPASSWD:/usr/local/bin/rotate-single-backup-client ${nodename}
% endfor

View file

@ -0,0 +1,66 @@
repo.libs.tools.require_bundle(node, 'zfs')
from os.path import join
from bundlewrap.metadata import metadata_to_json
dataset = node.metadata.get('backup-server/zfs-base')
files = {
'/etc/backup-server/config.json': {
'content': metadata_to_json({
'zfs-base': dataset,
}),
},
'/usr/local/bin/rotate-single-backup-client': {
'mode': '0755',
},
'/usr/local/share/icinga/plugins/check_backup_for_node': {
'mode': '0755',
},
}
directories['/etc/backup-server/clients'] = {
'purge': True,
}
sudoers = {}
for nodename, config in node.metadata.get('backup-server/clients', {}).items():
sudoers[config['user']] = nodename
users[config['user']] = {
'home': f'/srv/backups/{nodename}',
}
files[f'/etc/backup-server/clients/{nodename}'] = {
'content': metadata_to_json(config['retain']),
}
files[f'/srv/backups/{nodename}/.ssh/authorized_keys'] = {
'content': repo.libs.ssh.generate_ed25519_public_key(
config['user'],
node,
),
'owner': config['user'],
'mode': '0400',
'needs': {
f'zfs_dataset:{dataset}/{nodename}',
},
}
directories[f'/srv/backups/{nodename}/backups'] = {
'owner': config['user'],
'mode': '0700',
'needs': {
f'zfs_dataset:{dataset}/{nodename}',
},
}
files['/etc/sudoers.d/backup-server'] = {
'source': 'sudoers',
'content_type': 'mako',
'context': {
'clients': sudoers,
},
}

View file

@ -0,0 +1,172 @@
defaults = {
'backup-server': {
'my_ssh_port': 22,
},
'openssh': {
'allowed_users': {
# Usernames for backup clients always start with 'c-'
'c-*',
},
},
'zfs': {
# The whole point of doing backups is to keep them for a long
# time, which eliminates the need for this check.
'enable_old_snapshots_check': False,
},
}
@metadata_reactor.provides(
'backup-server/clients',
'backup-server/my_hostname',
)
def get_my_clients(metadata):
my_clients = {}
retain_defaults = {
'daily': 14,
'weekly': 4,
'monthly': 6,
}
for rnode in repo.nodes:
if not rnode.has_bundle('backup-client') or rnode.metadata.get('backups/exclude_from_backups', False):
continue
if node.name != rnode.metadata.get('backup-client/target'):
continue
my_clients[rnode.name] = {
'exclude_from_monitoring': rnode.metadata.get(
'backup-client/exclude_from_monitoring',
rnode.metadata.get(
'icinga_options/exclude_from_monitoring',
False,
),
),
'one_backup_every_hours': rnode.metadata.get('backup-client/one_backup_every_hours', 24),
'user': rnode.metadata.get('backup-client/user-name'),
'retain': {
'daily': rnode.metadata.get('backups/retain/daily', retain_defaults['daily']),
'weekly': rnode.metadata.get('backups/retain/weekly', retain_defaults['weekly']),
'monthly': rnode.metadata.get('backups/retain/monthly', retain_defaults['monthly']),
},
}
return {
'backup-server': {
'clients': my_clients,
'my_hostname': metadata.get('hostname'),
},
}
@metadata_reactor.provides(
'backup-server/zfs-base',
'dm-crypt/encrypted-devices',
'zfs/pools',
)
def zfs_pool(metadata):
if not metadata.get('backup-server/encrypted-devices', {}):
return {}
crypt_devices = {}
pool_devices = set()
unlock_actions = set()
for number, (device, passphrase) in enumerate(sorted(metadata.get('backup-server/encrypted-devices', {}).items())):
crypt_devices[device] = {
'dm-name': f'backup{number}',
'passphrase': passphrase,
}
pool_devices.add(f'/dev/mapper/backup{number}')
unlock_actions.add(f'action:dm-crypt_open_backup{number}')
pool_opts = {
'devices': pool_devices,
}
if len(pool_devices) > 2:
pool_opts['type'] = 'raidz'
elif len(pool_devices) > 1:
pool_opts['type'] = 'mirror'
return {
'backup-server': {
'zfs-base': 'backups',
},
'dm-crypt': {
'encrypted-devices': crypt_devices,
},
'zfs': {
'pools': {
'backups': {
'when_creating': {
'config': [
pool_opts,
],
},
'needs': unlock_actions,
# That's a bit hacky. We do it this way to auto-import
# the pool after decrypting the devices. Otherwise
# the pool wouldn't exist, which leads to bundlewrap
# trying to re-create the pool.
# Also, -N to not auto-mount anything.
'unless': 'zpool import -N backups',
},
},
}
}
@metadata_reactor.provides(
'zfs/datasets',
'zfs/snapshots/snapshot_never',
)
def zfs_datasets_and_snapshots(metadata):
zfs_datasets = {}
for client in metadata.get('backup-server/clients', {}).keys():
dataset = '{}/{}'.format(metadata.get('backup-server/zfs-base'), client)
zfs_datasets[dataset] = {
'mountpoint': '/srv/backups/{}'.format(client),
'compression': 'on',
}
return {
'zfs': {
'datasets': zfs_datasets,
'snapshots': {
'snapshot_never': {
metadata.get('backup-server/zfs-base'),
},
},
},
}
@metadata_reactor.provides(
'icinga2_api/backup-server/services',
)
def monitoring(metadata):
services = {}
for client, config in metadata.get('backup-server/clients', {}).items():
if config.get('exclude_from_monitoring', False):
continue
services[f'BACKUPS FOR NODE {client}'] = {
'command_on_monitored_host': 'sudo /usr/local/share/icinga/plugins/check_backup_for_node {} {}'.format(
client,
config['one_backup_every_hours'],
),
'vars.sshmon_timeout': 20,
}
return {
'icinga2_api': {
'backup-server': {
'services': services,
},
},
}

View file

@ -0,0 +1,3 @@
% for k, v in sorted(node.metadata.get('environment', {}).items()):
${k}=${v}
% endfor

View file

@ -1,4 +1,4 @@
127.0.0.1 localhost ${node.name} ${node.hostname}
127.0.0.1 localhost ${node.name} ${node.metadata['hostname']}
::1 ip6-localhost
fe00::0 ip6-localnet
@ -7,6 +7,6 @@ ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
% for ip, entries in sorted(node.metadata.get('hosts', {}).get('entries', {}).items()):
% for ip, entries in sorted(node.metadata.get('hosts/entries', {}).items()):
${ip} ${' '.join(sorted(entries))}
% endfor

View file

@ -0,0 +1,39 @@
# Beware! This file is rewritten by htop when settings are changed in the interface.
# The parser is also very primitive, and not human-friendly.
fields=0 48 17 18 38 39 40 2 46 47 49 1
sort_key=46
sort_direction=-1
tree_sort_key=0
tree_sort_direction=1
hide_kernel_threads=1
hide_userland_threads=0
shadow_other_users=0
show_thread_names=0
show_program_path=1
highlight_base_name=1
highlight_megabytes=0
highlight_threads=1
highlight_changes=0
highlight_changes_delay_secs=5
find_comm_in_cmdline=1
strip_exe_from_cmdline=1
show_merged_command=0
tree_view=0
tree_view_always_by_pid=0
header_margin=1
detailed_cpu_time=1
cpu_count_from_one=1
show_cpu_usage=1
show_cpu_frequency=0
show_cpu_temperature=0
degree_fahrenheit=0
update_process_names=0
account_guest_in_cpu_meter=0
color_scheme=0
enable_mouse=0
delay=10
left_meters=Tasks LoadAverage Uptime Memory CPU LeftCPUs2 CPU
left_meter_modes=2 2 2 1 1 1 2
right_meters=Hostname CPU RightCPUs2
right_meter_modes=2 3 1
hide_function_bar=0

View file

@ -0,0 +1 @@
LANG=${node.metadata['locale']['default']}

View file

@ -0,0 +1,3 @@
% for locale in sorted(node.metadata['locale']['installed']):
${locale} ${locale.split('.')[-1]}
% endfor

96
bundles/basic/items.py Normal file
View file

@ -0,0 +1,96 @@
from inspect import cleandoc
from uuid import UUID
from bundlewrap.utils.text import italic
files = {
'/etc/default/locale': {
'content_type': 'mako',
'needs': {
'action:locale-gen',
},
},
'/etc/hosts': {
'content_type': 'mako',
},
'/etc/htoprc.global': {
'source': 'htoprc',
},
'/etc/motd': {
'content': '',
},
'/etc/environment': {
'content_type': 'mako',
'before': {
'action:',
'pkg_apt:',
'pkg_pacman:',
},
},
}
locale_needs = set()
for locale in sorted(node.metadata.get('locale/installed')):
actions[f'ensure_locale_{locale}_is_enabled'] = {
'command': f"sed -i '/{locale}/s/^# *//g' /etc/locale.gen",
'unless': f"grep -e '^{locale}' /etc/locale.gen",
'triggers': {
'action:locale-gen',
},
'needs': locale_needs,
}
locale_needs = {f'action:ensure_locale_{locale}_is_enabled'}
actions = {
'locale-gen': {
'triggered': True,
'command': 'locale-gen',
},
}
description = []
if not node.metadata.get('icinga_options/exclude_from_monitoring', False):
description.append('icingaweb2: https://icinga.franzi.business/monitoring/host/show?host={}'.format(node.name))
if node.has_bundle('telegraf'):
description.append('Grafana: https://grafana.kunsmann.eu/d/{}'.format(UUID(int=node.magic_number).hex[:10]))
if (
not node.metadata.get('icinga_options/exclude_from_monitoring', False) or
node.has_bundle('telegraf')
):
description.append('') # divider line
if node.metadata.get('nginx/vhosts', {}):
description.append('nginx vhosts:')
for vname, vconfig in sorted(node.metadata.get('nginx/vhosts', {}).items()):
if vconfig.get('ssl', 'letsencrypt') is not None:
proto = 'https'
else:
proto = 'http'
domain = vconfig.get('domain', vname)
description.append(' {}: {}://{}{}'.format(
vname,
proto,
domain,
vconfig.get('website_check_path', '/'),
))
if node.metadata.get('description', []):
description.append('') # divider line
for line in node.metadata.get('description', []):
description.append('# {}'.format(italic(line)))
if description:
files['/etc/node.description'] = {
'content': '\n'.join(description) + '\n',
}
else:
files['/etc/node.description'] = {
'delete': True,
}

25
bundles/basic/metadata.py Normal file
View file

@ -0,0 +1,25 @@
defaults = {
'bash_functions': {
'h': 'cp /etc/htoprc.global ~/.htoprc; mkdir -p ~/.config/htop; cp /etc/htoprc.global ~/.config/htop/htoprc; htop',
},
'locale': {
'default': 'en_US.UTF-8',
'installed': {
'de_DE.UTF-8',
'en_US.UTF-8',
},
},
}
@metadata_reactor.provides(
'locale/installed',
)
def ensure_default_is_installed(metadata):
return {
'locale': {
'installed': {
metadata.get('locale/default'),
},
},
}

View file

@ -1,6 +0,0 @@
% for key in keys:
key ${key['name']} {
algorithm ${key['algorithm']};
secret "${key['secret']}";
};
% endfor

View file

@ -1,30 +0,0 @@
include "/etc/bind/keys.conf";
% for zone in sorted(primary_zones):
zone "${zone}" IN {
type master;
file "/var/lib/bind/primary/${zone}";
};
% endfor
zone "10.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "16.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "17.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "18.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "19.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "20.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "21.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "22.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "23.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "24.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "25.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "26.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "27.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "28.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "29.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "30.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "31.172.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };
zone "168.192.in-addr.arpa" { type master; file "/etc/bind/db.empty"; };

View file

@ -1,3 +0,0 @@
% for o in node.metadata.get('bind', {}).get('options', []):
<%include file="options/${o}"/>
% endfor

View file

@ -1,144 +0,0 @@
from os import listdir
from os.path import isfile, join
from datetime import datetime
from subprocess import check_output
ZONE_HEADER = """
; _ ____ _ _ _____ _ _ _ _ ____
; / \\ / ___| | | |_ _| | | | \\ | |/ ___|
; / _ \\| | | |_| | | | | | | | \\| | | _
; / ___ \\ |___| _ | | | | |_| | |\\ | |_| |
; /_/ \\_\\____|_| |_| |_| \\___/|_| \\_|\\____|
;
; --> Diese Datei wird von BundleWrap verwaltet! <--
$TTL 60
@ IN SOA ns-1.kunbox.net. hostmaster.kunbox.net. (
{serial}
3600
3600
86400
300
)
@ IN NS ns-1.kunbox.net.
IN NS ns-2.kunbox.net.
"""
svc_systemd = {
'bind9': {
'needs': {
'pkg_apt:bind9',
},
},
}
pkg_apt = {
'bind9': {},
}
directories = {
"/var/lib/bind/primary": {
'group': 'bind',
'needs': {
'pkg_apt:bind9',
},
'owner': 'bind',
'purge': True,
},
"/var/log/named": {
'group': 'bind',
'needs': {
'pkg_apt:bind9',
},
'owner': 'bind',
},
}
files = {
"/etc/bind/keys.conf": {
'content_type': 'mako',
'group': 'bind',
'mode': '0440',
'context': {
'keys': node.metadata.get('bind', {}).get('keys', []),
},
'triggers': {
'svc_systemd:bind9:reload',
},
'needs': {
'pkg_apt:bind9',
},
},
"/etc/bind/named.conf.options": {
'content_type': 'mako',
'group': 'bind',
'mode': '0440',
'triggers': {
'svc_systemd:bind9:reload',
},
'needs': {
'pkg_apt:bind9',
},
},
}
if node.metadata.get('bind', {}).get('rndc', ''):
files['/etc/bind/rndc.conf'] = {
'mode': '0440',
'source': 'rndc/{}'.format(node.metadata['bind']['rndc']),
'content_type': 'mako',
'triggers': {
'svc_systemd:bind9:reload',
},
}
# this looks for zones either directly at data/bind/zones/ or in a subdirectory if so configured
zone_path = join(
repo.path,
'data', 'bind', 'files', 'zones',
node.metadata.get('bind', {}).get('zone_path', ""),
)
primary_zones = set()
for zone in listdir(zone_path):
if not isfile(join(zone_path, zone)) or zone.startswith(".") or zone.startswith("_"):
continue
output = check_output(['git', 'log', '-1', '--pretty=%ci', join(zone_path, zone)]).decode('utf-8').strip()
serial = datetime.strptime(output, '%Y-%m-%d %H:%M:%S %z').strftime('%y%m%d%H%M')
primary_zones.add(zone)
files["/var/lib/bind/primary/{}".format(zone)] = {
'content_type': 'mako',
'context': {
'header': ZONE_HEADER.format(serial=serial),
'metadata_records': node.metadata.get('bind', {}).get('zones_primary', {}).get(zone, {}).get('records', []),
},
'mode': '0444',
'owner': 'bind',
'source': 'zones/{}'.format(join(node.metadata.get('bind', {}).get('zone_path', ""), zone)),
'triggers': {
'svc_systemd:bind9:reload',
},
'needs': {
'pkg_apt:bind9'
},
}
primary_zones.union(set(node.metadata.get('bind', {}).get('zones_primary', {}).keys()))
files['/etc/bind/named.conf.local'] = {
'content_type': 'mako',
'context': {
'primary_zones': list(primary_zones),
},
'group': 'bind',
'triggers': {
'svc_systemd:bind9:reload',
},
'needs': {
'pkg_apt:bind9',
},
}

View file

@ -1,33 +0,0 @@
from bundlewrap.metadata import atomic
defaults = {
'icinga2_api': {
'bind': {
'services': {
'BIND PROCESS': {
'command_on_monitored_host': '/usr/lib/nagios/plugins/check_procs -C named -c 1:1',
},
},
},
},
}
@metadata_reactor
def port_checks(metadata):
services = {}
for interface in metadata.get('bind/listen', set()):
services[f'BIND PORT {interface}'] = {
'check_command': 'tcp',
'vars.tcp_address': metadata.get(f'interfaces/{interface}/ip_addresses')[0],
'vars.tcp_port': 53,
}
return {
'icinga2_api': {
'bind': {
'services': services,
},
},
}

View file

@ -0,0 +1,43 @@
log syslog all;
router id ${node.metadata.get('bird/my_ip')};
debug protocols all;
ipv4 table master4;
protocol device {
}
protocol kernel {
scan time 30;
ipv4 {
export where source != RTS_STATIC;
};
}
% if node.metadata.get('bird/static_routes', set()):
protocol static {
ipv4;
% for route in sorted(node.metadata.get('bird/static_routes', set())):
% for name, config in sorted(node.metadata.get('bird/bgp_neighbors', {}).items()):
route ${route} via ${config['local_ip']};
% endfor
% endfor
}
% endif
% for name, config in sorted(node.metadata.get('bird/bgp_neighbors', {}).items()):
protocol bgp '${name}' {
local ${config['local_ip']} as ${config['local_as']};
neighbor ${config['neighbor_ip']} as ${config['neighbor_as']};
hold time ${config.get('hold_time', 15)};
error wait time 5, 10;
direct;
ipv4 {
next hop self;
import all;
export all;
};
}
% endfor

21
bundles/bird/items.py Normal file
View file

@ -0,0 +1,21 @@
if node.os == 'arch':
filename = '/etc/bird.conf'
else:
filename = '/etc/bird/bird.conf'
files = {
filename: {
'content_type': 'mako',
'triggers': {
'svc_systemd:bird:reload',
},
},
}
svc_systemd = {
'bird': {
'needs': {
f'file:{filename}',
},
},
}

96
bundles/bird/metadata.py Normal file
View file

@ -0,0 +1,96 @@
from ipaddress import ip_network
from bundlewrap.exceptions import NoSuchNode
from bundlewrap.metadata import atomic
defaults = {
'apt': {
'packages': {
'bird2': {
'needed_by': {
'svc_systemd:bird',
},
},
},
},
'pacman': {
'packages': {
'bird': {
'needed_by': {
'svc_systemd:bird',
},
},
},
},
'sysctl': {
'options': {
'net.ipv4.conf.all.forwarding': '1',
'net.ipv6.conf.all.forwarding': '1',
},
},
}
@metadata_reactor.provides(
'bird/bgp_neighbors',
)
def neighbor_info_from_wireguard(metadata):
neighbors = {}
my_as = repo.libs.s2s.AS_NUMBERS[metadata.get('location')]
for name, config in metadata.get('wireguard/peers', {}).items():
try:
rnode = repo.get_node(name)
except NoSuchNode:
continue
if not rnode.has_bundle('bird'):
continue
neighbors[name] = {
'local_ip': config['my_ip'],
'local_as': my_as,
'neighbor_ip': config['their_ip'],
'neighbor_as': repo.libs.s2s.AS_NUMBERS[rnode.metadata.get('location')],
}
return {
'bird': {
'bgp_neighbors': neighbors,
},
}
@metadata_reactor.provides(
'bird/my_ip',
)
def my_ip(metadata):
if node.has_bundle('wireguard'):
wg_ifaces = sorted({iface for iface in metadata.get('interfaces').keys() if iface.startswith('wg_')})
if not wg_ifaces:
return {}
my_ip = sorted(metadata.get(f'interfaces/{wg_ifaces[0]}/ips'))[0].split('/')[0]
else:
my_ip = str(sorted(repo.libs.tools.resolve_identifier(repo, node.name))[0])
return {
'bird': {
'my_ip': my_ip,
},
}
@metadata_reactor.provides(
'firewall/port_rules',
)
def firewall(metadata):
sources = set()
for config in metadata.get('bird/bgp_neighbors', {}).values():
sources.add(config['neighbor_ip'])
return {
'firewall': {
'port_rules': {
'179/tcp': atomic(sources),
},
},
}

View file

@ -0,0 +1 @@
../../apt/files/check_unattended_upgrades

View file

@ -0,0 +1 @@
../../cron/files/cron_template

View file

@ -0,0 +1 @@
../../apt/files/do-unattended-upgrades

View file

@ -0,0 +1 @@
../../apt/files/kernel-postinst.d

View file

@ -0,0 +1,62 @@
server {
server_name ${domain};
root ${webroot if webroot else '/var/www/{}/'.format(vhost)};
index index.html index.htm;
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_trusted_certificate /etc/letsencrypt/live/${domain}/chain.pem;
ssl_certificate /etc/letsencrypt/live/${domain}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/${domain}/privkey.pem;
ssl_dhparam /etc/ssl/dhparam4096.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
% if max_body_size:
client_max_body_size ${max_body_size};
% elif proxy:
client_max_body_size 5M;
% endif
add_header Permissions-Policy interest-cohort=();
location /.well-known/acme-challenge/ {
alias /var/www/dehydrated;
}
% if locations:
% for location, options in locations.items():
location ${location} {
proxy_pass ${options['target']};
proxy_http_version ${options.get('http_version', '1.1')};
proxy_set_header Host ${domain};
% if options.get('websockets', False):
proxy_set_header Connection "upgrade";
proxy_set_header Upgrade $http_upgrade;
% endif
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto HTTPS;
proxy_set_header X-Forwarded-Host ${domain};
% for option, value in options.get('proxy_set_header', {}).items():
proxy_set_header ${option} ${value};
% endfor
% if location != '/':
proxy_set_header X-Script-Name ${location};
% endif
proxy_buffering off;
}
% endfor
% endif
% if extras:
<%include file="extras/${node.name}/${vhost}" />
% endif
}

View file

@ -0,0 +1 @@
../../apt/files/upgrade-and-reboot

View file

@ -0,0 +1 @@
../../apt/files/upgrade-and-reboot.conf

View file

@ -0,0 +1,188 @@
from bundlewrap.exceptions import BundleError
supported_os = {
'debian': {
10: 'buster',
11: 'bullseye',
12: 'bookworm',
99: 'unstable',
},
'raspbian': {
10: 'buster',
},
}
try:
supported_os[node.os][node.os_version[0]]
except (KeyError, IndexError):
raise BundleError(f'{node.name}: OS {node.os} {node.os_version} is not supported by bundle:apt')
CONFLICTING_BUNDLES = {
'apt',
'nginx',
'telegraf',
'users',
}
if any(node.has_bundle(i) for i in CONFLICTING_BUNDLES):
raise BundleError(f'{node.name}: bundle:c3voc-addons conflicts with bundles: {", ".join(sorted(CONFLICTING_BUNDLES))}')
pkg_apt = {
'apt-transport-https': {},
'build-essential': {},
'curl': {},
'git': {},
'grep': {},
'gzip': {},
'htop': {},
'jq': {},
'less': {},
'mtr': {},
'ncdu': {},
'netcat': {},
'python3': {},
'python3-dev': {},
'python3-setuptools': {
'needed_by': {
'pkg_pip:',
},
},
'python3-pip': {
'needed_by': {
'pkg_pip:',
},
},
'python3-virtualenv': {},
'rsync': {},
'tar': {},
'tmux': {},
'tree': {},
'wget': {},
}
if node.metadata.get('apt/packages', {}):
for package, options in node.metadata['apt']['packages'].items():
pkg_apt[package] = options
actions = {
'systemd-reload': {
'command': 'systemctl daemon-reload',
'cascade_skip': False,
'triggered': True,
'needed_by': {
'svc_systemd:',
},
},
'apt_update': {
'command': 'apt-get update',
'needed_by': {
'pkg_apt:',
},
'triggered': True,
'cascade_skip': False,
},
}
directories = {
'/etc/nginx/sites-enabled': {
'purge': True,
'triggers': {
'svc_systemd:nginx:restart',
},
},
}
files = {
'/etc/kernel/postinst.d/unattended-upgrades': {
'source': 'kernel-postinst.d',
},
'/etc/upgrade-and-reboot.conf': {
'content_type': 'mako',
},
'/usr/local/share/icinga/plugins/check_unattended_upgrades': {
'mode': '0755',
},
'/usr/local/sbin/upgrade-and-reboot': {
'mode': '0700',
},
'/usr/local/sbin/do-unattended-upgrades': {
'content_type': 'mako',
'mode': '0700',
'context': {
'additional_update_commands': node.metadata.get('apt/additional_update_commands', set()),
'clean_old_kernels': node.metadata.get('apt/clean_old_kernels', True),
'restart_triggers': node.metadata.get('apt/restart_triggers', {}),
}
},
}
for name, data in node.metadata.get('apt/repos', {}).items():
files['/etc/apt/sources.list.d/{}.list'.format(name)] = {
'content_type': 'mako',
'content': ("\n".join(sorted(data['items']))).format(
os=node.os,
os_release=supported_os[node.os][node.os_version[0]],
),
'triggers': {
'action:apt_update',
},
}
if data.get('install_gpg_key', True):
files['/etc/apt/sources.list.d/{}.list'.format(name)]['needs'] = {
'file:/etc/apt/trusted.gpg.d/{}.list.asc'.format(name),
}
files['/etc/apt/trusted.gpg.d/{}.list.asc'.format(name)] = {
'source': 'gpg-keys/{}.asc'.format(name),
'triggers': {
'action:apt_update',
},
}
for crontab, content in node.metadata.get('cron/jobs', {}).items():
files['/etc/cron.d/{}'.format(crontab)] = {
'source': 'cron_template',
'content_type': 'mako',
'context': {
'cron': content,
}
}
for vhost, config in node.metadata.get('nginx/vhosts', {}).items():
if not 'domain' in config:
config['domain'] = vhost
files['/etc/nginx/sites-available/{}'.format(vhost)] = {
'source': 'site_template',
'content_type': 'mako',
'context': {
'vhost': vhost,
**config,
},
'triggers': {
'svc_systemd:nginx:restart',
},
}
symlinks['/etc/nginx/sites-enabled/{}'.format(vhost)] = {
'target': '/etc/nginx/sites-available/{}'.format(vhost),
'triggers': {
'svc_systemd:nginx:restart',
},
}
if not 'webroot' in config:
directories['/var/www/{}'.format(vhost)] = config.get('webroot_config', {})
svc_systemd = {
'nginx': {},
'apt-daily.timer': {
'running': False,
'enabled': False,
},
'apt-daily-upgrade.timer': {
'running': False,
'enabled': False,
},
}

View file

@ -0,0 +1,77 @@
defaults = {
'apt': {
'unattended-upgrades': {
'day': 5,
'hour': 21,
},
},
'icinga2_api': {
'apt': {
'services': {
'UNATTENDED UPGRADES': {
'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_unattended_upgrades',
},
},
},
'nginx': {
'services': {
'NGINX PROCESS': {
'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_systemd_unit nginx',
},
},
},
},
}
@metadata_reactor.provides(
'cron/jobs/upgrade-and-reboot'
)
def patchday(metadata):
day = metadata.get('apt/unattended-upgrades/day')
hour = metadata.get('apt/unattended-upgrades/hour')
return {
'cron': {
'jobs': {
'upgrade-and-reboot': '{minute} {hour} * * {day} root /usr/local/sbin/upgrade-and-reboot'.format(
minute=node.magic_number % 30,
hour=hour,
day=day,
),
},
},
}
@metadata_reactor.provides(
'icinga2_api/nginx/services',
)
def monitoring(metadata):
services = {}
for vname, vconfig in metadata.get('nginx/vhosts', {}).items():
domain = vconfig.get('domain', vname)
if 'website_check_path' in vconfig and 'website_check_string' in vconfig:
services['NGINX VHOST {} CONTENT'.format(vname)] = {
'check_command': 'check_http_wget',
'vars.http_wget_contains': vconfig['website_check_string'],
'vars.http_wget_url': 'https://{}{}'.format(domain, vconfig['website_check_path']),
'vars.notification.sms': True,
}
if vconfig.get('check_ssl', True):
services['NGINX VHOST {} CERTIFICATE'.format(vname)] = {
'check_command': 'check_https_cert_at_url',
'vars.domain': domain,
'vars.notification.mail': True,
}
return {
'icinga2_api': {
'nginx': {
'services': services,
},
},
}

View file

@ -0,0 +1,42 @@
@metadata_reactor.provides(
'cron/jobs/check-mail-received',
'icinga2_api/check-mail-received/services',
)
def process_metadata(metadata):
cron = set()
services = {}
my_mail_address = 'root@{}'.format(metadata.get('hostname'))
for name, config in metadata.get('check-mail-received', {}).items():
cron.add('{minute} {hour} * * * root date | mail -s "daily test mail from {node}" -r {source} {target}'.format(
minute=node.magic_number%60,
hour=node.magic_number%24,
node=node.name,
source=my_mail_address,
target=config['email'],
))
services[f'MAIL RECEIVED ON {name}'] = {
'check_command': 'check_imap_for_mail_from',
'check_interval': '15m',
'retry_interval': '5m',
'vars.sshmon_timeout': 30,
'vars.imap_host': config['imap_host'],
'vars.imap_user': config.get('imap_user', config['email']),
'vars.imap_pass': config['imap_pass'],
'vars.imap_from': my_mail_address,
}
return {
'cron': {
'jobs': {
'check-mail-received': '\n'.join(sorted(cron)),
},
},
'icinga2_api': {
'check-mail-received': {
'services': services,
},
},
}

View file

@ -0,0 +1,8 @@
# CAUTION! This file is managed with bundlewrap.
# Any manual edits will be lost!
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=${node.metadata.get('cron/mail_to', repo.libs.defaults.hostmaster_email)}
${cron}

View file

@ -0,0 +1,11 @@
# CAUTION! This file is managed with bundlewrap.
# Any manual edits will be lost!
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=${node.metadata.get('cron/mail_to', repo.libs.defaults.hostmaster_email)}
${min} * * * * root cd / && run-parts --report /etc/cron.hourly
${min} 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
${min} 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
${min} 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

View file

@ -1,6 +1,41 @@
files = {}
if node.os == 'arch':
service_name = 'cronie'
package_name = 'pkg_pacman:cronie'
else:
service_name = 'cron'
package_name = 'pkg_apt:cron'
for crontab, content in node.metadata.get('cron', {}).items():
files = {
'/etc/crontab': {
'content_type': 'mako',
'context': {
'min': (node.magic_number%60),
},
},
}
directories = {
'/etc/cron.d': {
'purge': True,
'after': {
'pkg_apt:',
},
},
}
svc_systemd = {
service_name: {
'needs': {
package_name,
},
},
}
for crontab, content in node.metadata.get('cron/jobs', {}).items():
files['/etc/cron.d/{}'.format(crontab)] = {
'content': content + "\n",
'source': 'cron_template',
'content_type': 'mako',
'context': {
'cron': content,
}
}

12
bundles/cron/metadata.py Normal file
View file

@ -0,0 +1,12 @@
defaults = {
'apt': {
'packages': {
'cron': {},
},
},
'pacman': {
'packages': {
'cronie': {},
},
},
}

26
bundles/dm-crypt/items.py Normal file
View file

@ -0,0 +1,26 @@
for dev, attrs in node.metadata.get('dm-crypt/encrypted-devices', {}).items():
actions['dm-crypt_format_' + dev] = {
'cascade_skip': False,
'command': f'cryptsetup --batch-mode luksFormat --cipher aes-xts-plain64 --key-size 512 {dev}',
'comment': 'Careful: This destroys the current contents of that device. Afterwards, it will be encrypted using dm-crypt.',
'data_stdin': attrs['passphrase'],
'unless': f'blkid -t TYPE=crypto_LUKS {dev}',
'needs': {
'pkg_apt:cryptsetup',
},
}
actions['dm-crypt_open_' + attrs['dm-name']] = {
'cascade_skip': False,
'command': 'cryptsetup --batch-mode luksOpen {dev} {dm_name}'.format(
dev=dev,
dm_name=attrs['dm-name'],
),
'comment': 'Unlocks the device and makes it available as /dev/mapper/{}'.format(attrs['dm-name']),
'data_stdin': attrs['passphrase'],
'needs': {
f'action:dm-crypt_format_{dev}',
'pkg_apt:cryptsetup',
},
'unless': 'test -e /dev/mapper/{}'.format(attrs['dm-name']),
}

View file

@ -0,0 +1,7 @@
defaults = {
'apt': {
'packages': {
'cryptsetup': {},
},
},
}

View file

@ -0,0 +1,6 @@
connect = host=localhost dbname=${dbname} user=${dbuser} password=${dbpass}
driver = pgsql
default_pass_scheme = MD5-CRYPT
password_query = SELECT username as user, password FROM mailbox WHERE username = '%u' AND active = true
user_query = SELECT '/var/mail/vmail/' || maildir as home, 65534 as uid, 65534 as gid FROM mailbox WHERE username = '%u' AND active = true
iterate_query = SELECT username as user FROM mailbox WHERE active = true

View file

@ -0,0 +1,185 @@
!include conf.d/*.conf
namespace inbox {
type = private
inbox = yes
location =
mailbox Drafts {
auto = subscribe
special_use = \Drafts
}
mailbox Junk {
auto = create
special_use = \Junk
autoexpunge = 30d
}
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox Trash {
auto = subscribe
special_use = \Trash
autoexpunge = 360d
}
prefix =
}
mail_location = maildir:/var/mail/vmail/%d/%n
protocols = imap lmtp sieve
ssl = yes
ssl_cert = </var/lib/dehydrated/certs/${node.metadata.get('postfix/myhostname', node.metadata['hostname'])}/fullchain.pem
ssl_key = </var/lib/dehydrated/certs/${node.metadata.get('postfix/myhostname', node.metadata['hostname'])}/privkey.pem
ssl_dh = </etc/dovecot/ssl/dhparam.pem
ssl_min_protocol = TLSv1.2
ssl_cipher_list = EECDH+AESGCM:EDH+AESGCM
ssl_prefer_server_ciphers = yes
login_greeting = IMAPd ready
auth_mechanisms = plain login
first_valid_uid = 65534
disable_plaintext_auth = yes
mail_plugins = $mail_plugins zlib old_stats fts fts_xapian
plugin {
zlib_save_level = 6
zlib_save = gz
sieve = /var/mail/vmail/sieve/%d/%n.sieve
sieve_dir = /var/mail/vmail/sieve/%d/%n/
sieve_extensions = +vnd.dovecot.pipe
sieve_pipe_bin_dir = /var/mail/vmail/sieve/bin
sieve_plugins = sieve_imapsieve sieve_extprograms
sieve_user_log = /var/mail/vmail/sieve/%d/%n.log
old_stats_refresh = 30 secs
old_stats_track_cmds = yes
fts = xapian
fts_xapian = partial=3 full=20
fts_autoindex = yes
fts_enforced = yes
# Index attachements
fts_decoder = decode2text
% if node.has_bundle('rspamd'):
sieve_before = /var/mail/vmail/sieve/global/spam-global.sieve
# From elsewhere to Spam folder
imapsieve_mailbox1_name = Junk
imapsieve_mailbox1_causes = COPY
imapsieve_mailbox1_before = file:/var/mail/vmail/sieve/global/learn-spam.sieve
# From Spam folder to elsewhere
imapsieve_mailbox2_name = *
imapsieve_mailbox2_from = Junk
imapsieve_mailbox2_causes = COPY
imapsieve_mailbox2_before = file:/var/mail/vmail/sieve/global/learn-ham.sieve
% endif
}
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
unix_listener auth-userdb {
mode = 0660
user = nobody
group = nogroup
}
}
service decode2text {
executable = script /usr/lib/dovecot/decode2text.sh
user = dovecot
unix_listener decode2text {
mode = 0666
}
}
service indexer-worker {
vsz_limit = 0
process_limit = 0
}
service imap {
executable = imap
}
service imap-login {
service_count = 1
process_min_avail = 8
vsz_limit = 64M
}
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0600
user = postfix
}
}
service managesieve-login {
inet_listener sieve {
port = 4190
}
}
userdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf
}
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf
}
protocol lmtp {
mail_plugins = $mail_plugins sieve
postmaster_address = ${admin_email}
}
protocol imap {
mail_plugins = $mail_plugins imap_zlib imap_sieve imap_old_stats
mail_max_userip_connections = 50
imap_idle_notify_interval = 29 mins
}
protocol sieve {
plugin {
sieve = /var/mail/vmail/sieve/%d/%n.sieve
sieve_storage = /var/mail/vmail/sieve/%d/%n/
}
}
service old-stats {
% if node.has_bundle('telegraf'):
inet_listener {
address = 127.0.0.1
port = 24242
}
% endif
unix_listener old-stats {
mode = 0660
user = nobody
group = nogroup
}
fifo_listener old-stats-mail {
mode = 0660
user = nobody
group = nogroup
}
fifo_listener old-stats-user {
mode = 0660
user = nobody
group = nogroup
}
}

View file

@ -0,0 +1,15 @@
require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];
if environment :matches "imap.mailbox" "*" {
set "mailbox" "${1}";
}
if string "${mailbox}" "Trash" {
stop;
}
if environment :matches "imap.user" "*" {
set "username" "${1}";
}
pipe :copy "sa-learn-ham.sh" [ "${username}" ];

View file

@ -0,0 +1,7 @@
require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];
if environment :matches "imap.user" "*" {
set "username" "${1}";
}
pipe :copy "sa-learn-spam.sh" [ "${username}" ];

View file

@ -0,0 +1,11 @@
require ["fileinto", "imap4flags"];
if header :contains "X-Spam-Status" "Yes" {
setflag "\\seen";
fileinto "Junk";
}
if header :contains "X-Spam" "Yes" {
setflag "\\seen";
fileinto "Junk";
}

96
bundles/dovecot/items.py Normal file
View file

@ -0,0 +1,96 @@
# Postfix bundle creates metadata and directories which are also used
# by this bundle
repo.libs.tools.require_bundle(node, 'postfix')
directories = {
'/etc/dovecot/ssl': {},
}
files = {
'/etc/dovecot/dovecot.conf': {
'content_type': 'mako',
'context': {
'admin_email': node.metadata['dovecot']['admin_email'],
},
'needs': {
'pkg_apt:'
},
'triggers': {
'svc_systemd:dovecot:restart',
},
},
'/etc/dovecot/dovecot-sql.conf': {
'content_type': 'mako',
'context': node.metadata['dovecot']['database'],
'needs': {
'pkg_apt:'
},
'triggers': {
'svc_systemd:dovecot:restart',
},
},
'/etc/dovecot/conf.d/auth-system.conf.ext': {
'delete': True,
'needs': {
'pkg_apt:'
},
'triggers': {
'svc_systemd:dovecot:restart',
},
},
'/etc/dovecot/conf.d/10-auth.conf': {
'delete': True,
'needs': {
'pkg_apt:'
},
'triggers': {
'svc_systemd:dovecot:restart',
},
},
}
symlinks['/usr/lib/dovecot/decode2text.sh'] = {
'target': '/usr/share/doc/dovecot-core/examples/decode2text.sh',
'before': {
'svc_systemd:dovecot',
},
}
actions = {
'dovecot_generate_dhparam': {
'command': 'openssl dhparam -out /etc/dovecot/ssl/dhparam.pem 2048',
'unless': 'test -f /etc/dovecot/ssl/dhparam.pem',
'cascade_skip': False,
'needs': {
'directory:/etc/dovecot/ssl',
'pkg_apt:'
},
'triggers': {
'svc_systemd:dovecot:restart',
},
},
}
svc_systemd = {
'dovecot': {
'needs': {
'action:dovecot_generate_dhparam',
'file:/etc/dovecot/dovecot.conf',
'file:/etc/dovecot/dovecot-sql.conf',
},
},
}
if node.has_bundle('rspamd'):
files['/var/mail/vmail/sieve/global/learn-ham.sieve'] = {
'owner': 'nobody',
'group': 'nogroup',
}
files['/var/mail/vmail/sieve/global/learn-spam.sieve'] = {
'owner': 'nobody',
'group': 'nogroup',
}
files['/var/mail/vmail/sieve/global/spam-global.sieve'] = {
'owner': 'nobody',
'group': 'nogroup',
}

105
bundles/dovecot/metadata.py Normal file
View file

@ -0,0 +1,105 @@
from bundlewrap.metadata import atomic
defaults = {
'apt': {
'packages': {
'dovecot-fts-xapian': {},
'dovecot-imapd': {},
'dovecot-lmtpd': {},
'dovecot-managesieved': {},
'dovecot-pgsql': {},
'dovecot-sieve': {},
},
},
'icinga2_api': {
'dovecot': {
'services': {
'DOVECOT PROCESS': {
'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_systemd_unit dovecot',
},
'IMAP CONNECT': {
'check_command': 'check_imap',
'vars.imap_port': 143,
'vars.notification.sms': True,
},
'IMAPS CONNECT': {
'check_command': 'check_imap',
'vars.imap_port': 993,
'vars.imap_ssl': True,
'vars.notification.sms': True,
},
},
},
},
'letsencrypt': {
'reload_after': {
'dovecot',
},
},
'systemd-timers': {
'timers': {
'dovecot_fts_optimize': {
'command': [
'/usr/bin/doveadm fts optimize -A',
],
'when': '02:{}:00'.format(node.magic_number % 60),
},
},
},
}
if node.has_bundle('postfixadmin'):
defaults['dovecot'] = {
'database': {
'dbname': 'postfixadmin',
'dbuser': 'postfixadmin',
},
}
if node.has_bundle('telegraf'):
defaults['telegraf'] = {
'input_plugins': {
'builtin': {
'dovecot': [{
'type': 'global',
}],
},
},
}
@metadata_reactor.provides(
'dovecot/admin_email',
'dovecot/database/dbpass',
)
def import_database_settings_from_postfixadmin(metadata):
if not node.has_bundle('postfixadmin'):
raise DoNotRunAgain
return {
'dovecot': {
'admin_email': metadata.get('postfixadmin/admin_email'),
'database': {
'dbpass': metadata.get('postgresql/roles/postfixadmin/password'),
},
},
}
@metadata_reactor.provides(
'firewall/port_rules',
'firewall/port_rules',
'firewall/port_rules',
)
def firewall(metadata):
return {
'firewall': {
'port_rules': {
# imap(s)
'143/tcp': atomic(metadata.get('dovecot/restrict-to', {'*'})),
'993/tcp': atomic(metadata.get('dovecot/restrict-to', {'*'})),
# managesieve
'4190/tcp': atomic(metadata.get('dovecot/restrict-to', {'*'})),
},
},
}

View file

@ -0,0 +1,41 @@
from bundlewrap.metadata import metadata_to_json
repo.libs.tools.require_bundle(node, 'nodejs')
directories = {
'/opt/element-web': {}
}
git_deploy = {
'/opt/element-web': {
'rev': node.metadata.get('element-web/version'),
'repo': 'https://github.com/vector-im/element-web.git',
'triggers': {
'action:element-web_yarn',
},
},
}
files = {
'/opt/element-web/webapp/config.json': {
'content': metadata_to_json(node.metadata.get('element-web/config')),
'needs': {
'action:element-web_yarn',
},
},
}
actions = {
'element-web_yarn': {
'command': ' && '.join([
'cd /opt/element-web',
'yarn install --pure-lockfile --ignore-scripts',
'yarn build',
]),
'needs': {
'action:nodejs_install_yarn',
'pkg_apt:nodejs',
},
'triggered': True,
},
}

View file

@ -0,0 +1,46 @@
defaults = {
'zfs': {
'datasets': {
'tank/element-web': {
'mountpoint': '/opt/element-web',
'needed_by': {
'directory:/opt/element-web',
},
},
},
},
}
@metadata_reactor.provides(
'nginx/vhosts/element-web',
)
def nginx_config(metadata):
return {
'nginx': {
'vhosts': {
'element-web': {
'domain': metadata.get('element-web/url'),
'webroot': '/opt/element-web/webapp/',
},
},
},
}
@metadata_reactor.provides(
'icinga2_api/element-web/services',
)
def icinga_check_for_new_release(metadata):
return {
'icinga2_api': {
'element-web': {
'services': {
'ELEMENT-WEB UPDATE': {
'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_github_for_new_release vector-im/element-web {}'.format(metadata.get('element-web/version')),
'vars.notification.mail': True,
'check_interval': '60m',
},
},
},
},
}

View file

@ -0,0 +1,89 @@
APP_NAME = ${app_name}
RUN_USER = git
RUN_MODE = prod
WORK_PATH = /var/lib/forgejo
[repository]
ROOT = /var/lib/forgejo/repositories
MAX_CREATION_LIMIT = 0
DEFAULT_BRANCH = main
[ui]
ISSUE_PAGING_NUM = 50
MEMBERS_PAGING_NUM = 100
[server]
PROTOCOL = http
SSH_DOMAIN = ${domain}
DOMAIN = ${domain}
HTTP_ADDR = 127.0.0.1
HTTP_PORT = 22000
ROOT_URL = https://${domain}/
DISABLE_SSH = false
SSH_PORT = 22
LFS_START_SERVER = true
LFS_JWT_SECRET = ${lfs_secret_key}
OFFLINE_MODE = true
START_SSH_SERVER = false
DISABLE_ROUTER_LOG = true
LANDING_PAGE = explore
[database]
DB_TYPE = postgres
HOST = ${database.get('host', 'localhost')}:5432
NAME = ${database['database']}
USER = ${database['username']}
PASSWD = ${database['password']}
SSL_MODE = disable
LOG_SQL = false
[admin]
DEFAULT_EMAIL_NOTIFICATIONS = onmention
DISABLE_REGULAR_ORG_CREATION = true
[security]
INTERNAL_TOKEN = ${internal_token}
INSTALL_LOCK = true
SECRET_KEY = ${security_secret_key}
LOGIN_REMEMBER_DAYS = 30
DISABLE_GIT_HOOKS = ${str(not enable_git_hooks).lower()}
[openid]
ENABLE_OPENID_SIGNIN = false
ENABLE_OPENID_SIGNUP = false
[service]
REGISTER_EMAIL_CONFIRM = true
ENABLE_NOTIFY_MAIL = true
DISABLE_REGISTRATION = ${str(disable_registration).lower()}
ALLOW_ONLY_EXTERNAL_REGISTRATION = false
ENABLE_CAPTCHA = false
REQUIRE_SIGNIN_VIEW = false
DEFAULT_KEEP_EMAIL_PRIVATE = true
DEFAULT_ALLOW_CREATE_ORGANIZATION = false
DEFAULT_ENABLE_TIMETRACKING = true
NO_REPLY_ADDRESS = noreply.${domain}
EMAIL_DOMAIN_BLOCKLIST = ${','.join(sorted(email_domain_blocklist))}
[mailer]
ENABLED = true
PROTOCOL = sendmail
FROM = "${app_name}" <noreply@${domain}>
[session]
PROVIDER = file
[picture]
DISABLE_GRAVATAR = true
ENABLE_FEDERATED_AVATAR = false
[log]
MODE = console
LEVEL = warn
[oauth2]
JWT_SECRET = ${oauth_secret_key}
[other]
SHOW_FOOTER_BRANDING = true
SHOW_FOOTER_TEMPLATE_LOAD_TIME = false

View file

@ -0,0 +1,17 @@
[Unit]
Description=${app_name} at ${domain}
After=syslog.target
After=network.target
Requires=postgresql.service
[Service]
RestartSec=10
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/forgejo
ExecStart=/usr/local/bin/forgejo web -c /etc/forgejo/app.ini
Restart=always
[Install]
WantedBy=multi-user.target

65
bundles/forgejo/items.py Normal file
View file

@ -0,0 +1,65 @@
users = {
'git': {
'home': '/var/lib/forgejo',
},
}
directories = {
'/var/lib/forgejo/.ssh': {
'mode': '0700',
'owner': 'git',
'group': 'git',
},
'/var/lib/forgejo': {
'owner': 'git',
'mode': '0700',
'triggers': {
'svc_systemd:forgejo:restart',
},
},
}
files = {
'/usr/local/lib/systemd/system/forgejo.service': {
'content_type': 'mako',
'context': node.metadata.get('forgejo'),
'triggers': {
'action:systemd-reload',
'svc_systemd:forgejo:restart',
},
},
'/etc/forgejo/app.ini': {
'content_type': 'mako',
'context': node.metadata.get('forgejo'),
'triggers': {
'svc_systemd:forgejo:restart',
},
},
'/usr/local/bin/forgejo': {
'content_type': 'download',
'source': 'https://codeberg.org/forgejo/forgejo/releases/download/v{0}/forgejo-{0}-linux-amd64'.format(node.metadata.get('forgejo/version')),
'content_hash': node.metadata.get('forgejo/sha1', None),
'mode': '0755',
'triggers': {
'svc_systemd:forgejo:restart',
},
},
}
if node.metadata.get('forgejo/install_ssh_key', False):
files['/var/lib/forgejo/.ssh/id_ed25519'] = {
'content': repo.vault.decrypt_file(f'forgejo/files/ssh-keys/{node.name}.key.vault'),
'mode': '0600',
'owner': 'git',
'group': 'git',
}
svc_systemd = {
'forgejo': {
'needs': {
'file:/etc/forgejo/app.ini',
'file:/usr/local/bin/forgejo',
'file:/usr/local/lib/systemd/system/forgejo.service',
},
},
}

107
bundles/forgejo/metadata.py Normal file
View file

@ -0,0 +1,107 @@
defaults = {
'backups': {
'paths': {
'/var/lib/forgejo',
},
},
'forgejo': {
'app_name': 'Forgejo',
'database': {
'username': 'forgejo',
'password': repo.vault.password_for('{} postgresql forgejo'.format(node.name)),
'database': 'forgejo',
},
'disable_registration': True,
'email_domain_blocklist': set(),
'enable_git_hooks': False,
'internal_token': repo.vault.password_for('{} forgejo internal_token'.format(node.name)),
'lfs_secret_key': repo.vault.password_for('{} forgejo lfs_secret_key'.format(node.name)),
'oauth_secret_key': repo.vault.password_for('{} forgejo oauth_secret_key'.format(node.name)),
'security_secret_key': repo.vault.password_for('{} forgejo security_secret_key'.format(node.name)),
},
'icinga2_api': {
'forgejo': {
'services': {
'FORGEJO PROCESS': {
'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_systemd_unit forgejo',
},
'FORGEJO UPDATE': {
'vars.notification.mail': True,
'check_interval': '60m',
},
},
},
},
'openssh': {
'allowed_users': {
'git',
},
},
'postgresql': {
'roles': {
'forgejo': {
'password': repo.vault.password_for('{} postgresql forgejo'.format(node.name)),
},
},
'databases': {
'forgejo': {
'owner': 'forgejo',
},
},
},
'zfs': {
'datasets': {
'tank/forgejo': {
'mountpoint': '/var/lib/forgejo',
'needed_by': {
'directory:/var/lib/forgejo',
},
},
},
},
}
@metadata_reactor.provides(
'icinga2_api/forgejo',
)
def update_monitoring(metadata):
return {
'icinga2_api': {
'forgejo': {
'services': {
'FORGEJO UPDATE': {
'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_forgejo_for_new_release codeberg.org forgejo/forgejo v{}'.format(metadata.get('forgejo/version')),
},
},
},
},
}
@metadata_reactor.provides(
'nginx/vhosts/forgejo',
)
def nginx(metadata):
if not node.has_bundle('nginx'):
raise DoNotRunAgain
return {
'nginx': {
'vhosts': {
'forgejo': {
'domain': metadata.get('forgejo/domain'),
'locations': {
'/': {
'target': 'http://127.0.0.1:22000',
},
'/debug': {
'return': 403,
},
},
'website_check_path': '/user/login',
'website_check_string': 'Sign In',
},
},
},
}

View file

@ -1,13 +0,0 @@
svc_systemd = {}
for i in (
'google-accounts-daemon.service',
'google-accounts-manager.service',
'google-clock-skew-daemon.service',
'google-clock-sync-manager.service',
'sshguard.service'
):
svc_systemd[i] = {
'enabled': False,
'running': False,
}

View file

@ -0,0 +1,242 @@
def dashboard_row_battery(panel_id, node):
return {
'title': 'battery',
'collapse': False,
'editable': False,
'height': '250px',
'panels': [
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.labels.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'hideEmpty': True,
'hideZero': True,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "battery" and
r["host"] == "{node.name}" and
(
r["_field"] == "energy_full" or
r["_field"] == "energy_now"
)
)
|> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")
|> map(fn: (r) => ({{
r with
_value: float(v: r.energy_now) / float(v: r.energy_full) * 100.0
}})
)
|> drop(columns: ["energy_now", "energy_full"])""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'battery charge',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'percent',
'label': None,
'logBase': 1,
'max': 100,
'min': 0,
'show': True,
'decimals': 2,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.labels.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'hideEmpty': True,
'hideZero': True,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "battery" and
r["_field"] == "power_now" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_value: float(v: r._value) / 1000000.0
}})
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "fan")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'power draw from battery',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'watts',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
'decimals': 1,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
],
}

View file

@ -0,0 +1,247 @@
def dashboard_row_cpu(panel_id, node):
queries_cpu = []
queries_load = []
for measurement in [
'user',
'system',
'steal',
'iowait',
'nice',
'softirq',
'guest',
'guest_nice',
]:
queries_cpu.append({
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "cpu" and
r["_field"] == "usage_{measurement}" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_field: "{measurement}"
}})
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "{measurement}")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
})
for measurement in [
'load1',
'load5',
'load15',
]:
queries_load.append({
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "system" and
r["_field"] == "{measurement}" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "{measurement}")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
})
return {
'title': 'cpu/load',
'collapse': False,
'editable': False,
'height': '250px',
'panels': [
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name}'
},
'overrides': []
},
'fill': 10,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 0,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': True,
'steppedLine': False,
'targets': queries_cpu,
'thresholds': [],
'timeRegions': [],
'title': 'cpu',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'percent',
'label': None,
'logBase': 1,
'max': 100,
'min': 0,
'show': True,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': False,
'steppedLine': False,
'targets': queries_load,
'thresholds': [],
'timeRegions': [],
'title': 'load',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
],
}

View file

@ -0,0 +1,441 @@
def dashboard_row_disk_iops(panel_id, node):
return {
'title': 'disk iops',
'collapse': False,
'editable': False,
'height': '200px',
'panels': [
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.labels.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': True,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "diskio" and
r["_field"] == "reads" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> derivative(unit: 1s)
|> yield(name: "read")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'read IOPS',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.labels.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': True,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "diskio" and
r["_field"] == "writes" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> derivative(unit: 1s)
|> yield(name: "write")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'write IOPS',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.labels.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': True,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "diskio" and
r["_field"] == "read_bytes" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> derivative(unit: 1s)
|> yield(name: "read")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'read bytes',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'binBps',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.labels.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': True,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "diskio" and
r["_field"] == "write_bytes" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> derivative(unit: 1s)
|> yield(name: "write")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'write bytes',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'binBps',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': True,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
],
}

View file

@ -0,0 +1,236 @@
def dashboard_row_disk_space(panel_id, node):
queries_bytes = []
queries_inodes = []
for measurement in [
'used',
'free',
]:
queries_bytes.append({
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "disk" and
r["_field"] == "{measurement}" and
r["fstype"] == "ext4" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "{measurement}")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
})
for measurement in [
'inodes_used',
'inodes_free',
]:
queries_inodes.append({
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "disk" and
r["_field"] == "{measurement}" and
r["fstype"] == "ext4" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "{measurement}")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
})
return {
'title': 'disk space',
'collapse': False,
'editable': False,
'height': '200px',
'panels': [
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name} ${__field.labels.path}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': True,
'steppedLine': False,
'targets': queries_bytes,
'thresholds': [],
'timeRegions': [],
'title': 'disk space',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'bytes',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name} ${__field.labels.path}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': True,
'steppedLine': False,
'targets': queries_inodes,
'thresholds': [],
'timeRegions': [],
'title': 'disk inodes',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'bytes',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
],
}

View file

@ -0,0 +1,252 @@
def dashboard_row_dovecot(panel_id, node):
return {
'title': 'dovecot',
'collapse': False,
'editable': False,
'height': '200px',
'panels': [
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': False,
'steppedLine': False,
'targets': [{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "dovecot" and
r["_field"] == "num_connected_sessions" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "num_connected_sessions")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
}],
'thresholds': [],
'timeRegions': [],
'title': 'dovecot connected sessions',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "dovecot" and
r["_field"] == "read_bytes" and
r["host"] == "{node.name}"
)
|> derivative(unit: 1s)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "read")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "dovecot" and
r["_field"] == "write_bytes" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_value: r._value * -1
}})
)
|> derivative(unit: 1s)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "write")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'dovecot traffic',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'binBps',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
],
}

View file

@ -0,0 +1,583 @@
def dashboard_row_ip_traffic(panel_id, node):
return {
'title': 'ip traffic',
'collapse': False,
'editable': False,
'height': '250px',
'panels': [
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name} ${__field.labels.interface}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "net" and
r["_field"] == "bytes_recv" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_field: "in"
}})
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> derivative(unit: 1s)
|> yield(name: "in")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "net" and
r["_field"] == "bytes_sent" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_value: r._value * -1,
_field: "out"
}})
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> derivative(unit: 1s)
|> yield(name: "out")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'bytes per interface',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'binBps',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': True,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name} ${__field.labels.interface}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "net" and
r["_field"] == "packets_recv" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_field: "in"
}})
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> derivative(unit: 1s)
|> yield(name: "in")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "net" and
r["_field"] == "packets_sent" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_value: r._value * -1,
_field: "out"
}})
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> derivative(unit: 1s)
|> yield(name: "out")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'packets per interface',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "nstat" and
r["_field"] == "IpExtInOctets" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_field: "in"
}})
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> derivative(unit: 1s)
|> yield(name: "in")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "nstat" and
r["_field"] == "IpExtOutOctets" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_value: r._value * -1,
_field: "out"
}})
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> derivative(unit: 1s)
|> yield(name: "out")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'IPv4',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'binBps',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': True,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "nstat" and
r["_field"] == "Ip6InOctets" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_field: "in"
}})
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> derivative(unit: 1s)
|> yield(name: "in")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "nstat" and
r["_field"] == "Ip6OutOctets" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_value: r._value * -1,
_field: "out"
}})
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> derivative(unit: 1s)
|> yield(name: "out")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'IPv6',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'binBps',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
],
}

View file

@ -0,0 +1,447 @@
def dashboard_row_ipmitool(panel_id, node):
return {
'title': 'ipmitool',
'collapse': False,
'editable': False,
'height': '250px',
'panels': [
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.labels.name}'
},
'overrides': []
},
'fill': 0,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'hideEmpty': True,
'hideZero': True,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 8,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "ipmi_sensor" and
r["unit"] == "degrees_c" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "cpu")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'temperatures',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'celsius',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.labels.name}'
},
'overrides': []
},
'fill': 0,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'hideEmpty': True,
'hideZero': True,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 4,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "ipmi_sensor" and
r["unit"] == "rpm" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "fan")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'fans',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'rotrpm',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.labels.name}'
},
'overrides': []
},
'fill': 0,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'hideEmpty': True,
'hideZero': True,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 5,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "ipmi_sensor" and
r["unit"] == "volts" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "cpu")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'voltages',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'volts',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.labels.name}'
},
'overrides': []
},
'fill': 0,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'hideEmpty': True,
'hideZero': True,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 7,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "ipmi_sensor" and
r["unit"] == "watts" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "fan")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'power',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'watts',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
],
}

View file

@ -0,0 +1,126 @@
def dashboard_row_memory(panel_id, node):
queries_mem = []
for measurement in [
'used',
'buffered',
'cached',
'sreclaimable',
'sunreclaim',
'free',
]:
queries_mem.append({
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "mem" and
r["_field"] == "{measurement}" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "{measurement}")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
})
return {
'title': 'memory',
'collapse': False,
'editable': False,
'height': '200px',
'panels': [
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 12,
'stack': True,
'steppedLine': False,
'targets': queries_mem,
'thresholds': [],
'timeRegions': [],
'title': 'memory usage',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'bytes',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
],
}

View file

@ -0,0 +1,376 @@
def dashboard_row_nginx(panel_id, node):
queries_through = []
queries_conn = []
queries_timing = []
for measurement in [
'accepted',
'handled',
'requests',
]:
queries_through.append({
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "nginx" and
r["_field"] == "{measurement}" and
r["host"] == "{node.name}"
)
|> derivative(unit: 1s)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "{measurement}")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
})
for measurement in [
'active',
'reading',
'writing',
'waiting',
]:
queries_conn.append({
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "nginx" and
r["_field"] == "{measurement}" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "{measurement}")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
})
for measurement in [
'request_time',
'upstream_response_time',
]:
queries_timing.append({
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "nginx_timing" and
r["_field"] == "{measurement}" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_field: "{measurement}"
}})
)
|> group(columns: ["path", "_field"])
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "{measurement}")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
})
return {
'title': 'nginx',
'collapse': False,
'editable': False,
'height': '250px',
'panels': [
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': True,
'steppedLine': False,
'targets': queries_conn,
'thresholds': [],
'timeRegions': [],
'title': 'nginx connections',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': True,
'steppedLine': False,
'targets': queries_through,
'thresholds': [],
'timeRegions': [],
'title': 'nginx throughput',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name} ${__field.labels.path}'
},
'overrides': []
},
'fill': 0,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': True,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': True,
'show': True,
'total': False,
'values': False
},
'lines': False,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': True,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 12,
'stack': False,
'steppedLine': False,
'targets': queries_timing,
'thresholds': [
{
'colorMode': 'warning',
'fill': False,
'line': True,
'op': 'gt',
'value': 5,
'yaxis': 'left'
},
{
'colorMode': 'critical',
'fill': False,
'line': True,
'op': 'gt',
'value': 15,
'yaxis': 'left'
}
],
'timeRegions': [],
'title': 'nginx timing',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 's',
'label': 'request time',
'logBase': 1,
'max': None,
'min': 0,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
],
}

View file

@ -0,0 +1,126 @@
def dashboard_row_postfix(panel_id, node):
queries = []
for measurement in [
'active',
'corrupt',
'deferred',
'hold',
'incoming',
]:
queries.append({
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "postfix_queue" and
r["_field"] == "{measurement}" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "{measurement}")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
})
return {
'title': 'postfix',
'collapse': False,
'editable': False,
'height': '200px',
'panels': [
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 12,
'stack': True,
'steppedLine': False,
'targets': queries,
'thresholds': [],
'timeRegions': [],
'title': 'postfix queue',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
],
}

View file

@ -0,0 +1,606 @@
def dashboard_row_postgresql(panel_id, node):
queries_transactions = []
queries_rows = []
queries_conflicts = []
queries_blocks = []
queries_buffers = []
for measurement in [
'commit',
'rollback',
]:
queries_transactions.append({
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "postgresql" and
r["_field"] == "xact_{measurement}" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_field: "{measurement}"
}})
)
|> derivative(unit: 1s)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "{measurement}")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
})
for measurement in [
'deleted',
'fetched',
'inserted',
'returned',
'updated',
]:
queries_rows.append({
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "postgresql" and
r["_field"] == "tup_{measurement}" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_field: "{measurement}"
}})
)
|> derivative(unit: 1s)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "{measurement}")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
})
for measurement in [
'conflicts',
'deadlocks',
]:
queries_conflicts.append({
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "postgresql" and
r["_field"] == "{measurement}" and
r["host"] == "{node.name}"
)
|> derivative(unit: 1s)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "{measurement}")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
})
for measurement in [
'read',
'hit',
]:
queries_blocks.append({
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "postgresql" and
r["_field"] == "blks_{measurement}" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_field: "{measurement}"
}})
)
|> derivative(unit: 1s)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "{measurement}")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
})
for measurement, alias in {
'alloc': 'allocated',
'backend': 'written by backend',
'backend_fsync': 'fsync by backend',
'checkpoint': 'written during checkpoints',
'clean': 'written by background writer',
}.items():
queries_buffers.append({
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "postgresql" and
r["_field"] == "buffers_{measurement}" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_field: "{alias}"
}})
)
|> derivative(unit: 1s)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "{measurement}")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
})
return {
'title': 'postgresql',
'collapse': False,
'editable': False,
'height': '200px',
'panels': [
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name} ${__field.labels.db}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': True,
'steppedLine': False,
'targets': queries_transactions,
'thresholds': [],
'timeRegions': [],
'title': 'postgresql transactions per second',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name} ${__field.labels.db}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': True,
'steppedLine': False,
'targets': queries_rows,
'thresholds': [],
'timeRegions': [],
'title': 'postgresql rows per second',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name} ${__field.labels.db}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 4,
'stack': True,
'steppedLine': False,
'targets': queries_conflicts,
'thresholds': [],
'timeRegions': [],
'title': 'postgresql conflicts/deadlocks',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name} ${__field.labels.db}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 4,
'stack': True,
'steppedLine': False,
'targets': queries_blocks,
'thresholds': [],
'timeRegions': [],
'title': 'postgresql blocks read per second',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 4,
'stack': True,
'steppedLine': False,
'targets': queries_buffers,
'thresholds': [],
'timeRegions': [],
'title': 'postgresql buffers',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
],
}

View file

@ -0,0 +1,248 @@
def dashboard_row_rspamd(panel_id, node):
return {
'title': 'rspamd',
'collapse': False,
'editable': False,
'height': '250px',
'panels': [
{
'aliasColors': {},
'bars': True,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': False,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': True,
'steppedLine': False,
'targets': [{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "rspamd_actions" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> derivative(unit: 1m, nonNegative: true)
|> yield(name: "value")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
}],
'thresholds': [],
'timeRegions': [],
'title': 'rspamd actions',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "rspamd_stats" and
r["_field"] == "scanned" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> derivative(unit: 1m, nonNegative: true)
|> yield(name: "avg")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "rspamd_stats" and
r["_field"] == "learned" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> derivative(unit: 1m, nonNegative: true)
|> yield(name: "mean")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'rspamd scanned/learned',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
],
}

View file

@ -0,0 +1,228 @@
def dashboard_row_sensors(panel_id, node):
return {
'title': 'sensors',
'collapse': False,
'editable': False,
'height': '250px',
'panels': [
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.labels.chip} ${__field.labels.feature}'
},
'overrides': []
},
'fill': 0,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'hideEmpty': True,
'hideZero': True,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 8,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "sensors" and
r["_field"] == "temp_input" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "cpu")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'temperatures',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'celsius',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.labels.chip} ${__field.labels.feature}'
},
'overrides': []
},
'fill': 0,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'hideEmpty': True,
'hideZero': True,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 4,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "sensors" and
r["_field"] == "fan_input" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "fan")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'fans',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'rotrpm',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
],
}

View file

@ -0,0 +1,118 @@
def dashboard_row_smartd(panel_id, node):
return {
'title': 'smartd',
'collapse': False,
'editable': False,
'height': '250px',
'panels': [
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.labels.device}'
},
'overrides': []
},
'fill': 0,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'hideEmpty': True,
'hideZero': True,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 12,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "smartd_stats" and
r["_field"] == "temperature" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "cpu")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'temperatures',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'celsius',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
],
}

View file

@ -0,0 +1,263 @@
def dashboard_row_unbound(panel_id, node):
return {
'title': 'unbound',
'collapse': False,
'editable': False,
'height': '250px',
'panels': [
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': False,
'steppedLine': False,
'targets': [{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "unbound" and
r["_field"] == "total_num_queries" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "total_num_queries")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
}],
'thresholds': [],
'timeRegions': [],
'title': 'unbound queries per second',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "unbound" and
r["_field"] == "total_recursion_time_avg" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "avg")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "unbound" and
r["_field"] == "total_recursion_time_mean" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "mean")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [
{
'colorMode': 'warning',
'fill': True,
'line': True,
'op': 'gt',
'value': 1,
'yaxis': 'left'
},
{
'colorMode': 'critical',
'fill': True,
'line': True,
'op': 'gt',
'value': 5,
'yaxis': 'left'
}
],
'timeRegions': [],
'title': 'unbound recursion time',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 's',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
],
}

View file

@ -0,0 +1,258 @@
def dashboard_row_wireguard(panel_id, node):
return {
'title': 'wireguard',
'collapse': False,
'editable': False,
'height': '250px',
'panels': [
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.labels.public_key}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': False,
'steppedLine': False,
'targets': [{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "wireguard_peer" and
r["_field"] == "last_handshake_time_ns" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_value: r._value / 1000000000
}})
)
|> derivative(unit: 1s, nonNegative: true)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "last_handshake_time_ns")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
}],
'thresholds': [],
'timeRegions': [],
'title': 'wireguard last handshake time',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 's',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': True,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name} ${__field.labels.public_key}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "wireguard_peer" and
r["_field"] == "rx_bytes" and
r["host"] == "{node.name}"
)
|> derivative(unit: 1s)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "in")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "wireguard_peer" and
r["_field"] == "tx_bytes" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_value: r._value * -1
}})
)
|> derivative(unit: 1s)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "out")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'wireguard traffic',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'binBps',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
],
}

View file

@ -0,0 +1,724 @@
def dashboard_row_zfs(panel_id, node):
return {
'title': 'zfs',
'collapse': False,
'editable': False,
'height': '250px',
'panels': [
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 4,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "zfs" and
r["_field"] == "arcstats_c" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_field: "target"
}})
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "target")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "zfs" and
r["_field"] == "arcstats_size" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_field: "used"
}})
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "used")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'zfs arc usage',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'bytes',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 4,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "zfs" and
r["_field"] == "arcstats_l2_size" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_field: "used"
}})
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "used")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'zfs l2arc usage',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'bytes',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 4,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "zfs" and
r["_field"] == "arcstats_hits" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_field: "hits"
}})
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> derivative(unit: 1s, nonNegative: true)
|> yield(name: "misses")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "zfs" and
r["_field"] == "arcstats_misses" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_field: "misses"
}})
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> derivative(unit: 1s, nonNegative: true)
|> yield(name: "misses")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "zfs" and
r["_field"] == "arcstats_l2_hits" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_field: "l2hits"
}})
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> derivative(unit: 1s, nonNegative: true)
|> yield(name: "misses")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "zfs" and
r["_field"] == "arcstats_l2_misses" and
r["host"] == "{node.name}"
)
|> map(fn: (r) => ({{
r with
_field: "l2misses"
}})
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> derivative(unit: 1s, nonNegative: true)
|> yield(name: "misses")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'zfs arc hits/misses',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.labels.dataset} ${__field.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': True,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "zfs_dataset" and
r["_field"] == "used" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "used")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "zfs_dataset" and
r["_field"] == "usedsnap" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "usedsnap")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'zfs usage per dataset',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'bytes',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
{
'aliasColors': {},
'bars': False,
'dashLength': 10,
'dashes': False,
'datasource': None,
'fieldConfig': {
'defaults': {
'displayName': '${__field.labels.pool} ${__field.name}'
},
'overrides': []
},
'fill': 1,
'fillGradient': 0,
'hiddenSeries': False,
'id': next(panel_id),
'legend': {
'alignAsTable': False,
'avg': False,
'current': False,
'max': False,
'min': False,
'rightSide': False,
'show': True,
'total': False,
'values': False
},
'lines': True,
'linewidth': 1,
'NonePointMode': 'None',
'options': {
'alertThreshold': True
},
'percentage': False,
'pluginVersion': '7.5.5',
'pointradius': 2,
'points': False,
'renderer': 'flot',
'seriesOverrides': [],
'spaceLength': 10,
'span': 6,
'stack': False,
'steppedLine': False,
'targets': [
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "zfs_pool" and
r["_field"] == "used" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "used")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
{
'groupBy': [
{'type': 'time', 'params': ['$__interval']},
{'type': 'fill', 'params': ['linear']},
],
'orderByTime': "ASC",
'policy': "default",
'query': f"""from(bucket: "telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) =>
r["_measurement"] == "zfs_pool" and
r["_field"] == "size" and
r["host"] == "{node.name}"
)
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "size")""",
'resultFormat': 'time_series',
'select': [[
{'type': 'field', 'params': ['value']},
{'type': 'mean', 'params': []},
]],
"tags": []
},
],
'thresholds': [],
'timeRegions': [],
'title': 'zfs usage per pool',
'tooltip': {
'shared': True,
'sort': 0,
'value_type': 'individual'
},
'type': 'graph',
'xaxis': {
'buckets': None,
'mode': 'time',
'name': None,
'show': True,
'values': []
},
'yaxes': [
{
'format': 'bytes',
'label': None,
'logBase': 1,
'max': None,
'min': 0,
'show': True,
'decimals': 0,
},
{
'format': 'short',
'label': None,
'logBase': 1,
'max': None,
'min': None,
'show': False,
}
],
'yaxis': {
'align': False,
'alignLevel': None
}
},
],
}

View file

@ -0,0 +1,15 @@
apiVersion: 1
providers:
- name: 'managed by bundlewrap'
orgId: 1
folder: 'Managed by BundleWrap'
folderUid: '222af3a08b'
type: file
disableDeletion: false
updateIntervalSeconds: 10
allowUiUpdates: false
options:
path: /var/lib/grafana/dashboards
foldersFromFilesStructure: false

View file

@ -0,0 +1,102 @@
app_mode = production
instance_name = ${node.name}
[paths]
data = /var/lib/grafana
;temp_data_lifetime = 24h
logs = /var/log/grafana
plugins = /var/lib/grafana/plugins
provisioning = /etc/grafana/provisioning
[server]
protocol = http
http_port = 21010
domain = ${domain}
root_url = https://${domain}/
[database]
type = sqlite3
# for postgres
;host = 127.0.0.1:3306
;name = grafana
;user = root
;password =
;ssl_mode = disable
# for sqlite
;path = grafana.db
;cache_mode = private
[remote_cache]
type = database
[analytics]
reporting_enabled = false
check_for_updates = false
[security]
disable_initial_admin_creation = false
secret_key = ${secret_key}
disable_gravatar = true
cookie_secure = true
allow_embedding = ${str(allow_embedding).lower()}
[dashboards]
min_refresh_interval = 10s
[users]
allow_sign_up = ${str(allow_sign_up).lower()}
allow_org_create = false
auto_assign_org = false
verify_email_enabled = true
default_theme = dark
viewers_can_edit = false
editors_can_admin = false
[auth]
login_maximum_inactive_lifetime_duration = ${login_max_duration}
login_maximum_lifetime_duration = ${login_max_duration}
[auth.anonymous]
enabled = ${str(allow_anonymous).lower()}
org_name = ${anonymous_org}
org_role = Viewer
[smtp]
enabled = ${str(enable_smtp).lower()}
host = localhost:25
from_address = noreply@${domain}
from_name = Grafana
[emails]
welcome_email_on_sign_up = false
templates_pattern = emails/*.html
[log]
mode = console
[alerting]
enabled = false
[explore]
enabled = true
[plugins]
enable_alpha = true
[date_formats]
full_date = YYYY-MM-DD HH:mm:ss
interval_second = HH:mm:ss
interval_minute = HH:mm
interval_hour = YYYY-MM-DD HH:mm
interval_day = YYYY-MM-DD
interval_month = YYYY-MM
interval_year = YYYY
default_timezone = browser
[expressions]
enabled = true
[metrics]
enabled = false

172
bundles/grafana/items.py Normal file
View file

@ -0,0 +1,172 @@
from itertools import count
from os import listdir
from os.path import isdir, isfile, join
from pathlib import Path
from uuid import UUID
from bundlewrap.metadata import metadata_to_json
for row in Path(join(repo.path, 'bundles', 'grafana', 'dashboard-rows')).rglob("*.py"):
with open(row, 'r') as f:
exec(f.read())
directories = {
# Don't ask me why these permissions are that weird. It's what the
# debian package sets them to after upgrades.
'/etc/grafana/provisioning/dashboards': {
'group': 'grafana',
'purge': True,
},
'/etc/grafana/provisioning/datasources': {
'group': 'grafana',
'purge': True,
},
'/etc/grafana/provisioning/notifiers': {
'group': 'grafana',
'purge': True,
},
'/etc/grafana/provisioning/plugins': {
'group': 'grafana',
'purge': True,
},
'/var/lib/grafana/dashboards': {
'owner': 'grafana',
'group': 'grafana',
'purge': True,
'triggers': {
'svc_systemd:grafana-server:restart',
},
},
}
files = {
'/etc/grafana/grafana.ini': {
'content_type': 'mako',
'context': node.metadata['grafana'],
'group': 'grafana',
'mode': '0640',
'triggers': {
'svc_systemd:grafana-server:restart',
},
},
'/etc/grafana/provisioning/dashboards/bundlewrap.yaml': {
'source': 'dashboards.yaml',
'group': 'grafana',
'mode': '0640',
'triggers': {
'svc_systemd:grafana-server:restart',
},
},
}
svc_systemd = {
'grafana-server': {
'needs': {
'file:/etc/grafana/grafana.ini',
'pkg_apt:grafana',
},
},
}
### dashboard management starts here
for rnode in repo.nodes:
if not rnode.has_bundle('telegraf'):
continue
panel_id = count(start=1)
dashboard = {
'title': rnode.name,
'uid': UUID(int=rnode.magic_number).hex[:10],
'editable': False,
'graphTooltip': 1,
'schemaVersion': 12,
'style': 'dark',
'tags': {'bw'},
'time': {
'from': 'now-1d',
'to': 'now'
},
'version': 1,
'rows': [
dashboard_row_cpu(panel_id, rnode),
dashboard_row_ip_traffic(panel_id, rnode),
dashboard_row_memory(panel_id, rnode),
],
}
if rnode.has_bundle('ipmitool'):
dashboard['rows'].append(dashboard_row_ipmitool(panel_id, rnode))
dashboard['tags'].add('ipmitool')
elif rnode.has_bundle('lm-sensors'):
dashboard['rows'].append(dashboard_row_sensors(panel_id, rnode))
dashboard['tags'].add('lm-sensors')
if rnode.has_bundle('smartd'):
dashboard['rows'].append(dashboard_row_smartd(panel_id, rnode))
dashboard['tags'].add('smartd')
if rnode.has_bundle('telegraf-battery-usage'):
dashboard['rows'].append(dashboard_row_battery(panel_id, rnode))
dashboard['rows'].append(dashboard_row_disk_space(panel_id, rnode))
dashboard['rows'].append(dashboard_row_disk_iops(panel_id, rnode))
if rnode.has_bundle('nginx'):
dashboard['rows'].append(dashboard_row_nginx(panel_id, rnode))
dashboard['tags'].add('nginx')
if rnode.has_bundle('postfix'):
dashboard['rows'].append(dashboard_row_postfix(panel_id, rnode))
dashboard['tags'].add('postfix')
if rnode.has_bundle('dovecot'):
dashboard['rows'].append(dashboard_row_dovecot(panel_id, rnode))
dashboard['tags'].add('dovecot')
if rnode.has_bundle('rspamd'):
dashboard['rows'].append(dashboard_row_rspamd(panel_id, rnode))
dashboard['tags'].add('rspamd')
if rnode.has_bundle('postgresql'):
dashboard['rows'].append(dashboard_row_postgresql(panel_id, rnode))
dashboard['tags'].add('postgresql')
if rnode.has_bundle('wireguard'):
dashboard['rows'].append(dashboard_row_wireguard(panel_id, rnode))
dashboard['tags'].add('wireguard')
if rnode.has_bundle('zfs'):
dashboard['rows'].append(dashboard_row_zfs(panel_id, rnode))
dashboard['tags'].add('zfs')
if rnode.has_bundle('unbound'):
dashboard['rows'].append(dashboard_row_unbound(panel_id, rnode))
dashboard['tags'].add('unbound')
files[f'/var/lib/grafana/dashboards/{rnode.name}.json'] = {
'owner': 'grafana',
'group': 'grafana',
# use metadata_to_json, because this supports sets
'content': metadata_to_json(dashboard),
'triggers': {
'svc_systemd:grafana-server:restart',
},
}
additional_path = join(repo.path, 'data', 'grafana', 'files', node.name, 'dashboards')
if isdir(additional_path):
for file in listdir(additional_path):
if not isfile(join(additional_path, file)) or file.startswith('.') or file.startswith('_'):
continue
files[f'/var/lib/grafana/dashboards/{file}'] = {
'owner': 'grafana',
'group': 'grafana',
'source': join(node.name, 'dashboards', file),
'triggers': {
'svc_systemd:grafana-server:restart',
},
}

Some files were not shown because too many files have changed in this diff Show more