mostly profanity and fixes
[distro-setup] / distro-end
index 61fec8ac34caea4a0081d5f58b0f09825cab74f0..ed90a3f4446fb39bd5e344a322a8cf0c6d343ec9 100755 (executable)
@@ -90,7 +90,6 @@ EOF
 ########### begin section including vps ################
 pi ${p2[@]}
 
-
 conflink
 
 sudo rm -fv
@@ -346,6 +345,7 @@ EOF
     # for ziva
     #p install --no-install-recommends minetest/buster libleveldb1d/buster libncursesw6/buster libtinfo6/buster
     doupdate=false
+    # shellcheck disable=SC2043 # in case we want more than 1 in the loop later.
     for n in bullseye; do
       f=/etc/apt/sources.list.d/$n.list
       t=$(mktemp)
@@ -421,7 +421,7 @@ deb http://us.archive.ubuntu.com/ubuntu/ focal-updates main universe
 deb http://us.archive.ubuntu.com/ubuntu/ focal-security main universe
 EOF
     if ! diff -q $t $f; then
-      sudo dd if=$t of=$f 2>/dev/null
+      sudo dd if=$t of=$f status=none
       p update
     fi
 
@@ -450,7 +450,7 @@ deb http://mirror.fsf.org/trisquel/ nabia-backports main
 deb-src http://mirror.fsf.org/trisquel/ nabia-backports main
 EOF
     if ! diff -q $t $f; then
-      sudo dd if=$t of=$f 2>/dev/null
+      sudo dd if=$t of=$f status=none
       p update
     fi
 
@@ -495,7 +495,7 @@ 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
+      sudo dd if=$t of=$f status=none
       p update
     fi
 
@@ -619,8 +619,7 @@ case $HOSTNAME in
       dnsb8
     fi
 
-    pi prometheus-node-exporter
-    /a/bin/buildscripts/prom-node-exporter -l
+    s /c/roles/prom_export/files/simple/usr/local/bin/fsf-install-node-exporter -l 127.0.0.1
 
     # ex for exporter
     web-conf -p 9101 -f 9100 - apache2 ${HOSTNAME}ex.b8.nz <<'EOF'
@@ -672,53 +671,36 @@ EOF
 client-to-client
 EOF
 
-    # sullivan d8
-    sd /etc/openvpn/client-config-hole/sd8 <<'EOF'
-ifconfig-push 10.5.5.41 255.255.255.0
-EOF
-    # hsieh d8
-    sd /etc/openvpn/client-config-hole/hd8 <<'EOF'
-ifconfig-push 10.5.5.42 255.255.255.0
-EOF
 
-    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
-EOF
-    sd /etc/openvpn/client-config-hole/kw <<'EOF'
-ifconfig-push 10.5.5.9 255.255.255.0
-EOF
-    sd /etc/openvpn/client-config-hole/x3 <<'EOF'
-ifconfig-push 10.5.5.8 255.255.255.0
-EOF
-    sd /etc/openvpn/client-config-hole/x2 <<'EOF'
-ifconfig-push 10.5.5.7 255.255.255.0
-EOF
-    sd /etc/openvpn/client-config-hole/wclient <<'EOF'
-ifconfig-push 10.5.5.6 255.255.255.0
-EOF
-    sd /etc/openvpn/client-config-hole/frodo <<'EOF'
-ifconfig-push 10.5.5.5 255.255.255.0
-EOF
-    sd /etc/openvpn/client-config-hole/amy <<'EOF'
-ifconfig-push 10.5.5.3 255.255.255.0
-EOF
-    sd /etc/openvpn/client-config-hole/kd <<'EOF'
-ifconfig-push 10.5.5.2 255.255.255.0
+    ngset
+    files=(/etc/openvpn/client-config-hole/*)
+    if (( ${#files[@]} >= 1 )); then
+      rm -f ${files[@]}
+    fi
+    ngreset
+    for host in ${!vpn_ips[@]}; do
+      sd /etc/openvpn/client-config-hole/$host <<EOF
+ifconfig-push 10.5.5.${vpn_ips[$host]} 255.255.255.0
 EOF
+    done
 
-    # for adding to current system:
-    #vpn-mk-client-cert -s "" -n hole 72.14.176.105
-    # adding to remove system 107,
-    #vpn-mk-client-cert -s "" -n hole -c 10.2.0.107 -b hd8 iankelling.org
+
+    # for adding cert to system with /p
+    #
+    # host=frodo
+    #mkc /p/c/machine_specific/$host/filesystem/etc/openvpn/client
+    #vpn-mk-client-cert -b $host -n hole -r  iankelling.org
+    #s chown -R iank:iank .
     #
-    # for wireguard hole vpn
+    # example of adding to remote system 107,
+    # vpn-mk-client-cert -n hole -c 10.2.0.107 -b hd8 iankelling.org
+    #
+    # for wireguard hole vpn, use function:
     # wghole
+    # eg:
+    # wghole bo 28
+    # if it is going to want to connect to transmission-daemon on ok
+    # wghole bo 28 10.174.2.2/32
 
     # requested from linode via a support ticket.
     # https://www.linode.com/docs/networking/an-overview-of-ipv6-on-linode/
@@ -887,6 +869,16 @@ EOF
     end
     ;;
 esac
+
+case $HOSTNAME in
+  bk)
+    pi icecast2
+    # todo, save the config
+    /etc/cron.daily/stream-cert
+    web-conf -c /etc/cert-live.fsf.org -p 443 -f 8000 apache2 live.fsf.org
+    ;;
+esac
+
 ###### end website setup
 
 ########### end section including li/lj ###############
@@ -1068,6 +1060,7 @@ esac
 # way to install suggests even if the main package is already
 # installed. reinstall doesn't work, uninstalling can cause removing
 # dependent packages.
+# shellcheck disable=SC2046 # word splitting is intended
 pi ${pall[@]} $(apt-cache search ruby[.0-9]+-doc| awk '{print $1}') $($src/distro-pkgs)
 
 # schroot service will restart schroot sessions after reboot.
@@ -1118,45 +1111,6 @@ sudo rm -fv /etc/apt/sources.list.d/iridium-browser.list
 # esac
 
 
-### begin home vpn server setup
-
-
-# # this section done initially to make persistent keys.
-# # Also note, I temporarily set /etc/hosts so my host was
-# # b8.nz when running this, since the vpn client config
-# # generator assumes we need to go to that server to get
-# # server keys.
-# vpn-server-setup -rds
-# s cp -r --parents /etc/openvpn/easy-rsa/keys /p/c/filesystem
-# s chown -R 1000:1000 /p/c/filesystem/etc/openvpn/easy-rsa/keys
-# # kw = kgpe work machine.
-# for host in x2 x3 kw; do
-# vpn-mk-client-cert -b $host -n home b8.nz 1196
-# dir=/p/c/machine_specific/$host/filesystem/etc/openvpn/client
-# mkdir -p $dir
-# s bash -c "cp /etc/openvpn/client/home* $dir"
-#     # note: /etc/update-resolv-conf-home also exists for all systems with /p
-# done
-
-# key already exists, so this won't generate one, just the configs.
-# m vpn-server-setup -rds
-# sudo tee -a /etc/openvpn/server/server.conf <<'EOF'
-# push "dhcp-option DNS 10.0.0.1"
-# push "route 10.0.0.0 255.255.0.0"
-# client-connect /a/bin/distro-setup/vpn-client-connect
-# EOF
-# sudo sed -i --follow-symlinks 's/10.8./10.9./g;s/^\s*port\s.*/port 1196/' /etc/openvpn/server/server.conf
-
-# if [[ $HOSTNAME == tp ]]; then
-#   if [[ -e /lib/systemd/system/openvpn-server@.service ]]; then
-#     vpn_service=openvpn-server@server
-#   else
-#     vpn_service=openvpn@server
-#   fi
-#   sgo $vpn_service
-# fi
-### end vpn server setup
-
 ##### rss2email
 if mountpoint /p &>/dev/null; then
   # note, see bashrc for more documentation.
@@ -1234,10 +1188,6 @@ if [[ -e /p/c/machine_specific/$HOSTNAME/filesystem/etc/openvpn/client/hole.crt
   sgo openvpn-client@hole
 fi
 
-if [[ $HOSTNAME == frodo ]]; then
-  vpn-mk-client-cert -b frodo -n hole iankelling.org
-fi
-
 ############# begin syncthing setup ###########
 case $HOSTNAME in
   kd|frodo)
@@ -1327,6 +1277,22 @@ fi
 
 ####### begin misc packages ###########
 
+case $HOSTNAME in
+  kd)
+    ln -sfT /d/p/profanity ~/.local/share/profanity
+    ln -sfT /d/p/profanity-config ~/.config/profanity
+    source /a/bin/bash_unpublished/source-state
+    if [[ $HOSTNAME == "$HOST2" ]]; then
+      systemctl --now enable profanity
+    fi
+    ;;
+  *)
+
+    ln -sfT /p/profanity ~/.local/share/profanity
+    ln -sfT /p/profanity-config ~/.config/profanity
+    ;;
+esac
+
 # template
 case $codename in
   flidas)
@@ -1532,7 +1498,7 @@ case $HOSTNAME in
     ;;
 esac
 
-mkdir -p $tdir
+sudo mkdir -p $tdir
 
 # adapted from /var/lib/dpkg/info/transmission-daemon.postinst
 # 450 seems likely to be unused. we need to specify one or else
@@ -1582,7 +1548,7 @@ ser stop transmission-daemon
 f=$tdir/transmission-daemon
 for d in $tdir/partial-torrents $tdir/torrents $f; do
   if [[ ! -d $d ]]; then
-    mkdir $d
+    sudo mkdir -p $d
   fi
   sudo chown -R debian-transmission:user2 $d
 done
@@ -1601,6 +1567,8 @@ sudo chown -R debian-transmission:debian-transmission /var/lib/transmission-daem
 #
 # Changed the cache-size to 256 mb, reduces disk use.
 # It is a read & write cache.
+#
+# just fyi: default rpc port is 9091
 if ! systemctl is-active transmission-daemon-nn &>/dev/null && \
     ! systemctl is-active transmission-daemon; then
   tmp=$(mktemp)
@@ -1641,6 +1609,9 @@ esac
 
 ######### begin transmission client setup ######
 
+# to connect from a remote client, trans-remote-route in brc2
+
+
 if [[ -e /p/transmission-rpc-pass ]]; then
   # arch had a default config,
   # debian had nothing until you start it.
@@ -1682,7 +1653,7 @@ EOF
   "profiles" : [
       {
       "profile-name" : "Default",
-      "hostname" : "10.173.0.2",
+      "hostname" : "10.174.2.2",
       "rpc-url-path" : "/transmission/rpc",
       "username" : "",
       "password" : "$rpc_pass",
@@ -1733,6 +1704,7 @@ sudo gpasswd -a $USER lpadmin # based on ubuntu wiki
 # general known for debian/ubuntu, not for fedora
 
 m /a/bin/buildscripts/go
+# only needed for rg. cargo takes up 11 gigs, filled up the disk on je.
 m /a/bin/buildscripts/rust
 m /a/bin/buildscripts/misc
 m /a/bin/buildscripts/pithosfly
@@ -1831,15 +1803,14 @@ DEVICESCAN -a -o on -S on -n standby,q $sched \
 
 ########### misc stuff
 
+# pressing tab after sdf here:
+# scp sdfbash: set +o noglob: command not found
+# in t11, bash 5.1.16. this fixes it.
+sudo sed -ri 's/([[:space:]]*)(\$reset)$/\1set +o noglob #$reset/' /usr/share/bash-completion/bash_completion
+
 rm -fv /home/iank/.mpv/watch_later
 rm -rf /home/iank/.mpv
 
-
-if [[ $HOSTNAME != frodo ]]; then
-  # remove. i moved this into dns
-  echo | s cedit hole /etc/hosts ||:
-fi
-
 if [[ ! -e ~/.local/bin/pip ]]; then
   tmp=$(mktemp)
   wget -O$tmp https://bootstrap.pypa.io/get-pip.py
@@ -1847,6 +1818,61 @@ if [[ ! -e ~/.local/bin/pip ]]; then
   hash -r
 fi
 
+## begin beets
+# soo, apt install beets fails due to wanting a pip package,
+# we find out why it wants this through
+# apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances beets | less
+# python-mediafile requires tox, which requires virtualenv, which requires pip.
+# but, python-mediafile doesn't really require tox, it is specified in
+# ./usr/lib/python3/dist-packages/mediafile-0.9.0.dist-info/METADATA
+# as being required only for testing, but the debian package
+# included it anyways, due to a mistake or bad tooling or something.
+# I don't plan to use tox, so, according to https://serverfault.com/a/251091,
+# we can create and install a dummy package by:
+#
+# "equivs-control <name>, edit the file produced to provide the right
+# dependency and have a nice name, then run equivs-build <name> and
+# finally dpkg -i the resulting .deb file"
+# as of 2023-02, the tox dependency was removed in debian unstable, so
+# this hack will probably go away in t12.
+
+if pcheck beets; then
+  tmpdir="$(mktemp -d)"
+  cd "$tmpdir"
+  # edited from output of equivs-control tox
+  cat >tox <<'EOF'
+Section: python
+Priority: optional
+Standards-Version: 3.9.2
+Package: tox
+Description: tox-dummy
+EOF
+  equivs-build tox
+  sudo dpkg -i tox_1.0_all.deb
+  rm -rf ./tox*
+  pi beets python3-discogs-client
+  cd
+  rm -r "$tmpdir"
+fi
+
+# get rid of annoying message
+s sed -ri "s/^([[:space:]]*ui.print_\('Playing)/#\1/" /usr/share/beets/beetsplug/play.py
+
+
+# notes about barrier
+# run barrier, do the gui config,
+# setup the 2 screens, using hostnames for the new screen.
+# save the server config
+# $HOME/.local/share/barrier/.barrier.conf
+# per the man page.
+#
+# ssl errors, resolved via advice here: https://github.com/debauchee/barrier/issues/231
+# BARRIER_SSL_PATH=~/.local/share/barrier/SSL/
+# mkdir -p "${BARRIER_SSL_PATH}"
+# openssl req -x509 -nodes -days 365 -subj /CN=Barrier -newkey rsa:4096 -keyout ${BARRIER_SSL_PATH}/Barrier.pem -out ${BARRIER_SSL_PATH}/Barrier.pem
+# ran on both machines.
+# When pressing start in the gui, the cli options used are printed to the console,
+# they are useful. So on server, just run barriers, client run barrierc SERVER_IP
 
 ### begin timetrap setup
 if mountpoint /p &>/dev/null; then
@@ -1909,13 +1935,13 @@ sudo fc-cache
 pi desktop-file-utils
 m /a/bin/distro-setup/mymimes
 
-
-# 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.
-# dconf-WARNING **: failed to commit changes to dconf: Cannot autolaunch D-Bus without X11 $DISPLAY
-m dbus-launch gsettings set org.gnome.desktop.media-handling automount-open false
-
+if type -p dbus-launch >/dev/null; then
+  # 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.
+  # dconf-WARNING **: failed to commit changes to dconf: Cannot autolaunch D-Bus without X11 $DISPLAY
+  m dbus-launch gsettings set org.gnome.desktop.media-handling automount-open false
+fi
 
 # on grub upgrade, we get prompts unless we do this
 devs=()
@@ -1940,22 +1966,20 @@ sgo dynamicipupdate
 if grep -xFq $HOSTNAME /a/bin/ds/machine_specific/btrbk.hosts; then
   sgo btrbk.timer
 fi
-# note: to see when it was last run,
+
+# note: to see when a timer was last run,
 # ser list-timers
 
-case $HOSTNAME in
-  kd)
-    sgo btrbkrust.timer
-    ;;
-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
+    pi prometheus-alertmanager prometheus fonts-font-awesome
+    /c/roles/prom/files/simple/usr/local/bin/fsf-install-prometheus
+    # make it available for other machines
+    rsync -a /usr/local/bin/amtool /a/opt/bin
     web-conf -p 9091 -f 9090 - apache2 i.b8.nz <<'EOF'
 <Location "/">
 AuthType Basic
@@ -1991,19 +2015,26 @@ EOF
       ser restart prometheus-alertmanager
     fi
 
+    s /c/roles/prom_export/files/simple/usr/local/bin/fsf-install-node-exporter -l 127.0.0.1
+
     for ser in prometheus-node-exporter prometheus-alertmanager prometheus; do
       sysd-prom-fail-install $ser
     done
 
     ;;
   *)
-    pi prometheus-node-exporter
+    s /c/roles/prom_export/files/simple/usr/local/bin/fsf-install-node-exporter
     ;;
 esac
 
+# cleanup old files. 2023-02
+x=(/var/lib/prometheus/node-exporter/*.premerge)
+if [[ -e ${x[0]} ]]; then
+  s rm /var/lib/prometheus/node-exporter/*
+fi
+
+
 case $HOSTNAME in
-  # frodo needs upgrade first.
-  frodo) : ;;
   # todo, for limiting node exporter http,
   # either use iptables or, in
   # /etc/default/prometheus-node-exporter
@@ -2047,16 +2078,21 @@ esac
 
 ### begin nagios ###
 
-pi nagios4
-s rm -fv /etc/apache2/conf-enabled/nagios4-cgi.conf
+pi nagios-nrpe-server
 
-# to add a password for admin:
-# htdigest /etc/nagios4/htdigest.users Nagios4 iank
-# now using the same pass as prometheus
+case $HOSTNAME in
+  kd)
+    # the backport is for this bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=800345
+    pi nagios4 nagios-nrpe-plugin monitoring-plugins-basic/bullseye-backports
+    s rm -fv /etc/apache2/conf-enabled/nagios4-cgi.conf
+
+    # to add a password for admin:
+    # htdigest /etc/nagios4/htdigest.users Nagios4 iank
+    # now using the same pass as prometheus
 
-# nagstamon auth settings, set to digest instead of basic.
+    # nagstamon auth settings, set to digest instead of basic.
 
-web-conf -p 3005 - apache2 i.b8.nz <<'EOF'
+    web-conf -p 3005 - apache2 i.b8.nz <<'EOF'
 # adapted from /etc/apache2/conf-enabled/nagios4-cgi.conf
 
 ScriptAlias /cgi-bin/nagios4 /usr/lib/cgi-bin/nagios4
@@ -2093,7 +2129,7 @@ Alias /nagios4 /usr/share/nagios4/htdocs
     #
        AuthDigestDomain "Nagios4"
        AuthDigestProvider file
-       AuthUserFile    "/etc/nagios4/htdigest.users"
+       AuthUserFile    "/etc/nagios4-htdigest.users"
        AuthGroupFile   "/etc/group"
        AuthName        "Nagios4"
        AuthType        Digest
@@ -2104,7 +2140,8 @@ Alias /nagios4 /usr/share/nagios4/htdocs
     Options    +ExecCGI
 </Directory>
 EOF
-
+    ;;
+esac
 
 # when you alter a service through the web, it changes vars in /var/lib/nagios4/status.dat. for example:
 # notifications_enabled=1
@@ -2135,8 +2172,42 @@ EOF
 #       6 define timeperiod
 
 
+
+
 ### end nagios ###
 
+### begin bitcoin ###
+
+case $HOSTNAME in
+  sy|kd)
+    sudo install -m 0755 -o root -g root -t /usr/bin /a/opt/bitcoin-24.0.1/bin/*
+    sgo bitcoind
+    # note: the bitcoin user & group are setup in fai
+    sudo usermod -a -G bitcoin iank
+    # todo: make bitcoin have a stable uid/gid
+    if [[ ! $(readlink -f /var/lib/bitcoind/wallets) == /q/wallets ]]; then
+      mkdir -p /var/lib/bitcoind
+      chown bitcoin:bitcoin /var/lib/bitcoind
+      # 710 comes from the upstream bitcoin unit file
+      chmod 710 /var/lib/bitcoind
+      s lnf /q/wallets /var/lib/bitcoind
+      sudo chown -h bitcoin:bitcoin /var/lib/bitcoind/wallets
+    fi
+    # note, there exists
+    # /a/bin/ds/disabled/bitcoin
+    ;;
+esac
+
+### end bitcoin
+
+case $HOSTNAME in
+  kw|x3)
+    sd /etc/cups/client.conf <<'EOF'
+ServerName printserver1.office.fsf.org
+EOF
+    ;;
+esac
+
 
 end_msg <<'EOF'
 In mate settings settings, change scrolling to two-finger,
@@ -2172,7 +2243,7 @@ lnf -T /a/opt ~/src
 pi tor
 m /a/bin/buildscripts/tor-browser
 # one root command needed to install
-s ln -sf /a/opt/tor-browser_en-US/Browser/start-tor-browser /usr/local/bin
+s ln -sf /a/opt/tor-browser/Browser/start-tor-browser /usr/local/bin
 
 
 # nfs server