Compare commits
10 commits
d282d77a99
...
2914f463ff
Author | SHA1 | Date | |
---|---|---|---|
2914f463ff | |||
cd418da024 | |||
0fea0a1c77 | |||
e1ac047810 | |||
06b21998d8 | |||
e29f67a935 | |||
0d56454af7 | |||
d28cdc78d6 | |||
b69aa32232 | |||
a29f17a9f9 |
104 changed files with 779 additions and 335 deletions
29
Jenkinsfile
vendored
29
Jenkinsfile
vendored
|
@ -1,22 +1,7 @@
|
||||||
pipeline {
|
pipeline {
|
||||||
agent any
|
agent any
|
||||||
stages {
|
stages {
|
||||||
stage('install_requirements') {
|
stage('editorconfig-checker') {
|
||||||
steps {
|
|
||||||
sh """
|
|
||||||
[ -d venv ] && rm -rf venv
|
|
||||||
|
|
||||||
virtualenv -p python3 venv
|
|
||||||
. venv/bin/activate
|
|
||||||
|
|
||||||
pip install --upgrade pip isort
|
|
||||||
pip install -r requirements.txt
|
|
||||||
"""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stage('tests') {
|
|
||||||
parallel {
|
|
||||||
stage('syntax checking using editorconfig-checker') {
|
|
||||||
steps {
|
steps {
|
||||||
sh """
|
sh """
|
||||||
wget -Oec-linux-amd64.tar.gz https://github.com/editorconfig-checker/editorconfig-checker/releases/latest/download/ec-linux-amd64.tar.gz
|
wget -Oec-linux-amd64.tar.gz https://github.com/editorconfig-checker/editorconfig-checker/releases/latest/download/ec-linux-amd64.tar.gz
|
||||||
|
@ -25,15 +10,21 @@ pipeline {
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stage('syntax checking using isort') {
|
stage('install_requirements') {
|
||||||
steps {
|
steps {
|
||||||
sh """
|
sh """
|
||||||
|
[ -d venv ] && rm -rf venv
|
||||||
|
|
||||||
|
virtualenv -p python3 venv
|
||||||
. venv/bin/activate
|
. venv/bin/activate
|
||||||
|
|
||||||
isort --check .
|
pip install --upgrade pip
|
||||||
|
pip install -r requirements.txt
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
stage('bw test') {
|
||||||
|
parallel {
|
||||||
stage('config and metadata determinism') {
|
stage('config and metadata determinism') {
|
||||||
steps {
|
steps {
|
||||||
sh """
|
sh """
|
||||||
|
@ -45,7 +36,7 @@ pipeline {
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stage('bw test -i') {
|
stage('other tests') {
|
||||||
steps {
|
steps {
|
||||||
sh """
|
sh """
|
||||||
. venv/bin/activate
|
. venv/bin/activate
|
||||||
|
|
|
@ -36,7 +36,7 @@ Rule of thumb: keep ports below 10000 free for stuff that reserves ports.
|
||||||
| 20090 | matrix-media-repo | prometheus metrics |
|
| 20090 | matrix-media-repo | prometheus metrics |
|
||||||
| 21000 | pleroma | pleroma |
|
| 21000 | pleroma | pleroma |
|
||||||
| 21010 | grafana | grafana |
|
| 21010 | grafana | grafana |
|
||||||
| 22000 | gitea | forgejo |
|
| 22000 | gitea | gitea |
|
||||||
| 22010 | jenkins-ci | Jenkins CI |
|
| 22010 | jenkins-ci | Jenkins CI |
|
||||||
| 22020 | travelynx | Travelynx Web |
|
| 22020 | travelynx | Travelynx Web |
|
||||||
| 22030 | octoprint | OctoPrint Web Interface |
|
| 22030 | octoprint | OctoPrint Web Interface |
|
||||||
|
@ -45,6 +45,7 @@ Rule of thumb: keep ports below 10000 free for stuff that reserves ports.
|
||||||
| 22060 | pretalx | gunicorn |
|
| 22060 | pretalx | gunicorn |
|
||||||
| 22070 | paperless-ng | gunicorn |
|
| 22070 | paperless-ng | gunicorn |
|
||||||
| 22080 | netbox | gunicorn |
|
| 22080 | netbox | gunicorn |
|
||||||
|
| 22090 | openhab | http |
|
||||||
| 22100 | woodpecker-server | http |
|
| 22100 | woodpecker-server | http |
|
||||||
| 22101 | woodpecker-server | gRPC |
|
| 22101 | woodpecker-server | gRPC |
|
||||||
| 22999 | nginx | stub_status |
|
| 22999 | nginx | stub_status |
|
||||||
|
|
|
@ -143,9 +143,6 @@ pkg_apt = {
|
||||||
'cloud-init': {
|
'cloud-init': {
|
||||||
'installed': False,
|
'installed': False,
|
||||||
},
|
},
|
||||||
'molly-guard': {
|
|
||||||
'installed': False,
|
|
||||||
},
|
|
||||||
'netplan.io': {
|
'netplan.io': {
|
||||||
'installed': False,
|
'installed': False,
|
||||||
},
|
},
|
||||||
|
|
|
@ -38,14 +38,9 @@ defaults = {
|
||||||
'rofi': {},
|
'rofi': {},
|
||||||
|
|
||||||
# sound
|
# sound
|
||||||
'calf': {},
|
|
||||||
'easyeffects': {},
|
|
||||||
'lsp-plugins': {},
|
|
||||||
'pavucontrol': {},
|
'pavucontrol': {},
|
||||||
'pipewire': {},
|
'pulseaudio': {},
|
||||||
'pipewire-jack': {},
|
'pulseaudio-zeroconf': {},
|
||||||
'pipewire-pulse': {},
|
|
||||||
'qpwgraph': {},
|
|
||||||
|
|
||||||
# window management
|
# window management
|
||||||
'i3-wm': {},
|
'i3-wm': {},
|
||||||
|
@ -58,7 +53,6 @@ defaults = {
|
||||||
|
|
||||||
# Xorg
|
# Xorg
|
||||||
'xf86-input-libinput': {},
|
'xf86-input-libinput': {},
|
||||||
'xf86-input-wacom': {},
|
|
||||||
'xorg-server': {},
|
'xorg-server': {},
|
||||||
'xorg-setxkbmap': {},
|
'xorg-setxkbmap': {},
|
||||||
'xorg-xev': {},
|
'xorg-xev': {},
|
||||||
|
@ -68,27 +62,20 @@ defaults = {
|
||||||
# all them apps
|
# all them apps
|
||||||
'browserpass': {},
|
'browserpass': {},
|
||||||
'browserpass-firefox': {},
|
'browserpass-firefox': {},
|
||||||
'ffmpeg': {},
|
|
||||||
'firefox': {},
|
'firefox': {},
|
||||||
'gimp': {},
|
'gimp': {},
|
||||||
'imagemagick': {},
|
|
||||||
'inkscape': {},
|
'inkscape': {},
|
||||||
'kdenlive': {},
|
|
||||||
'maim': {},
|
'maim': {},
|
||||||
'mosh': {},
|
'mosh': {},
|
||||||
'mosquitto': {},
|
|
||||||
'mpv': {},
|
'mpv': {},
|
||||||
'pass': {},
|
'pass': {},
|
||||||
'pass-otp': {},
|
'pass-otp': {},
|
||||||
'pdftk': {},
|
'pdftk': {},
|
||||||
'pwgen': {},
|
'pwgen': {},
|
||||||
'qpdfview': {},
|
'qpdfview': {},
|
||||||
'samba': {},
|
|
||||||
'shotcut': {},
|
|
||||||
'sipcalc': {},
|
'sipcalc': {},
|
||||||
'the_silver_searcher': {},
|
'the_silver_searcher': {},
|
||||||
'tlp': {},
|
'tlp': {},
|
||||||
'virt-manager': {},
|
|
||||||
'xclip': {},
|
'xclip': {},
|
||||||
'xdotool': {}, # needed for maim window selection
|
'xdotool': {}, # needed for maim window selection
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
repo.libs.tools.require_bundle(node, 'zfs')
|
repo.libs.tools.require_bundle(node, 'zfs')
|
||||||
|
|
||||||
from os.path import join
|
from os.path import join
|
||||||
|
|
||||||
from bundlewrap.metadata import metadata_to_json
|
from bundlewrap.metadata import metadata_to_json
|
||||||
|
|
||||||
dataset = node.metadata.get('backup-server/zfs-base')
|
dataset = node.metadata.get('backup-server/zfs-base')
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
from ipaddress import ip_network
|
from ipaddress import ip_network
|
||||||
|
|
||||||
from bundlewrap.exceptions import NoSuchNode
|
from bundlewrap.exceptions import NoSuchNode
|
||||||
from bundlewrap.metadata import atomic
|
from bundlewrap.metadata import atomic
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,14 @@ defaults = {
|
||||||
'docker-ce-cli': {},
|
'docker-ce-cli': {},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
'nftables': {
|
||||||
|
'rules': {
|
||||||
|
'00-docker-ce': {
|
||||||
|
'inet filter forward ct state { related, established } accept',
|
||||||
|
'inet filter forward iifname docker0 accept',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -19,10 +27,7 @@ defaults = {
|
||||||
'nftables/rules/00-docker-ce',
|
'nftables/rules/00-docker-ce',
|
||||||
)
|
)
|
||||||
def nftables_nat(metadata):
|
def nftables_nat(metadata):
|
||||||
rules = {
|
rules = set()
|
||||||
'inet filter forward ct state { related, established } accept',
|
|
||||||
'inet filter forward iifname docker0 accept',
|
|
||||||
}
|
|
||||||
|
|
||||||
for iface in metadata.get('interfaces'):
|
for iface in metadata.get('interfaces'):
|
||||||
rules.add(f'nat postrouting oifname {iface} masquerade')
|
rules.add(f'nat postrouting oifname {iface} masquerade')
|
||||||
|
@ -30,7 +35,7 @@ def nftables_nat(metadata):
|
||||||
return {
|
return {
|
||||||
'nftables': {
|
'nftables': {
|
||||||
'rules': {
|
'rules': {
|
||||||
'00-docker-ce': sorted(rules),
|
'00-docker-ce': rules,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,12 +46,11 @@ plugin {
|
||||||
zlib_save_level = 6
|
zlib_save_level = 6
|
||||||
zlib_save = gz
|
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_plugins = sieve_imapsieve sieve_extprograms
|
||||||
sieve_user_log = /var/mail/vmail/sieve/%d/%n.log
|
sieve_dir = /var/mail/vmail/sieve/%d/%n/
|
||||||
|
sieve = /var/mail/vmail/sieve/%d/%n.sieve
|
||||||
|
sieve_pipe_bin_dir = /var/mail/vmail/sieve/bin
|
||||||
|
sieve_extensions = +vnd.dovecot.pipe
|
||||||
|
|
||||||
old_stats_refresh = 30 secs
|
old_stats_refresh = 30 secs
|
||||||
old_stats_track_cmds = yes
|
old_stats_track_cmds = yes
|
||||||
|
|
|
@ -21,6 +21,7 @@ ROOT_URL = https://${domain}/
|
||||||
DISABLE_SSH = false
|
DISABLE_SSH = false
|
||||||
SSH_PORT = 22
|
SSH_PORT = 22
|
||||||
LFS_START_SERVER = true
|
LFS_START_SERVER = true
|
||||||
|
LFS_CONTENT_PATH = /var/lib/gitea/data/lfs
|
||||||
LFS_JWT_SECRET = ${lfs_secret_key}
|
LFS_JWT_SECRET = ${lfs_secret_key}
|
||||||
OFFLINE_MODE = true
|
OFFLINE_MODE = true
|
||||||
START_SSH_SERVER = false
|
START_SSH_SERVER = false
|
||||||
|
@ -66,7 +67,7 @@ EMAIL_DOMAIN_BLOCKLIST = ${','.join(sorted(email_domain_blocklist))}
|
||||||
|
|
||||||
[mailer]
|
[mailer]
|
||||||
ENABLED = true
|
ENABLED = true
|
||||||
PROTOCOL = sendmail
|
MAILER_TYPE = sendmail
|
||||||
FROM = "${app_name}" <noreply@${domain}>
|
FROM = "${app_name}" <noreply@${domain}>
|
||||||
|
|
||||||
[session]
|
[session]
|
||||||
|
|
|
@ -40,7 +40,10 @@ files = {
|
||||||
},
|
},
|
||||||
'/usr/local/bin/gitea': {
|
'/usr/local/bin/gitea': {
|
||||||
'content_type': 'download',
|
'content_type': 'download',
|
||||||
'source': node.metadata.get('gitea/url'),
|
#'source': 'https://dl.gitea.io/gitea/{version}/gitea-{version}-linux-amd64'.format(version=node.metadata.get('gitea/version')),
|
||||||
|
'source': 'https://github.com/go-gitea/gitea/releases/download/v{version}/gitea-{version}-linux-amd64'.format(
|
||||||
|
version=node.metadata.get('gitea/version'),
|
||||||
|
),
|
||||||
'content_hash': node.metadata.get('gitea/sha1', None),
|
'content_hash': node.metadata.get('gitea/sha1', None),
|
||||||
'mode': '0755',
|
'mode': '0755',
|
||||||
'triggers': {
|
'triggers': {
|
||||||
|
|
|
@ -6,7 +6,7 @@ defaults = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'gitea': {
|
'gitea': {
|
||||||
'app_name': 'Forgejo',
|
'app_name': 'Gitea',
|
||||||
'database': {
|
'database': {
|
||||||
'username': 'gitea',
|
'username': 'gitea',
|
||||||
'password': repo.vault.password_for('{} postgresql gitea'.format(node.name)),
|
'password': repo.vault.password_for('{} postgresql gitea'.format(node.name)),
|
||||||
|
@ -23,14 +23,9 @@ defaults = {
|
||||||
'icinga2_api': {
|
'icinga2_api': {
|
||||||
'gitea': {
|
'gitea': {
|
||||||
'services': {
|
'services': {
|
||||||
'FORGEJO PROCESS': {
|
'GITEA PROCESS': {
|
||||||
'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_systemd_unit gitea',
|
'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_systemd_unit gitea',
|
||||||
},
|
},
|
||||||
'FORGEJO UPDATE': {
|
|
||||||
'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_forgejo_for_new_release codeberg.org forgejo/forgejo v$(gitea --version | cut -d" " -f3)',
|
|
||||||
'vars.notification.mail': True,
|
|
||||||
'check_interval': '60m',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -72,7 +67,7 @@ defaults = {
|
||||||
|
|
||||||
|
|
||||||
@metadata_reactor.provides(
|
@metadata_reactor.provides(
|
||||||
'nginx/vhosts/forgejo',
|
'nginx/vhosts/gitea',
|
||||||
)
|
)
|
||||||
def nginx(metadata):
|
def nginx(metadata):
|
||||||
if not node.has_bundle('nginx'):
|
if not node.has_bundle('nginx'):
|
||||||
|
@ -81,7 +76,7 @@ def nginx(metadata):
|
||||||
return {
|
return {
|
||||||
'nginx': {
|
'nginx': {
|
||||||
'vhosts': {
|
'vhosts': {
|
||||||
'forgejo': {
|
'gitea': {
|
||||||
'domain': metadata.get('gitea/domain'),
|
'domain': metadata.get('gitea/domain'),
|
||||||
'locations': {
|
'locations': {
|
||||||
'/': {
|
'/': {
|
||||||
|
@ -104,4 +99,16 @@ def nginx(metadata):
|
||||||
)
|
)
|
||||||
def icinga_check_for_new_release(metadata):
|
def icinga_check_for_new_release(metadata):
|
||||||
return {
|
return {
|
||||||
|
'icinga2_api': {
|
||||||
|
'gitea': {
|
||||||
|
'services': {
|
||||||
|
'GITEA UPDATE': {
|
||||||
|
# this is only temporary. We will switch to forgejo once they have their first stable release.
|
||||||
|
'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_forgejo_for_new_release codeberg.org forgejo/forgejo v{}'.format(metadata.get('gitea/version')),
|
||||||
|
'vars.notification.mail': True,
|
||||||
|
'check_interval': '60m',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@ try:
|
||||||
message = f"WARNING - stable version {stable_version} is lower than running version {running_version}, check if downgrade is necessary."
|
message = f"WARNING - stable version {stable_version} is lower than running version {running_version}, check if downgrade is necessary."
|
||||||
else:
|
else:
|
||||||
status = 2
|
status = 2
|
||||||
message = f"CRITICAL - update necessary, running version {running_version} is lower than stable version {stable_version}"
|
message = f"CRITICAL - update necessary, running verison {running_version} is lower than stable version {stable_version}"
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
message = f"{message}: {repr(e)}"
|
message = f"{message}: {repr(e)}"
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
from bundlewrap.metadata import atomic
|
||||||
|
|
||||||
defaults = {
|
defaults = {
|
||||||
'apt': {
|
'apt': {
|
||||||
'packages': {
|
'packages': {
|
||||||
|
@ -23,7 +25,7 @@ defaults = {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@metadata_reactor.provides(
|
@metadata_reactor.provides(
|
||||||
'icinga2_api/homeassistant/services',
|
'icinga2_api/homeassistant/services/HOMESSISTANT UPDATE',
|
||||||
)
|
)
|
||||||
def icinga_check_for_new_release(metadata):
|
def icinga_check_for_new_release(metadata):
|
||||||
return {
|
return {
|
||||||
|
@ -52,8 +54,8 @@ def nginx(metadata):
|
||||||
'vhosts': {
|
'vhosts': {
|
||||||
'homeassistant': {
|
'homeassistant': {
|
||||||
'domain': metadata.get('homeassistant/domain'),
|
'domain': metadata.get('homeassistant/domain'),
|
||||||
'website_check_path': '/auth/authorize',
|
'website_check_path': '/',
|
||||||
'website_check_string': 'Home Assistant',
|
'website_check_string': 'Homeassistant',
|
||||||
'locations': {
|
'locations': {
|
||||||
'/': {
|
'/': {
|
||||||
'target': 'http://127.0.0.1:8123',
|
'target': 'http://127.0.0.1:8123',
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
from sys import argv, exit
|
|
||||||
|
|
||||||
from requests import get
|
from requests import get
|
||||||
|
from sys import argv, exit
|
||||||
|
|
||||||
meshviewer_url = argv[1]
|
meshviewer_url = argv[1]
|
||||||
node_id = argv[2]
|
node_id = argv[2]
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
from sys import exit
|
|
||||||
|
|
||||||
from requests import get
|
from requests import get
|
||||||
|
from sys import exit
|
||||||
|
|
||||||
SIPGATE_USER = '${node.metadata['icinga2']['sipgate_user']}'
|
SIPGATE_USER = '${node.metadata['icinga2']['sipgate_user']}'
|
||||||
SIPGATE_PASS = '${node.metadata['icinga2']['sipgate_pass']}'
|
SIPGATE_PASS = '${node.metadata['icinga2']['sipgate_pass']}'
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
from concurrent.futures import ThreadPoolExecutor, as_completed
|
from concurrent.futures import ThreadPoolExecutor, as_completed
|
||||||
from ipaddress import IPv6Address, ip_address
|
from ipaddress import ip_address, IPv6Address
|
||||||
from subprocess import check_output
|
from subprocess import check_output
|
||||||
from sys import argv, exit
|
from sys import argv, exit
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
BLOCKLISTS = [
|
BLOCKLISTS = [
|
||||||
'0spam.fusionzero.com',
|
'0spam.fusionzero.com',
|
||||||
'bl.mailspike.org',
|
'bl.mailspike.org',
|
||||||
|
|
|
@ -4,11 +4,10 @@ import email.mime.text
|
||||||
import smtplib
|
import smtplib
|
||||||
from argparse import ArgumentParser
|
from argparse import ArgumentParser
|
||||||
from json import dumps
|
from json import dumps
|
||||||
|
from requests import post
|
||||||
from subprocess import run
|
from subprocess import run
|
||||||
from sys import argv
|
from sys import argv
|
||||||
|
|
||||||
from requests import post
|
|
||||||
|
|
||||||
SIPGATE_USER='${node.metadata['icinga2']['sipgate_user']}'
|
SIPGATE_USER='${node.metadata['icinga2']['sipgate_user']}'
|
||||||
SIPGATE_PASS='${node.metadata['icinga2']['sipgate_pass']}'
|
SIPGATE_PASS='${node.metadata['icinga2']['sipgate_pass']}'
|
||||||
|
|
||||||
|
|
|
@ -17,9 +17,7 @@ defaults = {
|
||||||
'icinga2': {},
|
'icinga2': {},
|
||||||
'icinga2-ido-pgsql': {},
|
'icinga2-ido-pgsql': {},
|
||||||
'icingaweb2': {},
|
'icingaweb2': {},
|
||||||
|
'icingaweb2-module-monitoring': {},
|
||||||
# apparently no longer needed
|
|
||||||
#'icingaweb2-module-monitoring': {},
|
|
||||||
|
|
||||||
# neeeded for statusmonitor
|
# neeeded for statusmonitor
|
||||||
'python3-flask': {},
|
'python3-flask': {},
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
from os import environ
|
from os import environ
|
||||||
|
from requests import get, post
|
||||||
from sys import argv, exit
|
from sys import argv, exit
|
||||||
|
|
||||||
from requests import get, post
|
|
||||||
|
|
||||||
SYNAPSE_MAX_ROOMS_TO_GET = 20000
|
SYNAPSE_MAX_ROOMS_TO_GET = 20000
|
||||||
SYNAPSE_HOST = 'http://[::1]:20080/'
|
SYNAPSE_HOST = 'http://[::1]:20080/'
|
||||||
|
|
|
@ -6,7 +6,7 @@ defaults = {
|
||||||
'repos': {
|
'repos': {
|
||||||
'miniflux': {
|
'miniflux': {
|
||||||
'items': {
|
'items': {
|
||||||
'deb [trusted=yes] https://repo.miniflux.app/apt/ /',
|
'deb https://apt.miniflux.app/ /',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
9
bundles/molly-guard/files/10-check-unattended-upgrades
Normal file
9
bundles/molly-guard/files/10-check-unattended-upgrades
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Checks wether upgrade-and-reboot is currently running.
|
||||||
|
|
||||||
|
if [[ -f "/var/lib/bundlewrap/soft-${node.name}/UNATTENDED" ]]
|
||||||
|
then
|
||||||
|
echo "Sorry, can't $MOLLYGUARD_CMD now, upgrade-and-reboot is running"
|
||||||
|
exit 1
|
||||||
|
fi
|
29
bundles/molly-guard/files/30-query-hostname
Normal file
29
bundles/molly-guard/files/30-query-hostname
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# This script will ask for the bundlewrap node name. This replaces the
|
||||||
|
# original script, which will ask for the hostname, which sometimes
|
||||||
|
# is not enough to properly identify the system.
|
||||||
|
|
||||||
|
NODE_NAME="${node.name}"
|
||||||
|
|
||||||
|
# If this is not a terminal, do nothing
|
||||||
|
test -t 0 || exit 0
|
||||||
|
|
||||||
|
sigh()
|
||||||
|
{
|
||||||
|
echo "Sorry, input does not match. Won't $MOLLYGUARD_CMD $NODE_NAME ..." >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
trap 'echo;sigh' 1 2 3 9 10 12 15
|
||||||
|
|
||||||
|
echo -n "Please enter the bundlewrap node name of this System to $MOLLYGUARD_CMD: "
|
||||||
|
read NODE_NAME_USER || :
|
||||||
|
|
||||||
|
NODE_NAME_USER="$(echo "$NODE_NAME_USER" | tr '[:upper:]' '[:lower:]')"
|
||||||
|
|
||||||
|
[ "$NODE_NAME_USER" = "$NODE_NAME" ] || sigh
|
||||||
|
|
||||||
|
trap - 1 2 3 9 10 12 15
|
||||||
|
|
||||||
|
exit 0
|
1
bundles/molly-guard/files/rc
Normal file
1
bundles/molly-guard/files/rc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
# currently unused
|
27
bundles/molly-guard/items.py
Normal file
27
bundles/molly-guard/items.py
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
directories = {
|
||||||
|
'/etc/molly-guard/messages.d': {
|
||||||
|
'purge': True,
|
||||||
|
'after': {
|
||||||
|
'pkg_apt:molly-guard',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/etc/molly-guard/run.d': {
|
||||||
|
'purge': True,
|
||||||
|
'after': {
|
||||||
|
'pkg_apt:molly-guard',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
files = {
|
||||||
|
'/etc/molly-guard/rc': {},
|
||||||
|
|
||||||
|
'/etc/molly-guard/run.d/10-check-unattended-upgrades': {
|
||||||
|
'content_type': 'mako',
|
||||||
|
'mode': '0755',
|
||||||
|
},
|
||||||
|
'/etc/molly-guard/run.d/30-query-hostname': {
|
||||||
|
'content_type': 'mako',
|
||||||
|
'mode': '0755',
|
||||||
|
},
|
||||||
|
}
|
7
bundles/molly-guard/metadata.py
Normal file
7
bundles/molly-guard/metadata.py
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
defaults = {
|
||||||
|
'apt': {
|
||||||
|
'packages': {
|
||||||
|
'molly-guard': {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
|
@ -7,6 +7,7 @@ from time import sleep
|
||||||
|
|
||||||
import paho.mqtt.client as mqtt
|
import paho.mqtt.client as mqtt
|
||||||
|
|
||||||
|
|
||||||
BROKER_HOST = argv[1]
|
BROKER_HOST = argv[1]
|
||||||
BROKER_TOPIC = argv[2]
|
BROKER_TOPIC = argv[2]
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from bundlewrap.metadata import atomic
|
from bundlewrap.metadata import atomic
|
||||||
|
|
||||||
|
|
||||||
defaults = {
|
defaults = {
|
||||||
'apt': {
|
'apt': {
|
||||||
'packages': {
|
'packages': {
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
from sys import exit
|
|
||||||
|
|
||||||
from requests import get
|
from requests import get
|
||||||
|
from sys import exit
|
||||||
|
|
||||||
api_key = '${api_key}'
|
api_key = '${api_key}'
|
||||||
|
|
||||||
|
|
5
bundles/openhab/files/backup-pre-hook
Normal file
5
bundles/openhab/files/backup-pre-hook
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
find /var/lib/openhab/backups -type f -mtime +3 -delete
|
||||||
|
|
||||||
|
/usr/share/openhab/runtime/bin/backup --full
|
62
bundles/openhab/files/openhab
Normal file
62
bundles/openhab/files/openhab
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
# openHAB service options
|
||||||
|
|
||||||
|
#########################
|
||||||
|
## PORTS
|
||||||
|
## The ports openHAB will bind its HTTP/HTTPS web server to.
|
||||||
|
|
||||||
|
OPENHAB_HTTP_PORT=22090
|
||||||
|
#OPENHAB_HTTPS_PORT=8443
|
||||||
|
|
||||||
|
#########################
|
||||||
|
## HTTP(S) LISTEN ADDRESS
|
||||||
|
## The listen address used by the HTTP(S) server.
|
||||||
|
## 0.0.0.0 (default) allows a connection from any location
|
||||||
|
## 127.0.0.1 only allows the local machine to connect
|
||||||
|
|
||||||
|
OPENHAB_HTTP_ADDRESS=127.0.0.1
|
||||||
|
|
||||||
|
#########################
|
||||||
|
## BACKUP DIRECTORY
|
||||||
|
## Set the following variable to specify the backup location.
|
||||||
|
## runtime/bin/backup and runtime/bin/restore will use this path for the zip files.
|
||||||
|
|
||||||
|
#OPENHAB_BACKUPS=/var/lib/openhab/backups
|
||||||
|
|
||||||
|
#########################
|
||||||
|
## JAVA OPTIONS
|
||||||
|
## Additional options for the JAVA_OPTS environment variable.
|
||||||
|
## These will be appended to the execution of the openHAB Java runtime in front of all other options.
|
||||||
|
##
|
||||||
|
## A couple of independent examples:
|
||||||
|
## EXTRA_JAVA_OPTS="-Dgnu.io.rxtx.SerialPorts=/dev/ttyZWAVE:/dev/ttyUSB0:/dev/ttyS0:/dev/ttyS2:/dev/ttyACM0:/dev/ttyAMA0"
|
||||||
|
## EXTRA_JAVA_OPTS="-Djna.library.path=/lib/arm-linux-gnueabihf/ -Duser.timezone=Europe/Berlin -Dgnu.io.rxtx.SerialPorts=/dev/ttyZWave"
|
||||||
|
|
||||||
|
EXTRA_JAVA_OPTS="${extra_java_opts}"
|
||||||
|
|
||||||
|
#########################
|
||||||
|
## OPENHAB DEFAULTS PATHS
|
||||||
|
## The following settings override the default apt/rpm locations and should be used with caution.
|
||||||
|
## openHAB will fail to update itself if you're using different paths.
|
||||||
|
## Only set these if you are testing and are confident in debugging.
|
||||||
|
|
||||||
|
#OPENHAB_HOME=/usr/share/openhab
|
||||||
|
#OPENHAB_CONF=/etc/openhab
|
||||||
|
#OPENHAB_RUNTIME=/usr/share/openhab/runtime
|
||||||
|
#OPENHAB_USERDATA=/var/lib/openhab
|
||||||
|
#OPENHAB_LOGDIR=/var/log/openhab
|
||||||
|
|
||||||
|
#########################
|
||||||
|
## OPENHAB USER AND GROUP
|
||||||
|
## The user and group that takes ownership of openHAB. Only available for init.d systems.
|
||||||
|
## To edit user and group for systemd, see the service file at /usr/lib/systemd/system/openhab.service.
|
||||||
|
|
||||||
|
#OPENHAB_USER=openhab
|
||||||
|
#OPENHAB_GROUP=openhab
|
||||||
|
|
||||||
|
#########################
|
||||||
|
## SYSTEMD START MODE
|
||||||
|
## The Karaf startmode for the openHAB runtime. Only available for systemctl/systemd systems.
|
||||||
|
## Defaults to daemon when unset here. Multiple options can be used without quotes.
|
||||||
|
## debug increases log output. daemon launches the Karaf/openHAB processes.
|
||||||
|
|
||||||
|
#OPENHAB_STARTMODE=debug
|
32
bundles/openhab/items.py
Normal file
32
bundles/openhab/items.py
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
extra_java_opts = []
|
||||||
|
|
||||||
|
for opt, value in sorted(node.metadata.get('openhab/java_opts', {}).items()):
|
||||||
|
if value is None:
|
||||||
|
extra_java_opts.append(f'-D{opt}')
|
||||||
|
else:
|
||||||
|
extra_java_opts.append(f'-D{opt}={value}')
|
||||||
|
|
||||||
|
files = {
|
||||||
|
'/etc/default/openhab': {
|
||||||
|
'content_type': 'mako',
|
||||||
|
'context': {
|
||||||
|
'extra_java_opts': ' '.join(extra_java_opts),
|
||||||
|
},
|
||||||
|
'triggers': {
|
||||||
|
'svc_systemd:openhab:restart',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'/etc/backup-pre-hooks.d/40-openhab': {
|
||||||
|
'source': 'backup-pre-hook',
|
||||||
|
'mode': '0755',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
svc_systemd = {
|
||||||
|
'openhab': {
|
||||||
|
'needs': {
|
||||||
|
'pkg_apt:openhab',
|
||||||
|
'pkg_apt:openhab-addons',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
55
bundles/openhab/metadata.py
Normal file
55
bundles/openhab/metadata.py
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
defaults = {
|
||||||
|
'apt': {
|
||||||
|
'packages': {
|
||||||
|
'openjdk-17-jre': {},
|
||||||
|
'openhab': {
|
||||||
|
'needs': {
|
||||||
|
'pkg_apt:openjdk-17-jre',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'openhab-addons': {
|
||||||
|
'needs': {
|
||||||
|
'pkg_apt:openhab',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'repos': {
|
||||||
|
'openhab': {
|
||||||
|
'items': {
|
||||||
|
'deb https://openhab.jfrog.io/artifactory/openhab-linuxpkg stable main',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'backups': {
|
||||||
|
'paths': {
|
||||||
|
'/usr/share/openhab/addons', # not included in openhab backup
|
||||||
|
'/var/lib/openhab',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@metadata_reactor.provides(
|
||||||
|
'nginx/vhosts/openhab',
|
||||||
|
)
|
||||||
|
def nginx(metadata):
|
||||||
|
if not node.has_bundle('nginx'):
|
||||||
|
raise DoNotRunAgain
|
||||||
|
|
||||||
|
return {
|
||||||
|
'nginx': {
|
||||||
|
'vhosts': {
|
||||||
|
'openhab': {
|
||||||
|
'domain': metadata.get('openhab/domain'),
|
||||||
|
'locations': {
|
||||||
|
'/': {
|
||||||
|
'target': 'http://localhost:22090/',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'website_check_path': '/',
|
||||||
|
'website_check_string': 'openHAB',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
|
@ -4,6 +4,7 @@
|
||||||
from json import loads
|
from json import loads
|
||||||
from subprocess import check_output
|
from subprocess import check_output
|
||||||
|
|
||||||
|
|
||||||
queue_counts = {}
|
queue_counts = {}
|
||||||
|
|
||||||
queue_json = check_output(['sudo', '/usr/sbin/postqueue', '-j'])
|
queue_json = check_output(['sudo', '/usr/sbin/postqueue', '-j'])
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
% for zone in sorted(zones):
|
% for zone in sorted(zones):
|
||||||
zone "${zone}" {
|
zone "${zone}" {
|
||||||
file "/var/lib/powerdns/zones/${zone}";
|
file "/var/lib/powerdns/zones/${zone}";
|
||||||
type master;
|
type native;
|
||||||
};
|
};
|
||||||
% endfor
|
% endfor
|
||||||
|
|
|
@ -20,15 +20,12 @@ setgid=pdns
|
||||||
allow-notify-from=${','.join(sorted(my_primary_servers))}
|
allow-notify-from=${','.join(sorted(my_primary_servers))}
|
||||||
|
|
||||||
slave=yes
|
slave=yes
|
||||||
% if node.os_version[0] > 10:
|
# FIXME enable once debian stable has 4.1.9
|
||||||
superslave=yes
|
#superslave=yes
|
||||||
% endif
|
|
||||||
% else:
|
% else:
|
||||||
api=yes
|
api=yes
|
||||||
api-key=${api_key}
|
api-key=${api_key}
|
||||||
webserver=yes
|
webserver=yes
|
||||||
webserver-address=0.0.0.0
|
|
||||||
webserver-allow-from=0.0.0.0/0
|
|
||||||
|
|
||||||
allow-notify-from=
|
allow-notify-from=
|
||||||
|
|
||||||
|
|
|
@ -5,12 +5,26 @@ from subprocess import check_output
|
||||||
|
|
||||||
zone_path = join(repo.path, 'data', 'powerdns', 'files', 'bind-zones')
|
zone_path = join(repo.path, 'data', 'powerdns', 'files', 'bind-zones')
|
||||||
|
|
||||||
nameservers = set()
|
ZONE_HEADER = """
|
||||||
|
; _ ____ _ _ _____ _ _ _ _ ____
|
||||||
|
; / \\ / ___| | | |_ _| | | | \\ | |/ ___|
|
||||||
|
; / _ \\| | | |_| | | | | | | | \\| | | _
|
||||||
|
; / ___ \\ |___| _ | | | | |_| | |\\ | |_| |
|
||||||
|
; /_/ \\_\\____|_| |_| |_| \\___/|_| \\_|\\____|
|
||||||
|
;
|
||||||
|
; --> Diese Datei wird von BundleWrap verwaltet! <--
|
||||||
|
|
||||||
|
$TTL 60
|
||||||
|
@ IN SOA ns-1.kunbox.net. hostmaster.kunbox.net. (
|
||||||
|
{serial}
|
||||||
|
3600
|
||||||
|
600
|
||||||
|
86400
|
||||||
|
300
|
||||||
|
)
|
||||||
|
"""
|
||||||
for rnode in sorted(repo.nodes_in_group('dns')):
|
for rnode in sorted(repo.nodes_in_group('dns')):
|
||||||
if not rnode.metadata.get('powerdns/is_secondary'):
|
ZONE_HEADER += '@ IN NS {}.\n'.format(rnode.metadata.get('powerdns/my_hostname', rnode.metadata.get('hostname')))
|
||||||
# hide the primary nameserver from auto-generated nameserver lists
|
|
||||||
continue
|
|
||||||
nameservers.add(rnode.metadata.get('powerdns/my_hostname', rnode.metadata.get('hostname')))
|
|
||||||
|
|
||||||
directories = {
|
directories = {
|
||||||
'/etc/powerdns/pdns.d': {
|
'/etc/powerdns/pdns.d': {
|
||||||
|
@ -36,11 +50,11 @@ files = {
|
||||||
'/etc/powerdns/pdns.conf': {
|
'/etc/powerdns/pdns.conf': {
|
||||||
'content_type': 'mako',
|
'content_type': 'mako',
|
||||||
'context': {
|
'context': {
|
||||||
'api_key': node.metadata.get('powerdns/api_key'),
|
'api_key': node.metadata['powerdns']['api_key'],
|
||||||
'my_hostname': node.metadata.get('powerdns/my_hostname', node.metadata.get('hostname')),
|
'my_hostname': node.metadata['powerdns'].get('my_hostname', node.metadata.get('hostname')),
|
||||||
'is_secondary': node.metadata.get('powerdns/is_secondary', False),
|
'is_secondary': node.metadata['powerdns'].get('is_secondary', False),
|
||||||
'my_primary_servers': node.metadata.get('powerdns/my_primary_servers', set()),
|
'my_primary_servers': node.metadata['powerdns'].get('my_primary_servers', set()),
|
||||||
'my_secondary_servers': node.metadata.get('powerdns/my_secondary_servers', set()),
|
'my_secondary_servers': node.metadata['powerdns'].get('my_secondary_servers', set()),
|
||||||
},
|
},
|
||||||
'needs': {
|
'needs': {
|
||||||
'pkg_apt:pdns-server',
|
'pkg_apt:pdns-server',
|
||||||
|
@ -64,7 +78,7 @@ svc_systemd = {
|
||||||
actions = {
|
actions = {
|
||||||
'powerdns_reload_zones': {
|
'powerdns_reload_zones': {
|
||||||
'triggered': True,
|
'triggered': True,
|
||||||
'command': 'pdns_control rediscover; pdns_control reload; pdns_control notify \*',
|
'command': 'pdns_control rediscover; pdns_control reload',
|
||||||
'needs': {
|
'needs': {
|
||||||
'svc_systemd:pdns',
|
'svc_systemd:pdns',
|
||||||
},
|
},
|
||||||
|
@ -88,8 +102,7 @@ if node.metadata.get('powerdns/features/bind', False):
|
||||||
files[f'/var/lib/powerdns/zones/{zone}'] = {
|
files[f'/var/lib/powerdns/zones/{zone}'] = {
|
||||||
'content_type': 'mako',
|
'content_type': 'mako',
|
||||||
'context': {
|
'context': {
|
||||||
'NAMESERVERS': '\n'.join(sorted({f'@ IN NS {ns}.' for ns in nameservers})),
|
'header': ZONE_HEADER.format(serial=serial),
|
||||||
'SERIAL': serial,
|
|
||||||
'metadata_records': node.metadata.get(f'powerdns/bind-zones/{zone}/records', []),
|
'metadata_records': node.metadata.get(f'powerdns/bind-zones/{zone}/records', []),
|
||||||
},
|
},
|
||||||
'source': f'bind-zones/{zone}',
|
'source': f'bind-zones/{zone}',
|
||||||
|
@ -129,22 +142,12 @@ if node.metadata.get('powerdns/features/bind', False):
|
||||||
'action:powerdns_reload_zones',
|
'action:powerdns_reload_zones',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
else:
|
|
||||||
files['/etc/powerdns/named.conf'] = {
|
|
||||||
'delete': True,
|
|
||||||
'needed_by': {
|
|
||||||
'svc_systemd:pdns',
|
|
||||||
},
|
|
||||||
'triggers': {
|
|
||||||
'action:powerdns_reload_zones',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
if node.metadata.get('powerdns/features/pgsql', node.has_bundle('postgresql')):
|
if node.metadata.get('powerdns/features/pgsql', False):
|
||||||
files['/etc/powerdns/pdns.d/pgsql.conf'] = {
|
files['/etc/powerdns/pdns.d/pgsql.conf'] = {
|
||||||
'content_type': 'mako',
|
'content_type': 'mako',
|
||||||
'context': {
|
'context': {
|
||||||
'password': node.metadata.get('postgresql/roles/powerdns/password'),
|
'password': node.metadata['postgresql']['roles']['powerdns']['password'],
|
||||||
},
|
},
|
||||||
'needs': {
|
'needs': {
|
||||||
'pkg_apt:pdns-backend-pgsql',
|
'pkg_apt:pdns-backend-pgsql',
|
||||||
|
@ -160,7 +163,7 @@ if node.metadata.get('powerdns/features/pgsql', node.has_bundle('postgresql')):
|
||||||
files['/etc/powerdns/schema.pgsql.sql'] = {}
|
files['/etc/powerdns/schema.pgsql.sql'] = {}
|
||||||
|
|
||||||
actions['powerdns_load_pgsql_schema'] = {
|
actions['powerdns_load_pgsql_schema'] = {
|
||||||
'command': node.metadata.get('postgresql/roles/powerdns/password').format_into('PGPASSWORD={} psql -h 127.0.0.1 -d powerdns -U powerdns -w < /etc/powerdns/schema.pgsql.sql'),
|
'command': node.metadata['postgresql']['roles']['powerdns']['password'].format_into('PGPASSWORD={} psql -h 127.0.0.1 -d powerdns -U powerdns -w < /etc/powerdns/schema.pgsql.sql'),
|
||||||
'unless': 'sudo -u postgres psql -d powerdns -c "\dt" | grep domains 2>&1 >/dev/null',
|
'unless': 'sudo -u postgres psql -d powerdns -c "\dt" | grep domains 2>&1 >/dev/null',
|
||||||
'needs': {
|
'needs': {
|
||||||
'bundle:postgresql',
|
'bundle:postgresql',
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from ipaddress import IPv4Address, IPv6Address, ip_address
|
from ipaddress import ip_address, IPv4Address, IPv6Address
|
||||||
|
|
||||||
from bundlewrap.metadata import atomic
|
from bundlewrap.metadata import atomic
|
||||||
|
|
||||||
|
@ -43,11 +43,7 @@ if node.has_bundle('telegraf'):
|
||||||
defaults['telegraf'] = {
|
defaults['telegraf'] = {
|
||||||
'input_plugins': {
|
'input_plugins': {
|
||||||
'builtin': {
|
'builtin': {
|
||||||
'powerdns': [{
|
'powerdns': [{}],
|
||||||
'unix_sockets': [
|
|
||||||
'/var/run/pdns/pdns.controlsocket',
|
|
||||||
],
|
|
||||||
}],
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'additional_groups': {
|
'additional_groups': {
|
||||||
|
@ -190,16 +186,16 @@ def hosts_entries_for_all_dns_servers(metadata):
|
||||||
if rnode.name == node.name:
|
if rnode.name == node.name:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
found_ips = repo.libs.tools.resolve_identifier(repo, rnode.name)
|
ip = rnode.metadata.get('external_ipv4')
|
||||||
for ip in sorted(found_ips['ipv4']):
|
|
||||||
if not ip.is_private:
|
if ip:
|
||||||
entries[str(ip)] = {
|
entries[ip] = {
|
||||||
rnode.metadata.get('hostname'),
|
rnode.metadata.get('hostname'),
|
||||||
rnode.name,
|
rnode.name,
|
||||||
}
|
}
|
||||||
|
|
||||||
if rnode.metadata.get('powerdns/my_hostname', None):
|
if rnode.metadata.get('powerdns/my_hostname', None):
|
||||||
entries[str(ip)].add(rnode.metadata.get('powerdns/my_hostname'))
|
entries[ip].add(rnode.metadata.get('powerdns/my_hostname'))
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'hosts': {
|
'hosts': {
|
||||||
|
@ -215,9 +211,8 @@ def firewall(metadata):
|
||||||
return {
|
return {
|
||||||
'firewall': {
|
'firewall': {
|
||||||
'port_rules': {
|
'port_rules': {
|
||||||
'53': atomic(metadata.get('powerdns/restrict-to/dns', {'*'})),
|
'53': atomic(metadata.get('powerdns/restrict-to', {'*'})),
|
||||||
'53/udp': atomic(metadata.get('powerdns/restrict-to/dns', {'*'})),
|
'53/udp': atomic(metadata.get('powerdns/restrict-to', {'*'})),
|
||||||
'8081': atomic(metadata.get('powerdns/restrict-to/api', set())),
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,13 +36,10 @@ actions = {
|
||||||
'needs': {
|
'needs': {
|
||||||
'directory:/opt/powerdnsadmin', # provided by bundle:users
|
'directory:/opt/powerdnsadmin', # provided by bundle:users
|
||||||
},
|
},
|
||||||
'after': {
|
|
||||||
'pkg_apt:',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
'powerdnsadmin_install_deps': {
|
'powerdnsadmin_install_deps': {
|
||||||
'triggered': True,
|
'triggered': True,
|
||||||
'command': '/opt/powerdnsadmin/venv/bin/pip install --upgrade psycopg2-binary -r /opt/powerdnsadmin/src/requirements.txt',
|
'command': '/opt/powerdnsadmin/venv/bin/pip install -r /opt/powerdnsadmin/src/requirements.txt',
|
||||||
'needs': {
|
'needs': {
|
||||||
'action:powerdnsadmin_create_virtualenv',
|
'action:powerdnsadmin_create_virtualenv',
|
||||||
'pkg_apt:',
|
'pkg_apt:',
|
||||||
|
|
|
@ -10,6 +10,7 @@ defaults = {
|
||||||
'libxmlsec1-dev': {},
|
'libxmlsec1-dev': {},
|
||||||
'libxslt1-dev': {},
|
'libxslt1-dev': {},
|
||||||
'pkg-config': {},
|
'pkg-config': {},
|
||||||
|
'python3-psycopg2': {},
|
||||||
'python3-wheel': {},
|
'python3-wheel': {},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
from sys import argv
|
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
from sys import argv
|
||||||
|
|
||||||
INTERFACE = argv[1]
|
INTERFACE = argv[1]
|
||||||
LOCAL_IP = argv[4]
|
LOCAL_IP = argv[4]
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import psycopg2
|
||||||
from configparser import ConfigParser
|
from configparser import ConfigParser
|
||||||
from sys import argv, exit
|
from sys import argv, exit
|
||||||
|
|
||||||
import psycopg2
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
from sys import argv, stderr
|
|
||||||
|
|
||||||
from requests import get
|
from requests import get
|
||||||
|
from sys import argv, stderr
|
||||||
|
|
||||||
try:
|
try:
|
||||||
r = get('http://127.0.0.1:11334/stat')
|
r = get('http://127.0.0.1:11334/stat')
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
from json import loads
|
|
||||||
from subprocess import check_output
|
from subprocess import check_output
|
||||||
|
from json import loads
|
||||||
from sys import stderr
|
from sys import stderr
|
||||||
|
|
||||||
devices = check_output(['smartctl', '--scan']).decode().splitlines()
|
devices = check_output(['smartctl', '--scan']).decode().splitlines()
|
||||||
|
|
|
@ -55,9 +55,8 @@ try:
|
||||||
exit(2)
|
exit(2)
|
||||||
else:
|
else:
|
||||||
print(
|
print(
|
||||||
"Currently installed version {} matches newest release on {}".format(
|
"Currently installed version {} matches newest release on github".format(
|
||||||
current_version,
|
current_version
|
||||||
host,
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
exit(0)
|
exit(0)
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
|
|
||||||
#this is actually a python https requests query, its called check_http_wget cause it got replaced
|
#this is actually a python https requests query, its called check_http_wget cause it got replaced
|
||||||
|
|
||||||
from argparse import ArgumentParser
|
|
||||||
from sys import exit
|
from sys import exit
|
||||||
|
from argparse import ArgumentParser
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ from argparse import ArgumentParser
|
||||||
from subprocess import check_output
|
from subprocess import check_output
|
||||||
from tempfile import TemporaryFile
|
from tempfile import TemporaryFile
|
||||||
|
|
||||||
|
|
||||||
check_filesystem_types = {
|
check_filesystem_types = {
|
||||||
'ext2',
|
'ext2',
|
||||||
'ext3',
|
'ext3',
|
||||||
|
|
|
@ -8,10 +8,7 @@ defaults = {
|
||||||
'monitoring-plugins': {},
|
'monitoring-plugins': {},
|
||||||
'python3-requests': {},
|
'python3-requests': {},
|
||||||
'python3-setuptools': {}, # needed by check_github_for_new_release
|
'python3-setuptools': {}, # needed by check_github_for_new_release
|
||||||
'sysstat': {
|
'sysstat': {}, # needed by check_cpu_stats
|
||||||
# legacy
|
|
||||||
'installed': False,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'icinga2_api': {
|
'icinga2_api': {
|
||||||
|
@ -40,6 +37,7 @@ defaults = {
|
||||||
'perl-libwww': {},
|
'perl-libwww': {},
|
||||||
'monitoring-plugins': {},
|
'monitoring-plugins': {},
|
||||||
'python-requests': {},
|
'python-requests': {},
|
||||||
|
'sysstat': {},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
defaults = {
|
defaults = {
|
||||||
'apt': {
|
'apt': {
|
||||||
'packages': {
|
'packages': {
|
||||||
'isc-dhcp-client': {
|
|
||||||
'installed': False,
|
|
||||||
},
|
|
||||||
'resolvconf': {
|
'resolvconf': {
|
||||||
'installed': False,
|
'installed': False,
|
||||||
},
|
},
|
||||||
|
|
|
@ -5,13 +5,15 @@
|
||||||
# 'localhost'.
|
# 'localhost'.
|
||||||
|
|
||||||
{
|
{
|
||||||
base_url => Mojo::URL->new('https://${domain}'),
|
# Cache directories for schedule and realtime data. Mandatory. The parent
|
||||||
|
# directory ('/var/cache/travelynx' in this case) must already exist.
|
||||||
cache => {
|
cache => {
|
||||||
schedule => '/var/cache/travelynx/iris',
|
schedule => '/var/cache/travelynx/iris',
|
||||||
realtime => '/var/cache/travelynx/iris-rt',
|
realtime => '/var/cache/travelynx/iris-rt',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
# Database configuration. host and port are optional
|
||||||
|
# (defaulting to localhost:5432), the rest is mandatory.
|
||||||
db => {
|
db => {
|
||||||
host => '${database.get('host', 'localhost')}',
|
host => '${database.get('host', 'localhost')}',
|
||||||
port => 5432,
|
port => 5432,
|
||||||
|
@ -20,6 +22,8 @@
|
||||||
password => '${database['password']}',
|
password => '${database['password']}',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
# See the Mojo::Server::Hypnotoad manual for details on the following
|
||||||
|
# settings.
|
||||||
hypnotoad => {
|
hypnotoad => {
|
||||||
accepts => 100,
|
accepts => 100,
|
||||||
clients => 10,
|
clients => 10,
|
||||||
|
@ -30,14 +34,21 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
mail => {
|
mail => {
|
||||||
|
# If you want to disable outgoing mail for development purposes,
|
||||||
|
# uncomment the following line. Mails will instead be logged as
|
||||||
|
# Mojolicious "info" messages, causing their content to be printed on
|
||||||
|
# stdout.
|
||||||
|
## disabled => 1,
|
||||||
|
|
||||||
|
# Otherwise, specify the sender ("From" field) for mail sent by travelynx
|
||||||
|
# here. E.g. 'Travelynx <mail@example.org>'
|
||||||
from => '${mail_from}',
|
from => '${mail_from}',
|
||||||
},
|
},
|
||||||
|
|
||||||
ref => {
|
# Secrets used for cookie signing and verification. Must contain at least
|
||||||
issues => 'https://github.com/derf/travelynx/issues',
|
# one random string. If you specify several strings, the first one will
|
||||||
source => 'https://github.com/derf/travelynx',
|
# be used for signing new cookies, and the remaining ones will still be
|
||||||
},
|
# accepted for cookie validation.
|
||||||
|
|
||||||
secrets => [
|
secrets => [
|
||||||
'${cookie_secret}',
|
'${cookie_secret}',
|
||||||
],
|
],
|
||||||
|
|
|
@ -36,7 +36,7 @@ files = {
|
||||||
},
|
},
|
||||||
'/opt/travelynx/travelynx.conf': {
|
'/opt/travelynx/travelynx.conf': {
|
||||||
'content_type': 'mako',
|
'content_type': 'mako',
|
||||||
'context': node.metadata.get('travelynx'),
|
'context': node.metadata['travelynx'],
|
||||||
'needs': {
|
'needs': {
|
||||||
'git_deploy:/opt/travelynx',
|
'git_deploy:/opt/travelynx',
|
||||||
},
|
},
|
||||||
|
@ -61,7 +61,7 @@ if isfile(join(repo.path, 'data', 'travelynx', 'files', 'imprint', node.name)):
|
||||||
git_deploy = {
|
git_deploy = {
|
||||||
'/opt/travelynx': {
|
'/opt/travelynx': {
|
||||||
'repo': 'https://github.com/derf/travelynx.git',
|
'repo': 'https://github.com/derf/travelynx.git',
|
||||||
'rev': node.metadata.get('travelynx/version'),
|
'rev': node.metadata['travelynx']['version'],
|
||||||
'needs': {
|
'needs': {
|
||||||
'directory:/opt/travelynx',
|
'directory:/opt/travelynx',
|
||||||
},
|
},
|
||||||
|
@ -84,7 +84,7 @@ actions = {
|
||||||
'triggered': True,
|
'triggered': True,
|
||||||
},
|
},
|
||||||
'travelynx_database_migrate': {
|
'travelynx_database_migrate': {
|
||||||
'command': 'export PERL5LIB=/opt/travelynx/local/lib/perl5; cd /opt/travelynx && perl index.pl database migrate',
|
'command': 'cd /opt/travelynx && perl index.pl database migrate',
|
||||||
# Because git_deploy does not put .git onto the server, the script
|
# Because git_deploy does not put .git onto the server, the script
|
||||||
# will complain on STDERR about not finding a git repository.
|
# will complain on STDERR about not finding a git repository.
|
||||||
# That's why we need to redirect stderr to /dev/null.
|
# That's why we need to redirect stderr to /dev/null.
|
||||||
|
|
|
@ -36,7 +36,6 @@ export EDITOR=vim
|
||||||
export VISUAL=vim
|
export VISUAL=vim
|
||||||
|
|
||||||
alias ipb='ip -brief --color=auto'
|
alias ipb='ip -brief --color=auto'
|
||||||
alias ipa='ip -brief --color=always addr show; echo; ip --color=always route show; ip -6 --color=always route show'
|
|
||||||
alias l='ls -lAh'
|
alias l='ls -lAh'
|
||||||
alias s='sudo -i'
|
alias s='sudo -i'
|
||||||
alias v='vim -p'
|
alias v='vim -p'
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from os.path import exists, join
|
from os.path import join, exists
|
||||||
|
|
||||||
files = {
|
files = {
|
||||||
'/etc/bash.bashrc': {
|
'/etc/bash.bashrc': {
|
||||||
|
|
|
@ -3,6 +3,7 @@ from ipaddress import ip_network
|
||||||
from bundlewrap.exceptions import NoSuchNode
|
from bundlewrap.exceptions import NoSuchNode
|
||||||
from bundlewrap.metadata import atomic
|
from bundlewrap.metadata import atomic
|
||||||
|
|
||||||
|
|
||||||
defaults = {
|
defaults = {
|
||||||
'apt': {
|
'apt': {
|
||||||
'packages': {
|
'packages': {
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
|
||||||
import re
|
|
||||||
from subprocess import check_output
|
from subprocess import check_output
|
||||||
from sys import argv, exit
|
from sys import argv, exit
|
||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
def to_bytes(size):
|
def to_bytes(size):
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from json import loads
|
from json import loads
|
||||||
from subprocess import check_call, check_output
|
from subprocess import check_call, check_output
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from json import dumps
|
from json import dumps
|
||||||
|
#from os.path import join
|
||||||
|
|
||||||
from bundlewrap.metadata import MetadataJSONEncoder
|
from bundlewrap.metadata import MetadataJSONEncoder
|
||||||
|
|
||||||
|
|
|
@ -1,29 +1,52 @@
|
||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
Version: GnuPG v1
|
||||||
|
|
||||||
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
|
||||||
=YwXc
|
ERRQF155XLQPLvRlUlq7vEYSROn5J6BAnsjdjsH9LmFMOEV8CIRCRIDePG/Mez2d
|
||||||
|
nIK5yiU6GkS3IFaQg2T9/tOBKxm0ZJPfqTXbT4jFSfvYJ3oUqc+AyYxtb8gj1GRk
|
||||||
|
X283/86/bA3C98u7re1vPtiDRyM8r0+lhEc59Yx/EAOL+X2gZyTgyUoH+LLuOWQK
|
||||||
|
s1egI8y80R8NZfM1nMiQk2ywMsTFwQjSVimScvzqv5Nt8k8CvHUQ3a6R+6doXGNX
|
||||||
|
5RnUqn9Qvmh0JY5sNgFsoaGbuk2PJrVaGBRnfnjaDqAlZpDhwkWhcCcguNhRbRHp
|
||||||
|
N7/a0pQr70bAG9VikzLyGC17EU0sxney/hyNHkr4Uyy2OXHpuJvRjVKy/BwZ3fxA
|
||||||
|
AYX2oZIOxQB3/OulzO/DppaCVhRtp1bt+Z5f+fpisiVb5DvZcMdeyAoQ4+oOr7v3
|
||||||
|
EasIs2XYcQ+kOE3Y2kdlHWBeuXzxgWgJZ1OOpwGMjR3Uy6IwhuSWtreJBA4er+Df
|
||||||
|
vgSPwKBsRLNLbPe3ftjArnC5GfMiGgikVdAUdN4OkEqvUbkRoAVGKTOMLUKm+ZkG
|
||||||
|
OskJOVYS+JAina0qkYEFF7haycMjf9olhqLmTIC+6X7Ox9R2plaOhQARAQABiQIf
|
||||||
|
BBgBCgAJBQJWCZsEAhsMAAoJEGhKFM8lguDF8ZIP/1q9Sdz8oMvf9AJXZ7AYxm77
|
||||||
|
V+kJzJqi62nZLWJnrFXDZJpU+LkYlb3fstsZ1rvBhnrEPSmFxoj72CP0RtcyX7wJ
|
||||||
|
dA7K1Fl9LpJi5H8300cC7UyG94MUYbrXijbLTbnFTfNr1tGx4a1T/7Yyxx/wZGrT
|
||||||
|
H/X8cvNybkl33SxDdlQQ9kx3lFOwC41e3TkGsUWxn3TCfvDh8VdA6Py6JeSPFGOb
|
||||||
|
MEO2/q7oUgvjfV+ivN5ayZi9bWgeqm1sgtmTHHQ4RqwwKrAb5ynXpn1b9QrkevgT
|
||||||
|
b91uzMA22Prl4DuzKiaMYDcZOQ3vtf0eFBP0GOSSgUKS4bQ3dGgi1JmQ7VuAM4uj
|
||||||
|
+Ug5TnGoLwclTwLksc7v89C5MMPgm2vVXvCUDzyzQA7bIHFeX+Rziby4nymec4Nr
|
||||||
|
eeXYNBJWrEp8XR7UNWmEgroXRoN1x9/6esh5pnoUXGAIWuKzSLQM70/wWxS67+v2
|
||||||
|
aC1GNb+pXXAzYeIIiyLWaZwCSr8sWMvshFT9REk2+lnb6sAeJswQtfTUWI00mVqZ
|
||||||
|
dvI3Wys2h0IyIejuwetTUvGhr9VgpqiLLfGzGlt/y2sg27wdHzSJbMh0VrVAK26/
|
||||||
|
BlvEwWDCFT0ZJUMG9Lvre25DD0ycbougLsRYjzmGb/3k3UktS3XTCxyBa/k3TPw3
|
||||||
|
vqIHrEqk446nGPDqJPS5
|
||||||
|
=9iF7
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
52
data/apt/files/gpg-keys/openhab.asc
Normal file
52
data/apt/files/gpg-keys/openhab.asc
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
Yyq3xLVDG/Zs7LmgSAiEITxRFTR4qg7k
|
||||||
|
=r37a
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
|
@ -1 +0,0 @@
|
||||||
encrypt$gAAAAABj1jTasX0XOFRWh7F0pxNgMoJIjrblvqOM8ohGVCsvVyMEQDiOmGaJCs9lW-lbeghlzRpiC8P7CNot6OOeNXBYWmxN_HgN3J2p6Q5-XoSJ62NUJWQNRNNENuiN1Yy0g0MREk4gVsNh8-VeoXuKgyLEXJQJI-SYLzl8faZoBnQGTK4FbTAiN6KSB4EbTPwxx-8dYp8kNIj4ipBjkQKNu-mXuVvdnf5fTUwTCQx6rz7yjlp7DOPuSJDASg5bE33dd8gt89grW5vBKeEnQsi7hpJCJF5vNfRay89IKfjf6UqxJHKCmS2tIWQ9Kz4Tv41MnNR0-jvnULq7TWcnqwo_SKb8JRLUA3dH2wLiOUu7aApYSkeSNiul2ILCtBPsjY_eWzqdd3tkpJBErOcFVe2mdjVRSIUOXTM_T3nNWCJgn5TxD4qbHklZoCaM6Ey9P_yQj-sSRGizgcDhGiqY8xJNmwbWz9IH5a_Fs6iRVhAh6VzSa1ZAKxcum87dj-KVA_SjG9hy7Dy28xK0D4NoSpYFOkEz4VHpa1tP0t8QJ2WtQiw-qjHFzokkIINEUKUPIBg6t_5oedJ24YMnyyzBZ2_uQ1HFVFjBx-7Iw73bTPNluVwXkobzEnrYFwDsEXGE6tR0HjbteNxj
|
|
|
@ -1 +0,0 @@
|
||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL+FCn1sWP74+lVAyaXDpXxCCauh6LC2KEJmIMhDEYvJ kunsi@kunsi-p14s.kunbox.net
|
|
9
data/powerdns/files/bind-zones/cybert-media.net
Normal file
9
data/powerdns/files/bind-zones/cybert-media.net
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
${header}
|
||||||
|
|
||||||
|
$ORIGIN cybert-media.net.
|
||||||
|
|
||||||
|
@ IN A 159.69.11.231
|
||||||
|
IN AAAA 2a01:4f8:c2c:c410::1
|
||||||
|
IN TXT "v=spf1 a ~all"
|
||||||
|
|
||||||
|
www IN CNAME cybert-media.net.
|
|
@ -0,0 +1,9 @@
|
||||||
|
${header}
|
||||||
|
|
||||||
|
$ORIGIN die-brontosaurier-waren-es.org.
|
||||||
|
|
||||||
|
; ends up on rx300.kunbox.net
|
||||||
|
@ IN A 31.47.232.106
|
||||||
|
IN AAAA 2a00:f820:528::2
|
||||||
|
IN MX 10 rx300.kunbox.net.
|
||||||
|
IN TXT "v=spf1 mx ~all"
|
3
data/powerdns/files/bind-zones/emails.sexy
Normal file
3
data/powerdns/files/bind-zones/emails.sexy
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
${header}
|
||||||
|
|
||||||
|
$ORIGIN emails.sexy.
|
9
data/powerdns/files/bind-zones/eskalation.jetzt
Normal file
9
data/powerdns/files/bind-zones/eskalation.jetzt
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
${header}
|
||||||
|
|
||||||
|
$ORIGIN eskalation.jetzt.
|
||||||
|
|
||||||
|
|
||||||
|
queere IN NS ns1.athena7.eu.
|
||||||
|
queere IN NS ns2.athena7.eu.
|
||||||
|
queere IN NS ns3.athena7.eu.
|
||||||
|
queere IN NS ns4.athena7.eu.
|
5
data/powerdns/files/bind-zones/felix-kunsmann.de
Normal file
5
data/powerdns/files/bind-zones/felix-kunsmann.de
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
${header}
|
||||||
|
|
||||||
|
$ORIGIN felix-kunsmann.de.
|
||||||
|
|
||||||
|
@ IN MX 10 rx300.kunbox.net.
|
15
data/powerdns/files/bind-zones/flauschehorn.sexy
Normal file
15
data/powerdns/files/bind-zones/flauschehorn.sexy
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
${header}
|
||||||
|
|
||||||
|
$ORIGIN flauschehorn.sexy.
|
||||||
|
|
||||||
|
@ IN A 5.189.140.103
|
||||||
|
IN AAAA 2a02:c207:3002:8320:feed:f2c1:c0ff:ee
|
||||||
|
IN MX 10 rx300.kunbox.net.
|
||||||
|
IN TXT "v=spf1 mx ~all"
|
||||||
|
|
||||||
|
_dmarc IN TXT "v=DMARC1; p=quarantine; rua=mailto:hostmaster@kunbox.net; ruf=mailto:postmaster@kunsmann.eu; fo=0:d:s; adkim=r; aspf=r"
|
||||||
|
|
||||||
|
uO4aNejDvVdw8BKne3KJIqAvCQMJ0416._domainkey IN TXT ( "v=DKIM1; k=rsa; "
|
||||||
|
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnh5Ym9PO7r+wdOIKfopvHzn3KU3qT6IlCG/gvvbmIqoeFQfRbAe3gQmcG6RcLue55cJQGhI6y2r0lm59ZeoHR40aM+VabAOlplekM7xWmoXb/9vG2OZLIqAyF4I+7GQmTN6B9keBHp9SWtDUkI0B0G9neZ5MkXJP705M0duxritqQlb4YvCZwteHiyckKcg9aE9j+GF2EEawBoVDp"
|
||||||
|
"oveoB3+wgde3lWEUjjwKFtXNXxuN354o6jgXgPNWtIEdPMLfK/o0CaCjZNlzaLTsTegY/+67hdHFqDmm8zXO9s+Xiyfq7CVq21t7wDhQ2W1agj+up6lH82FMh5rZNxJ6XB0yQIDAQAB"
|
||||||
|
) ;
|
43
data/powerdns/files/bind-zones/franzi.business
Normal file
43
data/powerdns/files/bind-zones/franzi.business
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
${header}
|
||||||
|
|
||||||
|
$ORIGIN franzi.business.
|
||||||
|
|
||||||
|
; ends up on rx300.kunbox.net
|
||||||
|
@ IN A 31.47.232.106
|
||||||
|
IN AAAA 2a00:f820:528::2
|
||||||
|
IN MX 10 rx300.kunbox.net.
|
||||||
|
IN TXT "v=spf1 mx a:sewfile.htz-cloud.kunbox.net ~all"
|
||||||
|
|
||||||
|
chat IN CNAME rx300.kunbox.net.
|
||||||
|
dimension IN CNAME rx300.kunbox.net.
|
||||||
|
git IN CNAME rx300.kunbox.net.
|
||||||
|
jenkins IN CNAME rx300.kunbox.net.
|
||||||
|
matrix IN CNAME rx300.kunbox.net.
|
||||||
|
mta-sts IN CNAME rx300.kunbox.net.
|
||||||
|
netbox IN CNAME rx300.kunbox.net.
|
||||||
|
sewfile IN CNAME sewfile.htz-cloud.kunbox.net.
|
||||||
|
paste IN CNAME rx300.kunbox.net.
|
||||||
|
postfixadmin IN CNAME rx300.kunbox.net.
|
||||||
|
radicale IN CNAME rx300.kunbox.net.
|
||||||
|
rss IN CNAME rx300.kunbox.net.
|
||||||
|
status IN CNAME icinga2.ovh.kunbox.net.
|
||||||
|
tickets IN CNAME franzi-business.cname.pretix.eu.
|
||||||
|
travelynx IN CNAME rx300.kunbox.net.
|
||||||
|
wiki IN CNAME rx300.kunbox.net.
|
||||||
|
woodpecker IN CNAME rx300.kunbox.net.
|
||||||
|
|
||||||
|
_matrix._tcp IN SRV 10 10 443 matrix
|
||||||
|
|
||||||
|
_dmarc IN TXT "v=DMARC1; p=quarantine; rua=mailto:hostmaster@kunbox.net; ruf=mailto:postmaster@kunsmann.eu; fo=0:d:s; adkim=r; aspf=r"
|
||||||
|
_mta-sts IN TXT "v=STSv1;id=20201111;"
|
||||||
|
_smtp._tls IN TXT "v=TLSRPTv1;rua=mailto:hostmaster@kunbox.net"
|
||||||
|
_token._dnswl IN TXT "gg3mbwjx9bbuo5osvh7oz6bc881wcmc"
|
||||||
|
|
||||||
|
2019._domainkey IN TXT ( "v=DKIM1; k=rsa; "
|
||||||
|
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwkg6UAcu3V98hal1UVf6yB0WT1CKDS0AK83CUlSP8bUwraPxkxK1nkQOUsmjbQs6a3FhdsKprMi32GeUaTVvZg81JIybPk3jNugfNWfSjs2TXPomYu+XD2pmmbR3cZlzC5NGR2nmBFt/P/S2ihPHj35KziiBIwK1TdvOi1M2+upCjK33Icco0ByCm0gJpD2O0cbqcBcUKqd6X440"
|
||||||
|
"vYhNXH1ygp0e91P0iRnvS9sg6yD0xjD8kD6j/8GfxBY+9bpU3EvDoBgyJSbjw5b6PUVJbKMXzw1NIRNj0SXKs5BakjS8+7u62vR11IPCYRwy+yr0rDT0tNegM7gStIIgoTpOoQIDAQAB"
|
||||||
|
) ;
|
||||||
|
uO4aNejDvVdw8BKne3KJIqAvCQMJ0416._domainkey IN TXT ( "v=DKIM1; k=rsa; "
|
||||||
|
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnh5Ym9PO7r+wdOIKfopvHzn3KU3qT6IlCG/gvvbmIqoeFQfRbAe3gQmcG6RcLue55cJQGhI6y2r0lm59ZeoHR40aM+VabAOlplekM7xWmoXb/9vG2OZLIqAyF4I+7GQmTN6B9keBHp9SWtDUkI0B0G9neZ5MkXJP705M0duxritqQlb4YvCZwteHiyckKcg9aE9j+GF2EEawBoVDp"
|
||||||
|
"oveoB3+wgde3lWEUjjwKFtXNXxuN354o6jgXgPNWtIEdPMLfK/o0CaCjZNlzaLTsTegY/+67hdHFqDmm8zXO9s+Xiyfq7CVq21t7wDhQ2W1agj+up6lH82FMh5rZNxJ6XB0yQIDAQAB"
|
||||||
|
) ;
|
|
@ -1,14 +1,4 @@
|
||||||
$TTL 60
|
${header}
|
||||||
@ IN SOA ns-primary.kunbox.net. hostmaster.kunbox.net. (
|
|
||||||
${SERIAL}
|
|
||||||
3600
|
|
||||||
600
|
|
||||||
86400
|
|
||||||
300
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
${NAMESERVERS}
|
|
||||||
|
|
||||||
$ORIGIN kunbox.net.
|
$ORIGIN kunbox.net.
|
||||||
|
|
||||||
|
@ -20,10 +10,6 @@ $ORIGIN kunbox.net.
|
||||||
IN MX 10 rx300
|
IN MX 10 rx300
|
||||||
IN TXT "v=spf1 mx ~all"
|
IN TXT "v=spf1 mx ~all"
|
||||||
|
|
||||||
; delegate acme stuff to psql-managed zone
|
|
||||||
_acme-challenge IN CNAME _acme-challenge.kunbox.net.le.kunbox.net.
|
|
||||||
_acme-challenge.home IN CNAME _acme-challenge.home.kunbox.net.le.kunbox.net.
|
|
||||||
|
|
||||||
; Mail servers
|
; Mail servers
|
||||||
mta-sts IN CNAME rx300
|
mta-sts IN CNAME rx300
|
||||||
|
|
||||||
|
|
31
data/powerdns/files/bind-zones/kunsmann.eu
Normal file
31
data/powerdns/files/bind-zones/kunsmann.eu
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
${header}
|
||||||
|
|
||||||
|
$ORIGIN kunsmann.eu.
|
||||||
|
|
||||||
|
; ends up on rx300.kunbox.net
|
||||||
|
@ IN A 31.47.232.106
|
||||||
|
IN AAAA 2a00:f820:528::2
|
||||||
|
IN MX 10 rx300.kunbox.net.
|
||||||
|
IN TXT "v=spf1 mx ~all"
|
||||||
|
|
||||||
|
git IN CNAME rx300.kunbox.net.
|
||||||
|
grafana IN CNAME influxdb.htz-cloud.kunbox.net.
|
||||||
|
icinga IN CNAME icinga2.ovh.kunbox.net.
|
||||||
|
influxdb IN CNAME influxdb.htz-cloud.kunbox.net.
|
||||||
|
luther-ps IN CNAME luther.htz-cloud.kunbox.net.
|
||||||
|
mta-sts IN CNAME rx300.kunbox.net.
|
||||||
|
statusmonitor.icinga IN CNAME icinga2.ovh.kunbox.net.
|
||||||
|
|
||||||
|
_dmarc IN TXT "v=DMARC1; p=quarantine; rua=mailto:hostmaster@kunbox.net; ruf=mailto:postmaster@kunsmann.eu; fo=0:d:s; adkim=r; aspf=r"
|
||||||
|
_mta-sts IN TXT "v=STSv1;id=20201111;"
|
||||||
|
_smtp._tls IN TXT "v=TLSRPTv1;rua=mailto:hostmaster@kunbox.net"
|
||||||
|
_token._dnswl IN TXT "5mx0rv9ru8s1zz4tf4xlt48osh09czmg"
|
||||||
|
|
||||||
|
2019._domainkey IN TXT ( "v=DKIM1; k=rsa; "
|
||||||
|
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwkg6UAcu3V98hal1UVf6yB0WT1CKDS0AK83CUlSP8bUwraPxkxK1nkQOUsmjbQs6a3FhdsKprMi32GeUaTVvZg81JIybPk3jNugfNWfSjs2TXPomYu+XD2pmmbR3cZlzC5NGR2nmBFt/P/S2ihPHj35KziiBIwK1TdvOi1M2+upCjK33Icco0ByCm0gJpD2O0cbqcBcUKqd6X440"
|
||||||
|
"vYhNXH1ygp0e91P0iRnvS9sg6yD0xjD8kD6j/8GfxBY+9bpU3EvDoBgyJSbjw5b6PUVJbKMXzw1NIRNj0SXKs5BakjS8+7u62vR11IPCYRwy+yr0rDT0tNegM7gStIIgoTpOoQIDAQAB"
|
||||||
|
) ;
|
||||||
|
uO4aNejDvVdw8BKne3KJIqAvCQMJ0416._domainkey IN TXT ( "v=DKIM1; k=rsa; "
|
||||||
|
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnh5Ym9PO7r+wdOIKfopvHzn3KU3qT6IlCG/gvvbmIqoeFQfRbAe3gQmcG6RcLue55cJQGhI6y2r0lm59ZeoHR40aM+VabAOlplekM7xWmoXb/9vG2OZLIqAyF4I+7GQmTN6B9keBHp9SWtDUkI0B0G9neZ5MkXJP705M0duxritqQlb4YvCZwteHiyckKcg9aE9j+GF2EEawBoVDp"
|
||||||
|
"oveoB3+wgde3lWEUjjwKFtXNXxuN354o6jgXgPNWtIEdPMLfK/o0CaCjZNlzaLTsTegY/+67hdHFqDmm8zXO9s+Xiyfq7CVq21t7wDhQ2W1agj+up6lH82FMh5rZNxJ6XB0yQIDAQAB"
|
||||||
|
) ;
|
4
data/powerdns/files/bind-zones/trans-agenda.de
Normal file
4
data/powerdns/files/bind-zones/trans-agenda.de
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
${header}
|
||||||
|
|
||||||
|
$ORIGIN trans-agenda.de.
|
||||||
|
|
22
data/powerdns/files/bind-zones/trans-agenda.eu
Normal file
22
data/powerdns/files/bind-zones/trans-agenda.eu
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
${header}
|
||||||
|
|
||||||
|
$ORIGIN trans-agenda.eu.
|
||||||
|
|
||||||
|
@ IN MX 10 rx300.kunbox.net.
|
||||||
|
IN TXT "v=spf1 a mx ~all"
|
||||||
|
|
||||||
|
mta-sts IN CNAME rx300.kunbox.net.
|
||||||
|
|
||||||
|
_dmarc IN TXT "v=DMARC1; p=quarantine; rua=mailto:hostmaster@kunbox.net; ruf=mailto:postmaster@kunsmann.eu; fo=0:d:s; adkim=r; aspf=r"
|
||||||
|
_mta-sts IN TXT "v=STSv1;id=20201111;"
|
||||||
|
_smtp._tls IN TXT "v=TLSRPTv1;rua=mailto:hostmaster@kunbox.net"
|
||||||
|
_token._dnswl IN TXT "5mx0rv9ru8s1zz4tf4xlt48osh09czmg"
|
||||||
|
|
||||||
|
2019._domainkey IN TXT ( "v=DKIM1; k=rsa; "
|
||||||
|
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwkg6UAcu3V98hal1UVf6yB0WT1CKDS0AK83CUlSP8bUwraPxkxK1nkQOUsmjbQs6a3FhdsKprMi32GeUaTVvZg81JIybPk3jNugfNWfSjs2TXPomYu+XD2pmmbR3cZlzC5NGR2nmBFt/P/S2ihPHj35KziiBIwK1TdvOi1M2+upCjK33Icco0ByCm0gJpD2O0cbqcBcUKqd6X440"
|
||||||
|
"vYhNXH1ygp0e91P0iRnvS9sg6yD0xjD8kD6j/8GfxBY+9bpU3EvDoBgyJSbjw5b6PUVJbKMXzw1NIRNj0SXKs5BakjS8+7u62vR11IPCYRwy+yr0rDT0tNegM7gStIIgoTpOoQIDAQAB"
|
||||||
|
) ;
|
||||||
|
uO4aNejDvVdw8BKne3KJIqAvCQMJ0416._domainkey IN TXT ( "v=DKIM1; k=rsa; "
|
||||||
|
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnh5Ym9PO7r+wdOIKfopvHzn3KU3qT6IlCG/gvvbmIqoeFQfRbAe3gQmcG6RcLue55cJQGhI6y2r0lm59ZeoHR40aM+VabAOlplekM7xWmoXb/9vG2OZLIqAyF4I+7GQmTN6B9keBHp9SWtDUkI0B0G9neZ5MkXJP705M0duxritqQlb4YvCZwteHiyckKcg9aE9j+GF2EEawBoVDp"
|
||||||
|
"oveoB3+wgde3lWEUjjwKFtXNXxuN354o6jgXgPNWtIEdPMLfK/o0CaCjZNlzaLTsTegY/+67hdHFqDmm8zXO9s+Xiyfq7CVq21t7wDhQ2W1agj+up6lH82FMh5rZNxJ6XB0yQIDAQAB"
|
||||||
|
) ;
|
3
data/powerdns/files/bind-zones/warnochwas.de
Normal file
3
data/powerdns/files/bind-zones/warnochwas.de
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
${header}
|
||||||
|
|
||||||
|
$ORIGIN warnochwas.de.
|
|
@ -1,27 +1,27 @@
|
||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
MIIEijCCA3KgAwIBAgISA8l+oC4pMh1Q/UNiEPuiw39OMA0GCSqGSIb3DQEBCwUA
|
MIIEiTCCA3GgAwIBAgISBEiaFE6qZ3+AhUkmqKta5OSuMA0GCSqGSIb3DQEBCwUA
|
||||||
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
|
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
|
||||||
EwJSMzAeFw0yMzAxMjkwNDM5NTFaFw0yMzA0MjkwNDM5NTBaMBoxGDAWBgNVBAMT
|
EwJSMzAeFw0yMjExMDYwNjA3MTZaFw0yMzAyMDQwNjA3MTVaMBoxGDAWBgNVBAMT
|
||||||
D2ZyYW56aS5idXNpbmVzczB2MBAGByqGSM49AgEGBSuBBAAiA2IABMlQ1P5Y0aZ5
|
D2ZyYW56aS5idXNpbmVzczB2MBAGByqGSM49AgEGBSuBBAAiA2IABFdgHf2P15+0
|
||||||
vUzB4TAP8iIuiO3GJnYhnKrbe/Lz3gf6Ct9bGM4JLY3RI9xcSmol3sNKdVmbHMRe
|
as3iN/M7itWsdWCtH35cGIf871AeU5OhB4JDNbb5aDsho9ga/vIsjpB1Xh3EhNvP
|
||||||
z63GW4twSnS517axo6jcT0YQkFVyhWHvLnpBW42M1FpjzaDCbs74zKOCAl4wggJa
|
I3b8KT9JUUE/dIRaWvNp8OSKihiU72mXIIlmslVW2AeqwBGMU0L+46OCAl0wggJZ
|
||||||
MA4GA1UdDwEB/wQEAwIHgDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
|
MA4GA1UdDwEB/wQEAwIHgDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
|
||||||
DAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQURw5+tfBU0aOBqfN40kz43fUcjx4wHwYD
|
DAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUsY9YAWIXWlFiQi/JImI6LFxrc6gwHwYD
|
||||||
VR0jBBgwFoAUFC6zF7dYVsuuUAlA5h+vnYsUwsYwVQYIKwYBBQUHAQEESTBHMCEG
|
VR0jBBgwFoAUFC6zF7dYVsuuUAlA5h+vnYsUwsYwVQYIKwYBBQUHAQEESTBHMCEG
|
||||||
CCsGAQUFBzABhhVodHRwOi8vcjMuby5sZW5jci5vcmcwIgYIKwYBBQUHMAKGFmh0
|
CCsGAQUFBzABhhVodHRwOi8vcjMuby5sZW5jci5vcmcwIgYIKwYBBQUHMAKGFmh0
|
||||||
dHA6Ly9yMy5pLmxlbmNyLm9yZy8wLQYDVR0RBCYwJIIRKi5mcmFuemkuYnVzaW5l
|
dHA6Ly9yMy5pLmxlbmNyLm9yZy8wLQYDVR0RBCYwJIIRKi5mcmFuemkuYnVzaW5l
|
||||||
c3OCD2ZyYW56aS5idXNpbmVzczBMBgNVHSAERTBDMAgGBmeBDAECATA3BgsrBgEE
|
c3OCD2ZyYW56aS5idXNpbmVzczBMBgNVHSAERTBDMAgGBmeBDAECATA3BgsrBgEE
|
||||||
AYLfEwEBATAoMCYGCCsGAQUFBwIBFhpodHRwOi8vY3BzLmxldHNlbmNyeXB0Lm9y
|
AYLfEwEBATAoMCYGCCsGAQUFBwIBFhpodHRwOi8vY3BzLmxldHNlbmNyeXB0Lm9y
|
||||||
ZzCCAQUGCisGAQQB1nkCBAIEgfYEgfMA8QB3AHoyjFTYty22IOo44FIe6YQWcDIT
|
ZzCCAQQGCisGAQQB1nkCBAIEgfUEgfIA8AB2ALc++yTfnE26dfI5xbpY9Gxd/ELP
|
||||||
hU070ivBOlejUutSAAABhfwJ/TEAAAQDAEgwRgIhAINjOWzyMeYZYFNk5cdghSwA
|
ep81xJ4dCYEl7bSZAAABhEvD10MAAAQDAEcwRQIhAM2BBzR9UWZNuK3+nk6AdaJL
|
||||||
JDuxKo8/ubIlsAV9ymJWAiEAuVZjp2GQ0RmFyGVDiF865uC4lTtzMIwmpgwYiBqg
|
1j8OvFPZnb+CJqdYtBe8AiAJM4kwOyZLzK/ZGXzwBJLjRTXs2hJZ4qXUzszhv/hs
|
||||||
DQsAdgCt9776fP8QyIudPZwePhhqtGcpXc+xDCTKhYY069yCigAAAYX8Cf1OAAAE
|
+QB2AHoyjFTYty22IOo44FIe6YQWcDIThU070ivBOlejUutSAAABhEvD2UYAAAQD
|
||||||
AwBHMEUCIGoeOIHC8O+zj/3E89BHv+9siaKSOy/2I6i53V5faX3EAiEAsk/Lhr/0
|
AEcwRQIgfMXcWDFe5IKe6n4D9t3zpecF7wCIje8pBd4WQ3OfxM4CIQDpGTCU2pUI
|
||||||
NpogdjroYqt1sKvTzmO0BrxWJ5a41JQdtX0wDQYJKoZIhvcNAQELBQADggEBAIM4
|
Hfwkq+6a2j6Lh3baERBbrfnGDF2AOjjelzANBgkqhkiG9w0BAQsFAAOCAQEAMGiD
|
||||||
moszjbZGKjaoCtsj5t7Dtxu/JmE9gOnwfxnUrDKn0T00dKQi8Mk6a4C5vdGnxorO
|
9uo+WVO+p/HFA+bHM/1ZaTDBONP72YHPx0tdFvQAPQ59n8n6KsE2w9cioNHiRYVv
|
||||||
lj8VutznRvp1RKxb6WWyk0iW22rLm+kTudf/vf9lY0X7DmD/u3MO2tGumwjMdLRT
|
WhoHjWXtzsCiJzNvc4wuTCxJkBtfSAvsOGqGMQJ+cQym+aSBKqSKvKsIQQjOmz/p
|
||||||
QgxP+yu8R03ZppnuzYZhERAbY6AuC/U+owiYjNfF4v1Eyn4zxe6L2v0UWGnBWObb
|
sere5gqTkhuCfnbF8AL7JqDFld4knlbzzsdhj0SjcAO4OUA8SdHdGq192hVRB+nL
|
||||||
xv5RbhHFezr676GaLIrcVh0rN6YNK2J1Cei2pNtAVSLiSJvuuO5Qq1KE7wQqbGd+
|
IFb6Ax4jD/fQ19j+uL+F1MgMmwUkVF77X279FGlax9PGpmQ47aLj5w7qDpZxfHf9
|
||||||
lqK2tcEZRtzaFrpW7C0ZW7LpgO8zdeN4BtD25ozhGJO/0H5hhKpQ/wtWqXYKkhC/
|
Z2nq14Bk6USZcz9hR+gq38lvo6aU/0MvPey9QiIzLg78K0gEQ1o3qoUIl+9erSLR
|
||||||
G47QSheqKqJnHOCL0hA=
|
ssU+fmyZoeNBV6q8xw==
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
encrypt$gAAAAABj1gankGocRRCdH6WqCUFJ6UtA1f07KpXYh4KcelenJv0ZbQ98f2nwIk29iXWEIsS9FTiRyEG95u_Lmm_p7GbKCMDSIZfZgAC2I3tp_BxZPerhEkwxTT_BjEYHRjMDFrzwoAypTO1Mj_XiT_CYvAZptHI3MZcI9QwPVw-CMJ4KqzG-IztkW8KVnuM7agiBdUt4IYkLyeZ0IoL4nOIWANtdM-y4rILv6N7WIMw6dgsSvLPEQR-PYdNLq866IR0-yFGOfYcQKOvpBqAt6A69E6JxSm3AakaJaS75QYF2lzGVjTfrFoGz60LUjC60KuTsu3dUckGUm7JEq1BSMxvc5b_a6pCazvoAnM0gbtbM_DjL0phLj7VWZEg-_1CHfc2S0-UxbxBjLKJ3NPPs93_En5RWxqxkhvvZgxzWJqQWP2eBprge8Q_EEXkMbxumVVx9Ymdynlw2AgkQhVVJIu_vnsZ4Uc8vIA==
|
encrypt$gAAAAABjZ10m0BnUbl5777KN6VHf6uAdtcs15-osbqRoQq6epRuWllD-ziy_2N7BrOkRcmfSJaB8zZ1l1bLD6ws3SlI7jvbkahvWnuKinkGiE30SGGjqr6MY_NJGawdox8OJWrsWLFYJJjrePl_mmVtx9G41oBreKizj1YPswzbzsFociJ0zF0xlx99sjjLxRB5PEaI3fwK1eXDmODGZ__dwKxINGSB2zxPb10Vwtnsp3cmaUiKh1TfIghQAm523cAuHPys1-tNXuJpvhPY3tIxB5gHZYiBXMzcS64mD1KqEubsnplxQlK-N_mJ7Q6n0xReG00pqvm5twRI5g7PoHYLH7nZI7KYOSI2XMAS7gP6Uy-H60BQKAHXuX4yutznVRJspv0wa4kfW9vcBfFECBhFeC8tAAkgAc-NvAsDYk6tYSi2k3N2zXsiyHy0NL-JMnUEicQT3YZNnfkoYqjuxwFbQvgtZZun38w==
|
|
@ -1,27 +1,27 @@
|
||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
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
|
||||||
cK9weiaIniziAnEjUr4=
|
sc1/2y3z9deYm4qHw/w=
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
encrypt$gAAAAABj1kcBpq8c_Ez3JkYJIB0evClkcblewwzBEbl4rfcd-3Z2xFlQ8OggIxGdlLGWjIN_ZBaENvXcqy4ZYlwpXgqrZJpBao8WyovZiKLK759r8qVRjbIBvHnH90t_JZ3-MydlpD1mUzHUy5oQq5Qn8jLoRTzHE2TM8VyhaBkMVQ9gacHdqNGW6dsvCRzXCQM1CNqs8pyc8nQxdARjv_FGwSeZlCxcYPSLEBeE-Hf-wJyVWnG7oyq9XKUyI8NWLPQNwWUjzMgKwumtDh21goRsSRAtLLFmqE_iU1IyZYwNh4J3SBMZKBl0fATtHXhnW1_k-RA1-l54PFMTR0KgS-uxYtqZ1Az0t1KEfEvyzfHAQLJ8RIwOOVtPNUvhSiMHr3jG0WpxymilOLfjFpnCZ8E_CA6L8hmytXEBfoM4ZHMCWzOIe_9tIKcMS146NOzaPnCXpKFganNuvV_S7zEn33zv-jYEHD4d8A==
|
encrypt$gAAAAABjZ10mtywN2Tx7b0-sZywDVcNo5gQbnzjwlMjQPktMwmRBwGMbQVcwuGhhopu5vd4Ztw8aGO5lf-SQmLWgdpR4aIrPNx1Iu4urF2LMV-BMLSgmF85ADQzlbiBvrzGAnIoVUjwXYyGj1Wst4feWMKBDc_kThinYhSplMZ_yjEbMj0eMGRzjSclkvAm24KWi7l_LQAklRELuQQyopHDo47AxehNI-nvLfO0FfXZJpkdrMV1V8lSqyXwBSW3McJKH8bbmVEX8qq-mNntBNpe3n5V2ninj72aC0D572hfMp-jKC6xccf-CqnmX1qaWGGj1yiFDdBxfOSU-kO6204BVtfspMtkI75YAYE_7aA-GUiHfXaNHvDhf2uMb8ssbJUdvGS_oLx1qnKiyeyJ6RRhl71xxXjNEo0hPYYY1BGj6hjq30R8aGknkQNCjyCD87Sc7qh95KpMmY4d82xI70xeS4mk8hEgCow==
|
|
@ -12,6 +12,10 @@ groups['dns'] = {
|
||||||
},
|
},
|
||||||
'metadata': {
|
'metadata': {
|
||||||
'powerdns': {
|
'powerdns': {
|
||||||
|
'features': {
|
||||||
|
'bind': True,
|
||||||
|
'pgsql': True,
|
||||||
|
},
|
||||||
# Overridden in node metadata for primary server
|
# Overridden in node metadata for primary server
|
||||||
'is_secondary': True,
|
'is_secondary': True,
|
||||||
},
|
},
|
||||||
|
|
|
@ -71,6 +71,7 @@ groups['debian'] = {
|
||||||
'bundles': {
|
'bundles': {
|
||||||
'apt',
|
'apt',
|
||||||
'backup-client',
|
'backup-client',
|
||||||
|
'molly-guard',
|
||||||
},
|
},
|
||||||
'os': 'debian',
|
'os': 'debian',
|
||||||
'pip_command': 'pip3',
|
'pip_command': 'pip3',
|
||||||
|
|
|
@ -2,7 +2,6 @@ from bundlewrap.exceptions import BundleError
|
||||||
from bundlewrap.utils.text import bold, green, yellow
|
from bundlewrap.utils.text import bold, green, yellow
|
||||||
from bundlewrap.utils.ui import io
|
from bundlewrap.utils.ui import io
|
||||||
|
|
||||||
|
|
||||||
def test_node(repo, node, **kwargs):
|
def test_node(repo, node, **kwargs):
|
||||||
if not node.has_bundle('backup-client'):
|
if not node.has_bundle('backup-client'):
|
||||||
return
|
return
|
||||||
|
|
|
@ -4,7 +4,6 @@ from bundlewrap.exceptions import BundleError
|
||||||
from bundlewrap.utils.text import bold, green
|
from bundlewrap.utils.text import bold, green
|
||||||
from bundlewrap.utils.ui import io
|
from bundlewrap.utils.ui import io
|
||||||
|
|
||||||
|
|
||||||
def test_underscore_vs_dash(node, metadata, path=[]):
|
def test_underscore_vs_dash(node, metadata, path=[]):
|
||||||
for k, v in metadata.items():
|
for k, v in metadata.items():
|
||||||
if not isinstance(k, str):
|
if not isinstance(k, str):
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from json import dumps, loads
|
from json import loads, dumps
|
||||||
|
|
||||||
from bundlewrap.metadata import metadata_to_json
|
from bundlewrap.metadata import metadata_to_json
|
||||||
from bundlewrap.utils import Fault
|
from bundlewrap.utils import Fault
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from ipaddress import IPv4Network, ip_network
|
|
||||||
from os.path import abspath, dirname, join
|
from os.path import abspath, dirname, join
|
||||||
|
from ipaddress import ip_network, IPv4Network
|
||||||
|
|
||||||
REPO_PATH = dirname(dirname(abspath(__file__)))
|
REPO_PATH = dirname(dirname(abspath(__file__)))
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,8 @@
|
||||||
import base64
|
import base64
|
||||||
|
|
||||||
from nacl.encoding import Base64Encoder
|
|
||||||
from nacl.public import PrivateKey
|
from nacl.public import PrivateKey
|
||||||
|
from nacl.encoding import Base64Encoder
|
||||||
from bundlewrap.utils import Fault
|
from bundlewrap.utils import Fault
|
||||||
|
|
||||||
|
|
||||||
def gen_privkey(repo, identifier):
|
def gen_privkey(repo, identifier):
|
||||||
return repo.vault.random_bytes_as_base64_for(identifier)
|
return repo.vault.random_bytes_as_base64_for(identifier)
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
from ipaddress import IPv4Address, IPv4Network, ip_address, ip_network
|
from ipaddress import ip_address, ip_network, IPv4Address, IPv4Network
|
||||||
|
|
||||||
from bundlewrap.exceptions import BundleError, NoSuchGroup, NoSuchNode
|
from bundlewrap.exceptions import NoSuchGroup, NoSuchNode, BundleError
|
||||||
from bundlewrap.utils.text import bold, red
|
from bundlewrap.utils.text import bold, red
|
||||||
from bundlewrap.utils.ui import io
|
from bundlewrap.utils.ui import io
|
||||||
|
|
||||||
|
|
||||||
def resolve_identifier(repo, identifier):
|
def resolve_identifier(repo, identifier):
|
||||||
"""
|
"""
|
||||||
Try to resolve an identifier (group or node). Return a set of ip
|
Try to resolve an identifier (group or node). Return a set of ip
|
||||||
|
|
1
nodes.py
1
nodes.py
|
@ -3,7 +3,6 @@ from os.path import join
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import bwpass
|
import bwpass
|
||||||
|
|
||||||
from bundlewrap.metadata import atomic
|
from bundlewrap.metadata import atomic
|
||||||
from bundlewrap.utils import error_context
|
from bundlewrap.utils import error_context
|
||||||
|
|
||||||
|
|
|
@ -5,18 +5,13 @@ dummy = true
|
||||||
period = "daytime"
|
period = "daytime"
|
||||||
pretty_name = "ticket.gulas.ch"
|
pretty_name = "ticket.gulas.ch"
|
||||||
|
|
||||||
[metadata.icinga2_api.nginx.services."NGINX VHOST ticket-redirect CERTIFICATE"]
|
|
||||||
check_command = "check_https_cert_at_url"
|
|
||||||
"vars.domain" = "ticket.gulas.ch"
|
|
||||||
"vars.notification.mail" = true
|
|
||||||
|
|
||||||
[metadata.icinga2_api.nginx.services."NGINX VHOST jira CERTIFICATE"]
|
[metadata.icinga2_api.nginx.services."NGINX VHOST jira CERTIFICATE"]
|
||||||
check_command = "check_https_cert_at_url"
|
check_command = "check_https_cert_at_url"
|
||||||
"vars.domain" = "jira.gulas.ch"
|
"vars.domain" = "ticket.gulas.ch"
|
||||||
"vars.notification.mail" = true
|
"vars.notification.mail" = true
|
||||||
|
|
||||||
[metadata.icinga2_api.nginx.services."NGINX VHOST jira CONTENT"]
|
[metadata.icinga2_api.nginx.services."NGINX VHOST jira CONTENT"]
|
||||||
check_command = "check_http_wget"
|
check_command = "check_http_wget"
|
||||||
"vars.http_wget_contains" = "login.jsp"
|
"vars.http_wget_contains" = "login.jsp"
|
||||||
"vars.http_wget_url" = "https://jira.gulas.ch/secure/Dashboard.jspa"
|
"vars.http_wget_url" = "https://ticket.gulas.ch/secure/Dashboard.jspa"
|
||||||
"vars.notification.sms" = true
|
"vars.notification.sms" = true
|
||||||
|
|
|
@ -76,12 +76,18 @@ nodes['fkusei-locutus'] = {
|
||||||
# video drivers
|
# video drivers
|
||||||
'xf86-video-intel': {},
|
'xf86-video-intel': {},
|
||||||
|
|
||||||
|
# for i3pystatus
|
||||||
|
'iw': {},
|
||||||
|
'wireless_tools': {},
|
||||||
|
|
||||||
# all that other random stuff one needs
|
# all that other random stuff one needs
|
||||||
'apachedirectorystudio': {},
|
'apachedirectorystudio': {},
|
||||||
'direnv': {},
|
'direnv': {},
|
||||||
'freerdp': {},
|
'freerdp': {},
|
||||||
|
'mosquitto': {},
|
||||||
'sdl_ttf': {}, # for compiling testcard
|
'sdl_ttf': {}, # for compiling testcard
|
||||||
'thermald': {},
|
'thermald': {},
|
||||||
|
'virt-manager': {},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'systemd-boot': {
|
'systemd-boot': {
|
||||||
|
|
|
@ -3,12 +3,19 @@
|
||||||
|
|
||||||
nodes['gce.bind01'] = {
|
nodes['gce.bind01'] = {
|
||||||
'hostname': '34.89.208.78',
|
'hostname': '34.89.208.78',
|
||||||
|
'bundles': {
|
||||||
|
'nodejs',
|
||||||
|
'powerdnsadmin',
|
||||||
|
},
|
||||||
'groups': {
|
'groups': {
|
||||||
'debian-bullseye',
|
'debian-buster',
|
||||||
'dns',
|
'dns',
|
||||||
|
'webserver',
|
||||||
},
|
},
|
||||||
'metadata': {
|
'metadata': {
|
||||||
'backups': {
|
'backups': {
|
||||||
|
# This is the primary DNS server. However, we only use
|
||||||
|
# replication for DynDNS, currently. No need for backups here.
|
||||||
'exclude_from_backups': True,
|
'exclude_from_backups': True,
|
||||||
},
|
},
|
||||||
'interfaces': {
|
'interfaces': {
|
||||||
|
@ -23,12 +30,30 @@ nodes['gce.bind01'] = {
|
||||||
'icinga_options': {
|
'icinga_options': {
|
||||||
'pretty_name': 'ns-1.kunbox.net',
|
'pretty_name': 'ns-1.kunbox.net',
|
||||||
},
|
},
|
||||||
|
'nginx': {
|
||||||
|
'vhosts': {
|
||||||
|
'ns-1.kunbox.net': {
|
||||||
|
'locations': {
|
||||||
|
'/': {
|
||||||
|
'target': 'http://127.0.0.1:8000/',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'website_check_path': '/login',
|
||||||
|
'website_check_string': 'PowerDNS',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
'postgresql': {
|
'postgresql': {
|
||||||
'version': '15',
|
'version': '11',
|
||||||
},
|
},
|
||||||
'powerdns': {
|
'powerdns': {
|
||||||
|
'is_secondary': False,
|
||||||
|
'secondary_nameservers': 'dns',
|
||||||
'my_hostname': 'ns-1.kunbox.net',
|
'my_hostname': 'ns-1.kunbox.net',
|
||||||
},
|
},
|
||||||
|
'powerdnsadmin': {
|
||||||
|
'version': 'v0.3.0',
|
||||||
|
},
|
||||||
'vm': {
|
'vm': {
|
||||||
'cpu': 1,
|
'cpu': 1,
|
||||||
'ram': 1,
|
'ram': 1,
|
||||||
|
|
|
@ -5,7 +5,7 @@ nodes['gce.dns02'] = {
|
||||||
'hostname': '35.187.109.249',
|
'hostname': '35.187.109.249',
|
||||||
'bundles': set(),
|
'bundles': set(),
|
||||||
'groups': {
|
'groups': {
|
||||||
'debian-bullseye',
|
'debian-buster',
|
||||||
'dns',
|
'dns',
|
||||||
},
|
},
|
||||||
'metadata': {
|
'metadata': {
|
||||||
|
@ -25,7 +25,7 @@ nodes['gce.dns02'] = {
|
||||||
'exclude_from_backups': True,
|
'exclude_from_backups': True,
|
||||||
},
|
},
|
||||||
'postgresql': {
|
'postgresql': {
|
||||||
'version': '15',
|
'version': '11',
|
||||||
},
|
},
|
||||||
'powerdns': {
|
'powerdns': {
|
||||||
'my_hostname': 'ns-2.kunbox.net',
|
'my_hostname': 'ns-2.kunbox.net',
|
||||||
|
|
|
@ -5,7 +5,7 @@ nodes['gce.dns03'] = {
|
||||||
'hostname': '35.228.143.71',
|
'hostname': '35.228.143.71',
|
||||||
'bundles': set(),
|
'bundles': set(),
|
||||||
'groups': {
|
'groups': {
|
||||||
'debian-bullseye',
|
'debian-buster',
|
||||||
'dns',
|
'dns',
|
||||||
},
|
},
|
||||||
'metadata': {
|
'metadata': {
|
||||||
|
@ -25,7 +25,7 @@ nodes['gce.dns03'] = {
|
||||||
'exclude_from_backups': True,
|
'exclude_from_backups': True,
|
||||||
},
|
},
|
||||||
'postgresql': {
|
'postgresql': {
|
||||||
'version': '15',
|
'version': '11',
|
||||||
},
|
},
|
||||||
'powerdns': {
|
'powerdns': {
|
||||||
'my_hostname': 'ns-3.kunbox.net',
|
'my_hostname': 'ns-3.kunbox.net',
|
||||||
|
|
|
@ -5,6 +5,9 @@ bundles = [
|
||||||
]
|
]
|
||||||
groups = ["debian-bullseye"]
|
groups = ["debian-bullseye"]
|
||||||
|
|
||||||
|
[metadata.backups]
|
||||||
|
exclude_from_backups = true
|
||||||
|
|
||||||
[metadata.interfaces.enp1s0]
|
[metadata.interfaces.enp1s0]
|
||||||
ips = ["172.19.138.25/24"]
|
ips = ["172.19.138.25/24"]
|
||||||
gateway4 = "172.19.138.1"
|
gateway4 = "172.19.138.1"
|
||||||
|
|
21
nodes/home.openhab.toml
Normal file
21
nodes/home.openhab.toml
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
hostname = "172.19.138.21"
|
||||||
|
bundles = ["nginx", "openhab"]
|
||||||
|
groups = ["debian-bullseye"]
|
||||||
|
|
||||||
|
[metadata.interfaces.enp1s0]
|
||||||
|
ips = ["172.19.138.21/24"]
|
||||||
|
gateway4 = "172.19.138.1"
|
||||||
|
ipv6_accept_ra = true
|
||||||
|
|
||||||
|
[metadata.nginx.vhosts.openhab]
|
||||||
|
ssl = "_.home.kunbox.net"
|
||||||
|
|
||||||
|
[metadata.openhab]
|
||||||
|
domain = "openhab.home.kunbox.net"
|
||||||
|
|
||||||
|
[metadata.openhab.java_opts]
|
||||||
|
"user.timezone" = "Europe/Berlin"
|
||||||
|
|
||||||
|
[metadata.vm]
|
||||||
|
cpu = 2
|
||||||
|
ram = 2
|
|
@ -3,7 +3,7 @@ dummy = true
|
||||||
[metadata.interfaces.default]
|
[metadata.interfaces.default]
|
||||||
ips = ["172.19.138.70"]
|
ips = ["172.19.138.70"]
|
||||||
dhcp = true
|
dhcp = true
|
||||||
mac = "3c:61:05:d0:f2:b9"
|
mac = "3c:61:05:d0:ba:1a"
|
||||||
|
|
||||||
[metadata.icinga_options]
|
[metadata.icinga_options]
|
||||||
exclude_from_monitoring = true
|
exclude_from_monitoring = true
|
||||||
|
|
|
@ -133,13 +133,13 @@ nodes['home.router'] = {
|
||||||
'interface': 'enp1s0.100',
|
'interface': 'enp1s0.100',
|
||||||
'dyndns': {
|
'dyndns': {
|
||||||
'domain': 'franzi-home.kunbox.net',
|
'domain': 'franzi-home.kunbox.net',
|
||||||
'url': 'https://ns-primary.kunbox.net/nic/update?hostname=franzi-home.kunbox.net&myip={ip}',
|
'url': 'https://ns-1.kunbox.net/nic/update?hostname=franzi-home.kunbox.net&myip={ip}',
|
||||||
'username': vault.decrypt('encrypt$gAAAAABfr8DLAJhmUIhdxLq83I8MnRRvkRgDZcO8Brvw1KpvplC3K8ZGj0jIIWD3Us33vIP6t0ybd_mgD8slpRUk78Kqd3BMoQ=='),
|
'username': vault.decrypt('encrypt$gAAAAABfr8DLAJhmUIhdxLq83I8MnRRvkRgDZcO8Brvw1KpvplC3K8ZGj0jIIWD3Us33vIP6t0ybd_mgD8slpRUk78Kqd3BMoQ=='),
|
||||||
'password': vault.decrypt('encrypt$gAAAAABfr8Cq5M1hweeJTQAl0dLhFntdlw-QnkIYUQpY-_ycODVWOpyeAwjwOgWLSdsdXIUvqcoiXPZPV-BE12p5C42NGnj9r7sKYpoGz8xfuGIk6haMa2g='),
|
'password': vault.decrypt('encrypt$gAAAAABfr8Cq5M1hweeJTQAl0dLhFntdlw-QnkIYUQpY-_ycODVWOpyeAwjwOgWLSdsdXIUvqcoiXPZPV-BE12p5C42NGnj9r7sKYpoGz8xfuGIk6haMa2g='),
|
||||||
},
|
},
|
||||||
'nftables-rules.d': {
|
'nftables-rules.d': {
|
||||||
'inet filter forward iifname enp1s0.23 oif $INTERFACE accept',
|
'inet filter forward iif enp1s0.23 oif $INTERFACE accept',
|
||||||
'inet filter forward iifname enp1s0.42 accept',
|
'inet filter forward iif enp1s0.42 accept',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'unbound': {
|
'unbound': {
|
||||||
|
|
|
@ -62,7 +62,7 @@ nodes['htz-cloud.miniserver'] = {
|
||||||
},
|
},
|
||||||
'element-web': {
|
'element-web': {
|
||||||
'url': 'chat.sophies-kitchen.eu',
|
'url': 'chat.sophies-kitchen.eu',
|
||||||
'version': 'v1.11.23',
|
'version': 'v1.11.17',
|
||||||
'config': {
|
'config': {
|
||||||
'default_server_config': {
|
'default_server_config': {
|
||||||
'm.homeserver': {
|
'm.homeserver': {
|
||||||
|
@ -134,8 +134,8 @@ nodes['htz-cloud.miniserver'] = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'matrix-media-repo': {
|
'matrix-media-repo': {
|
||||||
'version': 'v1.2.13',
|
'version': 'v1.2.12',
|
||||||
'sha1': '0915bdf7c461368859180419d1f66717969cbe32',
|
'sha1': 'c2dfa521c2eea9a0dcde9f1c7803f52ce6d0352e',
|
||||||
'homeservers': {
|
'homeservers': {
|
||||||
'sophies-kitchen.eu': {
|
'sophies-kitchen.eu': {
|
||||||
'domain': 'http://[::1]:20080/',
|
'domain': 'http://[::1]:20080/',
|
||||||
|
|
|
@ -96,15 +96,25 @@ nodes['kunsi-p14s'] = {
|
||||||
'mesa-vdpau': {},
|
'mesa-vdpau': {},
|
||||||
'xf86-video-amdgpu': {},
|
'xf86-video-amdgpu': {},
|
||||||
|
|
||||||
|
# for i3pystatus
|
||||||
|
'iw': {},
|
||||||
|
'wireless_tools': {},
|
||||||
|
|
||||||
# all that other random stuff one needs
|
# all that other random stuff one needs
|
||||||
'abcde': {},
|
'abcde': {},
|
||||||
'apachedirectorystudio': {},
|
'apachedirectorystudio': {},
|
||||||
'claws-mail': {},
|
'claws-mail': {},
|
||||||
'claws-mail-themes': {},
|
'claws-mail-themes': {},
|
||||||
'ferdi-bin': {},
|
'ferdi-bin': {},
|
||||||
|
'ffmpeg': {},
|
||||||
'gumbo-parser': {}, # for claws litehtml
|
'gumbo-parser': {}, # for claws litehtml
|
||||||
|
'imagemagick': {},
|
||||||
|
'inkscape': {},
|
||||||
|
'mosquitto': {},
|
||||||
'perl-musicbrainz-discid': {}, # for abcde
|
'perl-musicbrainz-discid': {}, # for abcde
|
||||||
'perl-webservice-musicbrainz': {}, # for abcde
|
'perl-webservice-musicbrainz': {}, # for abcde
|
||||||
|
'samba': {},
|
||||||
|
'xf86-input-wacom': {},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'sysctl': {
|
'sysctl': {
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
hostname = "82.165.52.168"
|
|
||||||
bundles = [
|
|
||||||
"nodejs",
|
|
||||||
"powerdnsadmin",
|
|
||||||
]
|
|
||||||
groups = [
|
|
||||||
"debian-bullseye",
|
|
||||||
"dns",
|
|
||||||
"webserver",
|
|
||||||
]
|
|
||||||
|
|
||||||
[metadata.interfaces.ens192]
|
|
||||||
ips = [
|
|
||||||
"82.165.52.168",
|
|
||||||
"2001:8d8:1801:7d4::1/64",
|
|
||||||
]
|
|
||||||
gateway4 = "10.255.255.1"
|
|
||||||
gateway6 = "fe80::250:56ff:fea8:628f"
|
|
||||||
|
|
||||||
[metadata.icinga_options]
|
|
||||||
pretty_name = "ns-primary.kunbox.net"
|
|
||||||
|
|
||||||
[metadata.nginx.vhosts."ns-primary.kunbox.net"]
|
|
||||||
website_check_path = "/login"
|
|
||||||
website_check_string = "PowerDNS"
|
|
||||||
|
|
||||||
[metadata.nginx.vhosts."ns-primary.kunbox.net".locations."/"]
|
|
||||||
target = "http://127.0.0.1:8000/"
|
|
||||||
|
|
||||||
[metadata.postgresql]
|
|
||||||
version = "15"
|
|
||||||
|
|
||||||
[metadata.powerdns]
|
|
||||||
is_secondary = false
|
|
||||||
secondary_nameservers = "dns"
|
|
||||||
features.bind = true
|
|
||||||
|
|
||||||
[metadata.powerdnsadmin]
|
|
||||||
version = "v0.3.0"
|
|
||||||
|
|
||||||
[metadata.vm]
|
|
||||||
cpu = 2
|
|
||||||
ram = 2
|
|
|
@ -105,7 +105,7 @@ nodes['rx300'] = {
|
||||||
},
|
},
|
||||||
'element-web': {
|
'element-web': {
|
||||||
'url': 'chat.franzi.business',
|
'url': 'chat.franzi.business',
|
||||||
'version': 'v1.11.23',
|
'version': 'v1.11.17',
|
||||||
'config': {
|
'config': {
|
||||||
'default_server_config': {
|
'default_server_config': {
|
||||||
'm.homeserver': {
|
'm.homeserver': {
|
||||||
|
@ -128,8 +128,8 @@ nodes['rx300'] = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'gitea': {
|
'gitea': {
|
||||||
'url': 'https://codeberg.org/attachments/be5952ea-6cfb-4be5-a593-3564c4bd8cc9',
|
'version': '1.17.3',
|
||||||
'sha1': '0bcf3d6d6541a46571802d9e9276056ff860841e',
|
'sha1': 'a78611a3e799150fbae3d45d2bd276d95ccffcd8',
|
||||||
'domain': 'git.franzi.business',
|
'domain': 'git.franzi.business',
|
||||||
'email_domain_blocklist': {
|
'email_domain_blocklist': {
|
||||||
'aol.com',
|
'aol.com',
|
||||||
|
@ -197,8 +197,8 @@ nodes['rx300'] = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'matrix-media-repo': {
|
'matrix-media-repo': {
|
||||||
'version': 'v1.2.13',
|
'version': 'v1.2.12',
|
||||||
'sha1': '0915bdf7c461368859180419d1f66717969cbe32',
|
'sha1': 'c2dfa521c2eea9a0dcde9f1c7803f52ce6d0352e',
|
||||||
'homeservers': {
|
'homeservers': {
|
||||||
'franzi.business': {
|
'franzi.business': {
|
||||||
'domain': 'http://[::1]:20080/',
|
'domain': 'http://[::1]:20080/',
|
||||||
|
@ -268,8 +268,8 @@ nodes['rx300'] = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'mautrix-whatsapp': {
|
'mautrix-whatsapp': {
|
||||||
'version': 'v0.8.2',
|
'version': 'v0.8.0',
|
||||||
'sha1': '31779131b0524e84f980a7e3b5a818150833470d',
|
'sha1': '4e561a96c8fae61edd8dee9abdd52b5146fa98b2',
|
||||||
'homeserver': {
|
'homeserver': {
|
||||||
'domain': 'franzi.business',
|
'domain': 'franzi.business',
|
||||||
'url': 'https://matrix.franzi.business',
|
'url': 'https://matrix.franzi.business',
|
||||||
|
@ -306,7 +306,7 @@ nodes['rx300'] = {
|
||||||
},
|
},
|
||||||
'netbox': {
|
'netbox': {
|
||||||
'domain': 'netbox.franzi.business',
|
'domain': 'netbox.franzi.business',
|
||||||
'version': 'v3.4.4',
|
'version': 'v3.4.1',
|
||||||
'changelog_retention_days': 360,
|
'changelog_retention_days': 360,
|
||||||
'admins': {
|
'admins': {
|
||||||
'kunsi': 'hostmaster@kunbox.net',
|
'kunsi': 'hostmaster@kunbox.net',
|
||||||
|
@ -327,7 +327,7 @@ nodes['rx300'] = {
|
||||||
},
|
},
|
||||||
'vhosts': {
|
'vhosts': {
|
||||||
'element-web': {'ssl': '_.franzi.business'},
|
'element-web': {'ssl': '_.franzi.business'},
|
||||||
'forgejo': {'ssl': '_.franzi.business'},
|
'gitea': {'ssl': '_.franzi.business'},
|
||||||
'jenkins-ci': {'ssl': '_.franzi.business'},
|
'jenkins-ci': {'ssl': '_.franzi.business'},
|
||||||
'matrix-dimension': {'ssl': '_.franzi.business'},
|
'matrix-dimension': {'ssl': '_.franzi.business'},
|
||||||
'matrix-synapse': {'ssl': '_.franzi.business'},
|
'matrix-synapse': {'ssl': '_.franzi.business'},
|
||||||
|
@ -450,7 +450,6 @@ nodes['rx300'] = {
|
||||||
},
|
},
|
||||||
'postgresql': {
|
'postgresql': {
|
||||||
'version': '13',
|
'version': '13',
|
||||||
'max_connections': 500,
|
|
||||||
},
|
},
|
||||||
'radicale': {
|
'radicale': {
|
||||||
'domain': 'radicale.franzi.business',
|
'domain': 'radicale.franzi.business',
|
||||||
|
@ -524,7 +523,7 @@ nodes['rx300'] = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
'travelynx': {
|
'travelynx': {
|
||||||
'version': '1.29.4',
|
'version': '1.23.12',
|
||||||
'mail_from': 'travelynx@franzi.business',
|
'mail_from': 'travelynx@franzi.business',
|
||||||
'domain': 'travelynx.franzi.business',
|
'domain': 'travelynx.franzi.business',
|
||||||
},
|
},
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue