Compare commits

..

2591 commits

Author SHA1 Message Date
c6421c7bd4
update travelynx to 2.8.39 2024-09-20 15:34:14 +02:00
95c5b28469
basic monitoring for proxmox-backupstorage 2024-09-20 15:34:12 +02:00
7dc0afe299 Merge pull request 'miniserver: element-web update' (#71) from updates into main
Reviewed-on: #71
2024-09-19 20:59:48 +00:00
9415b281ce
update travelynx to 2.8.38 2024-09-15 13:33:23 +02:00
64fb1906d1
htz-hel.backup-kunsi: move scrub to wednesday 2024-09-15 10:27:08 +02:00
ce76b03fe7
bundles/zfs: configurable scrub time 2024-09-15 10:26:51 +02:00
a712c098c6
update netbox to 4.1.1 2024-09-14 18:32:39 +02:00
ec834f2a92
update element-web to 1.11.77 2024-09-14 18:32:27 +02:00
aa30b78fcf
remove daisy 2024-09-14 18:29:55 +02:00
be3a7a44d6
home.nas: new ssd-based pool 2024-09-12 19:58:15 +02:00
2e72f107e9
update paperles to 2.12.0 2024-09-10 06:15:48 +02:00
07f6fb99f2
bundles/backup-server: more time for monitoring please 2024-09-10 06:14:55 +02:00
3f9f84f230
home.paperless: add proftpd for paperless ingest 2024-09-08 19:42:27 +02:00
40fcaf56ee
add home.fujitsu-n7100 2024-09-08 19:42:15 +02:00
06a94d7cba
home.nas: clean up nodefile 2024-09-08 17:19:13 +02:00
6483f863ff
bundles/rsyslogd: add backups 2024-09-08 17:19:03 +02:00
3a52cf55c4
remove bundle:scansnap 2024-09-08 17:17:25 +02:00
455c5c5ce5
update as3320 and as8881 2024-09-07 13:01:37 +02:00
5e55dc6fb9
update forgejo to 8.0.3 2024-09-07 09:09:03 +02:00
d5881da154
fix sophie backup locations 2024-09-07 09:07:40 +02:00
Sophie Schiller
121a261ecd miniserver: actually use signing key 2024-09-04 23:06:23 +02:00
Sophie Schiller
b9216f230b matrix-media-repo: extend rate limits 2024-09-04 23:06:07 +02:00
Sophie Schiller
497d4fff30 miniserver: element-web update 2024-09-04 21:25:50 +02:00
9f1dc01d6b
bundles/arch-with-gui: s/rfkill/util-linux/ 2024-09-04 20:02:18 +02:00
a7baf225ff
kunsi-p14s: s/ferdi/ferdium/ 2024-09-04 20:00:54 +02:00
331d363a45
bump _.home.kunbox.net 2024-09-04 19:04:47 +02:00
3f02f7b8f5
bundles/icinga2: ignore lines starting with ;; in check_spam_blocklist 2024-09-04 18:56:48 +02:00
b73ac2b7ce
update paperless to 2.11.6 2024-09-04 18:54:18 +02:00
41b76aec9c
update forgejo to 8.0.2 2024-09-04 18:52:10 +02:00
2b5a76ffb0
update netbox to 4.1.0 2024-09-04 18:50:58 +02:00
319dc8ad21
icinga: fix logic error, do not send sms for service problems 2024-09-03 21:09:17 +02:00
bfbbffe22c
home.r630: allow forwarding traffic
So i can actually reach the docker containers running on there
2024-08-31 19:12:05 +02:00
23fb2aba1c
home.nas: add br1139 2024-08-31 13:14:24 +02:00
3d86923e9e
update travelynx to 2.8.35 2024-08-28 15:42:07 +02:00
2fbf122660
update netbox to 4.0.9 2024-08-28 15:41:54 +02:00
4234070514
update element-web to 1.11.76 2024-08-28 15:41:39 +02:00
13bae5c993
bundles/samba: fix typo 2024-08-23 19:47:19 +02:00
aff1329122
add rottenraptor devices 2024-08-23 19:43:27 +02:00
82aeeb585d
add samba share for music on nas 2024-08-23 19:43:04 +02:00
e8983829ed
bundles/infobeamer-monitor: fix maintenance warnings 2024-08-16 14:35:33 +02:00
10b1fb8a5b
remove legacy nodes 2024-08-12 19:39:57 +02:00
c66bc8b5eb
add home.{appletv-wohnzimmer,encoder96} 2024-08-12 19:36:32 +02:00
422303ee5b update pretalx to 2024.2.1 2024-08-10 19:14:57 +02:00
c48e11d787 update paperless to 2.11.4 2024-08-10 19:14:57 +02:00
a8678fc01b update netbox to 4.0.8 2024-08-10 19:14:57 +02:00
6fe0598032 update matrix-media-repo to 1.3.7 2024-08-10 19:14:57 +02:00
6fb8d81159 carlene: fix network config
Apparently, the DC technicians are unable to plug in a server into the
correct network ports after changing disks ...
2024-08-10 19:14:57 +02:00
e4eb00bdbe update forgejo to 8.0.1 2024-08-10 19:14:57 +02:00
94e56fd92d update element-web to 1.11.73 2024-08-10 19:14:57 +02:00
01a8d7a6db add bundle:sdm630_mqtt 2024-08-10 19:14:57 +02:00
f0ebed5dba bundles/sshmon: yet another letsencrypt hash 2024-08-10 19:14:57 +02:00
30cf20c28d bundles/c3voc-addons: add action:apt_execute_update_commands 2024-08-10 19:14:57 +02:00
5af7b92663 bw/data/apt: grafana changed their gpg key 2024-08-10 19:14:57 +02:00
5a1e37a41c bundles/systemd-networkd: remove networkmanager 2024-08-10 19:14:57 +02:00
a1eb9cb3fc bundles/telegraf: add option to opt-out of default metrics 2024-08-10 19:14:57 +02:00
6854bd55ff Merge pull request 'update-miniserver' (#70) from update-miniserver into main
Reviewed-on: #70
2024-08-09 01:00:17 +00:00
Sophie Schiller
fb70a068d8 nodejs: deb-src no longer available 2024-08-09 02:59:52 +02:00
Sophie Schiller
6fa3abc217 hedgedoc: fix install needs 2024-08-09 02:59:52 +02:00
Sophie Schiller
7fd248af8d version bumps on miniserver 2024-08-09 02:59:52 +02:00
98d2bb3942 Merge pull request 'vmhost: document interface change' (#69) from vmhostumzug into main
Reviewed-on: #69
2024-08-09 00:58:34 +00:00
Sophie Schiller
89000c12e6 vmhost: document interface change 2024-08-09 00:56:40 +00:00
fa47322bb0
bundles/raspberrypi: fix config.txt for lcd display 2024-07-31 15:30:48 +02:00
de6073bdcf
bundles/apt: add option to disable unattended upgrades 2024-07-31 14:53:22 +02:00
7649396b8a
bundles/mosquitto: only install telegraf plugin if we have telegraf 2024-07-30 17:55:03 +02:00
b1790ece35
bundles/apt: 32bit raspbian is no longer supported 2024-07-30 17:45:05 +02:00
242279636f
bundles/raspberrypi: things have changed since buster 2024-07-30 17:44:09 +02:00
95bb7c52fe
bundles/apt: add bissing default for update commands 2024-07-22 21:31:27 +02:00
2a8c1ef84b
update mautrix-whatsapp to 0.10.9 2024-07-19 19:22:05 +02:00
c1fc942b1d
update mautrix-telegram to 0.15.2 2024-07-19 19:21:50 +02:00
c4bf96482f
update element-web to 1.11.71 2024-07-19 19:21:37 +02:00
69691f75c5
data/apt: new gpg key for nodesource 2024-07-19 19:20:40 +02:00
263440296d
bundles: no default for nodejs version anymore 2024-07-19 19:20:23 +02:00
55a3e6675f
bundles/nodejs: everything changed, AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 2024-07-19 19:19:45 +02:00
350c436e4d
bundles/apt: add action to execute additional_update_commands 2024-07-19 19:19:14 +02:00
205fea377a
update paperless to 2.11.0 2024-07-12 19:06:55 +02:00
fb46d81f97
update netbox to 4.0.7 2024-07-12 19:06:43 +02:00
466a620bca
update element-web to 1.11.70 2024-07-12 19:06:28 +02:00
04094df418
update matrix-media-repo to 1.3.6 2024-07-12 18:46:10 +02:00
c348953611
bundles/sshmon: even more letsencrypt shenanigans 2024-07-12 18:45:43 +02:00
e4dfd17bb6
bundles/matrix-media-repo: has live config reload 2024-07-12 18:42:31 +02:00
08f2c46c31
bundles/matrix-synapse: media-repo needs more paths now 2024-07-12 18:39:09 +02:00
b2028855d1
bundles/sshmon: new issuer hash for letsencrypt 2024-07-12 18:24:27 +02:00
a472ca4657
bw/bundles/matrix-media-repo: adjust config for 1.3.6 2024-07-12 18:20:53 +02:00
d08e9f12ab
add icinga_options.also_affected_by to systems running in vm on home.nas 2024-07-12 18:13:43 +02:00
2fddd57ed8
bundles/backup-client: only log to logfile when not running in debug mode 2024-07-07 10:23:20 +02:00
5a86e657ff
bundles/mixcloud-downloader: add login via netrc 2024-07-07 10:22:26 +02:00
52b68d6e42
home.nas: clean up smartd config 2024-07-06 10:59:46 +02:00
fbe2197055
add home.r630 2024-07-06 10:56:13 +02:00
ced6479b8e
home.nas: clean up zfs datasets 2024-07-06 09:49:22 +02:00
6e677a7a0b
update paperless-ngx to 2.10.2 2024-07-06 09:45:41 +02:00
c0b3db55ec
update travelynx to 2.7.7 2024-07-06 09:45:18 +02:00
fc4aaf4abb
update netbox to 4.0.6 2024-07-06 09:44:57 +02:00
ce44926920
update forgejo to 7.0.5 2024-07-06 09:44:41 +02:00
4736e3b281
update travelynx to 2.7.6 2024-07-04 11:43:43 +02:00
b3ab18a32c
bundles/nginx: don't cache stuff when running through php 2024-07-01 17:17:30 +02:00
79bb4169a7
ns-mephisto: new ip config 2024-07-01 11:34:36 +02:00
101928339f
bundles/powerdns: fix SyntaxWarning 2024-06-26 07:11:44 +02:00
67198c5fd9
bundles/grafana: needs websockets 2024-06-25 17:32:24 +02:00
791eb8d1a9
bump netbox-dump 2024-06-25 17:10:32 +02:00
0ce0e34382 Merge pull request 'sophiesheomenetwork' (#68) from sophiesheomenetwork into main
Reviewed-on: #68
2024-06-23 12:54:01 +00:00
668ae0432b
htz-hel.backup-kunsi: remove backup target for kunsi-t470 2024-06-23 14:52:09 +02:00
b72d82b894
bundles/routeros: this does not need to be a metadata reactor 2024-06-22 20:39:04 +02:00
d1f182607d
rework netbox-dump script and routeros bundle for better usability 2024-06-22 20:04:51 +02:00
Sophie Schiller
9be31b8850 homeassistant: use correct network interface 2024-06-22 00:51:33 +02:00
Sophie Schiller
182cdada22 homeassistant metadata reshuffle 2024-06-21 21:25:48 +02:00
Sophie Schiller
2c51caa524 update nginx signing key 2024-06-21 20:58:17 +02:00
Sophie Schiller
263301b265 add homeassistant in sophies home 2024-06-21 20:32:06 +02:00
Sophie Schiller
2f4b90c147 miniserver: element update 2024-06-21 19:32:43 +02:00
Sophie Schiller
e5c5672554 add vmhost for sophies home 2024-06-21 19:32:28 +02:00
c47b412cf3
update forgejo to 7.0.4 2024-06-18 20:43:55 +02:00
cda7e3b7fd
update paperless to 2.10.0 2024-06-18 20:43:41 +02:00
e876d39002
update netbox to 4.0.5 2024-06-18 20:43:25 +02:00
b9583d9a64
update element-web to 1.11.69 2024-06-18 20:43:10 +02:00
60a0737187
bundles/jellyfin: fix firewall defaults 2024-06-18 20:40:09 +02:00
52c093427f
ssl: bump _.home.kunbox.net 2024-06-11 17:42:43 +02:00
Sophie Schiller
658acbd12b rechenmonster: add dataset 2024-06-09 10:21:08 +02:00
56df06e981
clean up some nodefiles 2024-06-08 18:50:55 +02:00
d1e28c3f0c
sophie gets her own group 2024-06-08 18:46:51 +02:00
Sophie Schiller
1c2127437c voc.infobeamer-cms: gpn22 2024-05-30 21:44:07 +02:00
Sophie Schiller
768ae0a37a htz-cloud.miniserver: backlinks to social media 2024-05-29 00:02:29 +02:00
bebc603c43
update paperless-ngx to 2.8.6 2024-05-24 17:07:21 +02:00
43fe831395
update netbox to 4.0.3 2024-05-24 17:07:10 +02:00
5b8784e916
update forgejo to 7.0.3 2024-05-24 17:06:53 +02:00
ea21e4b119
update element-web to 1.11.67 2024-05-24 17:06:38 +02:00
a6c1d67b55
remove entropia-jira 2024-05-24 17:03:18 +02:00
a8ef19f4ff
bundles/icinga2: add check_omm 2024-05-24 15:26:35 +02:00
8c42c9411a
bundles/postfix: fix typo 2024-05-24 15:24:14 +02:00
1dce906b3d
bundles/netbox: reindex must be lazy 2024-05-12 19:46:07 +02:00
5c1ff593e1
carlene: add kunsitracker.de 2024-05-12 19:43:07 +02:00
fd1cbcfd50
update paperless to 2.8.3 2024-05-12 19:42:54 +02:00
799f275e4e
update netbox to 4.0.1 2024-05-12 19:42:42 +02:00
cf82ed5dd3
update element-web to 1.11.66 2024-05-12 19:42:24 +02:00
88fce3405e
bundles/netbox: fix f-string 2024-05-12 19:42:04 +02:00
a17833698d
bundles/apt: run autoremove first, then clean cached packages 2024-05-12 19:36:31 +02:00
c806d7b890
bundles/netbox: rework 2024-05-05 16:49:42 +02:00
a8da2aef44
update netbox to 3.7.7 2024-05-05 16:18:27 +02:00
cc9c127296
update forgejo to 7.0.2 2024-05-05 16:18:13 +02:00
35331f5f4c
update ssl configuration of some bundles 2024-05-05 15:49:45 +02:00
dd32ed075b
remove kunsi-p14s 2024-05-04 10:18:18 +02:00
c9b393c6dc
update travelynx to 2.6.9 2024-04-28 21:40:46 +02:00
9e78b9e07b
python3.12 compat 2024-04-28 21:40:35 +02:00
65af9ae0c5
update netbox to 3.7.6 2024-04-28 20:57:44 +02:00
516a543719
update forgejo to 7.0.1 2024-04-28 20:57:31 +02:00
dbf17424d2
update element-web to 1.11.65 2024-04-28 20:57:14 +02:00
09e59af95f
bundles/nginx: listen ... http2; is deprecated 2024-04-24 23:04:06 +02:00
610c1d0978
update forgejo to 1.21.11-1 2024-04-20 18:35:00 +02:00
0bfcd8df45
update travelynx to 2.6.7 2024-04-20 18:31:44 +02:00
27cb0cb0df
update mautrix-whatsapp to 0.10.7 2024-04-20 18:31:30 +02:00
d02d26cb5e
update forgejo to 1.21.11-1 2024-04-20 18:31:13 +02:00
bbc69dfd25
bundles/icinga2: re-add statusmonitor 2024-04-20 18:30:39 +02:00
e64ae3aef7
bundles/icinga2: run check_mounts check as well 2024-04-17 06:42:58 +02:00
1ec545e080
update element-web to 1.11.64 2024-04-17 06:33:37 +02:00
7491ec840c
bundles/dovecot: add full text indexing 2024-04-14 12:17:44 +02:00
a155fe22cb
Revert "home.router: disable pppd restart at night"
This reverts commit 493dc91e0d.
2024-04-14 10:09:08 +02:00
0f9222424e
dns/kunbox.net: add htz-cloud.pirmasens to SPF 2024-04-13 11:05:18 +02:00
6be9fb3614
bundles/pacman: 'dnsutils' is now part of 'bind' 2024-04-09 06:09:03 +02:00
ab61444a1f
bundles/letsencrypt: do not monitor renew timer 2024-04-09 06:06:29 +02:00
f8b833720a
bundles/systemd-timers: better exclude_from_monitoring support 2024-04-09 06:06:02 +02:00
33ae4796d4
update paperless to 2.7.2 2024-04-09 06:03:11 +02:00
8f09170b44
update travelynx to 2.6.5 2024-04-09 06:01:01 +02:00
a6e7359ec0
update netbox to 3.7.5 2024-04-09 06:00:42 +02:00
128ac48fd6
update forgejo to 1.21.10-0 2024-04-09 06:00:23 +02:00
4a44ae1048
kunbox.net: fix tlsrpt address 2024-04-09 06:00:05 +02:00
ed05a74f56
update travelynx to 2.6.4 2024-04-03 17:27:40 +02:00
896781e53d
update travelynx to 2.6.3 2024-04-02 21:54:31 +02:00
c0c83338ad
bundles/icinga2: do not send out URGENT for recovery messages 2024-04-02 15:06:52 +02:00
b028c20758
update element-web to 1.11.63 2024-03-31 13:47:53 +02:00
efeee3fa62
update travelynx to 2.5.23 2024-03-31 13:47:15 +02:00
139d5ff948
htz-cloud.wireguard: actually allow wg.c3voc.de to connect 2024-03-31 12:45:26 +02:00
df8955fa35
bundles/infobeamer-monitor: better state dump output 2024-03-25 14:54:59 +01:00
713f7e02d8
update forgejo to 1.21.8-0 2024-03-24 09:06:48 +01:00
272bccf42d
update paperless-ngx to 2.6.3 2024-03-23 12:19:24 +01:00
a3d582c2c5
update travelynx to 2.5.21 2024-03-23 12:19:10 +01:00
cad026c1ef
update mautrix-whatsapp to 0.10.6 2024-03-23 12:18:49 +01:00
a027faa8ca
fix tests 2024-03-23 10:35:02 +01:00
773e8d118f
add repo.libs.faults.dict_as_toml 2024-03-23 10:34:41 +01:00
1d5bcf74c0
remove bundle:openvpn-client 2024-03-23 10:27:30 +01:00
9b4a473236
htz-cloud.wireguard: add c3voc vpn connection 2024-03-23 10:19:56 +01:00
aa0d4e5a76
kunsi-p14s: set correct ip 2024-03-23 10:19:35 +01:00
e6f6229b87
bundles/wireguard: do not generate PSKs for unmanaged nodes 2024-03-23 10:19:15 +01:00
104d1f11bf
bundles/wireguard: support s2s connection to other services 2024-03-22 22:52:12 +01:00
ae14265abc
bundles/matrix-synapse: add sliding-sync proxy 2024-03-17 18:40:28 +01:00
a4e51c5d54
home.router: remove dns search domain 2024-03-16 14:49:28 +01:00
6296ab583d
add node attribute for all hosts that don't use letsencrypt ssl certs 2024-03-16 11:04:49 +01:00
f5b87d995b
bump _.home.kunbox.net 2024-03-16 11:01:56 +01:00
abb408c907
carlene: ensure kunsi can write to the franzi.business vhost 2024-03-16 10:51:56 +01:00
bd0cb5e1b4
update element-web to 1.11.61 2024-03-16 10:49:04 +01:00
4c5167fefa
update paperless-ngx to 2.6.2 2024-03-16 10:48:26 +01:00
a344bde87d
update netbox to 3.7.4 2024-03-16 10:48:05 +01:00
1573bdc384
update forgejo to 1.21.7-0 2024-03-16 10:47:37 +01:00
4d92211862
home.hass: use pyenv for homeassistant 2024-03-07 08:23:04 +01:00
ac10630fb9
add bundle:pyenv 2024-03-07 08:15:23 +01:00
6b387c9d11
add dummy htz-cloud.molly-connector 2024-03-06 23:02:18 +01:00
0d362bdb22
EOL htz-cloud.sewfile 2024-03-06 20:06:42 +01:00
e386b44442
bundles/paperless: PLEASE just import my files 2024-03-04 21:23:19 +01:00
dd80579fae
bundles/paperless: add missing dependency 2024-03-04 21:23:00 +01:00
faa30962aa
bundles/paperless: restart please 2024-03-04 21:20:39 +01:00
232e087905
bundles/paperless: please, just import documents 2024-03-04 21:02:19 +01:00
e3d7cae251
net.ipv4.ip_forward -> net.ipv4.conf.all.forwarding 2024-03-03 15:44:31 +01:00
0fa9ef91ae
kunsi-p14s: add dataset for nextcloud client 2024-03-03 13:16:53 +01:00
f5a1a50472
carlene: add sewfile zfs dataset 2024-03-03 12:47:24 +01:00
8d8f457468
bundles/nginx: add mjs to mime types 2024-03-03 12:44:41 +01:00
ffc9c1651c
fix some leftover ULA addressing 2024-02-29 07:40:36 +01:00
b34879d0ca
update element-web to 1.11.59 2024-02-29 07:40:19 +01:00
32e67ff5ec
update paperless to 2.5.4 2024-02-29 07:39:05 +01:00
409a1c900a
remove ULA from remaining home nodes 2024-02-26 19:56:23 +01:00
3749be6144
home.router: remove ipv6-only vlan 2024-02-26 19:54:59 +01:00
c5550bf552
bundles/unbound: add option to disable dns64 even when jool is installed 2024-02-26 19:26:01 +01:00
699c7acf93
bundles/radvd: increase intervals again 2024-02-26 19:25:43 +01:00
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
661d8895dc
home.{downloadhelper,paperless}: add ipv6 unique local addresses 2024-02-26 07:49:02 +01:00
a045e701a6
home.router: add bundle:jool, fix dns 2024-02-26 07:30:50 +01:00
575fe91685
bundles/radvd: fix syntax 2024-02-26 07:27:25 +01:00
12c6b5fc54
add bundle:jool 2024-02-26 07:27:18 +01:00
4514541e8f
bundles/radvd: decrease RDNSS lifetime 2024-02-26 06:41:59 +01:00
0d0548311c
bundles/powerdns: add private ipv6 addresses as well 2024-02-26 06:34:30 +01:00
e73dcf16e3
change a bunch of nodes to use their ipv6 address as hostname 2024-02-26 06:34:23 +01:00
decbcf9bfd
Merge branch 'feature/kunsi-ipv6-only-vlan' 2024-02-26 06:04:58 +01:00
304ce8aa54
home.router: a bit more firewall rules 2024-02-25 20:56:13 +01:00
b89ba32f4c
home.router: allow forwarding for new vlan 2024-02-25 20:55:53 +01:00
7c9bb42c03
home.switch-rack: new vlan 2024-02-25 20:51:02 +01:00
9e59bb044a
nodes/home.*: add ipv6 site-local ip addressing and v6-only vlan 2024-02-25 20:50:25 +01:00
9c4d1c94a5
htz-cloud: fix routes for vpn 2024-02-25 19:14:13 +01:00
577a175bd0
update forgejo to 1.21.6-0 2024-02-25 19:04:55 +01:00
182be4e690
update netbox to 3.7.3 2024-02-25 19:02:23 +01:00
6bb72f4b27
update travelynx to 2.5.20 2024-02-25 19:01:53 +01:00
7d4624ce62
remove users/$user/is_admin metadata, directly write sudo_commands instead 2024-02-25 15:29:10 +01:00
02e25f89ff
home.nas: prepare for new NAS disks 2024-02-25 14:47:55 +01:00
c6552e8dd2
bundles/smartd: do not try to monitor encrypted devices 2024-02-25 14:45:47 +01:00
781264432a
kunsi-seibert-x1 -> fkusei-locutus 2024-02-20 16:41:58 +01:00
20b1e5dccc
voc.pretalx: update pretalx to 2024.1.0 2024-02-18 21:38:06 +01:00
281696d411
htz-cloud.afra: fedi.afra.berlin is gone 2024-02-18 21:23:31 +01:00
9df3e5539d
htz-cloud.pirmasens: use domain_aliases to redirect to main domain 2024-02-18 21:21:51 +01:00
b60fb4ff60
update travelynx to 2.5.17 2024-02-17 05:00:03 +01:00
26ee966bd6
bundles/paperless: fix config for static directory 2024-02-17 04:45:54 +01:00
72f756a686
update paperless-ngx to 2.5.3 2024-02-17 04:37:38 +01:00
898ebe4d6b
update element-web to 1.11.58 2024-02-17 04:37:16 +01:00
012726a2ce
bundles/paperless: ensure we run collectstatic and restart services 2024-02-17 04:36:39 +01:00
297726f297
bundles/backup-client: don't monitor backups for nodes which have exclude_from_monitoring 2024-02-13 14:24:27 +01:00
ac7f73588d
update paperless-ngx to 2.5.1 2024-02-13 14:18:45 +01:00
8c4611452e
htz-hel.backup-sophie: allow sophie to access 2024-02-13 14:18:30 +01:00
418015b484
update matrix-media-repo to 1.3.4 2024-02-13 14:14:34 +01:00
698f203936
bundles/nginx: add option to not redirect domain aliases 2024-02-13 14:01:40 +01:00
050931edf2
bundles/nginx: redirect domain_aliases to primary domain 2024-02-13 13:57:53 +01:00
fa375d0d69
carlene: keep git.kunsmann.eu alias around 2024-02-13 13:47:55 +01:00
8f28781572
update travelynx to 2.5.16 2024-02-09 21:02:38 +01:00
2ca460269e
update netbox to 3.7.2 2024-02-09 21:02:02 +01:00
c934bc45aa
update forgejo to 1.21.5-0 2024-02-04 17:40:06 +01:00
e2ed513169
update powerdnsadmin to 0.4.2 2024-02-04 17:27:05 +01:00
512454a949
update paperless-ngx to 2.4.3 2024-02-04 17:26:52 +01:00
80ca8b7e50
update element-web to 1.11.57 2024-02-04 17:26:33 +01:00
8df380357e
update travelynx to 2.5.15 2024-02-04 17:26:13 +01:00
dcb9db3639
bundles/users: source users bashrc after loading global bashrc instead of overwriting it 2024-02-04 17:25:17 +01:00
c02a1f2a90
clean up some users 2024-02-03 19:12:53 +01:00
643151c052
add home.wled-raketenlaemp 2024-01-30 21:02:23 +01:00
a3cc5a9347
bundles/kea-dhcp-server: add kea-lease-list script 2024-01-30 21:01:20 +01:00
e3b63a99c2
carlene: add some mail addresses to blocked 2024-01-23 09:31:02 +01:00
980f4cb41a
bundles/nftables: add "globally blocked ips" 2024-01-23 09:30:41 +01:00
5ffbe50b1e
add bundle:telegraf_airgradient 2024-01-23 09:30:13 +01:00
bb56f0fb9a
bundles/nftables: add feature to block ips 2024-01-21 11:44:13 +01:00
ee58509e93
bundles/postfix: add feature to block email recipients 2024-01-21 11:43:43 +01:00
57c76e5eba
update travelynx to 2.5.11 2024-01-21 11:18:33 +01:00
fa8d05fc74
bundles/mixcloud-downloader: add elisa 2024-01-21 11:17:05 +01:00
8fa488e411
bundles/icinga2: only send sms for HOST alerts 2024-01-21 11:16:46 +01:00
28d4839822
update paperless to 2.4.0 2024-01-20 10:58:46 +01:00
ec183da69b
update netbox to 3.7.1 2024-01-20 10:58:32 +01:00
87e30e84fa
update forgejo to 1.12.4-0 2024-01-20 10:58:12 +01:00
44baf7cbf9
update element-web to 1.11.55 2024-01-20 10:57:56 +01:00
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
70127f797b
home.kodi-wohnzimmer: set dummy/exclude_from_monitoring 2024-01-13 14:13:08 +01:00
17334a8e3e
update paperless-ngx to 2.3.3 2024-01-13 14:13:05 +01:00
edc95ac2ab
update travelynx to 2.5.10 2024-01-13 14:13:03 +01:00
58d978292a
update element-web to 1.11.53 2024-01-13 14:13:01 +01:00
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
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
d5491648f2
bundles/mixcloud-downloader: download zotanmew sets 2024-01-03 22:25:59 +01:00
bc63ef97ab
bundles/arch-with-gui: install pipewire-zeroconf 2024-01-03 15:11:05 +01:00
fabe11d5b2
update travelynx to 2.5.9 2024-01-03 14:16:25 +01:00
3bddab5f67
bundles/arch-with-gui: ensure we have avahi installed and running 2024-01-03 12:59:21 +01:00
7c70c600f4
bundles/infobeamer-monitor: only alert online devices once 2024-01-01 11:38:39 +01:00
dfadffd921
add home.lgtv-wohnzimmer 2024-01-01 10:15:56 +01:00
fa107dcc3f
update paperless-ngx to 2.2.1 2024-01-01 10:12:51 +01:00
a05a809131
update travelynx to 2.5.7 2024-01-01 10:12:38 +01:00
adba83feea
update netbox to 3.7.0 2024-01-01 10:12:24 +01:00
4889ea4d31
update mautrix-telegram to 0.15.1 2024-01-01 10:12:03 +01:00
46e00d6fc8
bundles/nodejs: only install nodesource packages if debian does not ship that version 2024-01-01 10:11:11 +01:00
a929f24977
bundles/infobeamer-cms: more and better information 2023-12-31 08:50:45 +01:00
ec1efaafcc
bundles/infobeamer-cms: move static files outside repo root 2023-12-29 08:19:33 +01:00
8dde3dba0b
home.downloadhelper: adjust home ip range 2023-12-28 11:32:44 +01:00
e33cc65cb1
bundles/infobeamer-monitor: only dump state if device is online 2023-12-27 14:55:15 +01:00
2e2e8cf7c0
voc.infobeamer-cms: device has changed 2023-12-27 12:15:42 +01:00
c5ea690621
bundles/infobeamer-cms: less security needed 2023-12-27 12:12:24 +01:00
14c01e3bf0
bundles/infobeamer-monitor: more alerts 2023-12-26 23:16:26 +01:00
9be370f8df
bundles/infobeamer-monitor: improve code a bit 2023-12-26 15:02:56 +01:00
b5475df467
voc.infobeamer-cms: add infobeamer-monitor 2023-12-26 14:50:24 +01:00
2670d60906
bundles/infobeamer-cms: new version requires new configs 2023-12-26 14:49:04 +01:00
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
d9f9690518
update travelynx to 2.5.4 2023-12-25 10:40:17 +01:00
2875bb7160
update element-web to 1.11.52 2023-12-25 10:28:43 +01:00
8331c04b51
update forgejo to 1.21.3-0 2023-12-25 10:28:25 +01:00
e7e2fd184f
bundles/bird: fix bw test 2023-12-25 10:22:33 +01:00
3b7e14755c
bundles/wireguard: clean up leftovers 2023-12-25 10:19:34 +01:00
9cf5fa2e5f
ssl: bump home.kunbox.net 2023-12-25 10:11:18 +01:00
005804d839
voc.infobeamer-cms: remove device kunsi-dev 2023-12-24 12:10:16 +01:00
41d909f34d
update travelynx to 2.5.3 2023-12-19 07:48:14 +01:00
3ea9da16e8
voc.infobeamer-cms: add all rooms and interrupts 2023-12-18 10:12:17 +01:00
08628f4721
voc.infobeamer-cms: 37C3 2023-12-18 09:13:41 +01:00
2fddfcd4ff
update mautrix-whatsapp to 0.10.5 2023-12-18 06:53:52 +01:00
8ca2cfeeb2
update paperless-ngx to 2.1.3 2023-12-16 12:10:54 +01:00
8435b2401f
update netbox to 3.6.7 2023-12-16 12:09:09 +01:00
50bc26deaf
kunsi-p14s: use net.ifnames=0 2023-12-16 10:41:26 +01:00
b11fece803
EOL GCE 2023-12-16 10:23:44 +01:00
24373d0ac9
bundles/icinga2: 15min downtime is enough for unattended upgrades 2023-12-16 10:19:33 +01:00
5b19b2052d
remove rx300 leftovers 2023-12-13 21:38:13 +01:00
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
eb30240dc3
update paperless to 2.1.2 2023-12-13 19:55:30 +01:00
3cff203bec
update forgejo to 1.21.2-1 2023-12-13 19:55:04 +01:00
2fc8b125e3
update forgejo to 1.21.2-0 2023-12-12 07:28:20 +01:00
86b8cd8edf
bundles/wireguard: remove wg_health_check 2023-12-10 17:01:01 +01:00
f3269ce979
bundle/wireguard: fix firewall for home.router 2023-12-10 16:59:53 +01:00
cd48cc5911
bump versatel and telekom ip ranges 2023-12-10 16:59:47 +01:00
2497800f4a
home.router: remove wg external_hostname 2023-12-10 16:59:24 +01:00
493dc91e0d
home.router: disable pppd restart at night 2023-12-10 16:59:14 +01:00
63d42c6b42
bundles/wireguard: add no_autoconnect option 2023-12-10 16:58:52 +01:00
ffb5125ddd
bundles/wireguard: add option to set settings based on a specific peer 2023-12-10 14:48:24 +01:00
0084257872
kunsi-p14s: nftables rules order is important 2023-12-09 13:42:31 +01:00
4e0f286381
update paperless to 2.1.1 2023-12-08 07:56:59 +01:00
c8bb51715e
update netbox to 3.6.6 2023-12-07 21:12:47 +01:00
526a0ec64d
update element-web to 1.11.51 2023-12-07 21:12:36 +01:00
9a3134cf46
update paperless-ngx to v2.1.0 2023-12-07 21:12:27 +01:00
4e50bfe1a2
htz-cloud.wireguard: wg for oneplus7 2023-12-05 07:21:38 +01:00
81bb8653d8
update forgejo to 1.21.1-0 2023-11-29 16:43:08 +01:00
a21102724a
bundles/basic: use metadata.get() 2023-11-29 16:41:03 +01:00
d364b3c152
update mautrix-telegram to 0.15.0 2023-11-29 16:40:43 +01:00
7b646110f9
add home.o2-joggler 2023-11-26 20:33:12 +01:00
308b66c407
bundles/apt: explicitely uninstall python3-packaging 2023-11-26 11:14:17 +01:00
7199371065
update element-web to 1.11.50 2023-11-26 10:41:16 +01:00
22fb8fc162
add home.wled-aftonsparv 2023-11-25 12:40:40 +01:00
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
1bce530ba1
update matrix-whatsapp to 0.10.4 2023-11-18 14:29:03 +01:00
48b453ceed
update element-web to 1.11.49 2023-11-18 14:28:40 +01:00
9bde59d7e3
carlene: update netbox to 3.6.5 2023-11-12 11:32:27 +01:00
400b10789a
home.paperless: update debian bookworm, update to paperless-ngx 2023-11-12 11:28:40 +01:00
b454fe4745
htz-cloud.{pirmasens,wireguard}: update to debian bookworm 2023-11-12 11:01:50 +01:00
75ef2e7bb9
bundles/wireguard: uninstall dkms package for debian > 11 2023-11-12 11:00:43 +01:00
d6db192f53
automatix fixes 2023-11-12 11:00:37 +01:00
90ca65eb9f
carlene: remove die-brontosaurier-waren-es.org 2023-11-11 21:09:47 +01:00
210f17da53
add ns-sargeras 2023-11-11 20:41:07 +01:00
6f318f21ae
bundles/powerdns: use schema provided by the powerdns package 2023-11-11 20:38:45 +01:00
1ae02ad4ec
bundles/php: some opcache settings 2023-11-11 20:16:33 +01:00
c473f730d2
htz-cloud.pirmasens: move salonkatrin.de to new website 2023-11-11 10:14:00 +01:00
807024eb98
update element-web to 1.11.48 2023-11-08 07:51:11 +01:00
529e999e69
voc.pretalx: more recent versions of everything please 2023-11-08 07:50:18 +01:00
9476771565
update matrix-media-repo to 1.3.3 2023-11-04 14:14:22 +01:00
99ca3b6282
home.nas: get jellyfin hardware transcoding to work 2023-10-30 20:14:15 +01:00
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
f9ef74600f
remove c3voc-jira
lives in c3voc infrastructure and monitoring now
2023-10-27 18:54:51 +02:00
32afd183b1
update element-web to 1.11.47 2023-10-27 18:54:33 +02:00
74bcebfd05
update netbox to 3.6.4 2023-10-22 08:59:42 +02:00
01ffa3cc89
update mautrix-whatsapp to 0.10.3 2023-10-22 08:59:29 +02:00
0e03038bdb
bundles/voc-tracker-worker: use EnvironmentFile 2023-10-22 08:58:48 +02:00
ea42188904
bundles/oidentd: disable socket based activation 2023-10-22 08:58:31 +02:00
08bf3b6565
kunsi-p14s: disable ipv6 forwarding, we don't need that 2023-10-16 22:27:09 +02:00
588f1218c2
htz-cloud.wireguard: fix firewall 2023-10-16 22:26:29 +02:00
7a9401cd6c
kunsi-p14s: always have voc ip set up, enable forwarding and nat through wireless interface 2023-10-15 16:09:15 +02:00
ebc59f2843
update element-web to 1.11.46 2023-10-10 16:29:50 +02:00
3ab970a04a
update netbox to 2.4.1 2023-10-09 07:35:52 +02:00
fb55226ba0
update forgejo to 1.20.5 2023-10-09 07:35:50 +02:00
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
3c77ff530d
update travelynx to 2.4.0 2023-10-03 14:29:28 +02:00
60a8c70cae
home.winkeeinhorn-vm: send email for node health 2023-10-01 17:00:10 +02:00
3767825b84
ssl: bump *.home.kunbox.net 2023-10-01 16:57:13 +02:00
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
497ecb5279
EOL htz-cloud.pleroma 2023-09-30 17:38:49 +02:00
d88645c7bd
move wireguard connection between kunsi-p14s and htz-cloud.wireguard to port 1194 2023-09-25 10:44:09 +02:00
ad9a920a48
bundles/icinga2: please only use "real" network interfaces instead of some vpn transfer ips 2023-09-24 21:07:21 +02:00
cd48cf495d
rework firewall setup 2023-09-24 21:01:51 +02:00
be62c1270f
remove isc-dhcp-server 2023-09-24 19:25:03 +02:00
b9d4204060
add wireguard connection between htz-cloud.wireguard and kunsi-p14s 2023-09-24 18:58:03 +02:00
a09b5b98ca
bundles/wireguard: disable health_checks if auto_connection is false 2023-09-24 18:57:27 +02:00
458606649e
bundles/wireguard: add option to route networks through vpn 2023-09-24 18:56:50 +02:00
0e40b03060
bundles/wireguard: only try to do full mesh if *we* are doing full mesh 2023-09-24 18:56:18 +02:00
53ff288d89
bundles/systemd-networkd: combine templates for interfaces 2023-09-24 18:54:47 +02:00
e27e374983
bundles/vmhost: qemu-headless does not exist anymore, apparently 2023-09-24 18:49:31 +02:00
d6eb0b4228
bundles/bird: do not auto-generate config if peer does not use bird 2023-09-24 18:48:24 +02:00
4084e764e4
add nginx proxy to jellyfin 2023-09-24 16:48:19 +02:00
361bb6a563
install jellyfin onto home.nas 2023-09-24 15:26:00 +02:00
74baeb4bf4
bundles/apt: suport deb822-style sources 2023-09-24 15:22:14 +02:00
787607b5a1
automatix/upgrade_debian_bookworm: always upgrade zfs pools 2023-09-24 14:49:02 +02:00
c2460e5291
remove *.franzi.business wildcard cert 2023-09-24 10:52:51 +02:00
77ed050ade
install oidentd on carlene, fix dependencies 2023-09-24 10:40:47 +02:00
2d3d0ca02a
EOL OVH, EOL rx300 2023-09-24 10:34:54 +02:00
6f31d6c0e4
add daisy to wireguard mesh 2023-09-23 16:46:45 +02:00
d999895450
home.router: let dyndns have ipv6 please 2023-09-23 16:42:00 +02:00
951d254c7a
add location information to daisy 2023-09-23 15:15:28 +02:00
07de570175
auto-generate full wireguard mesh between all nodes in libs.s2s.WG_AUTOGEN_NODES 2023-09-23 15:06:16 +02:00
e9f3268e15
clean up some leftovers 2023-09-23 15:06:03 +02:00
3a0ed4a7f5
bundles/wireguard: autogenerate port number based on index in WG_AUTOGEN_NODES 2023-09-23 15:04:47 +02:00
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
0d79216ae5
bundles/wireguard: fix KeyError when running with no peers 2023-09-23 15:03:44 +02:00
799cff884b
remove a bunch of deprecated nodes 2023-09-23 15:03:01 +02:00
667fd6a2f0
update netbox to 3.6.2 2023-09-23 10:14:11 +02:00
4a9596988d
update forgejo to 1.20.4-1 2023-09-23 10:13:56 +02:00
c444722291
add automatix to upgrade to debian bookworm 2023-09-23 10:12:12 +02:00
c59a3038a1
bundles/wide-dhcp-client: fix some bugs 2023-09-23 09:23:41 +02:00
a61a3816ed
hello, daisy! 2023-09-20 18:34:59 +02:00
a926825b4b
libs/defaults: quad9 is apparently half-broken, just use cloudflare instead 2023-09-20 18:21:57 +02:00
dda3c4162c
bundles/postfix: ensure /etc/mailname exists before installing postfix 2023-09-20 17:46:04 +02:00
c6b01aa219
update mautrix-whatsapp to 0.10.2 2023-09-20 14:43:25 +02:00
8d2daeeb77
update mautrix-telegram to 0.14.2 2023-09-20 14:43:02 +02:00
5d69595bbf
update pretalx to 2023.1.3 2023-09-19 15:05:41 +02:00
b17d7bccf6
update travelynx to 2.2.2 2023-09-19 15:05:19 +02:00
aab7a1abc4
update mautrix-whatsapp to 0.10.1 2023-09-19 15:04:57 +02:00
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
32141b6e98
update element-web and matrix-media-repo 2023-09-16 13:07:50 +02:00
049cc899be
update travelynx to 2.2.1 2023-09-13 17:06:27 +02:00
d4f7f1b08d
update element-web to 1.11.42 2023-09-13 16:03:06 +02:00
40a283d5c9
update element-web to 1.11.41 2023-09-12 20:15:33 +02:00
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
9bde0d9410
home.router: upgrade to bookworm and switch to kea-dhcp-server 2023-09-10 22:02:14 +02:00
aaf67f1a3d
bundles/apt: bookworm has their own firmware repo 2023-09-10 22:00:19 +02:00
234e81431d
bundles/wireguard: easier snat setup 2023-09-10 21:27:03 +02:00
e70a86a6c1
htz-cloud.aurto: remove no longer needed keys 2023-09-10 21:16:02 +02:00
5b1d814d40
bundles/icinga2: more timeout for check_spam_blocklist 2023-09-10 21:15:31 +02:00
563735d31a
add new status page to icinga 2023-09-10 09:48:20 +02:00
b38bc67a60
move aurto to hetzner cloud 2023-09-09 23:02:42 +02:00
7845faeac3
htz-cloud.wireguard: add IPv4 NAT 2023-09-09 23:02:40 +02:00
5238937044
bundles/powerdns: do not put private ipv4 into dns if public ipv6 exists 2023-09-09 23:02:38 +02:00
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
e7a652503f
update htz-cloud.{afra,miniserver} to bookworm 2023-09-09 21:09:52 +02:00
54d55bbb8d
update forgejo to 1.20.4 2023-09-09 21:09:30 +02:00
40aeeab265
update matrix-media-repo to 1.3.1 2023-09-09 20:39:23 +02:00
b38ba55ed3
bundles/forgejo: fix missing slash 2023-09-09 20:31:05 +02:00
1f2266302f
s/autojenkins/forgejo-carlene/ 2023-09-09 19:37:44 +02:00
cb6f12b218
add bundle:kea-dhcp-server 2023-09-09 18:40:10 +02:00
d9cb324bb6
update pretalx to 2023.1.0 2023-09-09 17:48:22 +02:00
25a484f04e
remove ovh nodes from monitoring 2023-09-09 17:46:30 +02:00
f061196f0d
bundles/icinga2: add snmp package, needed for check_snmp to work 2023-09-09 17:02:51 +02:00
f2b538a168
bundles/homeassistant: allow more time for checking stuff 2023-09-09 16:54:33 +02:00
711230a472
rx300: disable sms 2023-09-09 16:45:28 +02:00
b3b305076f
move die-brontosaurier-waren-es.org to carlene 2023-09-09 16:44:04 +02:00
20ff2f40f4
add wireguard tunnel between htz-cloud and icinga2 2023-09-09 16:12:28 +02:00
fe4d4abc9c
bundles/wireguard: fix max interface length 2023-09-09 16:10:49 +02:00
a2ceb8cc3a
bundles/bird: announce subnets via all ips 2023-09-09 16:10:33 +02:00
2b51812118
libs.tools.resolve_identifier(): add option to filter out linklocal ips and only physical interfaces 2023-09-09 15:37:37 +02:00
6539923644
update travelynx to 2.2.0 2023-09-09 15:28:29 +02:00
4a0aa81e8d
carlene: add new icinga2 host to ntfy exemptions 2023-09-09 15:28:07 +02:00
bf6ed289e1
bundles/icinga2: fix stupid in check_spam_blocklist 2023-09-09 14:24:34 +02:00
e6e9e425fc
move icinga2 to new host 2023-09-09 14:12:24 +02:00
99e261fe24
libs/s2s: switch to static list of wireguard peers 2023-09-09 14:11:39 +02:00
5db3856218
bundles/icinga2: remove obsolete check 2023-09-09 14:10:58 +02:00
e029329a03
bundles/icinga2: handle dig status messages in check_spam_blocklist 2023-09-09 14:10:27 +02:00
8f500b121c
voc.infobeamer-cms: add hexchen 2023-09-09 13:56:17 +02:00
deb0c7b597
bundles/unbound: ensure /usr/share/dns exists 2023-09-09 13:55:58 +02:00
d1bb94fd74
bundles/icinga2: more auto-generation of stuff 2023-09-09 13:55:16 +02:00
7df6b1d13a
bundles/wireguard: name wg interfaces according to their peers 2023-09-09 13:55:03 +02:00
7b8740601f
carlene: update netbox to 3.6.1 2023-09-07 07:23:19 +02:00
7e335cc3ae
move some stuff from rx300 to carlene 2023-09-03 18:26:54 +02:00
9dacd4a14b
move mta-sts vhost to carlene 2023-09-03 18:22:51 +02:00
e2e5eaa236
bundles/nextcloud: more upload limit please 2023-09-03 18:15:17 +02:00
5863105d64
dns: move kunbox.net to carlene 2023-09-03 18:10:55 +02:00
895f26d2f3
rx300: remove radicale 2023-09-03 17:24:42 +02:00
e087daae94
nextcloud: add cache-control headers to static assets 2023-09-03 12:28:53 +02:00
0964bd1695
update travelynx to 2.1.2 2023-09-03 12:20:40 +02:00
94bee38ca7
bundles/php: fix some typos 2023-09-03 12:20:24 +02:00
a33076186b
bundles/nextcloud: install php-apcu 2023-09-03 12:19:34 +02:00
2d201ebf0e
new access points, who dis? 2023-09-03 12:02:36 +02:00
ad24c0ea5b
add bundle:nextcloud to carlene 2023-09-02 21:14:38 +02:00
0001b5639b
kunsi-p14s: bug has been fixed 2023-09-02 20:49:34 +02:00
ea77c68e16
bundles/nginx: hide content security headers coming from php 2023-09-02 20:49:05 +02:00
72607adbfe
bundles/nginx: allow vhosts to set their own index files 2023-09-02 20:48:41 +02:00
8cfcefcfc4
bundles/matrix-stickerpicker: fix backup paths 2023-09-02 20:48:15 +02:00
b08c9fb5a4
replace matrix-dimension on rx300 with matrix-stickerpicker on carlene 2023-09-02 13:36:15 +02:00
fc75e92a78
dns: new mail server 2023-09-01 06:21:15 +02:00
194c60ddb2
bundles/ntfy: do not create timing logs 2023-09-01 06:20:19 +02:00
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
43d26650b0
update netbox to 3.6.0 2023-09-01 06:15:54 +02:00
e3784158de
update element-web to 1.11.40 2023-09-01 06:15:38 +02:00
dd8fd452eb
move mail from rx300 to carlene 2023-09-01 05:55:27 +02:00
97afd6c522
bundles/php: add php8.2 2023-09-01 05:54:54 +02:00
a838f6c5bd
bundles/postfixadmin: move vhost generation to reactor 2023-09-01 05:54:23 +02:00
b01dcb0ff9
bundles/nginx: enable creating logs for debugging purposes 2023-09-01 05:53:37 +02:00
553ed05ba2
remove freifunk access points, replace with aruba 2023-08-30 19:39:36 +02:00
01531c62de
bundles/rsyslogd: keep more logfiles 2023-08-28 17:26:34 +02:00
d450a43a96
switches-mikrotik: add rsyslog server 2023-08-28 17:25:34 +02:00
39576fda38
add bundle:rsyslogd 2023-08-28 17:21:48 +02:00
36dac3be7c
bundles/weechat: fix weechat fifo path 2023-08-27 11:13:35 +02:00
ab3f2df29f
update travelynx to 2.1.1 2023-08-27 10:30:22 +02:00
bb478430b9
migrate ntfy from rx300 to carlene 2023-08-27 09:38:06 +02:00
ad2312b715
matrix stuff: make journal usable again 2023-08-27 09:28:57 +02:00
7dda27b69d
migrate miniflux from rx300 to carlene 2023-08-27 09:17:55 +02:00
50cba7cb49
bundles/miniflux: use metadata.get() 2023-08-27 09:17:34 +02:00
0190555f16
bundles/matrix-synapse: do not log every request 2023-08-27 09:17:12 +02:00
757e9e6bb8
bundles/nginx: add option to disable anon_timing log 2023-08-26 17:21:23 +02:00
c6bb00c124
bundles/systemd: ensure we're not logging to syslog 2023-08-26 07:28:12 +02:00
8cf2dde6e0
add bundle:weechat, migrate weechat from rx300 to carlene 2023-08-25 12:52:31 +02:00
c6120accc1
bundles/icinga2: fix monitoring config 2023-08-25 11:11:48 +02:00
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
bca4d152ea
bundles/zfs: print zfs status output if pool is not online 2023-08-24 07:41:37 +02:00
33d42e2472
bundles/matrix-synapse: ensure we're logging to journal 2023-08-23 17:25:41 +02:00
e754b68f06
carlene: update travelynx to 2.0.3 2023-08-23 17:18:34 +02:00
bf9b9b4189
home.hass: update to bookworm 2023-08-23 17:18:11 +02:00
10a9e61026
bundles/homeassistant: changes for bookworm 2023-08-23 17:17:42 +02:00
daae710624
bundles/forgejo: fix version string in update check 2023-08-23 13:47:38 +02:00
8482f6a270
{c3voc,entropia}-jira: more monitoring 2023-08-23 13:46:44 +02:00
a8adde8c63
update forgejo to 1.20.3-0 2023-08-23 12:40:37 +02:00
6aa0114db5
update mautrix-whatsapp to 0.10.0 2023-08-23 12:39:31 +02:00
7a1dc40584
voc.infobeamer-cms: new domain and update for cccamp23 2023-08-23 12:19:56 +02:00
aecaebcefd
carlene: add web vhost for skye 2023-08-23 12:19:24 +02:00
20d1c0af05
update netbox to 3.5.8 2023-08-23 12:18:58 +02:00
4b6f680248
update element-web to 1.11.39 2023-08-23 12:18:25 +02:00
8ec785ffd8
update element-web to 1.11.38 2023-08-05 08:33:42 +02:00
1834bedf91
remove htz-cloud.luther 2023-08-04 08:07:41 +02:00
726023db17
htz-cloud.miniserver: update hedgedoc to 1.9.9 2023-08-02 19:51:50 +02:00
5604763303
update element-web to 1.11.37 2023-08-02 16:49:29 +02:00
5f0ba20622
move forgejo from rx300 to carlene 2023-08-02 16:38:32 +02:00
d3f55dc821
htz-cloud.afra: add fedi redirects 2023-08-02 16:38:14 +02:00
b692b09c00
rename bundle:gitea to bundle:forgejo 2023-08-02 16:37:48 +02:00
f1045172fd
rx300: delete unused configs 2023-08-02 08:09:30 +02:00
88ccd3ca72
migrate netbox from rx300 to carlene 2023-08-02 08:07:36 +02:00
a16fcdd935
migrate travelynx to carlene 2023-08-01 21:22:28 +02:00
c121110f00
bundles/travelynx: prepare for bookworm 2023-08-01 21:21:31 +02:00
3826ccf4ec
remove reboot mails, noone does care about these anyway 2023-07-26 08:29:37 +02:00
3a8e3ce01b
home.kodi-wohnzimmer: do not reboot automatically 2023-07-26 08:24:25 +02:00
92acae3cbe
move element-web from rx300 to carlene 2023-07-23 15:48:07 +02:00
4b434e7946
bundles/mixcloud-downloader: fix username 2023-07-23 14:04:01 +02:00
00cbabea1b
bundles/mixcloud-downloader: fix duplicate 2023-07-23 14:02:09 +02:00
80e0a29a31
htz-cloud.afra: update element-web to 1.11.36 2023-07-23 13:59:48 +02:00
9d1fc65b82
update mautrix-whatsapp to 0.9.0 2023-07-23 13:59:45 +02:00
21ec75a398
carlene: technician replugged the network cable to the other port :/ 2023-07-23 13:59:40 +02:00
3ab8eb88bd
move matrix from rx300 to carlene 2023-07-23 13:59:37 +02:00
272a11f7d3
bundles/postgresql: remove version-specific options 2023-07-23 13:59:34 +02:00
9aacb8f506
htop: less room for cpus please 2023-07-23 13:59:32 +02:00
76eef92ee2
bundles/postgresql: some improvements 2023-07-23 13:59:29 +02:00
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
e9ee2039d5
bundles/smartd: ignore non-digit values in telegraf stats 2023-07-13 21:41:52 +02:00
471e2ba6f6
bundles/{influxdb2,telegraf}: it's always the same, just use 'stable main' 2023-07-13 21:41:22 +02:00
838b61a2b9
bundles/grafana: remove useless "power on hours" graph 2023-07-13 21:40:55 +02:00
8d5fe0d926
carlene: add smartd 2023-07-13 21:31:44 +02:00
6b27128b6d
bundles/systemd-timers: add exclude_from_monitoring 2023-07-13 21:31:25 +02:00
3936e64227
bundles/smartd: use systemd-timers 2023-07-13 21:31:11 +02:00
bbfa985e1d
bundles/smartd: ignore partitions in smartd check 2023-07-13 21:30:49 +02:00
d0825a51ee
bundles/smartd: unit names have changed 2023-07-13 21:30:29 +02:00
14ec3c0ee2
gce: disable ipv6
Because this is "the cloud"™, gce does not support ipv6.
2023-07-13 20:48:04 +02:00
59c913b97c
carlene: add bundle:check-mail-received 2023-07-13 20:28:33 +02:00
97307fc6f3
nodes.py: demagify toml nodes 2023-07-13 20:28:28 +02:00
70bd7d295d
bundles/cron: less strict dependencies 2023-07-13 20:19:17 +02:00
40c90163ad
EHLO carlene 2023-07-13 20:09:04 +02:00
cff3fe558e
bundles/zfs: more ordering please 2023-07-13 20:04:43 +02:00
5fa8c72863
debian bookworm time \o/ 2023-07-13 20:02:38 +02:00
a5677e7d15
ssl: bump _.franzi.business 2023-07-13 08:04:17 +02:00
c6b20aea4e
ssl: bump _.home.kunbox.net 2023-07-13 08:04:04 +02:00
b8600255fc
update netbox to 3.5.6 2023-07-11 05:55:11 +02:00
cba412ecc1
update forgejo to 1.19.4-0 2023-07-11 05:54:44 +02:00
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
d5f5fd853b
bundles/element-web: remove --openssl-legacy-provider 2023-06-29 05:39:30 +02:00
dff2bb0289
htz-cloud.afra: moar power plx 2023-06-29 05:38:55 +02:00
c3fe24c7b9
update element-web to 1.11.34 2023-06-29 05:37:55 +02:00
91b3d2f850
update mautrix-whatsapp to 0.8.6 2023-06-29 05:20:00 +02:00
341a43baf3
update netbox to 3.5.4 2023-06-29 05:18:19 +02:00
3a2006739c
update mautrix-telegram to 0.14.1 2023-06-29 05:17:35 +02:00
8968252ba6
bundles/nginx: fix content_type for logrotate config 2023-06-21 23:27:30 +02:00
6fb982e94c
rx300: update travelynx to 1.32.0 2023-06-21 23:25:26 +02:00
2e6e80d1c5
voc.infobeamer-cms: gpn21 2023-06-21 23:25:19 +02:00
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
0ca35a2e7e
update netbox to 3.5.3 2023-06-03 16:31:21 +02:00
d360dfb087
update mautrix-telegram to 0.14.0 2023-06-03 16:31:08 +02:00
712454c1e3
bundles/postgresql: more cache, please 2023-06-03 13:21:23 +02:00
5b9ce2faa1
fix trailing whitespace in tmux.conf of sophie 2023-05-26 10:49:23 +02:00
55f80b468e
bundles/matrix-registration: fix bugs 2023-05-26 10:48:01 +02:00
c3701da258
add htz-cloud.afra 2023-05-26 07:11:25 +02:00
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
829ebccad6
update travelynx to 1.31.4 2023-05-23 19:33:30 +02:00
926776fba2
update netbox to 3.5.2 2023-05-23 19:29:27 +02:00
9fc0004746
add option to exclude hosts from public status page 2023-05-21 06:59:34 +02:00
b35bfc85e9
ovh.icinga2: fix simple-icinga-dashboard 2023-05-20 20:12:24 +02:00
2607049f8d
add bundle:matrix-registration 2023-05-20 15:15:35 +02:00
6374f6b71e
bundles/matrix-synapse: support home servers without appservices 2023-05-20 15:10:57 +02:00
c44badb1e1
update matrix.org gpg key 2023-05-20 15:07:24 +02:00
6a573b3231
README: add system naming 2023-05-20 15:00:07 +02:00
1708f6ae17
bundles/matrix-synapse: include signing key in backups 2023-05-20 14:23:52 +02:00
3a5c944926
scripts/passwords-for: ensure keys are strings 2023-05-20 14:07:25 +02:00
b1567443ca
bundles/zfs: support other cpu architectures 2023-05-20 12:38:27 +02:00
0db4c19457
htz-cloud.sewfile: update to debian bullseye 2023-05-20 12:19:46 +02:00
b955633a23
automatix/upgrade_debian_bullseye: do zfs another way 2023-05-20 11:47:39 +02:00
2d433264e7
htz-cloud.influxdb: update to debian bullseye 2023-05-20 11:25:43 +02:00
32e6e61a3b
bundles/systemd: fix dependencies 2023-05-20 11:25:26 +02:00
cff42ef0f7
update home.downloadhelper to debian bullseye 2023-05-20 11:13:48 +02:00
c07b428cc9
add automatix script to upgrade systems to debian bullseye 2023-05-20 11:13:42 +02:00
3aedd7395b
update htz-cloud.luther to debian bullseye 2023-05-20 10:53:15 +02:00
048fb83ee7
bundles/apt: support spreading unattended-upgrades in a group 2023-05-20 07:46:23 +02:00
92cca7f396
isort the repo 2023-05-20 07:46:02 +02:00
604170f133
Jenkinsfile: remove isort check, because it behaves differently between venv and non-venv mode 2023-05-20 07:44:23 +02:00
9b1cea1e1d
update mautrix-whatsapp to 0.8.5 2023-05-19 22:01:40 +02:00
a44a3b3024
ns-ghirahim: set postfix relayhost 2023-05-19 21:58:20 +02:00
768a445e84
dns/kunbox.net: fix primary name server 2023-05-16 20:31:05 +02:00
a6f865104c
rename nameservers, once again 2023-05-16 20:05:40 +02:00
1260410eae
bundles/powerdns: split "add ip to autoprimaries" and "fix hostname for autoprimary" 2023-05-16 19:56:21 +02:00
261c284f2f
add ns-digitalocean 2023-05-16 19:25:23 +02:00
6d2cf0fa24
bundles/powerdns: ensure primary servers are in database 2023-05-16 19:25:17 +02:00
f8416215d5
ns-ionos: move powerdnsadmin webinterface to new hostname 2023-05-16 18:08:00 +02:00
a4bb7f89ec
rename ns-primary to ns-ionos 2023-05-16 17:58:31 +02:00
b68a80c8c3
home.nas: replace failed disk 2023-05-16 13:01:04 +02:00
a15cc2f121
wip 2023-05-15 15:56:42 +02:00
1ed9a4ff15
update travelynx to 1.31.2 2023-05-15 12:11:32 +02:00
034047dcd8
update netbox to 3.5.1 2023-05-15 12:09:22 +02:00
6449797b06
update forgejo to 1.19.3-0 2023-05-15 12:09:09 +02:00
77930b9a2f
update element-web to 1.11.32 2023-05-15 12:09:06 +02:00
b2ad9ce3d8
bundles/jugendhackt_tools: fix static root 2023-05-15 12:08:57 +02:00
906994b50f
rx300: add bundle:jugendhackt_tools 2023-05-06 17:27:02 +02:00
714fa88d72
bundles/ntfy: fix directory modes 2023-05-06 17:26:59 +02:00
556e0d75c8
home.nas: add another backup folder 2023-05-06 17:26:57 +02:00
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
e59aa59124
update grafana gpg key 2023-04-28 16:47:09 +02:00
87184bc07b
update netbox to 3.5.0 2023-04-28 16:45:01 +02:00
5a594ad308
update element-web to 1.11.30 2023-04-28 16:44:48 +02:00
9a32534c49
bundles/icinga2: remove uceprotect level 2 from check_spam_blocklist 2023-04-28 16:42:55 +02:00
7b8eb63672
rx300: update forgejo to 1.19.1-0 2023-04-23 15:16:51 +02:00
acc3f3022a
rx300: update mautrix-whatsapp to 0.8.4 2023-04-23 15:16:25 +02:00
1c42226a42
ssl: bump _.home.kunbox.net 2023-04-23 15:14:10 +02:00
ac8c1fd3f3
ssl: bump _.franzi.business 2023-04-23 15:13:50 +02:00
d78102adb8
voc.pretalx: is bullseye now 2023-04-23 13:22:01 +02:00
f2e238d879
update ALL the things 2023-04-13 17:50:26 +02:00
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
b3e490720e
bundles/icinga2: add notification support via ntfy 2023-04-09 17:32:36 +02:00
25aabad865
voc.infobeamer-cms: add jwacalex 2023-04-09 14:36:14 +02:00
c6cf997102
bundles/ntfy: add option to disable unauthorized writes 2023-04-09 12:24:23 +02:00
f17117d640
add hooks/test_apply_dummy_mode 2023-04-09 12:24:03 +02:00
5ff46edd8c
voc.infobeamer-cms: prepare for easterhegg 2023-04-09 12:10:29 +02:00
4d46401629
bump bundlewrap 2023-04-09 12:10:17 +02:00
3e497c3545
rx300: install ntfy 2023-04-09 12:10:04 +02:00
95d5c0cfc8
bundles/ntfy: update config to more recent version 2023-04-09 12:09:28 +02:00
2297f1dacf
kunsi-p14s: more packages please 2023-04-03 18:39:42 +02:00
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
68c4ee9482
update element-web to 1.11.28 2023-04-01 07:08:32 +02:00
a27ac38bec
add bundle:telegraf-monitors-mikrotik 2023-04-01 07:01:03 +02:00
4bcf15a64c
voc.pretalx: do rsync backups, too 2023-04-01 06:59:13 +02:00
9a6be52b05
bundles/backup-client: use set instead of list 2023-04-01 06:58:48 +02:00
60fc0e64e7
bundles/{apt,pacman}: ignore sshd processes spawned by user nobody 2023-04-01 06:50:37 +02:00
28298d3ce6
replace predefined ssh keys with generated ones 2023-03-31 21:45:09 +02:00
8d3e913a8c
kunsi-p14s: br0 contains all wired interfaces 2023-03-31 16:47:43 +02:00
bbbcfee042
add group switches-mikrotik 2023-03-31 16:47:27 +02:00
5af85ad535
remove home.sw02 2023-03-29 18:36:14 +02:00
a9874ce8fb
htz-cloud.influxdb: switch ip has changed 2023-03-29 18:22:34 +02:00
83f720d234
bump netbox-dump 2023-03-29 18:19:17 +02:00
7ff8319f09
home.nas: fix firewall and interface names 2023-03-29 18:19:14 +02:00
9b11e69a73
home.router: fix vlans 2023-03-29 18:19:11 +02:00
3c921e5d2e
rename home.bubble01 to home.mitel-rfp35 2023-03-29 18:19:07 +02:00
5116ba8a27 home.downloadhelper: fix vlan id 2023-03-29 16:17:44 +00:00
7eb2bf68d8 home.switch-rack: use password for authentication 2023-03-29 16:17:44 +00:00
fe7d57aca0 home.downloadhelper: more vlans 2023-03-29 16:17:44 +00:00
f6da1f6d71 home.nas: rotate all the vlans 2023-03-29 16:17:44 +00:00
317a3df11d home.router: rotate all the vlans 2023-03-29 16:17:44 +00:00
fe9716088a home.downloadhelper: rotate all the vlans 2023-03-29 16:17:44 +00:00
64716d12cf bump netbox dump for home.switch-rack 2023-03-29 16:17:44 +00:00
0522425218
rx300: we need bigger emails 2023-03-29 10:48:06 +02:00
ee68c9075b
rx300: update netbox to 3.4.7 2023-03-28 23:17:29 +02:00
6835793d6a
rx300: update travelynx to 1.30.9 2023-03-28 22:16:59 +02:00
6c48c25a94
update element-web to 1.11.26 2023-03-28 19:18:45 +02:00
8ec7f9e992
rx300: update forgejo to 1.19.0-2 2023-03-28 19:18:26 +02:00
f254b9bb12
kunsi-p14s: fix mountpoint for rootfs 2023-03-27 14:09:00 +02:00
ca614efec1
add home.switch-rack 2023-03-26 15:58:29 +02:00
190833c54a
bundles/lldp: do not run for routeros devices 2023-03-26 15:58:09 +02:00
66c6a92ec5
scripts/netbox-dump: also add interface type and ip addresses 2023-03-26 15:21:16 +02:00
a738b49aa4
add scripts/netbox-dump 2023-03-22 21:19:41 +01:00
08aadcaf36
rx300: update netbox to 3.4.6 2023-03-21 07:29:55 +01:00
51cdcba9e9
rx300: update mautrix-whatsapp to 0.8.3 2023-03-21 07:29:37 +01:00
8da5650134
htz-cloud.miniserver: update element-web to 1.11.25 2023-03-21 07:29:15 +01:00
445ec0ea15
rx300: update element-web to 1.11.25 2023-03-19 15:43:50 +01:00
e3b1d14fe7
bundles/miniflux: fix proxy settings 2023-03-19 15:43:34 +01:00
cc49d34475
bundles/matrix-synapse: add script to reset the federation timeout 2023-03-19 15:43:09 +01:00
b1b8df7dd8
remove some old scripts 2023-03-19 15:42:43 +01:00
9c590635b6 kunsi-p14s: install sdl_ttf 2023-03-14 09:24:12 +01:00
de6579140d
rx300: update travelynx to 1.30.7 2023-03-12 10:59:52 +01:00
985bb3cdec
ns-primary: update powerdnsadmin to 0.4.0 2023-03-12 10:59:35 +01:00
5272a212a7
voc.pretalx: update broadcast-tools to 1.1.0 2023-03-07 18:23:22 +01:00
b1d032df90
voc.pretalx: update pretalx to 2.3.2 2023-03-07 18:22:55 +01:00
d4e1da0689
update ALL the things! 2023-03-03 21:23:02 +01:00
6cb56ab2ec
rx300: allow more postgresql connections 2023-02-17 05:03:39 +01:00
5c4fc37a37
update mautrix-whatsapp to 0.8.2 2023-02-17 05:03:25 +01:00
68d51450fd
update forgejo to 1.18.3-1 2023-02-17 05:03:01 +01:00
d57844928d
update matrix-media-repo to 1.2.13 2023-02-17 05:02:40 +01:00
4975562fbc
update element-web to 1.11.23 2023-02-17 05:02:13 +01:00
25e03582b0
entropia-jira- stuff has changed 2023-02-17 05:01:28 +01:00
b49dc56c33
Jenkinsfile: also check using isort 2023-02-05 17:36:16 +01:00
4122a7ccf8
isort the repo 2023-02-05 17:30:58 +01:00
429bc2a7c6
bundles/homeassistant: fix .provides() 2023-02-05 17:28:52 +01:00
6f9fb78d4e
rx300: update netbox to 3.4.4 2023-02-05 17:25:37 +01:00
bb1b430d16
rx300: update forgejo to 1.18.3-0 2023-02-05 17:25:18 +01:00
1906e7c256
bundles/gitea: derive version number from installed gitea 2023-02-05 17:24:50 +01:00
7dcad0d584
update element-web to 1.11.22 2023-02-04 16:30:53 +01:00
077b25f67e
bundles/miniflux: repo has changed
... also now everything is unsigned, yeaaaaaaaaaaaah
2023-02-02 19:29:28 +01:00
527181bba8
home.router: fix dyndns hostname 2023-01-29 11:15:59 +01:00
53e189c644
ssl: bump _.home.kunbox.net 2023-01-29 11:14:31 +01:00
eeceebfd23
dns: add new primary nameserver 2023-01-29 11:06:58 +01:00
7bd8237876
bashrc: add 'ipa' alias 2023-01-29 11:03:38 +01:00
55bebda4d4
bundles/powerdns: fix socket path for telegraf 2023-01-29 11:02:49 +01:00
ef16a2d081
bundles/powerdns: rework zone file generation 2023-01-29 11:01:48 +01:00
264ea3e8a7
bundles/systemd-networkd: remove isc-dhcp-client 2023-01-29 10:13:26 +01:00
109914c039
bundles/powerdnsadmin: create virtualenv after packages are installed 2023-01-29 10:04:47 +01:00
8df4441028
rx300: update netbox to 3.4.3 2023-01-29 09:44:28 +01:00
733e4bf0e5
rx300: update mautrix-whatsapp to 0.8.1 2023-01-29 09:44:09 +01:00
6cec7e2c9c
rx300: update element-web to 1.11.20 2023-01-29 09:43:49 +01:00
f6b0c587d0
rename some gitea stuff to forgejo 2023-01-29 09:42:36 +01:00
a8e2e6b5ad
bundles/gitea: adjust config for 1.18 2023-01-29 09:40:38 +01:00
17aee0f6bb
update gitea to forgejo 1.18.2-1 2023-01-29 09:35:29 +01:00
a3218ac41f
bundles/sshmon: fix hostname in check_forgejo_for_new_release 2023-01-29 09:35:05 +01:00
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
2e6e6b663e
bundles/powerdns: also send out notify to all secondaries 2023-01-29 09:21:59 +01:00
74d44535a8
dns: fix cname for acme-challenge 2023-01-29 09:11:02 +01:00
cb2b01a2b4
dns: fix cname for acme-challenge 2023-01-29 08:56:13 +01:00
9684e94e4d
dns: switch everything but kunbox.net to psql 2023-01-29 08:47:50 +01:00
c93a4d0a99
powerdns: switch to AXFR for secondarie 2023-01-29 08:35:08 +01:00
31e614ab3b
bundles/powerdns: allow exposing API to the world 2023-01-29 08:06:27 +01:00
60585a3716
bundles/homeassistant: fix typo 2023-01-29 07:04:38 +01:00
c717e86f70
bundles/homeassistant: fix website_check 2023-01-29 07:03:28 +01:00
ff8928dd0b
remove openhab, move backups to hass 2023-01-29 06:54:48 +01:00
ba97cd432f
bundles/icinga2: icingaweb2 apparently ships monitoring module by itself 2023-01-29 06:45:34 +01:00
f45a759a43
ssl: bump _.franzi.business 2023-01-29 06:42:07 +01:00
b4b3fec8a7
move franzi.business to psql-managed zone 2023-01-29 06:41:47 +01:00
1899dfc278
dns: update to debian bullseye and postgresql 15 2023-01-28 18:10:35 +01:00
d8aa1e80d0
get rid of molly-guard 2023-01-28 18:10:32 +01:00
e634c184c0
data/powerdns: convert some zones to psql 2023-01-28 18:10:29 +01:00
07dce73bca
bundles/sshmon: get rid of sysstat 2023-01-28 18:10:24 +01:00
c5ccc31ad9
get rid of molly-guard 2023-01-28 18:10:21 +01:00
ab76721ddb
bundles/powerdnsadmin: install psycopg2 in venv 2023-01-28 18:10:18 +01:00
b460085bb0
bundles/powerdns: enable superslave if supported 2023-01-28 18:10:14 +01:00
ba3bf20db7
new gpg key for influxdb repo 2023-01-28 18:10:12 +01:00
5ed4c1e9bd
update netbox to 3.4.2 2023-01-28 18:10:09 +01:00
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
c94aef55a5
bundles/dovecot: enable sieve logging 2022-12-31 16:33:10 +01:00
970d97b0a2
nodes/home.wled-wohnzimmer: new mac address 2022-12-30 20:35:05 +01:00
c04ce63c35
bundles/arch-with-gui: more packages via bundle, less via nodefile 2022-12-29 13:45:06 +01:00
070b466abe
bundles/travelynx: update bundle for new version 2022-12-27 13:38:53 +01:00
82143e34ad
update travelynx to 1.28.5 2022-12-27 13:38:39 +01:00
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
638363e927
bundles/php: rework bundle, fix directory permissions 2022-12-24 16:12:22 +01:00
9a45e3c30e
bundles/gitea: fix wrong monitoring command 2022-12-24 13:45:44 +01:00
648a80362e
bundles/sshmon: actually install the check 2022-12-24 08:45:48 +01:00
e28494e9a0
update element-web to 1.11.17 2022-12-23 15:06:12 +01:00
931f3cd583
bundles/gitea: set update check to check for forgejo update 2022-12-23 14:57:32 +01:00
face47b9fe
voc.pretalx: update downstream plugin to 1.1.5 2022-12-23 14:49:17 +01:00
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
fcb546baf6
bundles/nodejs: fix repo name 2022-12-22 17:32:36 +01:00
f2e4d9e731
remove obsolete README files 2022-12-22 17:27:48 +01:00
0c402791a9
convert a bunch of dummy nodes to toml 2022-12-22 17:25:51 +01:00
e67033db8c
add home.hass basic node file 2022-12-22 17:21:38 +01:00
c5e45cbafc
bundles/sshmon: add check_forgejo_for_new_release 2022-12-22 12:13:53 +01:00
120dfea24f
bump bundlewrap to 4.16 2022-12-22 12:13:36 +01:00
3db7168589
move default nameservers to libs/defaults 2022-12-22 12:13:13 +01:00
90823b7984
bundles/postfix: lessen smtpd security restrictions 2022-12-20 08:55:44 +01:00
caa54051ff
bundles/zfs: please, just restart zed 2022-12-18 11:43:38 +01:00
8621c726bb
bundles/systemd: fix edgecase in check_timesyncd_sync 2022-12-18 11:34:21 +01:00
a008a47559
update netbox to 3.4.1 2022-12-17 11:48:14 +01:00
97486a6e68
update mautrix-whatsapp to 0.8.0 2022-12-17 11:47:59 +01:00
ee761507a2
bundles/{icinga2,influxdb}: fix file permissions 2022-12-17 11:45:10 +01:00
6d49889f2f
bundles/systemd: systemd-timesyncd not showing offset is an error 2022-12-17 11:41:37 +01:00
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
eaab905735
bundles/systemd: add monitoring for systemd-timesyncd 2022-12-16 16:15:57 +01:00
e12b9e6c12
uninstall chrony and ntpd everywhere 2022-12-16 15:32:09 +01:00
191b74a6d3
update netbox to 3.4.0 2022-12-16 15:25:49 +01:00
195b87a457
update postfixadmin to 3.3.13 2022-12-16 15:25:32 +01:00
bd64d52edb
bundles/gce-workaround: uninstall chrony 2022-12-16 15:24:51 +01:00
d6da47fc1e
bundles/systemd: also manage systemd-timesyncd 2022-12-16 15:10:52 +01:00
5dc60eb24e
bundles/openvpn-client: do not manage config directory group 2022-12-16 15:10:03 +01:00
f790e2cee0
bundles/vnstat: rework bundle 2022-12-12 07:56:23 +01:00
9c8523ab49
home.{nas,router}: fixup icinga dependencies 2022-12-11 18:03:09 +01:00
1189b58cd2
home.router: new hardware 2022-12-11 17:43:33 +01:00
afa1e4abb7
move usv telegraf info collection to influxdb host 2022-12-11 17:42:59 +01:00
c8dd809057
bundles/wireguard: better nftables rules 2022-12-11 17:42:39 +01:00
e8d24bc363
bundles/pppd: automatically add interface entry for ignored interface 2022-12-11 17:42:08 +01:00
86990b92ea
update netbox to 3.3.9 2022-12-07 18:19:24 +01:00
bed37a8392
update postfixadmin to 3.3.12 2022-12-07 18:19:11 +01:00
1b3c789b7c
update element-web to 1.11.16 2022-12-07 18:18:52 +01:00
d86dc32f51
bundles/mixcloud-downloader: improvements 2022-12-07 18:06:44 +01:00
15ea875742
home.nas: add bundle:mixcloud-downloader 2022-12-07 04:24:38 +01:00
615f6107bc
bundles/element-web: only set --openssl-legacy-provider if using nodejs >= 17 2022-11-27 19:56:36 +01:00
dd420c4574
update mautrix-telegram to 0.12.2 2022-11-27 19:50:07 +01:00
5d239177bc
update element-web to 1.11.15 2022-11-27 19:49:51 +01:00
48514f0e61
voc.pretalx: update pretalx to newer version 2022-11-27 19:48:39 +01:00
ca18a8d231
bundles/pretalx: ignore update check if no version was specified 2022-11-27 19:48:13 +01:00
6b2a6e64b3
rx300: remove unicornsden map 2022-11-27 19:46:40 +01:00
98d6c117df
kunsi-p14s: add smedia-priv vpn connection 2022-11-22 18:45:37 +01:00
d64657feef
bundles/openvpn-client: fix permissions for /etc/openvpn/client 2022-11-22 18:45:19 +01:00
b7de8b3a4d
bundles/grafana: new repo, who dis? 2022-11-21 19:32:47 +01:00
bc589011d2
add c3voc vpn to kunsi-p14s 2022-11-21 19:31:49 +01:00
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
72cbe56b5f
bundles/nodejs: make nodejs version configurable 2022-11-16 18:54:52 +01:00
29dd1ee561
update netbox to 3.3.8 2022-11-16 18:54:49 +01:00
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
2ea914dc0b
bundles/minecraft: collect metrics more often 2022-11-13 18:13:18 +01:00
7a14084417
bundles/minecraft: add monitoring via icinga2 2022-11-13 17:48:22 +01:00
019d5ce2b6
bundles/minecraft: add monitoring via telegraf 2022-11-13 17:47:19 +01:00
cb1222600d
update element-web to 1.11.14 2022-11-13 14:38:13 +01:00
7f9d7ccfc3
voc.pretalx: update broadcast_tools plugin to 1.0.1 2022-11-07 04:46:59 +01:00
52e36f7ae1
bundles/redis: use a lot less snapshots 2022-11-06 19:08:35 +01:00
e6e563fb33
bundles/systemd-timers: use bash, because we're using bash if 2022-11-06 19:08:13 +01:00
3dce0fb6ac
add bundle:minecraft to rx300 2022-11-06 18:52:38 +01:00
fba5d6a782
bundles/{jenkins-ci,openhab}: bump openjdk version 2022-11-06 18:52:14 +01:00
a1b7006cdc
bump as3320 and as8881 routes 2022-11-06 18:51:48 +01:00
b0a43fb128
bundles/users: enable color output in ipb 2022-11-06 14:27:35 +01:00
545d107baf
ssl: bump _.home.kunbox.net 2022-11-06 08:07:43 +01:00
cea68687d3
ssl: bump _.franzi.business 2022-11-06 08:07:30 +01:00
73e6ba0872
bundles/{matrix-dimension,mx-puppet-discord}: nodejs-dependency-hölle, once again 2022-11-05 07:47:07 +01:00
ee9f7b8875
bundles/element-web: requires legacy openssl provider for now 2022-11-04 07:29:11 +01:00
aa01329dbf
bundles/nodejs: update to nodejs 18 2022-11-04 07:28:53 +01:00
e1fe424df9
bundles/basic: support configuring /etc/environment 2022-11-04 07:28:14 +01:00
8b1ccb760a
bundles/ntfy: fix formatting errors 2022-11-04 07:27:38 +01:00
fdfd12683f
update netbox to 3.3.7 2022-11-04 07:08:40 +01:00
c7b27bd724
update element-web to 1.11.13 2022-11-04 07:08:38 +01:00
40cec956a9
home.nas: add jenny 2022-11-04 07:08:35 +01:00
3db6078d9b
bundles/postfix: set tls ciphers to medium to increase compatibility with centos 2022-11-04 07:08:33 +01:00
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
deba777a80
update netbox to 3.3.5 2022-10-16 21:34:04 +02:00
2cecb14112
update mautrix-whatsapp to 0.7.1 2022-10-16 21:33:48 +02:00
7fdaa3c26e
update gitea to 1.17.3 2022-10-16 21:33:31 +02:00
6ac1583a23
update element-web to 1.11.10 2022-10-16 21:33:10 +02:00
2095696131
bundles/mautrix-telegram: disable backfilling 2022-10-16 21:29:53 +02:00
f42597260d
htz-cloud.influxdb: disallow metrics endpoint 2022-10-02 11:05:16 +02:00
8c77e5824a
bundles/grafana: disable metrics 2022-10-02 11:00:06 +02:00
82ed8e1d3a
update mautrix-telegram 0.12.1 2022-09-29 18:21:51 +02:00
98864c2d55
update element-web to 1.11.8 2022-09-29 18:21:03 +02:00
c907f6d1e7
rx300: update mautrix-whatsapp to 0.7.0 2022-09-22 06:08:12 +02:00
06906f715b
rx300: update netbox to 3.3.4 2022-09-22 06:07:39 +02:00
afd306a23a
ovh.icinga2: remove _.qzwi.de monitoring 2022-09-22 06:04:18 +02:00
988d7e08a0
bundles/travelynx: use carton instead of cpanm 2022-09-22 06:03:51 +02:00
b642153e58
rx300: update netbox to 3.3.3 2022-09-16 04:44:51 +02:00
86742758c7
update element-web to 1.11.5 2022-09-14 17:32:34 +02:00
79bfef9c35
rx300: update travelynx to 1.23.12 2022-09-14 17:31:12 +02:00
edaa22dab6
bundles/infobeamer-cms: fix nginx config 2022-09-11 11:38:13 +02:00
038f19ea5e
bundles/unbound: use systemd-timers 2022-09-11 11:32:26 +02:00
d9be69d3a9
bundles/systemd-timers: don't auto-reset alerts 2022-09-11 11:26:57 +02:00
f004591e98
bundles/letsencrypt: use systemd-timers 2022-09-11 11:26:24 +02:00
944c66354b
bundles/mx-puppet-discord: github is archived, gitlab is the new hotness 2022-09-10 18:10:14 +02:00
0f6b757a34
update netbox to 3.3.2 2022-09-09 06:20:53 +02:00
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
2b29a9727c
update netbox to 3.3.1 2022-08-29 19:25:23 +02:00
00dddba445
update gitea to 1.17.1 2022-08-29 19:25:12 +02:00
a1bea394f2
update mautrix-telegram to 0.12.0 2022-08-29 19:24:57 +02:00
2fd94c2a4b
bundles/hedgedoc: fix nginx config 2022-08-29 19:24:33 +02:00
b84cd780b3
rx300: add DENOG to rspamd ignore list 2022-08-19 07:30:55 +02:00
aa5c7ff8b4
block access to the go /debug/pprof/ endpoint 2022-08-19 07:26:01 +02:00
0113b9a565
update netbox to 3.2.9 2022-08-16 20:32:42 +02:00
24ce6487bd
update mautrix-whatsapp to 0.6.1 2022-08-16 20:32:23 +02:00
89eddad1a3
update element-web to 1.11.3 2022-08-16 20:32:08 +02:00
65d65187f1
ssl: bump _.franzi.business 2022-08-16 20:31:50 +02:00
2a15887fb6
ssl: bump _.home.kunbox.net 2022-08-16 20:31:32 +02:00
84917649dd
bundles/arch-with-gui: have pytz available in i3pystatus 2022-08-14 12:47:52 +02:00
97126f443e
dns: add sewfile.htz-cloud.kunbox.net to SPF for franzi.business 2022-08-12 06:40:46 +02:00
08bc40827d
rx300: update netbox to 3.2.8 2022-08-08 21:54:47 +02:00
6b641890c3
bundles/grafana: replace the useless builtin of telegraf with something more useful 2022-08-07 10:16:07 +02:00
f6d6ef7aa7
update netbox to 3.2.7 2022-08-03 21:02:16 +02:00
3714880406
update gitea to 1.17.0 2022-08-03 21:02:05 +02:00
2a041629af
update element-web to 1.11.2 2022-08-03 21:01:46 +02:00
416599abab
rx300: update travelynx to 1.23.3 2022-07-25 10:10:05 +02:00
a1ce8bf91a
bundles/sudo: purge directory after package installation 2022-07-25 10:08:26 +02:00
5539957eb6
bundles/molly-guard: empty directories after package has been installed 2022-07-25 10:07:54 +02:00
9036458aa8
rx300: update mautrix-whatsapp to 0.6.0 2022-07-17 10:30:23 +02:00
86cc900d74
rx300: update gitea to 1.16.9 2022-07-17 10:30:05 +02:00
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
0d13e60a21
rx300: add more email domains to blocklist 2022-07-12 20:30:35 +02:00
feeb785425
update hedgedoc to 1.9.4 2022-07-12 20:30:06 +02:00
3e65a185f6
update element-web to 1.11.0 2022-07-12 20:29:35 +02:00
2a938d19f1
bundles/gitea: disable registration by default 2022-07-12 20:28:59 +02:00
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
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
dd5a97eced
bundles: add dependency to systemd-networkd 2022-07-10 13:32:11 +02:00
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
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
4f89345c8c
rx300: update netbox to 3.2.5 2022-06-21 06:33:30 +02:00
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
7b922841b7
rx300: update element-web to 1.10.15 2022-06-18 10:24:12 +02:00
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
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
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
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
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
c34f3ebbc3
ssl: bump _.home.kunbox.net and _.franzi.business 2022-05-27 19:27:28 +02:00
313f43f66b
update element-web to 1.10.13 2022-05-27 19:26:51 +02:00
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
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
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
51c9506a19
move pacman/no_extract to bundle metadata defaults 2022-05-16 10:52:14 +02:00
9730a2be13
bundles/wireguard: fix permissions for wireguard netdev files 2022-05-16 10:48:26 +02:00
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
303ca11c2e
update netbox to 3.2.3 2022-05-14 09:22:01 +02:00
1c247bc4bd
update element-web to 1.10.12 2022-05-14 09:21:39 +02:00
3614c23ef8 kunsi-p14s: add some paths to pacman/no_extract 2022-05-08 19:39:13 +02:00
b86251f79c
voc.infobeamer-cms: prepare for GPN20 2022-05-07 18:38:37 +02:00
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
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
8cc116c0c4
bundles/zfs: respect pacman/linux-lts option 2022-04-30 12:30:32 +02:00
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
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
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
3cdd6ce6ba
kunsi-p15s: add zfs dataset for /video 2022-04-27 05:42:11 +02:00
8414e3580b
fkusei-locutus: install voc-tracker-worker 2022-04-27 05:41:37 +02:00
7fffdbab32
bundles/voc-tracker-worker: improve bundle 2022-04-27 05:40:20 +02:00
a38b66a7c5
bundles/nfs-client: minor fixes 2022-04-27 05:39:34 +02:00
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
8145fb22e8
add bundle:voc-tracker-worker 2022-04-22 15:43:34 +02:00
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
fc2a69fc2c
rx300: update netbox to 3.2.1 2022-04-15 06:37:09 +02:00
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
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
4390256abc
bundles/zfs: add metadata option to disable ZFS OLD SNAPSHOTS check 2022-04-06 18:13:01 +02:00
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
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
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
5640556ad9
bundles/zfs: run scrub for each pool separately 2022-04-03 09:48:28 +02:00
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
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
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
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
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
ddd29bef3b
bundles: install yarn globally instead of in each individual bundle 2022-04-03 08:16:35 +02:00
193c038bab
rx300: update matrix-media-repo to 1.2.12 2022-04-03 08:05:49 +02:00
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
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
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
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
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
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
dbf5cf88a8
rx300: update element-web to 1.10.7 2022-03-24 18:27:41 +01:00
7c49ac59f5
more packages, please
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2022-03-24 18:14:50 +01:00
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
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
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
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
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
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
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
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
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
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
3e7e355dd6
rx300: update mautrix-whatsapp to 0.3.0 2022-03-19 07:02:54 +01:00
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
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
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
5179edb458
bundles/wireguard: fix forwarding firewall rules 2022-03-13 15:15:08 +01:00
c0ebd25ffc
bundles/systemd: systemd-timesyncd gets started automatically 2022-03-13 15:14:40 +01:00
212ba72b30
bundles/nftables: workaround does not work for debian buster 2022-03-13 14:13:59 +01:00
aa3ce32a7c
bundles/systemd: systemd-timesyncd package requires debian bullseye 2022-03-13 14:12:05 +01:00
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
c71d827691
bundles/icinga2: add some missing config 2022-03-13 14:07:28 +01:00
690c0b7050
bundles/nftables: restart on failure 2022-03-13 14:07:08 +01:00
a9d4cc73c1
bundles/systemd: ensure we have systemd-timesyncd installed and running 2022-03-13 14:06:40 +01:00
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
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
008940d75f
bundles/users: add journalctl bash alias 2022-03-13 09:21:10 +01:00
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
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
65efdc2e2c
bundles/pacman: disable pam_faillock 2022-03-13 08:42:48 +01:00
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
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
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
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
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
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
42a66751e1
bundles/vmhost: don't try to start libvirtd on every apply 2022-03-12 09:03:38 +01:00
4a03a9f89c
bundles/icinga2: fix directory permissions for /etc/icingaweb2 2022-03-12 09:03:35 +01:00
d7b47d2560
bundles/jenkins: jenkins.war has moved 2022-03-12 09:03:32 +01:00
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
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
29f7aef27a
kunsi-p14s: create network bridge for ethernet interfaces 2022-03-11 08:56:02 +01:00
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
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
e181be3fc6
bundles/wireguard: better dependency management 2022-03-10 21:00:42 +01:00
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
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
0082d3e014
bundles/zfs: ensure some targets are started on arch linux 2022-03-09 13:05:57 +01:00
c7e5002f17
bundles/wireguard: support arch linux and other netmasks than /31 2022-03-09 13:05:01 +01:00
05a2e501ce
bundles/bird: support arch linux 2022-03-09 13:04:34 +01:00
c023c144c3
bundles/arch-with-gui: install firefox 2022-03-09 13:03:56 +01:00
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
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
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
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
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
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
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
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
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
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
14e7fff081
bundles/grafana: improve config 2022-03-05 13:45:16 +01:00
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
65ba43525f
bundles/icinga2: introduce new notification period 'daytime' 2022-03-05 08:29:10 +01:00
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
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
32c47d3d2f
update postfixadmin to 3.3.11 2022-03-05 08:09:57 +01:00
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
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
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
b94de31f34
data/ssl: bump _.home.kunbox.net 2022-03-02 07:05:08 +01:00
64371a5926
data/ssl: bump _.franzi.business 2022-03-02 07:04:50 +01:00
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
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
696727d0d1
rx300: update element-web to 1.10.5 2022-03-01 06:38:53 +01:00
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
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
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
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
b62e9066bd
rx300: update gitea to 1.16.2 2022-02-26 14:12:57 +01:00
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
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
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
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
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
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
0a4da160fd
bundles/matrix-media-repo: add RestartSec 2022-02-19 20:02:08 +01:00
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
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
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
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
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
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
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
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
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
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
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
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
b4dca888c8
rx300: update travelynx to 1.22.0 2022-02-18 18:43:26 +01:00
94eff087a0
bundles/users: remove PROMPT_COMMAND from bashrc 2022-02-18 17:03:54 +01:00
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
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
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
4883b4ebd0
rx300: update mautrix-whatsapp to 0.2.4 2022-02-17 18:08:47 +01:00
a1026692da
rx300: update element-web to 1.10.4 2022-02-17 18:08:27 +01:00
1f6520ac02
bundles/sshmon: ignore prereleases and drafts 2022-02-17 18:08:02 +01:00
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
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
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
31e698b8a5
rx300: update mautrix-telegram to 0.11.2 2022-02-14 21:55:12 +01:00
be6e780217
rx300: update element-web to 1.10.3 2022-02-14 21:54:52 +01:00
4c034fb8aa
kunsi-p14s: install 'ag' 2022-02-14 21:54:13 +01:00
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
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
33d2d5beff
bundles/pacman: fix unattended-upgrades 2022-02-14 07:54:44 +01:00
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
26c7900e32
kunsi-p14s: install pdf viewer 2022-02-14 07:10:58 +01:00
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
8d72ca805d
kunsi-p14s: clean up after setup 2022-02-13 09:54:20 +01:00
24951f3070
kunsi-p14s: add nfs-client 2022-02-13 09:54:06 +01:00
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
3c4700eb6d
bundles/openhab: clean up old backups before doing new ones 2022-02-13 09:48:37 +01:00
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
14b402cdf3
bundles/backup-server: fix TypeError in check_backup_for_node 2022-02-13 09:42:59 +01:00
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
998a529d4c
EOL kunsi-t470 2022-02-13 09:24:00 +01:00
3c763820ed
bundles/pacman: ensure we have man 2022-02-13 09:23:30 +01:00
8c442ede2c
kunsi-p1s: document journal dataset 2022-02-13 08:57:38 +01:00
77e152f8ce
bundles/pacman: enable paccache.timer to clean up old package versions 2022-02-13 08:55:26 +01:00
5d7872042b
bundles/backup-server: add metadata backup-client/one_backup_every_hours 2022-02-12 19:04:15 +01:00
9a8e7abef4
kunsi-p14s: do backups 2022-02-12 18:56:54 +01:00
5be2610a86
bundles/systemd-networkd: don't manage resolv.conf if using resolved 2022-02-12 18:54:56 +01:00
262e935510
bump bundlewrap to 4.13.6 2022-02-12 18:11:22 +01:00
03d1ada220
bundles/zfs: explicitely set mountpoint for all datasets 2022-02-12 18:09:40 +01:00
32b732e509
bundles/arch-with-gui: add some backup paths 2022-02-12 18:08:04 +01:00
b426ce811c
kunsi-p14s: more packages 2022-02-12 18:07:47 +01:00
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
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
c1bb43286d
bundles/zfs: support arch linux 2022-02-12 11:24:50 +01:00
961a2891a0
bundles/systemd-networkd: fix systemd-resolved not getting started 2022-02-12 11:24:19 +01:00
556c2b6efe
libs.firewall: add rfc1918 to named networks 2022-02-12 11:23:27 +01:00
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
40485ced8a
bundles/systemd-timers: add support for multiple commands in timer 2022-02-07 07:01:19 +01:00
39e9ececa2
add error_context() to groups.py and nodes.py 2022-02-07 06:57:58 +01:00
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
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
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
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
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
46e6b0f704
home.nas: move cron jobs to systemd timers 2022-02-06 13:40:54 +01:00
0674b3f8db
bundles/netbox: move housekeeping to systemd timers 2022-02-06 13:40:33 +01:00
0599c4dae0
add bundle:systemd-timers 2022-02-06 13:39:52 +01:00
2a3a26c333
home.nas: system is no longer backup target, do run scrub at night 2022-02-06 08:51:44 +01:00
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
c43129104d
home.nas: more backup paths 2022-02-05 15:39:33 +01:00
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
12af28cb13
bundles/pretalx: specifying a revision is now mandatory 2022-02-05 11:42:18 +01:00
0d865c93d4
bundles/cron: use MAILTO=, rework metadata syntax 2022-02-05 11:41:41 +01:00
533f8075ca
voc.pretalx: plugin for media.ccc.de uses 'main' now 2022-02-05 11:41:21 +01:00
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
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
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
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
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
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
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
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
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
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
07157b6335
home.nas: disable automatic reboot after updates 2022-01-23 05:09:36 +01:00
a6b7e5aabb
bump bundlewrap to 4.13.5 2022-01-22 07:10:02 +01:00
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
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
69c36394d1
update element-web to 1.9.9 2022-01-17 19:51:29 +01:00
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
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
993fa8fa60
fix ip for proxmox-backupstorage 2022-01-14 13:47:32 +01:00
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
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
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
05f87bad77
home.nas: do some backups 2022-01-13 15:56:57 +01:00
b94c5fa020
data/backup/keys: remove comment from key for home.openhab 2022-01-13 15:55:20 +01:00
0dd9b061b9
bundles/scansnap: fix backup metadata 2022-01-13 15:54:49 +01:00
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
5df546754f
bundles/pacman: fix install_gui package definition 2022-01-09 08:23:59 +01:00
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
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
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
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
b20e729298
bundles/backup-server: add option to disable "last backup" check 2022-01-05 22:57:30 +01:00
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
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
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
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
c9054a243a
backups: do backup rotation ourselves instead of relying on zfs-auto-snapshot 2022-01-05 09:59:09 +01:00
b6eb12ed90
bundles/zfs: add option to disable snapshots for dataset tree 2022-01-05 09:52:20 +01:00
b40a8235d2
proxmox-backupstorage: add some documentation 2022-01-05 08:05:16 +01:00
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
a34c6539fd
move proxmox-backupstorage to htz-hel 2022-01-04 18:05:53 +01:00
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
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
05aa78c254
htz-hel.backup-kunsi: add kunsi-t470 to backup users 2022-01-04 16:13:24 +01:00
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
5a34d9d58c
bundles/systemd-networkd: add option to enable RA for nodes without dhcp 2022-01-04 15:47:05 +01:00
460a04278f
gce.bind01: exclude from backups 2022-01-04 15:36:30 +01:00
245b2219ee
bundles/backup-client: spread backups further apart 2022-01-04 15:34:53 +01:00
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
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
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
7c9be01a4f
groups: add htz and htz-hel 2022-01-04 15:18:27 +01:00
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
4c59479d5c
bundles/backup-server: add option for encrypted devices 2022-01-04 15:15:16 +01:00
d0b8ccef64
add bundle:dm-crypt 2022-01-04 15:15:13 +01:00
906b63b123
move hostname stuff to libs.tools.resolve_identifier 2022-01-04 15:15:11 +01:00
02f4547652
add proxmox-backupstorage 2022-01-04 15:15:08 +01:00
36a4ebcdd6
bundles/powerdns: also try to use node.hostname for dns generation 2022-01-04 15:15:03 +01:00
226fac0d78
nodes.py: use setdefault() 2022-01-04 15:15:00 +01:00
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
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
d288222e8e
voc.pretalx: add check-mail-received 2022-01-02 14:51:11 +01:00
dc2b2ae86b
bundles/check-mail-received: move check source to icinga2 itself 2022-01-02 14:50:32 +01:00
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
f99697ddc1
rx300: update netbox to 3.1.3 2022-01-02 13:38:40 +01:00
59fd71ac6f
update mautrix-telegram to 0.11.0 2022-01-02 13:38:23 +01:00
390f18a3a4
hooks: test zfs metadata consistency 2021-12-29 13:23:07 +01:00
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
803e1dc411
bundles/mautrix-whatsapp: no need for regular restarts any more 2021-12-28 16:48:43 +01:00
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
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
509f8cfd49
add group voc
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-12-25 20:11:34 +01:00
956185fde1
home.nas: fix local mqtt topic for c3voc bridge 2021-12-25 20:11:09 +01:00
cab71d60ba
voc.pretalx: temporary use fork of pretalx-downstream plugin 2021-12-25 20:10:41 +01:00
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
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
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
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
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
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
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
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
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
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
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
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
b6b5beaa27
bundles/netbox: send update notification mails 2021-12-22 11:12:34 +01:00
b8a109efb0
bundles/sshmon: rewrite check_github_for_new_release 2021-12-22 11:09:26 +01:00
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
7a596298e2
rx300: update gitea to 1.15.8 2021-12-22 11:03:31 +01:00
1057f45eb9
update element-web to 1.9.8 2021-12-22 11:03:08 +01:00
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
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
de3580a7d3
bundles/letsencrypt: ensure-some-certificate shouldn't create 10-year-certs 2021-12-19 06:36:11 +01:00
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
5261375574
bundles/pppd: add systemd-timer to automatically update dyndns 2021-12-19 06:21:04 +01:00
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
376dba347f
bundles/php: allow configuring of memory_limit and clear_env 2021-12-18 18:54:00 +01:00
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
20bbb3eb8e
libs/firewall: add AS3320 (Telekom) 2021-12-14 16:09:31 +01:00
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
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
969b45d9f7
kunsi-t470: limit openssh to RFC1918 and ipv6 2021-12-14 12:42:16 +01:00
c6c5d40084
bundles/nftables: add support for restricting to "all ipv6" and "all ipv4" 2021-12-14 12:40:54 +01:00
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
3fb125f043
update element-web to 1.9.7 2021-12-14 09:32:15 +01:00
3399b30efc
rx300: update travelynx to 1.12.3 2021-12-13 08:18:54 +01:00
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
e2efe87308
rx300: update netbox to 3.1.0 2021-12-12 08:36:18 +01:00
0e54a4e298
ssl: bump _.franzi.business 2021-12-12 08:01:16 +01:00
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
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
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
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
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
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
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
74f5b25f0d
various fixes, remove some TODOs 2021-11-27 10:40:20 +01:00
a76c60f881
bundles/nftables: fix shebang 2021-11-26 18:36:16 +01:00
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
6cf6307d97
rx300: fix php packages 2021-11-22 20:34:02 +01:00
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
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
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
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
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
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
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
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
c1c717e055
update mautrix-telegram to 0.10.2 2021-11-13 19:17:30 +01:00
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
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
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
7f82b8f754
gce.bind01: update powerdnsadmin to 0.2.4 2021-11-09 18:10:25 +01:00
8f6b8632f5
bundles/{element-web,hedgedoc,powerdnsadmin}: use 'yarn install --ignore-scripts' 2021-11-09 18:10:22 +01:00
e6428ce029
rx300: add sha1 hash of mautrix-whatsapp 2021-11-09 18:10:19 +01:00
33b6700848
bundles/mautrix-whatsapp: use precompiled binary 2021-11-09 18:10:17 +01:00
4a4f45bc9d
rx300: update netbox to 3.0.9 2021-11-09 18:10:14 +01:00
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
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
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
f7845e89de
rx300: add nginx access to rspamd web interface 2021-10-31 18:34:33 +01:00
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
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
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
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
aa8f19d948
update PORT_MAP 2021-10-31 09:43:42 +01:00
2f885e7bfb
bundles/kodi: allow websocket port in firewall 2021-10-31 09:43:07 +01:00
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
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
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
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
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
25f7da7f98
rx300: update element-web to 1.9.3 2021-10-26 15:39:32 +02:00
980bea3351
add node home.openhab 2021-10-26 15:38:01 +02:00
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
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
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
92b2e19e44
bundles/grafana: fix line width for fans 2021-10-18 19:41:16 +02:00
3775bcb9db
bundles/telegraf: add cache directory 2021-10-18 19:34:20 +02:00
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
29eef9ec59
htop: fix sorting 2021-10-16 07:38:57 +02:00
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
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
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
095d425de1
bundles/wireguard: do not run wg_health_check during bw apply 2021-10-14 09:02:01 +02:00
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
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
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
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
871b26c920
update element-web to 1.9.1 2021-10-11 20:57:43 +02:00
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
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
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
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
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
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
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
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
13057d6f76
home.router: remove openvpn client 2021-09-29 20:36:34 +02:00
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
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
30d4d989fc
add bundle:bird 2021-09-29 19:45:18 +02:00
fe44417b14
bundles/systemd-networkd: add dummy interfaces 2021-09-29 19:44:37 +02:00
996ef6e115
bundles/nftables: more sorted() 2021-09-29 19:44:13 +02:00
5f1f4fd654
bundles/wireguard: add option 'snat_to' for connections 2021-09-29 19:43:29 +02:00
902840ee7f
bundles/wireguard: use one wireguard connection per peer instead of one for all 2021-09-29 19:27:13 +02:00
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
8688726d94
rx300: also gzip svg images 2021-09-25 14:44:00 +02:00
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
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
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
05d69c1f12
bundles/powerdns: use named-checkzone to verify zone integrity 2021-09-22 16:42:26 +02:00
0edb7137f4
update netbox to 3.0.3 2021-09-22 16:42:10 +02:00
dc193ad4e8
update gitea to 1.15.3 2021-09-22 16:40:45 +02:00
bb8910d15f
bundles/gitea: use metadata.get() 2021-09-22 16:38:27 +02:00
c2e503d2d5
bump bundlewrap to 4.12.0 2021-09-22 16:36:23 +02:00
b21f7c856a
bundles/gitea: switch to new file type 'download' 2021-09-21 07:55:15 +02:00
fbb13e4c2f
bump _.franzi.business
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-09-19 19:40:05 +02:00
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
ed2bb66e3e
bundles/basic: add links to icinga, grafana and nginx vhosts to login message 2021-09-16 19:33:11 +02:00
5a7d0b0afd
bundles/icinga2: don't skip everything if check_sipgate_account_balance can't get applied 2021-09-16 19:33:08 +02:00
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
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
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
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
b159ecd744
dns: add tickets.franzi.business 2021-09-09 09:30:40 +02:00
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
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
3561a829d2
rx300: install bind9utils 2021-09-08 14:36:52 +02:00
de6249c65d
dns: fix some errors 2021-09-06 16:42:14 +02:00
38ba67a335
remove group 'htz' 2021-09-06 16:08:23 +02:00
cd31340c34
remove htz.ex42-1048908 2021-09-06 16:06:23 +02:00
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
e743de5404
dns: add comment about why kunbox.net does not use DMARC 2021-09-06 09:24:40 +02:00
3039a0900e
bundles/rspamd: add alias for dmarc reports 2021-09-06 09:14:18 +02:00
e78c4ed056
update gitea to 1.15.2 2021-09-06 09:13:11 +02:00
97ae55427d
update travelynx to 1.21.1 2021-09-06 09:12:15 +02:00
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
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
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
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
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
be2580b7f6
nodes/htz-cloud.pirmasens: add user autojenkins 2021-08-27 21:31:10 +02:00
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
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
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
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
65462ca536
bundles/nginx: default redirect mode should be 308 2021-08-22 07:20:45 +02:00
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
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
08485aa827
nodes/home.nas: add second bridge where LAN is available untagged 2021-08-22 07:13:32 +02:00
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
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
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
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
c6fe9d5eb2
bundles/postfix: fix .provides() 2021-08-21 12:32:47 +02:00
b0d2503f08
add bundle:netbox 2021-08-21 12:32:40 +02:00
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
4cb89d699c
bundles/grafana: fix missing derivative() in dovecot row 2021-08-21 08:39:39 +02:00
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
45dcd890b2
update travelynx to 1.21.0 2021-08-21 08:25:37 +02:00
12ca6f4ff7
bundles/postfix: open up SMTPS 2021-08-21 08:12:21 +02:00
a39a72b27e
dns: fix DMARC
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-08-21 08:11:09 +02:00
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
f98a769aa1
nodes/rx300: update postfixadmin 2021-08-21 07:56:36 +02:00
ee75e9d4ce
nodes/htz-cloud.miniserver: set icinga_options/pretty_name 2021-08-21 07:54:40 +02:00
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
a2083b9ca0
nodes: fix rspamd metadata 2021-08-21 07:48:31 +02:00
3da3c00310
bundles/rspamd: changing of .map files does not need restarting 2021-08-21 07:48:02 +02:00
c3960b0dfd
dns: EOL vliedel.random.franzi.business 2021-08-21 07:47:41 +02:00
ea9abc5f73
bundles/grafana: add dashboard row for dovecot 2021-08-21 07:47:24 +02:00
2a7ab3a183
move mail to rx300 2021-08-21 07:34:18 +02:00
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
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
72d91767ec
bundles/influxdb: fix INFLUXDB PROCESS check 2021-08-20 13:25:40 +02:00
949e139978
bundles/telegraf: influxdata has bullseye repos now 2021-08-20 13:25:22 +02:00
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
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
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
35938ead04
bundles/unbound: less caching of negative results 2021-08-19 20:02:27 +02:00
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
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
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
5b3ec48687
nodes/voc.pretalx: update to 2.2.0 2021-08-17 16:47:24 +02:00
5bbd188b0b
bundles/pretalx: no sudo for rebuilding 2021-08-17 16:46:58 +02:00
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
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
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
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
bb519adb2c
bundles/backup-client: more logging, fix wrong variable name 2021-08-08 07:47:07 +02:00
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
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
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
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
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
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
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
b677eaf187
bundles/grafana: fix file permissions 2021-08-07 07:03:15 +02:00
da49a907f7
bundles/nftables: set RemainAfterExit=yes 2021-08-07 07:01:00 +02:00
8eb7cbf6fd
bundles/mautrix-whatsapp: don't restart so often 2021-08-07 07:00:27 +02:00
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
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
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
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
55d481b86c
update element-web to 1.7.34 2021-08-04 15:44:15 +02:00
91a527c35a
bundles/mautrix-telegram: change animated stickers to webm 2021-08-01 12:41:47 +02:00
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
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
e596b45344
bundles/backup-client: actually show which rsync call produced which error 2021-08-01 07:57:22 +02:00
1ae328d8f3
items/zfs_*: improve
All checks were successful
kunsi/bundlewrap/pipeline/head This commit looks good
2021-07-30 15:44:34 +02:00
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
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
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
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
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
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
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
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
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
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
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
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
4666f1c923
bundles/users: remove duplicate keys from ssh pubkeys 2021-07-24 12:10:03 +02:00
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
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
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
804516c2f4
move matrix-dimension to rx300 2021-07-23 20:02:57 +02:00
e7023d087b
bundles/matrix-dimension: add zfs 2021-07-23 19:53:49 +02:00
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
2b8ede117a
nodes/rx300: install unbound 2021-07-23 19:15:08 +02:00
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
ff90f8cbca
bundles/radicale: add metadata reactor for nginx vhost 2021-07-23 12:56:29 +02:00
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
b5530b15ee
move weechat to rx300 2021-07-23 10:04:32 +02:00
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
b565d5c882
move matrix stuff to rx300 2021-07-23 07:58:50 +02:00
905a7917f8
bundles/matrix*: fix directories/repos 2021-07-23 07:58:15 +02:00
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
dcba3a446f
update element-web to 1.7.33 2021-07-22 16:15:40 +02:00
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
66fce8e076
bundles/rspamd: fix some dependencies 2021-07-18 07:56:26 +02:00
c9a1de5a8e
bundles/postfixadmin: fix backup path to be able to use zfs snapshots 2021-07-18 07:55:52 +02:00
6cadf33ae3
bundles/postfix: support having postfixadmin without setting myhostname 2021-07-18 07:55:19 +02:00
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
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
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
fc0495f13a
bundles/rspamd: dkim key can be a string, too 2021-07-17 16:18:18 +02:00
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
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
574b3a833a
nodes/htz.ex42-1048908: fix metadata option for matrix-media-repo 2021-07-17 12:16:43 +02:00
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
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
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
9fc86a4d9f
move paste.kunsmann.eu to paste.franzi.business, die-brontosaurier-waren-es.org to rx300 2021-07-17 10:53:35 +02:00
eb566fa5c5
move kunbox.net and kunsmann.eu to rx300 2021-07-17 10:26:38 +02:00
2959d19391
nodes/htz.ex42-1048908: add note about which bundles need migrating to rx300 2021-07-17 10:18:19 +02:00
ce9f6dd7ba
bundles: add zfs dataset to bundles 2021-07-17 10:17:39 +02:00
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
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
cbeb42c8ae
bundles/matrix-media-repo: add zfs 2021-07-17 09:12:11 +02:00
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
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
6022bac0ef
have more bundles provide nginx metadata for themselves 2021-07-16 14:20:01 +02:00
2ca14d0f62
nodes/rx300: update gitea to 1.14.5 2021-07-16 14:12:35 +02:00
999f413dfc
move wiki.franzi.business to rx300 2021-07-16 13:34:20 +02:00
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
8aac46206a
remove obsolete metadata from htz.ex42-1048908 2021-07-15 18:41:43 +02:00
7d73c29ccd
move element-web to rx300 2021-07-15 18:41:27 +02:00
f7098b0d35
bundles/element-web: move to /opt (and zfs, if we have that) 2021-07-15 18:40:48 +02:00
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
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
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
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
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
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
0a14d46cf2
bundles/jenkins: add zfs dataset 2021-07-11 15:29:42 +02:00
3871893c9b
move jenkins to rx300 2021-07-11 15:24:08 +02:00
8da40eab67
nodes/rx300: add php 8.0 2021-07-11 15:23:49 +02:00
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
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
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
8f4db6f2ba
bundles/postfix: install pkg_pacman:s-nail 2021-07-10 15:59:03 +02:00
fe5b7b7335
nodes/htz-cloud.pirmasens: add bundle:check-mail-received 2021-07-10 15:54:02 +02:00
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
76b859c629
libs.faults: add ensure_fault_or_none() and join_faults() 2021-07-10 14:21:56 +02:00
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
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
b17ce5f905
nodes/htz.ex42: fix git.kunsmann.eu redirect url 2021-07-09 18:21:01 +02:00
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
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
1f25d0052e
add legacy redirect for git.kunsmann.eu 2021-07-09 17:26:54 +02:00
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
1927837205
bundles/gitea: add /var/lib/gitea to backups 2021-07-09 16:22:37 +02:00
9bf0b8a0b0
bundles/gitea: use zfs datasets for all data 2021-07-09 16:22:10 +02:00
82dd354f92
bundles/gitea: fix permissions for /home/git/.ssh 2021-07-09 16:15:38 +02:00
bd77f8da93
move franzi.business to rx300 2021-07-09 16:11:53 +02:00
c2cb5a2546
move gitea to rx300 2021-07-09 15:57:39 +02:00
95c5e0b6ea
bundles/gitea: use generic vhost name 2021-07-09 15:55:31 +02:00
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
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
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
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
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
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
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
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
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
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
b7935e59e7
nodes/home.paperless: increase max_body_size 2021-07-02 15:49:17 +02:00
8ef6522ead
bundles/travelynx: needs directory to git_deploy into 2021-07-02 15:48:48 +02:00
f9e2715b30
bundles/systemd-networkd: removal of unmanaged files must also trigger restart of systemd-networkd 2021-07-02 15:03:47 +02:00
7ac7c1a2b7
bundles/cron: ensure cron is installed and running 2021-07-02 06:36:51 +02:00
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
683ad81015
dns: fix CNAME for status.franzi.business 2021-07-01 18:23:11 +02:00
9816da4f85
bundles/postgresql: only install postgresql-server-dev-* if needed 2021-07-01 18:22:38 +02:00
210ae8dd2e
bundles/zfs: debian bullseye does not need zfs from backports 2021-07-01 18:19:24 +02:00
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
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
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
ba30015f7f
nodes/rx300: set pretty name for status page 2021-07-01 16:15:03 +02:00
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
d32f675de7
bundles/miniflux: use vhost with generic name 2021-07-01 16:04:56 +02:00
68e79b4883
bundles/nginx: only add well-known alias for vhosts which use letsencrypt 2021-07-01 16:04:46 +02:00
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
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
7f27762054
bundles/zfs: report *used*, not free storage space 2021-06-29 15:18:31 +02:00
73ebf746f9
nodes/{aurto,rx300}: add backups 2021-06-29 14:58:14 +02:00
da6a607033
nodes/rx300: add nginx, letsencrypt, postgresql 2021-06-29 14:24:10 +02:00
f01e24f995
bundles/postgresql: wait 10s after restarting 2021-06-29 14:23:51 +02:00
faae70bbb1
nodes/aurto: add ssl to nginx vhost 2021-06-29 14:14:18 +02:00
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
dfbdbe73bd
bundles/icinga2: only nodes which have bundle:apt have unattended-upgrades (for now) 2021-06-28 19:48:05 +02:00
95ed5c6932
groups/arch: do not set exclude_from_monitoring by default 2021-06-28 19:45:26 +02:00
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
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
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
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
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
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
1c10be5cdc
bundles/zfs: add per-dataset metrics 2021-06-25 20:04:30 +02:00
9cc324f84c
bundles/backup-server: enable compression for backups 2021-06-25 20:04:10 +02:00
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
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
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
68865895e5
bundles/grafana: set decimals=0 for fan speed info 2021-06-19 14:18:30 +02:00
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
d4659fd189
update gitea to 1.14.3 2021-06-19 08:47:32 +02:00
8c47b74ec3
update travelynx to 1.20.0 2021-06-18 13:09:38 +02:00
5a8f7f4075
update mautrix-telegram, update mautrix-whatsapp 2021-06-16 07:15:20 +02:00
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
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
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
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
611954e199
nodes/kunsi-t470: add a bridge on ethernet to be able to use vms 2021-06-11 15:02:03 +02:00
1b70a4247c
upgrade element-web to 1.7.30 2021-06-11 12:58:37 +02:00
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
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
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
3fc51d9eba
nodes/home.nas: move scrub to where it does not interfere with backups 2021-06-06 08:03:16 +02:00
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
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
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
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
91cf6cd1e5
move lm-sensors to its own bundle, add to hardware systems 2021-06-05 12:23:09 +02:00
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
6138db1089
bundles/matrix-synapse: no statistics 2021-06-05 11:13:19 +02:00
ff85191bbe
bundles/radvd: fix typo
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-04 07:28:40 +02:00
95856a2c2d
add bundle:sysctl 2021-06-04 07:28:26 +02:00
8d21e15106
bundles/pppd: restart nftables if it isn't running 2021-06-04 07:20:59 +02:00
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
0a7e5bcdcd
move default values to libs/defaults 2021-06-03 18:27:45 +02:00
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
5c83287057
EOL bundle:iptables
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-06-03 13:59:50 +02:00
d569b00960
modify nodes and bundles for new nftables syntax 2021-06-03 13:59:36 +02:00
ecb67d012b
bundles/nftables: introduce 2021-06-03 13:57:50 +02:00
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
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
a6434bd8d0
create dedicated user for kunsi work laptop 2021-06-01 16:55:16 +02:00
09397e2597
bundles/users: fix adding of non-admin users 2021-06-01 16:53:29 +02:00
47c18913ca
bundles/pacman: install htop 2021-06-01 16:53:14 +02:00
fba83415c7
bundles/letsencrypt: prepare for arch linux 2021-06-01 16:52:52 +02:00
cf3c45fdd5
bundles/nginx: prepare for arch linux 2021-06-01 16:52:03 +02:00
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
d756e3daf8
nodes/kunsi-t470: fix scansnap mount path 2021-05-29 09:21:18 +02:00
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
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
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
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
d193ec8ef3
bundles/paperless: set some options 2021-05-24 10:23:19 +02:00
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
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
22c98a4206
nodes/home.paperless: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-23 17:41:19 +02:00
aaf937a89f
nodes/kunsi-t470: add automount for scansnap 2021-05-23 15:24:21 +02:00
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
46f7aa93ef
bundles: fix dependencies 2021-05-23 14:54:24 +02:00
8dc66421c0
bundles/basic: don't rewrite /etc/locale.gen every time 2021-05-23 14:53:45 +02:00
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
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
17f3537d74
nodes/kunsi-*: use new groups 2021-05-23 14:36:19 +02:00
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
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
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
e7dce1c36b
nodes/rx300: monitoring
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-20 18:24:35 +02:00
522cecb9fb
nodes/rx300: add smartd 2021-05-20 18:24:23 +02:00
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
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
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
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
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
3b3bdeecab
bundles/pacman: add lm_sensors to telegraf, add dashboard row 2021-05-19 18:46:22 +02:00
c74a249a00
nodes/kunsi-seibert-x1: don't try to manage networking 2021-05-19 18:35:45 +02:00
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
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
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
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
93e36156a0
bundles/grafana: disable editing of tasmota dashboard 2021-05-15 18:38:12 +02:00
25b305bddf
bundles/mosquitto: fix .provides()
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-15 08:58:15 +02:00
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
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
d9595ad8e6
bundles/icinga2: fix typo in check_usv_snmp 2021-05-15 07:28:15 +02:00
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
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
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
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
459c7731cb
bundles/backup-client: use --compress-level=1 instead of -z 2021-05-14 10:47:58 +02:00
1fce93ad30
update postfixadmin setup password 2021-05-13 09:15:55 +02:00
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
7775f33679
bundles/apt: move patchday to 21:00 UTC 2021-05-13 09:10:33 +02:00
835726f3a7
nodes: update postfixadmin to 3.3.9 2021-05-13 09:01:45 +02:00
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
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
c41c43cd5c
nodes/home.nas: more snapshot for storage/nas 2021-05-08 11:07:12 +02:00
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
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
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
a971bf5d3b
nodes: add work laptop
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-02 20:53:10 +02:00
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
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
e6345bce30
bundles/grafana: disable editing of dashboard for home.usv01 2021-05-02 18:02:07 +02:00
974a5039f5
bundles/grafana: add dashboard for home.usv01 2021-05-02 17:50:31 +02:00
c1b1dc1a29
bundles/grafana: add support for custom managed dashboards 2021-05-02 17:49:40 +02:00
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
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
ada87897a4
bundles/grafana: add wireguard graphs 2021-05-02 13:55:41 +02:00
40160fb25a
bundles: remove telegraf metrics from systemd-networkd and icinga2 2021-05-02 13:18:35 +02:00
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
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
ae0bb8ed58
bundles/postfix: rework exporter for better usability 2021-05-02 12:06:53 +02:00
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
0b972bc464
bundles/grafana: add nginx
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-05-02 11:34:55 +02:00
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
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
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
c548a88ee7
bundles/grafana: introduce, add to htz-cloud.influxdb 2021-05-02 10:44:50 +02:00
1a1ea721d9
bundles/telegraf: also work for arch linux systems 2021-05-02 07:32:54 +02:00
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
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
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
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
3de85e6717
bundles/webfs: introduce 2021-04-30 19:40:45 +02:00
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
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
8fd83241ca
bundles: ensure apt/repos/*/items is a set 2021-04-30 12:49:59 +02:00
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
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
671b460855
nodes/htz.ex42-1048908: add unicornsden.franzi.business 2021-04-25 10:04:56 +02:00
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
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
a8e07c62c3
nodes/home.router: add ssl to vnstat nginx vhost 2021-04-25 09:10:05 +02:00
d98a1adfd9
bundles/ssl: support using a preexisting ssl certificate 2021-04-25 09:09:23 +02:00
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
1360a36a95
nodes/home.router: poll switch and usv more often 2021-04-24 14:58:09 +02:00
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
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
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
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
966ee7dae9
bundles/unbound: set correct statistics interval 2021-04-24 12:00:09 +02:00
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
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
a980e22ecb
bundles/telegraf: support requesting additional capabilities and/or groups 2021-04-24 11:44:55 +02:00
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
2f222371c3
nodes/htz-cloud.influxdb: add influxdb2 to node 2021-04-24 10:35:41 +02:00
1a0e68e2e7
dns: add influxdb.kunsmann.eu 2021-04-24 10:34:11 +02:00
dc0695e38f
bundles/influxdb: introduce 2021-04-24 10:17:56 +02:00
c97d9ab948
bundles/postfix: use own postqueue exporter 2021-04-24 10:17:05 +02:00
76f46ca7d5
bundles/telegraf: add sudoers file 2021-04-24 10:12:56 +02:00
2432075f9a
bundles/telegraf: ensure telegraf is running, restart on config changes 2021-04-24 10:05:52 +02:00
f58e66f701
bundles/c3voc-addons: make sure we're not accidentially overwriting c3voc telegraf config 2021-04-24 09:44:31 +02:00
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
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
a37d31973a
bundles: add some telegraf plugins 2021-04-24 09:14:25 +02:00
5e0541aef8
bundles/telegraf: introduce 2021-04-24 09:14:21 +02:00
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
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
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
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
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
8b14575657
bundles/postgresql: add metadata keys for some performance related config options 2021-04-23 14:02:04 +02:00
616feb54b2
bundles/sshmon: fix an issue where check_mounts couldn't properly detect systemd mount units 2021-04-23 14:01:24 +02:00
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
c0ff320281
bundles/scansnap: set proper permissions for /srv/scansnap 2021-04-21 18:25:37 +02:00
c79b3f77c2
bundles/scansnap: cleanup old scans 2021-04-21 18:20:47 +02:00
0c0a8e6263
bundles/scansnap: chown files to nobody-nogroup 2021-04-21 18:18:27 +02:00
b5fb5dd6c2
bundles/scansnap: introduce, add to home.nas 2021-04-21 17:58:16 +02:00
5e49e3204b
bundles/nfs-server: sort shares 2021-04-21 17:56:53 +02:00
24362768fb
bundles/dhcpd: rework metadata
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-20 18:18:17 +02:00
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
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
12c04cf3be
bundles/users: some more bash config 2021-04-19 20:39:57 +02:00
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
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
51ee9be424
bundles/radvd: advertise atleast every 30 seconds 2021-04-18 11:05:10 +02:00
0c59af2fdc
nodes/home.octoprint-vielschichtigkeit: set exclude_from_monitoring 2021-04-17 09:40:02 +02:00
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
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
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
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
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
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
ab13ed1ef5
apt/gpg-keys: update php gpg key 2021-04-11 21:44:47 +02:00
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
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
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
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
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
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
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
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
018bdb2f83
bundles/matrix*: better monitoring
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-10 16:40:44 +02:00
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
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
b33ddaadb5
bundles/simple-icinga-dashboard: add replacements 2021-04-10 15:43:37 +02:00
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
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
efd2875b17
bundles/c3voc-addons: add sms to NGINX VHOST checks 2021-04-10 15:04:34 +02:00
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
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
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
0d1a220b7b
bundles/systemd-networkd: generate unique mac address for vlan interfaces 2021-04-10 12:18:23 +02:00
ac58f2a10c
nodes/home.router: fix dhcp config for dmz 2021-04-10 12:09:24 +02:00
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
00d46cb1b1
bundles/pppd: fix typo in restart-pppoe-if-no-public-ip 2021-04-10 09:49:40 +02:00
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
3a7d612c7a
nodes/home.router: update to bullseye 2021-04-10 09:20:34 +02:00
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
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
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
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
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
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
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
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
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
c418102000
bundles/netdata: fix iptables default 2021-04-04 10:30:45 +02:00
513eb4bed6
bundles/mosquitto: add monitoring
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-04-03 09:43:24 +02:00
2027308249
bundles/zfs: fix typo in check_zpool_space 2021-04-03 09:41:17 +02:00
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
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
5d5930265a
bundles/postfix: remove print statement 2021-04-02 18:29:33 +02:00
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
4a3be10add
bundles/apt: fix if in upgrade-and-reboot 2021-04-02 13:40:55 +02:00
6712d98040
nodes/htz-cloud.miniserver: remove dummy metadata, add monitoring 2021-04-02 13:40:10 +02:00
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
7ca24d27d3
bundles/apt: add a bit of code to remove old, unused kernel images 2021-04-02 08:11:17 +02:00
8a0c8f32ae
bundles: less Restart=on-failure, more Restart=always 2021-04-02 08:05:33 +02:00
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
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
c5eb2f4f70
bundles/icinga2: do not send recovery emails 2021-04-01 17:11:42 +02:00
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
957cac5ebc
bundles/postfix: disable SPAM BLOCKLIST check if relayhost is set 2021-04-01 17:00:53 +02:00
3481d4e13c
have ovh systems relay mail via htz.ex42-1048908, too 2021-04-01 17:00:23 +02:00
61c6188454
bundles/postfix: mynetworks now supports identifiers 2021-04-01 16:59:49 +02:00
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
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
b679f568eb
bundles/systemd-networkd: no need for a specific order in /etc/systemd/network/ 2021-04-01 16:26:06 +02:00
d787f8b0a3
bundles/systemd-networkd: rework routes 2021-04-01 16:25:24 +02:00
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
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
da9fe36646
bundles/pretalx: support installing plugins 2021-03-30 19:52:03 +02:00
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
e924cc1322
nodes/htz.ex42-1048908: update element-web to 1.7.24 2021-03-30 18:22:19 +02:00
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
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
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
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
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
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
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
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
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
39c1d34bbb
bundles/sshmon: fix disk space usage limits 2021-03-27 12:07:49 +01:00
8f0f635484
bundles/basic: change load graph for cpu graph 2021-03-27 12:06:12 +01:00
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
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
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
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
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
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
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
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
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
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
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
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
28dd9694af
add bundle:oidentd
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-21 17:40:58 +01:00
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
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
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
087bc4c669
nodes: iptables for all
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-21 11:44:52 +01:00
3bc5e55400
bundles/iptables: don't apply iptables rules if a rules file is missing 2021-03-21 11:44:27 +01:00
4b00c8b55a
bundles/unbound: do not bind to 0.0.0.0 if qemu is installed 2021-03-21 11:43:53 +01:00
5a0aa82ec9
bundles/powerdns: fix missing imports 2021-03-21 11:43:17 +01:00
62f7080db9
bundles/nfs-server: add iptables config 2021-03-21 11:24:21 +01:00
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
850d860d59
bundles/powerdns: add iptables config 2021-03-21 11:12:18 +01:00
31ddea7649
bundles/dovecot: add iptables config 2021-03-21 11:12:03 +01:00
5775001301
bundles/postfix: add iptables config 2021-03-21 11:11:49 +01:00
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
b943d2d465
rework iptables configuration
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-21 10:30:04 +01:00
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
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
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
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
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
52cab71fec
bundles/wireguard: also allow outgoing traffic
How did this ever work without this rule?
2021-03-15 09:00:35 +01:00
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
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
d596d46783
nodes/htz.ex42-1048908: update travelynx to 1.19.8 2021-03-14 17:03:34 +01:00
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
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
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
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
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
f214f70cd4
bundles/basic: add textual cpu stats to htop 2021-03-06 09:58:22 +01:00
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
08d34b0e09
nodes/kunsi-t470: change mode of /home/kunsi 2021-03-06 09:55:32 +01:00
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
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
84ece2731c
did anyone say updates?
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-03-05 07:20:08 +01:00
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
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
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
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
51ca74549e
bundles/basic: add htoprc
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-24 19:24:56 +01:00
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
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
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
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
b470fddc12
bundles/nginx: add gdpr-compatible log format 2021-02-20 21:11:12 +01:00
8cb172a1c1
bundles/pleroma: remove NoNewPrivileges=true, interferes with mail delivery 2021-02-20 20:57:00 +01:00
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
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
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
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
33fb9fb3f5
nodes/htz-cloud.pleroma: introduce 2021-02-20 19:14:23 +01:00
1f3e7afb2c
bundles/pleroma: initial NON-WORKING version 2021-02-20 19:14:20 +01:00
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
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
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
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
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
1c0a3ee8e7
bundles/postgresql: fix postgresql config path 2021-02-20 16:50:38 +01:00
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
3fa81ddc85
bundles/gitea: use canned stop action 2021-02-20 15:47:35 +01:00
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
228786f6aa
bundles/letsencrypt: generate a dummy certificate, if no certificate already exists 2021-02-20 13:52:40 +01:00
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
1ac6559b9f
bundles/postgresql: add pg_query_mon 2021-02-20 10:56:20 +01:00
56ff2a794f
nodes/home.router: enable sms notifications for monitoring 2021-02-19 14:46:29 +01:00
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
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
debabe85b0 nodes/home.router: add dhcp and ipv6 to DMZ 2021-02-19 12:02:46 +00:00
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
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
4be912ac31
nodes/kunsi-t470: add bundles systemd and systemd-networkd 2021-02-18 17:57:33 +01:00
6e9fb7044a
bundles/systemd-networkd: add "enable-resolved" flag 2021-02-18 17:56:43 +01:00
fbf0371371
bundles/systemd: support different timezones 2021-02-18 17:56:06 +01:00
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
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
f036336f30
nodes/kunsi-t470: add bundle:lldp 2021-02-18 15:11:05 +01:00
75224f0d5c
bundles/lldp: support arch linux 2021-02-18 15:10:50 +01:00
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
f4a644795e
bundles/basic: support setting a different default locale 2021-02-18 14:51:33 +01:00
18572d56e6
nodes/kunsi-t470: introduce 2021-02-18 14:25:26 +01:00
32d129015e
bundles/pacman: introduce, support pkg_pacman in some other bundles 2021-02-18 14:24:57 +01:00
9bf7f856af
bundles/users: allow setting another shell 2021-02-18 14:24:09 +01:00
8a2bef9b77
bundles/apt: move vim to default packages 2021-02-18 14:23:43 +01:00
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
e0ffb4fd2f
postfixadmin: bump to 3.3.7 2021-02-18 10:28:34 +01:00
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
4bd3945b6b
Jenkinsfile: add editorconfig checker
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-17 13:37:26 +01:00
6118e6a530
Jenkinsfile: use less steps
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-17 13:14:21 +01:00
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
8cef49cfce
editorconfig: add *.vault 2021-02-17 11:44:39 +01:00
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
b42e39ed0a
get rid of check_rbl 2021-02-17 10:51:49 +01:00
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
d1b1ca7729
nodes/home.openwebrx: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-16 08:43:10 +01:00
abb99ed58a
bundles/raspberrypi: remove isc-dhcp-client 2021-02-16 08:41:37 +01:00
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
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
9a2f9038c4
libs/tools: resolve_identifier supports ip networks, not ip addresses 2021-02-15 13:53:53 +01:00
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
9d0a602b49
nodes/ovh.wireguard: add config for kunsi-oneplus3 2021-02-14 21:41:01 +01:00
56fce7d460
bundles/wireguard: add exclude_from_monitoring option for wireguard peers 2021-02-14 21:35:37 +01:00
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
2b7704630c
dns: add eskalation.jetzt 2021-02-14 17:22:25 +01:00
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
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
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
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
adeb8eff88
bundles/postgresql: only do database dumps if we're actually doing backups 2021-02-13 09:04:59 +01:00
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
3d1468b214
bundles/backup-client: backup-pre-hooks should have numeric sorting 2021-02-13 08:37:49 +01:00
7aeb46382d
bundles/zfs: move icinga2_api to metadata defaults 2021-02-13 08:37:00 +01:00
2fbbaa1586
bundles/zfs: remove support for snapshot_only and snapshot_never (unused) 2021-02-13 08:36:10 +01:00
b20f369ea8
bundles/backup-client: metadata backup-pre-hooks now use /bin/sh by default 2021-02-13 08:26:46 +01:00
077eaa265c
bundles/radicale: use Fault.as_htpasswd_entry() instead of pre-encrypting passwords 2021-02-13 08:17:31 +01:00
978285bf32
bundles/matrix-media-repo: add backup/paths metadata 2021-02-13 08:09:48 +01:00
f52df58517
bundles: code style improvements
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-02-12 20:45:41 +01:00
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
c0353d2911
bundles/apt: add option to configure patch-hour, not only patchday 2021-02-12 18:53:25 +01:00
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
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
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
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
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
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
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
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
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
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
0d1e987a6f
bundles/backup-client: add backup-pre-hooks (fixes #24) 2021-02-07 20:47:22 +01:00
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
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
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
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
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
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
457052d42b
bundles/gitea: downloading gitea updates needs stopping it first 2021-02-06 09:43:54 +01:00
d7398135d1
nodes/home.wled-wohnzimmer: add node 2021-02-06 09:39:36 +01:00
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
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
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
d0c0425b65
nodes/htz-cloud.pirmasens: fix website check for salonkatrin.de 2021-01-31 11:38:45 +01:00
8523754935
bundles/users: add vim-keybindings for pane navigation to tmux.conf 2021-01-31 07:59:19 +01:00
bdc5b4de33
bundles/transmission: don't overwrite configs managed by transmission 2021-01-30 17:39:34 +01:00
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
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
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
f56852c27d
bundles/postfixadmin: use tagged release 2021-01-29 18:07:57 +01:00
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
b3e6063596
bundles/unbound: silence refresh-root-hints cronjob 2021-01-29 17:58:24 +01:00
c31066fea8
bundles/mautrix-whatsapp: restart weekly to work around 24/7 connection issues 2021-01-29 17:27:33 +01:00
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
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
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
f3d8a1412c
bundles/dovecot: better ssl
All checks were successful
bundlewrap/pipeline/head This commit looks good
2021-01-24 18:44:25 +01:00
2aaf7cf8f8
bundles/nginx: better ssl 2021-01-24 18:44:13 +01:00
614bdf9dec
bundles/basic: support creating additional locales 2021-01-24 07:49:49 +01:00
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
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
4a9463db5f
bundles/basic: ensure a proper locale is installed 2021-01-23 12:05:59 +01:00
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
7f36516faa
groups/debian-sid: fix os_version attribute 2021-01-23 11:33:42 +01:00
75d0de8a99
nodes/voc.pretalx: add os information 2021-01-23 11:33:04 +01:00
c41ee0f806
bundles/apt: fix logging for upgrade-and-reboot 2021-01-23 11:32:35 +01:00
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
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
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
ad51400cae
requirements.txt: bump bundlewrap to 4.4.2 2021-01-23 09:08:47 +01:00
52eebfeb16
nodes/rx300: add kunsi work laptop ssh keys 2021-01-22 19:07:25 +01:00
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
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
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
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
1041e092b1
bundles/dhcpd: add bash alias for lease list 2021-01-17 09:12:32 +01:00
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
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
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
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
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
3b4ba137e7
nodes/voc.pretalx: add postfix 2021-01-17 07:36:57 +01:00
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
173746fe9c
bundles/sshmon: ensure sshmon user is able to log in 2021-01-16 22:31:18 +01:00
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
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
988c71a6fb
nodes/voc.pretalx: monitoring 2021-01-16 22:14:34 +01:00
ec8802dd4a
bundles/backup-server: ignore all nodes which don't have bundle:backup-client 2021-01-16 22:12:49 +01:00
9f0fc90679
bundles/pretalx: fix wrong metadata key 2021-01-16 22:12:16 +01:00
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
70944d7065
bundles/pretalx: introduce 2021-01-16 22:03:38 +01:00
0b9056bd2b
add pseudo-bundle to add configs to c3voc ansible managed hosts 2021-01-16 22:03:03 +01:00
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
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
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
9854fc9dbc
bundles/hostname: also set motd 2021-01-15 15:29:49 +01:00
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
af86236f42
nodes/htz.ex42-1048908: fix permissions for vliedel.random.franzi.business 2021-01-10 10:47:38 +01:00
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
4e6be9b51e
nodes/home.nas: less snapshots for storage/download 2021-01-10 10:02:25 +01:00
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
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
00fd1df67a
bundles/wide-dhcp6c: stop, then start, instead of restart 2021-01-09 12:51:37 +01:00
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
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
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
dca13263e2
bundles/systemd-networkd: add option for setting static routes 2021-01-08 16:09:59 +01:00
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
c49d9ffc56
nodes/home.downloadhelper: add node, add storage on home.nas 2021-01-07 22:15:14 +01:00
fb42f9e667
bundles/dhcpd: catch keyerrors for nodes which do dhcp in unmanaged networks 2021-01-07 22:14:17 +01:00
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
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
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
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
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
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
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
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
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
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
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
fc94e63467
nodes/{home.nas,rx300}: remove bond priority (unused) 2021-01-02 12:18:41 +01:00
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
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
379dc9e1fe
nodes/home.nas: fix LACP priority 2021-01-01 21:59:49 +01:00
16ea6ce0d5
bundles/systemd-networkd: disable STP on bridges 2021-01-01 21:59:21 +01:00
48fc341137
bundles/backup-client: add monitoring for backups 2021-01-01 13:59:42 +01:00
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
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
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
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
fede30c2cc
bundles/mautrix-whatsapp: introduce 2020-12-31 12:18:34 +01:00
4a3cee1623
nodes/htz.ex42-1048908: remove voc-loudness-monitor 2020-12-29 19:05:40 +01:00
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
ee0b8a569e
nodes/htz.ex42-1048908: update gitea to 1.13.1 2020-12-29 10:11:33 +01:00
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
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
31fdcae9ee
dns: add flauschehorn.sexy
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-25 16:18:46 +01:00
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
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
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
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
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
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
d2be654206
bundles/unbound: enable prefetching 2020-12-22 09:24:10 +01:00
5e45efb7ae
bundles/unbound: better caching 2020-12-22 09:22:37 +01:00
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
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
0b52f8e7e6
bundles/icinga2: allow limiting permissions for api users 2020-12-20 09:33:17 +01:00
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
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
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
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
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
ec62dfdb9a
home.kodi-wohnzimmer: disable smart checks 2020-12-18 08:42:36 +01:00
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
958f5893e6
bundles/zfs: adjust warning period for check_zfs_old_snapshots 2020-12-18 08:23:42 +01:00
487e4d0df6
bundles/rspamd: add missing } 2020-12-18 08:21:56 +01:00
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
63d455d242
bundles/rspamd: fix dependencies 2020-12-18 06:41:05 +01:00
65db8b1625
bundles/systemd-networkd: faster miimon 2020-12-18 06:33:05 +01:00
ecb7a93073
bundles/pppd: silence restart-pppoe-if-no-public-ip 2020-12-18 06:32:18 +01:00
e33af1c845
bundles/unbound: refresh root-hint.txt once a week 2020-12-13 15:22:19 +01:00
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
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
c5e43188ca
bundles/radvd: support not announcing a nameserver 2020-12-13 14:59:10 +01:00
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
18c56cce9a
bundles/dovecot: do not auto-subscribe to junk mailbox 2020-12-13 11:54:55 +01:00
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
58d99eb402
bundles/systemd: configure journald
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-12-12 10:39:57 +01:00
2c062761e3
nodes/home.router: add work ssh keys 2020-12-12 09:12:26 +01:00
41ff060e99
nodes/home.router: fix restart_pppd cronjob 2020-12-12 09:12:05 +01:00
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
8be6f9b78d
bundles/apt: fix date call in check_unattended_upgrades 2020-12-10 22:15:31 +01:00
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
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
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
b80c0b12fe
home.router: add c3voc vpn 2020-12-08 17:45:30 +01:00
8a1a1bd8fd
home.router: sort metadata 2020-12-06 19:52:32 +01:00
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
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
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
febcacdfe3
icinga2: enable mails for update checks 2020-12-05 09:17:21 +01:00
9850a27ee2
icinga2: disable sms for some hosts 2020-11-30 06:54:50 +01:00
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
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
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
8456ac43c6
bundles/nfs-client: don't try to start automount units 2020-11-29 12:06:34 +01:00
1bfeead5e8
nodes/home.nas: change nfs-mount options for /storage/nas 2020-11-29 12:05:51 +01:00
a549936e09
bundles/nfs-server: ensure nfs-kernel-server is started 2020-11-28 15:48:27 +01:00
d19f0dd5bd
nodes/home.nas: add backup target for kunsi-t470 2020-11-27 03:10:11 +01:00
014b37082c
bundles/wireguard: send pings over vpn, if pppd reconnects 2020-11-27 03:09:37 +01:00
c1885e20b6
nodes/home.octoprint-vielschichtigkeit: fix ifnames, fix vhost 2020-11-25 21:26:21 +01:00
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
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
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
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
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
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
8c6c691e5e
bundles/icinga2: implement SMS notifications 2020-11-22 10:34:49 +01:00
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
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
d26b8ade45
remove some comments 2020-11-22 08:27:37 +01:00
4a57926577
bundles/icinga2: set some notification options for checks 2020-11-22 08:24:44 +01:00
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
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
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
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
c77856f97a
bundles/vmhost: add info line to QEMU VM STATUS 2020-11-21 21:01:37 +01:00
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
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
4f5e462c94
bundles/octoprint: add update check 2020-11-21 20:35:29 +01:00
91f2fd839b
bundles/sshmon: add check_github_for_new_release 2020-11-21 20:03:50 +01:00
a4ca98e79e
bundles/rspamd: add monitoring
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-21 18:55:45 +01:00
e6acda1f52
bundles/powerdns: add monitoring 2020-11-21 18:55:34 +01:00
2fdeeca9c3
bundles/postgresql: add monitoring 2020-11-21 18:55:21 +01:00
2f7f35c85a
bundles/matrix*: add monitoring 2020-11-21 18:55:06 +01:00
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
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
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
5aee050c5d
bundles/wireguard: add icinga check 2020-11-21 16:15:34 +01:00
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
e2490df48e
nodes/ovh.wireguard: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-21 12:24:26 +01:00
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
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
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
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
daa90a4668
move groups around 2020-11-21 10:55:09 +01:00
5419bf31fb
bundles: fix some icinga checks 2020-11-21 10:30:05 +01:00
11071914e0
bundles/icinga2: initial working draft 2020-11-21 10:29:36 +01:00
d3de7a27be
bundles/icinga2: add dependencies for icingaweb2 setup 2020-11-21 08:57:46 +01:00
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
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
cb93e6c160
htz.ex42-1048908: update mautrix-telegram to 0.9.0 2020-11-19 16:53:26 +01:00
6ad28bb375
bundles/vnstat: add graph for "yesterday" 2020-11-19 16:52:45 +01:00
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
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
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
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
88dd587fb4
bundles/vnstat: introduce, add to home.router 2020-11-16 16:33:26 +01:00
9fa3757a96
nodes/home.nas: add zfs dataset for yate installation 2020-11-16 15:28:16 +01:00
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
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
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
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
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
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
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
ad569f073e
bundles/dhcpd: add iptables rules 2020-11-15 12:01:14 +01:00
cdef8cdb13
bundles/dhcpd: adjust indentation in dhcpd.conf 2020-11-15 12:00:58 +01:00
f6dafbc78e
nodes/home.router: use default settings for dhcp lease times 2020-11-15 11:58:55 +01:00
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
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
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
9e2cb92766
nodes/home.nas: add user f2k1de 2020-11-15 10:36:40 +01:00
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
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
0aafeb96cd
bundles/pppd: make sure dependent services are stopped before restarting pppoe session 2020-11-15 09:56:06 +01:00
7e4c69c3f1
groups/home: use default nameservers until we implemented a dns cache 2020-11-15 09:40:48 +01:00
d83dbbdd75
bundles/systemd-networkd: use some more options for bond interfaces 2020-11-15 09:39:44 +01:00
5319cd1e8b
bundles/netdata: disable health checks 2020-11-14 16:55:29 +01:00
f9c255cd1b
dns: add second ipv6 to mx0.kunbox.net 2020-11-14 15:24:13 +01:00
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
e56e875433
bundles/rspamd: switch to automatically-generated dkim key 2020-11-14 14:35:27 +01:00
3213e462c5
bundles/netdata: only save to ram, keep less history 2020-11-14 14:34:38 +01:00
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
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
f405dca771
bundles/pppd: add dyndns capability 2020-11-14 12:46:19 +01:00
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
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
0ca8edf656
bundles/apt: move patchday to metadata reactor, make patchday configurable 2020-11-14 12:24:55 +01:00
32b7dda61f
bundles/iptables: add newline to rules files 2020-11-14 12:24:12 +01:00
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
a14580944b
bundles/{radvd,wide-dhcp6c}: improve handling of non-properly terminated ip-down scripts 2020-11-14 11:57:01 +01:00
644eb37b82
bundles/radvd: introduce, add to home.router 2020-11-14 11:47:44 +01:00
fa224a9939
bundles/wide-dhcp6c: introduce, add to home.router 2020-11-14 11:34:16 +01:00
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
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
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
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
870a5252e5
bundles/pppd: add iptables rules on ifup/ifdown 2020-11-13 23:04:43 +01:00
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
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
df9863ef31
bundles/openvpn-client: add 2020-11-13 22:15:36 +01:00
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
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
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
3b829caaf6
bundles/pppd: introduce 2020-11-13 21:41:02 +01:00
b1860b7e01
bundles/systemd-networkd: add option to only create a .netdev file for interfaces 2020-11-13 21:40:44 +01:00
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
99071bd8ba
nodes/home.nas: use a vlan 2020-11-13 18:47:24 +01:00
f7c85ddd8a
nodes/rx300: add lldp 2020-11-13 18:46:52 +01:00
223e799a87
nodes/home: ipv4 -> ips 2020-11-13 18:46:27 +01:00
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
75d86f3339
bundles/systemd-networkd: support vlans 2020-11-13 16:29:17 +01:00
4213b60052
bundles/lldp: introduce, add to all nodes at home 2020-11-13 16:28:43 +01:00
b9b0a9c5ca
bundles/vmhost: install correct packages 2020-11-13 14:47:40 +01:00
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
df63f8c732
bundles/nginx: make sure /var/www exists 2020-11-13 13:35:02 +01:00
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
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
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
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
6a2ecbdbf5
dns: add new DKIM signing key 2020-11-13 13:11:21 +01:00
cff0870e63
bundles/rspamd: refine auto-generation of dkim signing keys 2020-11-13 13:09:37 +01:00
56f1b1a6c6
bundles/rspamd: first draft for automatically-rotating dkim keys 2020-11-13 13:09:34 +01:00
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
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
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
45723a4c8a
nodes/home.nas: configure for backups 2020-11-13 12:58:23 +01:00
741f3b0032
bundles/backup-client: fix cronjob 2020-11-13 12:57:50 +01:00
0749fc75c5
bundles: add backup paths 2020-11-13 12:37:26 +01:00
f71653e3ce
bundles/backup-{client,server}: introduce 2020-11-13 12:36:52 +01:00
59c1cb8551
items/zfs_pool: support raidz2 and raidz3 2020-11-13 11:24:30 +01:00
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
30ee0c8bdf
bundles/mx-puppet-discord: restart service after building new version 2020-11-13 09:26:34 +01:00
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
e5c12f0628
bundles/nginx: create webroot directories after bundle:zfs is done 2020-11-12 22:59:46 +01:00
2274e7aa37
bundles/nfs-server: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-12 19:59:02 +01:00
5b1b7241b7
nodes/home.nas: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-12 19:40:41 +01:00
f2a0f0b46a
bundles/systemd-networkd: support bond and bridge interfaces 2020-11-12 19:38:10 +01:00
633ccb97fd
bundles/zfs: rename zed -> zfs-zed 2020-11-12 19:36:28 +01:00
d01d89d432
bundles/apt: support debian 11 2020-11-12 18:40:19 +01:00
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
e82b4ba78b
nodes/htz.ex42-1048908: install oidentd 2020-11-11 16:32:51 +01:00
504c4f2314
nodes/{htz.ex42-1048908,htz-cloud.pirmasens}: make sure we have redis installed 2020-11-11 16:29:27 +01:00
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
11701a67c8
dns: deploy MTA-STS
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-11 11:41:06 +01:00
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
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
652fb72ccc
bundles/postfix: fix metadata reactor for letsencrypt 2020-11-11 08:35:36 +01:00
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
9dd7589f12
bundles/postfix: add submission_header_cleanup file 2020-11-10 20:34:27 +01:00
8180769120
bundles/postfix: add postmaster alias 2020-11-10 20:32:39 +01:00
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
aad1a742b7
bundles/icinga2: add ipv6-capable check_rbl script 2020-11-10 14:26:07 +01:00
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
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
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
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
d0647b2e3c
nodes/htz.ex42-1048908: remove legacy users 2020-11-10 13:13:44 +01:00
cca4fec761
bundles/users: get default user data from users.json 2020-11-10 13:12:36 +01:00
c090a9c2c2
bundles/users: move root user to metadata 2020-11-10 12:50:08 +01:00
16e8c4fd00
scripts/passwords-for: sort metadata 2020-11-10 12:49:47 +01:00
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
d087cea869
bundles/gitea: add monitoring 2020-11-10 11:32:59 +01:00
985f47ca99
bundles/miniflux: add monitoring 2020-11-10 11:28:40 +01:00
a185e027f8
nodes: add website checks to nginx vhosts 2020-11-10 11:26:49 +01:00
8cb997133a
bundles/nginx: add monitoring
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-10 10:57:04 +01:00
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
f80896fa3b
bundles/postfix: add monitoring 2020-11-10 10:21:37 +01:00
420cea15d2
bundles/apt: add monitoring for unattended upgrades 2020-11-10 09:50:20 +01:00
3088ae0ba0
bundles/sshmon: add key, add to all nodes 2020-11-10 09:15:51 +01:00
ca922ef5f7
scripts: add encrypt_file and passwords-for 2020-11-10 09:15:28 +01:00
2e2c504111
groups/ovh: make sure default user is gone 2020-11-10 08:59:54 +01:00
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
c7362df6c4
bundles/sshmon: import from work repository 2020-11-09 20:31:06 +01:00
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
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
1ffe8bd23e
nodes/htz.ex42-1048908: update travelynx to 1.18.8 2020-11-09 17:03:13 +01:00
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
4921e0b74f
bundles/systemd-networkd: use correct syntax for resolv.conf 2020-11-09 16:47:56 +01:00
2e56feb27d
nodes/ovh.icinga2: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-09 16:40:15 +01:00
bd89cd4cb5
groups/locations: sort groups, add nameservers for google and home, add ovh 2020-11-09 16:39:57 +01:00
6f87a1d240
bundles/systemd-networkd: also deploy resolv.conf 2020-11-09 16:38:59 +01:00
394424951f
bundles/systemd-networkd: fix naming of GatewayOnlink 2020-11-09 16:38:35 +01:00
78047da04a
bundles/postgresql: only install packages after we have a zfs dataset 2020-11-09 16:37:00 +01:00
5bd642236c
bundles/postfix: only call newaliases if we already have postfix installed 2020-11-09 16:36:26 +01:00
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
44414f2375
libs/tools: adjust resolve_identifier() to new interface config 2020-11-09 15:23:44 +01:00
d90c9edc22
nodes: fix interface config 2020-11-09 15:16:29 +01:00
91fd33cfa0
bundles/systemd-networkd: better dhcp support 2020-11-09 14:58:09 +01:00
5e7c7671e0
bundles/systemd-networkd: proper config 2020-11-09 14:48:19 +01:00
fbb4e2f7a5
systemd-networkd: first draft 2020-11-09 14:08:32 +01:00
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
c3c510c609
bundles/mautrix-telegram: disable parallel file transfers for now 2020-11-09 13:17:38 +01:00
f96c53ee8a
nodes/htz.ex42-1048908: fix matrix.franzi.business nginx config 2020-11-09 13:06:03 +01:00
835da4db4d
dns: remove wildcard entries
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-11-09 12:37:58 +01:00
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
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
06e30cf23c
bundles/mautrix-telegram: also upgrade pip when upgrading bridge 2020-11-09 12:15:37 +01:00
90e3bb7fb2
bundles/mautrix-telegram: no need to provide our own alembic.ini 2020-11-09 12:12:04 +01:00
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
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
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
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
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
64cffad6a7
bundles/rspamd: silence clamav cronjob 2020-11-08 15:03:26 +01:00
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
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
eddabb0043
dns: activate DMARC 2020-11-08 12:23:41 +01:00
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
0647a8203d
nodes/htz.ex42-1048908: add another ip to spamcheck bypass 2020-11-08 11:06:30 +01:00
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
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
a236444fe5
bundles/dovecot: make sure to reload dovecot after letsencrypt 2020-11-08 10:42:08 +01:00
e36dbf0222
libs/tools: fix missing default in resolve_identifier() 2020-11-08 10:41:41 +01:00
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
1b5ac55033
install postfix on all nodes, configure ex42-1048908 for incoming mail 2020-11-07 22:32:47 +01:00
7080b0d89e
bundles/rspamd: create dummy bundle 2020-11-07 22:32:08 +01:00
18b573a9c6
bundles/dovecot: introduce 2020-11-07 22:31:47 +01:00
f42dda5961
bundles/postfixadmin: introduce 2020-11-07 22:31:29 +01:00
5550d2cc56
bundles/postfix: introduce 2020-11-07 22:31:18 +01:00
88afba9ce9
bundles/mx-puppet-discord: add RestartSec= to systemd unit file 2020-11-07 09:40:22 +01:00
7ab121e7e5
bundles/mautrix-telegram: install bridge from git repository 2020-11-07 09:39:57 +01:00
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
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
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
f8bc4b2ad9
bundles/php: introduce 2020-10-31 13:00:38 +01:00
e2d8923dee
bundles/nginx: use metadata reactor to determine index files 2020-10-31 10:41:48 +01:00
3ee570a47a
nodes/htz-cloud.luther: add postgresql config 2020-10-31 10:31:10 +01:00
f1f7086aab
bundles/postgresql: make sure we have postgres_role before adding postgres_db 2020-10-31 10:30:48 +01:00
67c5c23194
bundles/nginx: support non-domain vhost names 2020-10-31 10:30:07 +01:00
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
113221a9b2
bundles/nginx: make sure we have dhparam.pem 2020-10-31 10:18:40 +01:00
9cc5c07466
bundles/letsencrypt: do not try to do authorizations without a webserver 2020-10-31 10:11:58 +01:00
76fe68a3d1
bundles/zfs: fix dependencies, auto-load zfs module if not loaded 2020-10-31 10:11:15 +01:00
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
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
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
20abb53260
nodes/htz.ex42-1048908: update travelynx to 1.18.7 2020-10-27 17:57:00 +01:00
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
554e7947ea
nodes/rx300: raidz for data disks 2020-10-25 16:46:45 +01:00
50372572f4
bundles/zfs: improvements 2020-10-25 16:41:18 +01:00
1c5e97a10f
nodes/rx300: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-25 13:54:19 +01:00
3077d74318
bundles/users: alias s='sudo -i' 2020-10-25 13:21:04 +01:00
351d779f20
bundles/users: add metadata entry for bash aliases 2020-10-25 13:19:46 +01:00
2a992773f3
bundles/users: fish shell is gone everywhere 2020-10-25 13:17:26 +01:00
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
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
b70f9c9c9d
bundles/powerdns: make sure every dns server is able to resolve every other dns server 2020-10-25 10:58:11 +01:00
a33d8e4201
bundles/powerdns: decrease RETRY time 2020-10-25 10:57:26 +01:00
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
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
7a3e3ad68f
bundles/powerdns: we don't need the node names of primary nameservers 2020-10-25 10:53:55 +01:00
43bd6b4774
bundles/powerdns: only enable webserver and api on primary nameservers 2020-10-25 10:52:51 +01:00
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
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
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
a0702416a0
bundles/radicale: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-23 15:22:35 +02:00
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
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
246c408d83
nodes/htz.ex42-1048908: update travelynx to 1.18.5 2020-10-23 05:48:10 +02:00
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
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
f36e36d74a
nodes/htz.ex42-1048908: update nginx config for wiki.franzi.business 2020-10-18 19:30:23 +02:00
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
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
5c31cdccdd
bundles/kodi: fix path
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-18 16:53:19 +02:00
4271c92d70
bundles/gitea: fix chmod
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-18 16:18:12 +02:00
e32ad2eb19
formatting
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-18 15:51:45 +02:00
ececab44b4
bundles/miniflux: introduce 2020-10-18 15:49:32 +02:00
366374b4e5
bundles/apt: handle unattended-upgrades ourselves 2020-10-18 15:33:41 +02:00
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
4b51c1f82a
items/zfs_pool: use "parted -s" to avoid it prompting while changing stuff 2020-10-18 15:02:10 +02:00
a5088a5358
groups/locations: add doc 2020-10-18 15:01:18 +02:00
55f304f1e1
htz.ex42-1048908: update travelynx to 1.18.4 2020-10-18 14:39:40 +02:00
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
ab4e1ac752
add __pycache__ to .gitignore
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-17 13:10:59 +02:00
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
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
793220c0ec
bundles/powerdns: auto-generate zonefile header based on dns server nodes 2020-10-17 12:57:07 +02:00
51e6d0534e
bundles/powerdns: fix Faults
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-17 10:50:21 +02:00
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
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
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
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
7c1c0f5e80
bundles/powerdns: increase default TTL to 1 day 2020-10-16 20:16:34 +02:00
0a115d2372
EOL bundles/bind 2020-10-16 20:12:47 +02:00
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
155c93f739
bundles/powerdns: fix schema import for pgsql 2020-10-16 20:10:55 +02:00
9bba18d13e
bundles/powerdnsadmin: introduce 2020-10-16 20:10:34 +02:00
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
d442ab399e
bundles/powerdns: support pgsql 2020-10-16 19:24:12 +02:00
2c1a825b7d
bundles/apt: make sure we have python3-dev 2020-10-16 19:14:15 +02:00
8acc0a7bb1
bundles/apt: make sure we have build-essential and git 2020-10-16 19:12:26 +02:00
a553e736d1
bundles/powerdns: fix dependencies 2020-10-16 17:59:46 +02:00
72abcae348
dns: ns-1.kunbox.net IN A 34.89.208.78 2020-10-16 17:56:13 +02:00
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
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
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
b30e7a0ed8
htz.ex42-1048908: update travelynx to 1.18.2 2020-10-16 13:01:49 +02:00
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
a08f483ac5
bundles/powerdns: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-10-13 19:06:22 +02:00
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
697881ee23
home.kodi-wohnzimmer: make sure we have vaapi 2020-10-10 17:21:00 +02:00
6a8768fb2f
bundles/nfs-client: introduce 2020-10-10 16:37:33 +02:00
21da0a7b80
home.kodi-wohnzimmer: switch back to debian stable 2020-10-10 16:28:31 +02:00
0ef0a5ff26
htz.ex42-1048908: update travelynx to 1.18.1 2020-10-10 13:31:59 +02:00
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
c478fb357d
nodes/home.kodi-wohnzimmer: change operating system, change hardware (now a NUC) 2020-10-09 17:47:36 +02:00
a955a7b84d
bundles/raspberrypi: do not set empty default for config.txt 2020-10-09 17:46:36 +02:00
c953d138ee
bundles/kodi: fix dependencies for alsa 2020-10-09 17:46:07 +02:00
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
5e8489a74c
bundles/kodi: add missing dependencies 2020-10-03 18:36:48 +02:00
c2bcd1f0d9
bundles/apt: add raspbian to supported OSes 2020-10-03 18:36:29 +02:00
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
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
f312f590c1
nodes/htz.ex42-1048908: update gitea to 1.12.5 2020-10-03 16:18:50 +02:00
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
9b8c5450ec
bundles/raspberrypi: make sure dphys-swapfile is uninstalled 2020-10-03 15:10:28 +02:00
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
60cfe90a1d
bundles/raspberrypi: force maximum cpu frequency 2020-10-03 13:52:34 +02:00
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
32fd2f7a7b
bundles/kodi: introduce 2020-10-03 13:36:12 +02:00
fc44a9cd69
bundles/raspberrypi: enable audio, force hdmi mode 2020-10-03 13:35:44 +02:00
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
675f8beea9
bundles/raspberrypi: improvements 2020-09-27 17:18:05 +02:00
81db0e6e44
groups/home: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-27 16:47:10 +02:00
c2c9913514
allow setting hostname in metadata 2020-09-27 16:46:54 +02:00
5d1e71e83e
bundles/raspberrypi: introduce 2020-09-27 16:46:26 +02:00
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
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
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
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
a67353e24f
Merge branch 'pending-new-bw-release' into main 2020-09-26 15:18:29 +02:00
750f1ef20c
update bw to 4.2 2020-09-26 15:17:00 +02:00
c8adfcabf1
bundles/octoprint: add octoprint to dialout group 2020-09-26 15:16:09 +02:00
91c4846129
bundles/mjpg-streamer: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-22 19:59:36 +02:00
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
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
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
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
eee9b00f10
bundles/systemd: fix daemon-reload command 2020-09-22 18:11:09 +02:00
44a6e8292a
bundles/bind: add node-dns-auto-generator 2020-09-20 18:56:53 +02:00
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
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
6a67b1a4ae
PORT_MAP: add octoprint 2020-09-20 15:12:40 +02:00
84a78f5fec
bundles/octoprint: allow 'sudo /usr/bin/vcgencmd' 2020-09-20 15:12:18 +02:00
577c3c7c49
bundles/sudo: change metadata key to 'sudo_commands' 2020-09-20 15:11:52 +02:00
04c632953d
bundles/octoprint: introduce 2020-09-20 15:05:17 +02:00
d6799088c4
bundles/nginx: add metadata option to disable https 2020-09-20 14:36:43 +02:00
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
bb0b6f2079
shuffle some ports around
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-20 13:16:08 +02:00
3242d97cfa
bundles/mautrix-telegram: use pkg_pip 2020-09-20 10:30:13 +02:00
eede422e9a
shuffle some ports around 2020-09-20 10:29:19 +02:00
dc968b75e5
add port mapping table
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-09-20 10:16:22 +02:00
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
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
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
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
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
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
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
cf2920f284
bundles/mautrix-telegram: introduce 2020-09-06 12:15:37 +02:00
180802a669
bundles/apt: make sure we do have pip3 and virtualenv 2020-09-06 12:04:56 +02:00
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
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
a443272e02
bundles/gitea: make sure to restart gitea after downloading binary 2020-09-04 21:06:13 +02:00
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
27d6c1880a
bundles/influxdb: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-08-30 12:07:06 +02:00
ccd4a09183
bundles/apt: allow variables {os} and {os_release} in sources.list entries 2020-08-30 12:06:19 +02:00
77051c0a0e
bundles/nginx: clean up unmanaged nginx vhosts 2020-08-30 11:36:48 +02:00
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
626355178a
bundles/apt: make sure popularity-contest is uninstalled 2020-08-30 11:14:31 +02:00
f22b30e4fa
bundles/cron: purge unwanted data from /etc/cron.d 2020-08-30 11:14:10 +02:00
c8ae22da8a
I HATE GOOGLE (v3)
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-08-30 10:44:13 +02:00
4708ae720b
nodes/htz.ex42-1048908: adjust number of worker processes 2020-08-30 10:34:16 +02:00
664832313d
nodes/*: add cpu and ram info to nodefiles 2020-08-30 10:32:54 +02:00
b24253a64b
bundles/nginx: determine worker processes by cpu count by default 2020-08-30 10:32:29 +02:00
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
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
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
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
4934eb46fb
bundles/zfs: import bundle from work repository 2020-08-29 21:10:59 +02:00
b690ae25b0
bundles/apt: use node.os and node.os_version to determine settings 2020-08-29 21:10:22 +02:00
880184807b
nodes: use node.os and node.os_version correctly 2020-08-29 21:09:42 +02:00
1cd5476398
nodes/doc.lon1.icinga2: add node 2020-08-29 19:32:34 +02:00
007a617785
bundles/users: rework 2020-08-29 19:21:35 +02:00
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
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
b4122bf3f9
travelynx: add imprint
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-08-21 15:06:04 +02:00
4a81c05f6d
I HATE GOOGLE (v2)
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-08-21 14:41:34 +02:00
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
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
55d6257243
bundles/users: only remove ssh key if we're managing configs 2020-08-20 15:34:05 +02:00
7432c52a36
items/download: introduce
All checks were successful
bundlewrap/pipeline/head This commit looks good
2020-08-20 14:33:49 +02:00
794 changed files with 39878 additions and 1583 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 autoremove
DEBIAN_FRONTEND=noninteractive apt-get -y -q clean
% 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,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,20 @@
from bundlewrap.exceptions import BundleError
supported_os = {
'debian': {
10: 'buster',
11: 'bullseye',
12: 'bookworm',
99: 'unstable',
},
}
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',
@ -7,42 +24,83 @@ actions = {
'triggered': True,
'cascade_skip': False,
},
'apt_execute_update_commands': {
'command': ' && '.join(sorted(node.metadata.get('apt/additional_update_commands', {'true'}))),
'triggered': True,
},
}
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 +110,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 +145,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 +219,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

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

@ -0,0 +1,45 @@
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):
if not node.metadata.get('apt/unattended-upgrades/enabled', True):
return {}
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': {},
'util-linux': {}, # provides 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,124 @@
#!/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
if [[ -z "$DEBUG" ]]
then
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
fi
# 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': 40,
}
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

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

@ -0,0 +1,105 @@
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:',
},
},
}
if node.has_any_bundle([
'dovecot',
'nginx',
'postfix',
]):
actions['generate-dhparam'] = {
'command': 'openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048',
'unless': 'test -f /etc/ssl/certs/dhparam.pem',
}
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,189 @@
from bundlewrap.exceptions import BundleError
supported_os = {
'debian': {
10: 'buster',
11: 'bullseye',
12: 'bookworm',
99: 'unstable',
},
}
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,
},
'apt_execute_update_commands': {
'command': ' && '.join(sorted(node.metadata.get('apt/additional_update_commands', {'true'}))),
'triggered': True,
},
}
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 = required
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/ssl/certs/dhparam.pem
ssl_min_protocol = TLSv1.2
ssl_cipher_list = 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:DHE-RSA-CHACHA20-POLY1305
ssl_prefer_server_ciphers = no
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";
}

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

@ -0,0 +1,77 @@
# Postfix bundle creates metadata and directories which are also used
# by this bundle
repo.libs.tools.require_bundle(node, 'postfix')
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',
},
}
svc_systemd = {
'dovecot': {
'needs': {
'action: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:apt_execute_update_commands',
'pkg_apt:nodejs',
},
'triggered': True,
},
}

View file

@ -0,0 +1,66 @@
defaults = {
'zfs': {
'datasets': {
'tank/element-web': {
'mountpoint': '/opt/element-web',
'needed_by': {
'directory:/opt/element-web',
},
},
},
},
}
@metadata_reactor.provides(
'nodejs/version',
)
def nodejs(metadata):
version = tuple([int(i) for i in metadata.get('element-web/version')[1:].split('.')])
if version >= (1, 11, 71):
return {
'nodejs': {
'version': 20,
},
}
else:
return {
'nodejs': {
'version': 18,
},
}
@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',
},
}

View file

@ -0,0 +1,58 @@
defaults = {
'apt': {
'packages': {
'grafana': {},
},
'repos': {
'grafana': {
'items': {
'deb https://apt.grafana.com stable main',
},
},
},
},
'backups': {
'paths': {
'/var/lib/grafana',
},
},
'grafana': {
'allow_anonymous': False,
'allow_embedding': False,
'allow_sign_up': False,
'anonymous_org': 'public',
'enable_smtp': True,
'login_max_duration': '24h',
'secret_key': repo.vault.random_bytes_as_base64_for(f'{node.name} grafana secret_key'),
},
}
@metadata_reactor.provides(
'nginx/vhosts/grafana',
)
def nginx(metadata):
if not node.has_bundle('nginx'):
raise DoNotRunAgain
return {
'nginx': {
'vhosts': {
'grafana': {
'domain': metadata.get('grafana/domain'),
'locations': {
'/': {
'target': 'http://127.0.0.1:21010',
'websockets': True,
},
'/api/ds/query': {
'target': 'http://127.0.0.1:21010',
'proxy_read_timeout': 300,
},
},
'website_check_path': '/login',
'website_check_string': 'Grafana',
},
},
},
}

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