# SPDX-License-Identifier: AGPL-3.0-or-later
# shellcheck source=/a/bin/ds/.bashrc
-export LC_USEBASHRC=t; if [[ -s ~/.bashrc ]];then . ~/.bashrc;fi
+export LC_USEBASHRC=t; if [[ -s ~/.bashrc ]]; then . ~/.bashrc; fi
### setup
source /a/bin/errhandle/err
}
pre="${0##*/}:"
sudo() {
- printf "$pre %s\n" "$*"
+ printf "$pre sudo %s\n" "$*"
SUDOD="$PWD" command sudo "$@";
}
m() { printf "$pre %s\n" "$*"; "$@"; }
# fi
+
+
pi debootstrap
######### begin universal pinned packages ######
case $(debian-codename) in
- nabia|etiona|flidas)
+ etiona|flidas|nabia|aramo)
sudo rm -fv /etc/apt/preferences.d/etiona-buster
sd /etc/apt/preferences.d/trisquel-debian <<EOF
Explanation: Debian* includes Debian + Debian Backports
;;&
- nabia|etiona)
+ aramo|nabia|etiona)
# for ziva
#p install --no-install-recommends minetest/buster libleveldb1d/buster libncursesw6/buster libtinfo6/buster
doupdate=false
- for n in buster bullseye; do
+ for n in bullseye; do
f=/etc/apt/sources.list.d/$n.list
t=$(mktemp)
case $n in
- buster)
- cat >$t <<'EOF'
-deb http://http.us.debian.org/debian buster main
-deb-src http://http.us.debian.org/debian buster main
-
-deb http://security.debian.org/ buster/updates main
-deb-src http://security.debian.org/ buster/updates main
-
-deb http://http.us.debian.org/debian buster-updates main
-deb-src http://http.us.debian.org/debian buster-updates main
-
-deb http://http.debian.net/debian buster-backports main
-deb-src http://http.debian.net/debian buster-backports main
-EOF
- ;;
bullseye)
cat >$t <<'EOF'
EOF
Pin-Priority: -100
EOF
+ ;;&
+ nabia)
+ sd /etc/apt/preferences.d/aramo-nabia <<'EOF'
+Package: *
+Pin: release n=aramo*,o=Trisquel
+Pin-Priority: -100
+EOF
+ f=/etc/apt/sources.list.d/aramo.list
+ t=$(mktemp)
+ cat >$t <<'EOF'
+deb http://mirror.fsf.org/trisquel/ aramo main
+deb-src http://mirror.fsf.org/trisquel/ aramo main
+
+deb http://mirror.fsf.org/trisquel/ aramo-updates main
+deb-src http://mirror.fsf.org/trisquel/ aramo-updates main
+
+deb http://archive.trisquel.info/trisquel/ aramo-security main
+deb-src http://archive.trisquel.info/trisquel/ aramo-security main
+
+# Uncomment this lines to enable the backports optional repository
+deb http://mirror.fsf.org/trisquel/ aramo-backports main
+deb-src http://mirror.fsf.org/trisquel/ aramo-backports main
+EOF
+ if ! diff -q $t $f; then
+ sudo dd if=$t of=$f 2>/dev/null
+ p update
+ fi
+
;;&
*)
if isdeb; then
;;
esac
-
+case $codename_compat in
+ jammy)
+ s systemctl enable --now ssh-agent-iank
+ ;;
+esac
case $codename_compat in
focal)
Pin: release n=bionic
Pin-Priority: 500
EOF
-
+ ;;
+ nabia)
+ # note, to get the latest, it would be n=bullseye*
+ # but that has conflicting package versions, so this does the old one.
+ # I only use it for special rare purposes. Just keep in mind it is an
+ # outdated insecure version.
+ sd /etc/apt/preferences.d/chromium-bullseye <<EOF
+Package: chromium chromium-* libicu67 libjpeg62-turbo libjsoncpp24 libre2-9 libwebpmux3
+Pin: release o=Debian*,n=bullseye
+Pin-Priority: 500
+EOF
+ ;;
+ aramo)
+ # obs dependency not in trisquel
+ sd /etc/apt/preferences.d/obs <<EOF
+Package: libfdk-aac2
+Pin: release n=jammy,o=Ubuntu
+Pin-Priority: 500
+EOF
;;
esac
# Pin-Priority: 500
# EOF
-if [[ -e /etc/wireguard/wghole.conf ]]; then
- sgo wg-quick@wghole
-fi
###### begin website setup
case $HOSTNAME in
if [[ ! -e $f ]]; then
dnsb8
fi
+
+ pi prometheus-node-exporter
+ /a/bin/buildscripts/prom-node-exporter -l
+
+ # ex for exporter
+ web-conf -p 9101 -f 9100 - apache2 ${HOSTNAME}ex.b8.nz <<'EOF'
+<Location "/">
+AuthType Basic
+AuthName "basic_auth"
+# created with
+# htpasswd -c prometheus-export-htpasswd USERNAME
+AuthUserFile "/etc/prometheus-export-htpasswd"
+Require valid-user
+</Location>
+EOF
;;&
+
bk)
sgo wg-quick@wgmail
sd /etc/openvpn/client-config-hole/onep9 <<'EOF'
ifconfig-push 10.5.5.14 255.255.255.0
+EOF
+ sd /etc/openvpn/client-config-hole/bo <<'EOF'
+ifconfig-push 10.5.5.13 255.255.255.0
EOF
sd /etc/openvpn/client-config-hole/sy <<'EOF'
ifconfig-push 10.5.5.12 255.255.255.0
# https://radicale.org/2.1.html
#https://httpd.apache.org/docs/2.4/mod/mod_authn_core.html#authtype
# https://stackoverflow.com/questions/5011102/apache-reverse-proxy-with-basic-authentication
-<Location /radicale/>
- Options +FollowSymLinks +Multiviews +Indexes
+
+# this doesn't exactly fit with the documentation.
+# We need location / to do an auth, it cant be done outside,
+# in order to pass on X-Remote-User. And we need
+# the other location in order to remove the /radicale/ for
+# requests which have it. This could be done with a rewrite,
+# but i just get something working and call it a day.
+
+<Location "/">
AllowOverride None
- AuthType basic
+ AuthType Basic
AuthName "Authentication Required"
# setup one time, with root:www-data, 640
AuthUserFile "/etc/caldav-htpasswd"
Require valid-user
+ RequestHeader set X-Remote-User expr=%{REMOTE_USER}
+</Location>
+<Location "/radicale/">
+ Options +FollowSymLinks +Multiviews -Indexes
RequestHeader set X-Script-Name /radicale/
RequestHeader set X-Remote-User expr=%{REMOTE_USER}
ProxyPass "http://10.8.0.4:5232/" retry=0
# https://wiki.znc.in/self-message
# https://wiki.znc.in/Query_buffers \
#
+ # for geekshed, there was no sasl support as far as I can tell,
+ # so I set to msg nickserv to identify upon connect.
if ! getent passwd znc > /dev/null; then
sudo useradd --create-home -d /var/lib/znc --system --shell /sbin/nologin --comment "Account to run ZNC daemon" --user-group znc
fi
### system76 things ###
case $HOSTNAME in
- sy)
+ bo) # sy| sy doesnt seem to really need this.
# note, i stored the initial popos packages at /a/bin/data/popos-pkgs
if [[ ! -e /etc/apt/sources.list.d/system76.list ]]; then
# https://blog.zackad.dev/en/2017/08/17/add-ppa-simple-way.html
deb-src http://ppa.launchpad.net/system76-dev/stable/ubuntu $codename_compat main
EOF
# ubuntu keyserver is prone to intermittent failures
- for (( i=0; i <= 4 ; i++ )); do
- s apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5D1F3A80254F6AFBA254FED5ACD442D1C8B7748B && break
- sleep 10
- done
+ trysleep 4 15 s apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5D1F3A80254F6AFBA254FED5ACD442D1C8B7748B
p update
# https://support.system76.com/articles/install-ubuntu/
# but i'm hoping this is not needed
# Pin: release o=LP-PPA-system76-dev-stable
# Pin-Priority: 1001
# EOF
- pi system76-driver system76-firmware-cli
+ #
+ # TODO: I had to uninstall linux-image-generic-hwe-20.04 because of a conflict
+ # about linux-firmware. Should probably install it to begin with in fai if
+ # i'm going to use.
+ pi system76-driver system76-firmware
# if you get a notice about a firmware update, the notifier on i3
# is too dumb to do anything when you click it. so to see
# a changelog, cd to
fi
;;
esac
+### end system76 things ###
case $distro in
trisquel|ubuntu)
# ppa:obsproject/obs-studio
- if [[ ! -d /etc/apt/sources.list.d/obs.list ]]; then
+ if [[ ! -s /etc/apt/sources.list.d/obs.list ]]; then
# https://blog.zackad.dev/en/2017/08/17/add-ppa-simple-way.html
sd /etc/apt/sources.list.d/obs.list <<EOF
deb http://ppa.launchpad.net/obsproject/obs-studio/ubuntu $codename_compat main
deb-src http://ppa.launchpad.net/obsproject/obs-studio/ubuntu $codename_compat main
EOF
- for (( i=0; i <= 4 ; i++ )); do
- s apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BC7345F522079769F5BBE987EFC71127F425E228 && break
- sleep 10
- done
+ trysleep 4 15 s apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BC7345F522079769F5BBE987EFC71127F425E228
p update
fi
;;
# stop that.
if id -u gdm &>/dev/null; then
sudo -u gdm dbus-launch gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'
- m systemctl --user stop gvfs-daemon
- m systemctl --user disable gvfs-daemon
fi
;;&
focal)
# and choose lightdm.
#
;;
+ jammy)
+ # not yet bothering with mate
+ pi lightdm-gtk-greeter lightdm
+ ;;
esac
fi
############# begin syncthing setup ###########
-if [[ $HOSTNAME == frodo ]]; then
- # It\'s simpler to just worry about running it in one place for now.
- # I assume it would work to clone it\'s config to another non-phone
- # and just run it in one place instead of the normal having a
- # separate config. I lean toward using the same config, since btrfs
- # syncs between comps.
- # testing has relatively up to date packages
- if ! isdebian-testing; then
- # based on error when doing apt-get update:
- # E: The method driver /usr/lib/apt/methods/https could not be found.
- pi apt-transport-https
- # google led me here:
- # https://apt.syncthing.net/
- curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
- s="deb http://apt.syncthing.net/ syncthing release"
+case $HOSTNAME in
+ kd|frodo)
+ f=/usr/share/keyrings/syncthing-archive-keyring.gpg
+ if [[ ! -e $f ]]; then
+ s curl -s -o $f https://syncthing.net/release-key.gpg
+ fi
+ s="deb [signed-by=/usr/share/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable"
if [[ $(cat /etc/apt/sources.list.d/syncthing.list) != "$s" ]]; then
echo "$s" | sd /etc/apt/sources.list.d/syncthing.list
p update
fi
- fi
- pi syncthing
- m lnf -T /w/syncthing /home/iank/.config/syncthing
- ser daemon-reload # syncthing likely not properly packaged
- sgo syncthing@iank # runs as iank
-
- # these things persist in ~/.config/syncthing, which I save in
- # /w/syncthing (not in /p, because syncthing should continue to
- # run on home server even when using laptop as primary device)
- # open http://localhost:8384/
- # change listen address from default to tcp://:22001,
- # this is because we do port forward so it doesn\'t have to use
- # some external server, but the syncthing is broken for port forward,
- # you get a message, something "like connected to myself, this should not happen"
- # when connecting to other local devices, so I bump the port up by 1,
- # based on
- # https://forum.syncthing.net/t/connected-to-myself-should-not-happen/1763/19.
- # Without this, it was being stuck syncing at 0%.
- # Set gui username and password.
- #
- # install syncthing via f-droid,
- # folder setting, turn off send only.
- # on phone, add device, click bar code icon
- # on dekstop, top right, actions, device id
- # after adding, notification will appear on desktop to confirm
- #
- # syncing folder. from phone to desktop: select desktop in the
- # folder on phone\'s sync options, notification will appear in
- # desktop\'s web ui within a minute. For the reverse, the
- # notification will appear in android\'s notifications, you have to
- # swipe down and tap it to add the folder. It won\'t appear in the
- # syncthing ui, which would be intuitive, but don\'t wait for it
- # there. The notification may not work, instead open the web gui
- # from in the app, there should be a notification within there.
- #
- # On phone, set settings to run syncthing all the time, and
- # show no notification.
- #
- # Folder versioning would make sense if I didn\'t already use btrfs
- # for backups. I would choose staggered, or trash can for more space.
- #
- # if needed to install on a remote comp:
- # ssh -L 8384:localhost:8384 -N frodo
- # open http://localhost:8384/
- #
- # Note, the other thing i did was port forward port 22000,
- # per https://docs.syncthing.net/users/firewall.html
+ pi syncthing
+ ;;&
+ frodo)
+ m lnf -T /w/syncthing /home/iank/.config/syncthing
+ ser daemon-reload # syncthing likely not properly packaged
+ sgo syncthing@iank # runs as iank
+ ;;
+ kd)
+
+ # 1003 just happens to be what was on my system
+ if ! getent passwd ziva; then
+ s groupadd -g 1003 ziva
+ # syncthing state / config / db are all in ~/.config/syncthing
+ s useradd -g 1003 -u 1003 -d /d/ziva-home -c ziva -s /bin/bash ziva
+ fi
+ sgo syncthing@ziva
+ ;;
+esac
+# user for short term use dropping of privileges
+
+if ! getent group zu &>/dev/null; then
+ s groupadd -g 1023 zu
+fi
+if ! getent passwd zu &>/dev/null; then
+ s useradd -g 1023 -u 1023 -c zu -s /bin/bash zu
fi
+
+
+# these things persist in ~/.config/syncthing, which I save in
+# /w/syncthing (not in /p, because syncthing should continue to
+# run on home server even when using laptop as primary device)
+# open http://localhost:8384/
+# change listen address from default to tcp://:22001,
+# this is because we do port forward so it doesn\'t have to use
+# some external server, but the syncthing is broken for port forward,
+# you get a message, something "like connected to myself, this should not happen"
+# when connecting to other local devices, so I bump the port up by 1,
+# based on
+# https://forum.syncthing.net/t/connected-to-myself-should-not-happen/1763/19.
+# Without this, it was being stuck syncing at 0%.
+# Set gui username and password.
+#
+# install syncthing via f-droid,
+# folder setting, turn off send only.
+# on phone, add device, click bar code icon
+# on dekstop, top right, actions, device id
+# after adding, notification will appear on desktop to confirm
+#
+# syncing folder. from phone to desktop: select desktop in the
+# folder on phone\'s sync options, notification will appear in
+# desktop\'s web ui within a minute. For the reverse, the
+# notification will appear in android\'s notifications, you have to
+# swipe down and tap it to add the folder. It won\'t appear in the
+# syncthing ui, which would be intuitive, but don\'t wait for it
+# there. The notification may not work, instead open the web gui
+# from in the app, there should be a notification within there.
+#
+# On phone, set settings to run syncthing all the time, and
+# show no notification.
+#
+# Folder versioning would make sense if I didn\'t already use btrfs
+# for backups. I would choose staggered, or trash can for more space.
+#
+# if needed to install on a remote comp:
+# ssh -L 8384:localhost:8384 -N frodo
+# open http://localhost:8384/
+#
+# Note, the other thing i did was port forward port 22000,
+# per https://docs.syncthing.net/users/firewall.html
+
############# end syncthing setup ###########
# cabal update
# cabal install --upgrade-dependencies --force-reinstalls arbtt
# also, i assume syncing this between machines somehow messed up the data.
-if mountpoint /p &>/dev/null; then
- case $codename in
- etiona|nabia)
- pi arbtt
- # same as seru enable arbtt, but works over ssh when systemctl --user causes error:
- # Failed to connect to bus: No such file or directory
- lnf -T /a/bin/ds/subdir_files/.config/systemd/user/arbtt.service /home/iank/.config/systemd/user/default.target.wants/arbtt.service
- # allow failure
- seru start arbtt ||:
- ;;
- esac
-fi
+
+## not using arbtt for now
+# if mountpoint /p &>/dev/null; then
+# case $codename in
+# etiona|nabia)
+# pi arbtt
+# # same as seru enable arbtt, but works over ssh when systemctl --user causes error:
+# # Failed to connect to bus: No such file or directory
+# lnf -T /a/bin/ds/subdir_files/.config/systemd/user/arbtt.service /home/iank/.config/systemd/user/default.target.wants/arbtt.service
+# # allow failure
+# seru start arbtt ||:
+# ;;
+# esac
+# fi
+rm -fv /home/iank/.config/systemd/user/default.target.wants/arbtt.service
m primary-setup
/run/user/0 /run/user/0 none rw,bind 0 0
EOF
+# todo: consider if this should use the new sysd-prom-fail
sd /etc/systemd/system/schrootupdate.service <<'EOF'
[Unit]
Description=schrootupdate
Description=schrootupdate
[Timer]
-OnCalendar=*-*-* 04:20:00
+OnCalendar=*-*-* 04:20:00 America/New_York
[Install]
WantedBy=timers.target
EOF
s schroot -c flidas locale-gen
s schroot -c flidas update-locale LANG=en_US.UTF-8
+
+ m mkschroot -s /a/bin/fai/fai/config/files/etc/apt/sources.list.d/testing.list/TESTING_NONFREE debian unstable debootstrap
+ sudo cp -a /nocow/schroot/unstable/usr/share/debootstrap/scripts/* /usr/share/debootstrap/scripts
+
+ m mkschroot -s /a/bin/fai/fai/config/files/etc/apt/sources.list.d/impish.list/IMPISH ubuntu impish
+
;;
esac
;;
#
# Changed the cache-size to 256 mb, reduces disk use.
# It is a read & write cache.
-sudo ruby <<EOF
+if ! systemctl is-active transmission-daemon-nn &>/dev/null && \
+ ! systemctl is-active transmission-daemon; then
+ tmp=$(mktemp)
+ command sudo ruby <<EOF >$tmp
require 'json'
p = '/etc/transmission-daemon/settings.json'
-File.write(p, JSON.pretty_generate(JSON.parse(File.read(p)).merge({
-'rpc-whitelist-enabled' => false,
-'rpc-authentication-required' => false,
-'incomplete-dir' => '$tdir/partial-torrents',
-'incomplete-dir-enabled' => true,
-'download-dir' => '$tdir/torrents',
-"speed-limit-up" => 800,
-"speed-limit-up-enabled" => true,
-"peer-port" => 61486,
-"cache-size-mb" => 256,
-"ratio-limit" => 5.0,
-"ratio-limit-enabled" => false,
-})) + "\n")
+s = {
+ 'rpc-whitelist-enabled' => false,
+ 'rpc-authentication-required' => false,
+ 'incomplete-dir' => '$tdir/partial-torrents',
+ 'incomplete-dir-enabled' => true,
+ 'download-dir' => '$tdir/torrents',
+ "speed-limit-up" => 800,
+ "speed-limit-up-enabled" => true,
+ "peer-port" => 61486,
+ "cache-size-mb" => 256,
+ "ratio-limit" => 5.0,
+ "ratio-limit-enabled" => false,
+}
+puts(JSON.pretty_generate(JSON.parse(File.read(p)).merge(s)))
EOF
+ cat $tmp | sudo dd of=/etc/transmission-daemon/settings.json
+
+fi
####### end transmission
m /a/bin/buildscripts/rust
m /a/bin/buildscripts/misc
m /a/bin/buildscripts/pithosfly
-m /a/bin/buildscripts/alacritty
+#m /a/bin/buildscripts/alacritty
+#m /a/bin/buildscripts/kitty
pi-nostart virtinst virt-manager
soff libvirtd
# # I'm not seeing the icon, but the clipboard replication is working
-### model 01 arduino support ###
+### begin model 01 arduino support ###
# https://github.com/keyboardio/Kaleidoscope/wiki/Install-Arduino-support-on-Linux
# also built latest arduino in /a/opt/Arduino, (just cd build; ant build; ant run )
# set arduino var in bashrc,
# have system config file setup too.
sudo adduser $USER dialout
+# as of 2022-05,
+# download arduino ide, extract in /a/opt, ignore the install script, run ./arduino,
+# toolbar, preferences, add board manager url:
+# https://raw.githubusercontent.com/keyboardio/boardsmanager/master/package_keyboardio_index.json
+# toolbar, board manager, add keyboardio
+# toolbar, select model01 board
+# toolbar, examples, model01, compile
+
+###
+
# this is for the mail command too. update-alternatives is kind of misleading
# since at least it's main commands pretend mail does not exist.
# bsd's mail got pulled in on some dumb dependency, i dunno how.
########### misc stuff
+rm -fv /home/iank/.mpv/watch_later
+rm -rf /home/iank/.mpv
+
+
if [[ $HOSTNAME != frodo ]]; then
- s cedit hole /etc/hosts <<EOF ||:
-10.5.5.3 amy amy.b8.nz
-10.5.5.5 frodo frodo.b8.nz
-10.5.5.6 wclient wclient.b8.nz
-EOF
+ # remove. i moved this into dns
+ echo | s cedit hole /etc/hosts ||:
fi
if [[ ! -e ~/.local/bin/pip ]]; then
m /a/bin/distro-setup/mymimes
-sgo dynamicipupdate.timer
-
-
# stop autopoping windows when i plug in an android phone.
# dbus-launch makes this work within an ssh connection, otherwise you get this message,
# with still 0 exit code.
grub-pc grub-pc/install_devices multiselect ${devs[*]}
EOF
-# btrfs maintenance
-sgo btrfsmaint.timer
-sgo btrfsmaintstop.timer
-sgo systemstatus.timer
+sysd-prom-fail-install dynamicipupdate
+sysd-prom-fail-install systemstatus
+sysd-prom-fail-install btrfsmaintstop
+sgo btrfsmaint.timer
+sgo btrfsmaintstop
+sgo systemstatus
+sgo dynamicipupdate
if grep -xFq $HOSTNAME /a/bin/ds/machine_specific/btrbk.hosts; then
;;
esac
+### begin prometheus ###
+
+case $HOSTNAME in
+ kd)
+ # Font awesome is needed for the alertmanager ui.
+ pi prometheus-alertmanager prometheus prometheus-node-exporter fonts-font-awesome
+ /a/bin/buildscripts/prometheus
+ web-conf -p 9091 -f 9090 - apache2 i.b8.nz <<'EOF'
+<Location "/">
+AuthType Basic
+AuthName "basic_auth"
+# created with
+# htpasswd -c prometheus-htpasswd USERNAME
+AuthUserFile "/etc/prometheus-htpasswd"
+Require valid-user
+</Location>
+EOF
+
+ web-conf -p 9094 -f 9093 - apache2 i.b8.nz <<'EOF'
+<Location "/">
+AuthType Basic
+AuthName "basic_auth"
+# created with
+# htpasswd -c prometheus-htpasswd USERNAME
+AuthUserFile "/etc/prometheus-htpasswd"
+Require valid-user
+</Location>
+EOF
+
+ # by default, the alertmanager web ui is not enabled other than a page
+ # that suggests to use the amtool cli. that tool is good, but you cant
+ # silence things nearly as easily as with the gui.
+ if [[ ! -e /usr/share/prometheus/alertmanager/ui/index.html ]]; then
+ # default script didnt work, required some changes to get elm 19.1,
+ # which is a dependency of the latest alertmanager. I modified
+ # and copied it into /b/ds. In future, might need some other
+ # solution.
+ #sudo /usr/share/prometheus/alertmanager/generate-ui.sh
+ sudo /b/ds/generate-ui.sh
+ ser restart prometheus-alertmanager
+ fi
+
+ for ser in prometheus-node-exporter prometheus-alertmanager prometheus; do
+ sysd-prom-fail-install $ser
+ done
+
+ ;;
+ *)
+ pi prometheus-node-exporter
+ ;;
+esac
+
+case $HOSTNAME in
+ # frodo needs upgrade first.
+ frodo) : ;;
+ # todo, for limiting node exporter http,
+ # either use iptables or, in
+ # /etc/default/prometheus-node-exporter
+ # listen on the wireguard interface
+
+ *)
+ wgip=$(command sudo sed -rn 's,^ *Address *= *([^/]+).*,\1,p' /etc/wireguard/wghole.conf)
+ # old filename. remove once all hosts are updated.
+ s rm -fv /etc/apache2/sites-enabled/${HOSTNAME}wg.b8.nz.conf
+ web-conf -i -a $wgip -p 9101 -f 9100 - apache2 ${HOSTNAME}wg.b8.nz <<'EOF'
+<Location "/">
+AuthType Basic
+AuthName "basic_auth"
+# created with
+# htpasswd -c prometheus-export-htpasswd USERNAME
+AuthUserFile "/etc/prometheus-export-htpasswd"
+Require valid-user
+</Location>
+EOF
+ # For work, i think we will just use the firewall for hosts in the main data center, and
+ # vpn for hosts outside it.
+
+ # TODO: figure out how to detect the ping failure and try again.
+
+ # Binding to the wg interface, it might go down, so always restart, and wait for it on boot.
+ s mkdir /etc/systemd/system/apache2.service.d
+ sd /etc/systemd/system/apache2.service.d/restart.conf <<EOF
+[Unit]
+After=wg-quick@wghole.service
+StartLimitIntervalSec=0
+
+[Service]
+Restart=always
+RestartSec=30
+EOF
+
+ ;;
+esac
+
+### end prometheus ###
+
+
end_msg <<'EOF'
In mate settings settings, change scrolling to two-finger,
because the default edge scroll doesn\'t work. Originally found this in debian.
# nfs server
pi-nostart nfs-kernel-server
+# todo, this is old, probably needs removing
if [[ $HOSTNAME == tp ]]; then
sd /etc/wireguard/wg0.conf <<EOF
[Interface]