X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=distro-end;h=64441d1cfc9d477847610a3158b8b72ac2f6a438;hb=3c86472e219aaf3c97b1f878b4a818644b282aba;hp=d51cbef4eb10ef72fc2c623c5a234c94ebb1d46a;hpb=0cc08a73110c15c4e7bbb8c8233a6c122c27490e;p=distro-setup diff --git a/distro-end b/distro-end index d51cbef..64441d1 100755 --- a/distro-end +++ b/distro-end @@ -14,7 +14,7 @@ # limitations under the License. ### setup -errcatch +source /a/bin/errhandle/err src="${BASH_SOURCE%/*}" source $src/pkgs @@ -110,11 +110,13 @@ if isdeb; then # https://store.docker.com/editions/community/docker-ce-server-debian?tab=description pi software-properties-common apt-transport-https curl -fsSL https://download.docker.com/linux/$(distro-name-compat)/gpg | sudo apt-key add - - sudo add-apt-repository \ - "deb [arch=amd64] https://download.docker.com/linux/$(distro-name-compat) \ - $(debian-codename-compat) \ - stable" - p update + url=https://download.docker.com/linux/$(distro-name-compat) + l="deb [arch=amd64] $url $(debian-codename-compat) stable" + + if ! grep -xFq "$l" /etc/apt/sources.list{,.d/*.list}; then + sudo add-apt-repository "$l" + p update + fi # docker eats up a fair amount of cpu when doing nothing, so don't enable it unless # we really need it. pi-nostart docker-ce @@ -129,6 +131,7 @@ fi ### end docker install #### + ### begin certbot install ### case $distro in debian) @@ -144,8 +147,11 @@ case $distro in trisquel|ubuntu) # not packaged in xenial or flidas pi software-properties-common - s add-apt-repository -y ppa:certbot/certbot ||: - p update + l="deb http://ppa.launchpad.net/certbot/certbot/ubuntu xenial main" + if ! grep -xFq "$l" /etc/apt/sources.list{,.d/*.list}; then + s add-apt-repository -y ppa:certbot/certbot ||: + p update + fi pi python-certbot-apache ;; # todo: other distros unknown @@ -163,18 +169,34 @@ sgo certbotmail.timer ### end certbot install ### -# dogcam setup -case $HOSTNAME in - lj|li) - /a/bin/webcam/install-server - ;; - kw) - /a/bin/webcam/install-client - ;; -esac +# dogcam setup. not using atm +# case $HOSTNAME in +# lj|li) +# /a/bin/webcam/install-server +# ;; +# kw) +# /a/bin/webcam/install-client +# ;; +# esac pi ${p1[@]} + +## prometheus node exporter setup +web-conf -f 9100 -p 9101 apache2 $(hostname -f) <<'EOF' +#https://httpd.apache.org/docs/2.4/mod/mod_authn_core.html#authtype +# https://stackoverflow.com/questions/5011102/apache-reverse-proxy-with-basic-authentication + + AllowOverride None + AuthType basic + AuthName "Authentication Required" + # setup one time, with root:www-data, 640 + AuthUserFile "/etc/prometheus-htpasswd" + Require valid-user + +EOF + + # website setup case $HOSTNAME in lj|li) @@ -578,25 +600,13 @@ esac # dependent packages. pi ${pall[@]} $(apt-cache search ruby[.0-9]+-doc| awk '{print $1}') $(apt-cache depends gcc|grep -i suggests:| awk '{print $2}') -sgo fsf-vpn-dns-cleanup - -case $distro in - trisquel|ubuntu) - l="deb http://ppa.launchpad.net/ansible/ansible/ubuntu xenial main" - f=/etc/apt/sources.list.d/ansible-ubuntu-ansible-xenial.list - if ! grep -qF "$l" $f; then - s add-apt-repository -y ppa:ansible/ansible - p update - fi - s pip install --upgrade pip - # newer 2.7 versions have a bug that incorrectly detects trisquel version. fixed once 2.8 arrives - # in 2019 - pip install --user ansible=2.7.4 - #pi ansible - ;; -esac - +if ! type pip; then + x=$(mktemp) + wget -O$x https://bootstrap.pypa.io/get-pip.py + python3 $x --user +fi +sgo fsf-vpn-dns-cleanup case $distro in @@ -604,11 +614,17 @@ case $distro in pi chromium ;; trisquel|ubuntu) wget -qO - https://downloads.iridiumbrowser.de/ubuntu/iridium-release-sign-01.pub|sudo apt-key add - - cat <$t </dev/null <$t < /dev/null; then + s groupadd -g 450 debian-transmission + case $distro in + arch) + s useradd \ + --system \ + --create-home \ + --gid 450 \ + --uid 450 \ + --home-dir /var/lib/transmission-daemon \ + --shell /bin/false \ + debian-transmission + ;; + *) + s adduser --quiet \ + --gid 450 \ + --uid 450 \ + --system \ + --no-create-home \ + --disabled-password \ + --home /var/lib/transmission-daemon \ + debian-transmission + ;; + esac +fi +# We want group writable stuff from transmission. +# However, after setting this, I learn that transmission sets it's +# own umask based on it's settings file. Well, no harm leaving this +# so it's set right from the beginning. +s chfn debian-transmission -o umask=0002 + case $distro in debian|trisquel|ubuntu) # note i had to do this, which is persistent: @@ -1093,6 +1153,9 @@ EOF # some reason it doesn\'t seem to start automatically anyways pi-nostart transmission-daemon + # be extra sure its not started + ser disable transmission-daemon + ser stop transmission-daemon # the folder was moved here after an install around 02/2017. # it contains runtime data, @@ -1140,40 +1203,11 @@ File.write(p, JSON.pretty_generate(JSON.parse(File.read(p)).merge({ })) + "\n") EOF - # make sure its not enabled, not sure if this is needed - ser disable transmission-daemon ;; # todo: others unknown esac -# adapted from /var/lib/dpkg/info/transmission-daemon.postinst -if ! getent passwd debian-transmission > /dev/null; then - case $distro in - arch) - s useradd \ - --system \ - --create-home \ - --home-dir /var/lib/transmission-daemon \ - --shell /bin/false \ - debian-transmission - ;; - *) - s adduser --quiet \ - --system \ - --group \ - --no-create-home \ - --disabled-password \ - --home /var/lib/transmission-daemon \ - debian-transmission - ;; - esac -fi -# We want group writable stuff from transmission. -# However, after setting this, I learn that transmission sets it's -# own umask based on it's settings file. Well, no harm leaving this -# so it's set right from the beginning. -s chfn debian-transmission -o umask=0002 # trisquel 8 = openvpn, debian stretch = openvpn-client vpn_ser=openvpn-client @@ -1316,24 +1350,40 @@ for x in iank traci; do s usermod -a -G libvirt,kvm $x; done case $distro in debian|trisquel|ubuntu) + if ! type -p go &>/dev/null; then + cd $(mktemp -d) + # just the latest stable at the time of writing + # TODO, maybe put this all into a build script, + # and do some automatic updates + wget -q https://dl.google.com/go/go1.12.4.linux-amd64.tar.gz + s tar -C /usr/local -xzf go1.12.4.linux-amd64.tar.gz + rm -f * + fi + go get -u mvdan.cc/fdroidcl # a bit of googling, and added settings to bashrc - go get -u github.com/mvdan/fdroidcl/cmd/fdroidcl ;; esac case $distro in arch) + pi virt-install # otherwise we get error about accessing kvm module. # seems like there might be a better way, but google was a bit vague. s $sed -ri '/^ *user *=/d' /etc/libvirt/qemu.conf echo 'user = "root"' | s tee -a /etc/libvirt/qemu.conf - # https://bbs.archlinux.org/viewtopic.php?id=206206 - # # this should prolly go in the wiki - sgo virtlogd.socket # guessing this is not needed #sgo virtlogd.service - sgo libvirtd + + # iank: disabed as im not using libvirt usually + # # https://bbs.archlinux.org/viewtopic.php?id=206206 + # # # this should prolly go in the wiki + # sgo virtlogd.socket + # sgo libvirtd + ;; + debian|trisquel|ubuntu) + pi-nostart virtinst virt-manager ;; + esac @@ -1347,7 +1397,7 @@ case $distro in ./configure --with-exuberant-ctags=/usr/bin/ctags make s make install - s pip install pygments + pip install pygments ;; *) pi global @@ -1539,6 +1589,9 @@ s fc-cache /a/bin/distro-setup/mymimes +sgo dynamicipupdate + + # 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.