simple_packages+=($@)
}
+
distro=$(distro-name)
pending_reboot=false
ruby-rest-client
tree
vim
+ wcd
)
case $HOSTNAME in
# universal packages
# swh-plugins is for karaoke pulsaudio filter.
# mutagen for pithos
- # lib32stdc++6/default-jdk for android studio
- # android site says it needs a bunch of packages for ubuntu,
- # but I googled for debian, and someone says you just need one, plus the
- # jdk
- # https://pid7007blog.blogspot.com/2015/07/installing-android-studio-in-debian-8.html
- # see w.org for more android studio details
- #
simple_packages+=(
apache2
bwm-ng
chromium
- default-jdk
+ debconf-doc
duplicity
+ eclipse
evince
fdupes
filelight
+ gcc-doc
gdb
gitk
goaccess
gnome-screenshot
+ i3lock
jq
locate
- lib32stdc++6
manpages
+ manpages-dev
meld
+ mumble
nmap
offlineimap
p7zip
pianobar
pidgin
python3-mutagen
- slock
+ reportbug
squashfs-tools
swh-plugins
tcpdump
pi "${simple_packages[@]}"
simple_packages=()
+# website setup
case $HOSTNAME in
lj|li)
case $HOSTNAME in
- lj) domain=iank.bid ;;
+ lj) domain=iank.bid; exit 0 ;;
li) domain=iankelling.org ;;
esac
/a/h/setup.sh $domain
sudo -E /a/bin/mediawiki-setup/mw-setup-script
#$src/phab-setup
+ pi-nostart mumble-server
+ s sed -ri "s/^ *(serverpassword=).*/\1$(< /a/bin/bash_unpublished/mumble_pass)/" /etc/mumble-server.ini
+ sgo mumble-server
+
echo "$0: $(date): ending now)"
exit 0
;;
esac
+
########### end section including li/lj ###############
+
+## android studio setup
+# this contains the setting for android sdk to point to
+# /a/opt/androidsdk, which is asked upon first run
+lnf /a/opt/.AndroidStudio2.2 ~
+# android site says it needs a bunch of packages for ubuntu,
+# but I googled for debian, and someone says you just need lib32stdc++6 plus the
+# jdk
+# https://pid7007blog.blogspot.com/2015/07/installing-android-studio-in-debian-8.html
+# see w.org for more android studio details
+spa lib32stdc++6 default-jdk
+
+
if [[ $HOSTNAME == frodo ]]; then
case $distro in
ubunut|debian)
####### misc packages ###########
-
if [[ $HOSTNAME == treetowl ]]; then
case $distro in
debian|ubuntu)
# some reason it doesn't seem to start automatically anyways
pi-nostart transmission-daemon
+ #
# config file documented here, and it's the same config
# for daemon vs client, so it's documented in the gui.
# https://trac.transmissionbt.com/wiki/EditConfigFiles#Options
+ #
+ # I originaly setup rpc-whitelist, but after using
+ # routing to a network namespace, it doesn't see the
+ # real source address, so it's disabled.
+ #
+ # Changed the cache-size to 128 mb, reduces disk use.
+ # It is a read & write cache.
+ #
+ # todo: setup a password.
s ruby <<'EOF'
require 'json'
p = '/etc/transmission-daemon/settings.json'
File.write(p, JSON.pretty_generate(JSON.parse(File.read(p)).merge({
-'rpc-whitelist' => '127.0.0.1,192.168.1.*',
+'rpc-whitelist-enabled' => false,
'rpc-authentication-required' => false,
-'incomplete-dir' => '/i/k/partial-torrents',
+'incomplete-dir' => '/k/partial-torrents',
+'incomplete-dir-enabled' => true,
'download-dir' => '/i/k/torrents',
-"speed-limit-up" => 700,
+"speed-limit-up" => 800,
"speed-limit-up-enabled" => true,
+"peer-port" => 61486,
+"cache-size-mb" => 128,
"ratio-limit" => 1.4000,
-"ratio-limit-enabled" => true,
+"ratio-limit-enabled" => false,
+"pidfile": "/var/lib/transmission-daemon/transmission-daemon.pid",
})) + "\n")
EOF
- sgo transmission-daemon
- ;;
- arch)
- # todo, setup it's config file & daemon
- pi transmission-cli
+
+ # make sure its not enabled, not sure if this is needed
+ ser disable transmission-daemon
+ sgo transmission-daemon-nn
;;
+ # todo: others unknown
esac
fi
case $distro in
debian|ubuntu)
- pi-nostart openvpn
+ # suggests because we want the resolvconf package.
+ # todo: check other distros to make sure it's installed
+ pi-nostart --install-suggests openvpn
# pi-nostart this doesnt seem to be good enough?
ser disable openvpn@client
ser disable openvpn
;;
- # suggests because we want the resolvconf package
- *) pi --install-suggests openvpn;;
+ *) pi openvpn;;
esac
pi wget
case $distro in
- debian|ubuntu) spa android-tools-adb/unstable ;;
+ debian|ubuntu) spa android-tools-adbd/unstable ;;
arch) spa android-tools ;;
# other distros unknown
esac
# has no unstable dependencies
spa bitcoin-qt/unstable
fi
+ s cp /a/opt/bitcoin/contrib/init/bitcoind.service /etc/systemd/system
+ ser daemon-reload
+
+ dir=/nocow/.bitcoin
+ s mkdir -p $dir
+ s chown -R bitcoin:bitcoin $dir
+ dir=/etc/bitcoin
+ s mkdir -p $dir
+ s chown -R root:bitcoin $dir
+ s chmod 750 $dir
+ f=$dir/bitcon.conf
+
+ # pruning decreases the bitcoin dir to 2 gb, keeps
+ # just the recent blocks. can't do a few things like
+ # import a wallet dump.
+ # pruning works, but people had to do
+ # some manual stuff in joinmarket. I dun need the
+ # disk space, so not bothering yet, maybe in a year or so.
+ # https://github.com/JoinMarket-Org/joinmarket/issues/431
+ #https://bitcoin.org/en/release/v0.12.0#wallet-pruning
+ #prune=550
+
+ s dd of=$f <<EOF
+rpcbind=127.0.0.1
+server=1
+rpcpassword=$(openssl rand -base64 32)
+rpcuser=$(openssl rand -base64 32)
+
+# Joinmarket
+walletnotify=curl -sI --connect-timeout 1 http://localhost:62602/walletnotify?%s
+alertnotify=curl -sI --connect-timeout 1 http://localhost:62602/alertnotify?%s
+EOF
;;
- # other distros unknown
+ # other distros unknown
esac
+if [[ $HOSTNAME == treetowl ]]; then
+ pi libsodium-dev python3-pip
+ cd /a/opt/joinmarket
+ # using develop branch, as it seems to be mostly bug fixes,
+ # and this is quite new software.
+ # note: python3 does not work.
+ pip install -r requirements.txt
+ # we need bitcoin.conf in the data dir according to
+ # https://github.com/JoinMarket-Org/joinmarket/wiki/Running-JoinMarket-with-Bitcoin-Core-full-node
+ # following the example .service script, I don\'t have it there,
+ # and I generate it, so lets just symlink it.
+ sudo -u bitcoin ln -sf /etc/bitcoin/bitcoin.conf /nocow/.bitcoin
+
+ # one time, manually did python wallet-tool.py generate.
+ # The "wallet" is just a key which deterministically generates addresses.
+ # One time: move the wallet, then link to it.
+ # ln -s /p/joinmarket/wallet.json wallets
+ #
+ # see wallet addresses via:
+ # python wallet-tool.py wallet.json
+ # send to the first 3 mixing depth 0 addresses.
+ # depths are like "identities", to separate out association with
+ # each other. the big hash in that output is the depth/branch id,
+ # ignore it afaik.
+ #
+ # after sending btc to wallet from a 3rd party service, check that
+ # at least 20% of utxo of each transaction was sent to you,
+ # btc listtransactions 10 0 true
+ # btc getrawtransaction TXID 1
+ #
+ # to view status, do
+ # python wallet-tool.py wallet.json history
+ #
+ # to help make other people,
+ # python yield-generator-basic.py wallet.json
+
+ for var in rpcuser rpcpassword; do
+ u="$(s sed -rn "s/^$var=(.*)/\1/p" /etc/bitcoin/bitcoin.conf)"
+ # escape backslashes
+ u="${u//\\/\\\\\\\\}"
+ # escape commas
+ u="${u//,/\\,}"
+ sed -ri "s,^(rpc_${var#rpc}\s*=).*,\1 $u," joinmarket.cfg
+ done
+ sed -ri "s/^\s*(blockchain_source\s*=).*/\1 bitcoin-rpc/" joinmarket.cfg
+
+ # dunno about sharing a wallet between multiple instances
+ # manually did, wallet.dat symlinked in /nocow/.bitcoin
+ sgo bitcoind
+fi
+
+
# proprietary flash. going without for now
########### misc stuff
+# the wiki backup script from ofswiki.org uses generic paths
+s lnf /p/c/machine_specific/li/mw_vars /root
+s lnf /k/backup/wiki_backup /root
+
s cedit /etc/goaccess.conf <<'EOF' || [[ $? == 1 ]]
# all things found from looking around the default config
# copied existing NCSA Combined Log Format with Virtual Host, plus %L
if [[ $HOSTNAME == treetowl ]] && ! sudo test -e /etc/openvpn/client.key; then
/a/bin/vpn-setup/vpn-mk-client-cert dopub
+ # route lan traffic from inside the network namespace.
+ tu /etc/openvpn/client.conf "route 192.168.1.0 255.255.255.0 net_gateway"
fi
;;
esac
-# note, for jessie, it depends on a higher version of btrfs-tools
+# note, for jessie, it depends on a higher version of btrfs-tools.
+#
+# # disabled due to my patch being in btrbk
# case $distro in
# arch|debian|ubuntu) pi btrbk ;;
# # others unknown
# esac
cd /a/opt/btrbk
s make install
+spa pv # for progress bar when running interactively.
+if [[ $HOSTNAME == treetowl ]]; then
+ # backup/sync manually on others hosts for now.
+ sgo btrbk.timer
+ # note: to see when it was last run,
+ # ser list-timers
+fi
if [[ $HOSTNAME == treetowl ]] && [[ `debian-archive` != testing ]]; then
# fail2 ban is broken, with a workaround, per
# run "control userpasswords2", turn on automatic login.
# note: when changing devices, I just undefine, the create the vm again.
- s virt-install --noautoconsole --graphics spice,listen=0.0.0.0 \
- --disk=/a/images/win10.qcow2,bus=virtio --vcpus 2 -r 4096 -w bridge=br0 \
- -n win10 --import --os-variant $variant --cpu host-model-only
+ if [[ -e /a/images/win10.qcow2 ]]; then
+ s virt-install --noautoconsole --graphics spice,listen=0.0.0.0 \
+ --disk=/a/images/win10.qcow2,bus=virtio --vcpus 2 -r 4096 -w bridge=br0 \
+ -n win10 --import --os-variant $variant --cpu host-model-only
- s virsh destroy win10
-
- # this one hasn\'t had the virtio fix done yet.
- s virt-install --noautoconsole --graphics spice,listen=0.0.0.0 \
- --disk=/a/images/win7.qcow2 --vcpus 2 -r 4096 -w bridge=br0 \
- -n win7 --import --os-variant win7 --cpu host-model-only
- s virsh destroy win7
- # had a problem with --cpu host, so trying out
- # --cpu host-model-only
+ s virsh destroy win10
+ fi
+ if [[ -e /a/images/win7.qcow2 ]]; then
+ # this one hasn\'t had the virtio fix done yet.
+ s virt-install --noautoconsole --graphics spice,listen=0.0.0.0 \
+ --disk=/a/images/win7.qcow2 --vcpus 2 -r 4096 -w bridge=br0 \
+ -n win7 --import --os-variant win7 --cpu host-model-only
+ s virsh destroy win7
+ # had a problem with --cpu host, so trying out
+ # --cpu host-model-only
+ fi
fi