mirror of
https://codeberg.org/hyperreal/admin-scripts
synced 2024-11-25 09:03:41 +01:00
Refactor and tidy
This commit is contained in:
parent
e98a8379ae
commit
780ce26bf6
18
bin/mastodon-backup
Executable file
18
bin/mastodon-backup
Executable file
@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -eu
|
||||
|
||||
trap "mv /home/mastodon/db-backup.sql.temp /home/mastodon/db-backup.sql" SIGHUP SIGINT SIGQUIT SIGTERM
|
||||
trap "rm -v /home/mastodon/db-backup.sql.temp" EXIT
|
||||
|
||||
mv -v /home/mastodon/db-backup.sql /home/mastodon/db-backup.sql.temp
|
||||
|
||||
pg_dump -U mastodon -Fc mastodon_production -p 5432 -f /home/mastodon/db-backup.sql
|
||||
|
||||
rclone sync -c /home/mastodon/live/public/system/ /mnt/mastodon/system
|
||||
|
||||
rclone copy -c /home/mastodon/db-backup.sql /mnt/mastodon
|
||||
|
||||
rclone copy -c /home/mastodon/live/.env.production /mnt/mastodon
|
||||
|
||||
exit 0
|
@ -1,3 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
sudo -u mastodon pg_dump -U mastodon -Fc mastodon_production -p 5432 -f "mastodon-db-$(date '+%Y-%m-%d').sql"
|
@ -1,33 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
DB_FILENAME="/home/mastodon/db-backup-$(date '+%Y-%m-%d').sql"
|
||||
|
||||
if ! pg_dump -U mastodon -Fc mastodon_production -p 5432 -f "$DB_FILENAME"; then
|
||||
echo "Error creating backup of mastodon_production database"
|
||||
exit 1
|
||||
else
|
||||
echo "Backup of mastodon_production database completed"
|
||||
fi
|
||||
|
||||
find /home/mastodon \
|
||||
-maxdepth 1 \
|
||||
-type f \
|
||||
\( -name "*.sql" -and -not -wholename "$DB_FILENAME" \) \
|
||||
-delete
|
||||
|
||||
if ! rclone copy --transfers=4 /home/mastodon/live/public/system minio:mastodata; then
|
||||
echo "Error rcloning /home/mastodon/live/public/system to MinIO instance"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! rclone copy "${DB_FILENAME}" minio:mastodata; then
|
||||
echo "Error rcloning ${DB_FILENAME} to MinIO instance"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! rclone copy /home/mastodon/live/.env.production minio:mastodata; then
|
||||
echo "Error rcloning /home/mastodon/live/.env.production to MinIO instance"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
@ -1,11 +1,20 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Dependencies: python-qbittorrent
|
||||
# pip install --user python-qbittorrent
|
||||
#
|
||||
# On Debian:
|
||||
# pip install --user python-qbittorrent --break-system-packages
|
||||
|
||||
"""qbt-sum-size
|
||||
|
||||
Usage:
|
||||
qbt-sum-size (HOSTNAME) (USERNAME) (PASSWORD)
|
||||
qbt-sum-size -h
|
||||
|
||||
Examples:
|
||||
qbt-sum-size "http://localhost:8080" "admin" "adminadmin"
|
||||
qbt-sum-size "https://cat.seedhost.eu/lol/qbittorrent" "lol" "supersecretpassword"
|
||||
|
||||
Options:
|
||||
-h, --help show this help message and exit
|
||||
"""
|
||||
|
||||
from docopt import docopt
|
||||
from qbittorrent import Client
|
||||
|
||||
|
||||
@ -33,11 +42,11 @@ def human_bytes(bites: int) -> str:
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Instantiate a qbittorrent client
|
||||
qb = Client("http://localhost:8080/")
|
||||
args = docopt(__doc__)
|
||||
|
||||
# username and password not required when 'Bypass from localhost' setting is active.
|
||||
qb.login()
|
||||
# Initialize client and login
|
||||
qb = Client(args["HOSTNAME"])
|
||||
qb.login(username=args["USERNAME"], password=args["PASSWORD"])
|
||||
|
||||
# get torrents
|
||||
torrents = qb.torrents()
|
||||
|
@ -18,7 +18,7 @@ from qbittorrent import Client
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
qb = Client("http://10.0.0.81:8080/")
|
||||
qb = Client("http://localhost:8080/")
|
||||
qb.login()
|
||||
|
||||
with TemporaryDirectory() as tmp_dir:
|
||||
|
34
justfile
34
justfile
@ -1,21 +1,8 @@
|
||||
## Justfile (https://github.com/casey/justfile)
|
||||
##
|
||||
## Orange Pi 5+ x 3
|
||||
##
|
||||
## Services:
|
||||
## - ArchiveBox
|
||||
## - Caddy web server
|
||||
## - gmcapsuled
|
||||
## - Mastodon auxiliary scripts
|
||||
## - qBittorrent + WireGuard
|
||||
## - Tailscale
|
||||
## - The Lounge IRC
|
||||
|
||||
distro := `grep -G "\bID\b" /etc/os-release | awk -F= '{print $2}'`
|
||||
release := `grep "VERSION_CODENAME" /etc/os-release | awk -F= '{print $2}'`
|
||||
run_user := env_var("USER")
|
||||
archivebox_data := "/nfs/archivebox"
|
||||
archivebox_nfs := "10.0.0.6:/mnt/coffeeNAS/archivebox"
|
||||
|
||||
default: common
|
||||
|
||||
@ -35,7 +22,6 @@ common:
|
||||
curl \
|
||||
firewalld \
|
||||
git \
|
||||
glances \
|
||||
htop \
|
||||
httpie \
|
||||
ifplugd \
|
||||
@ -65,13 +51,6 @@ caddy-install:
|
||||
sudo apt update
|
||||
sudo apt install caddy
|
||||
|
||||
archivebox-mnt-nfs:
|
||||
sudo mkdir -p {{archivebox_data}}
|
||||
if ! df -h | grep "archivebox"; then sudo chown -R {{run_user}}:{{run_user}} {{archivebox_data}}; fi
|
||||
if ! grep "archivebox" /etc/fstab; then echo "{{archivebox_nfs}} {{archivebox_data}} nfs4 soft,intr,rsize=8192,wsize=8192" | sudo tee -a /etc/fstab; fi
|
||||
sudo systemctl daemon-reload
|
||||
sudo mount -av
|
||||
|
||||
archivebox-install:
|
||||
sudo apt install -y pipx python3-dev python3-pip nodejs npm curl wget git ripgrep
|
||||
pipx install archivebox
|
||||
@ -85,13 +64,6 @@ archivebox-init:
|
||||
archivebox-setup:
|
||||
cd {{archivebox_data}} && archivebox setup
|
||||
|
||||
mastodon-aux-setup:
|
||||
sudo cp -v "${PWD}/bin/mastodon-to-minio" /usr/local/bin/
|
||||
sudo chmod +x /usr/local/bin/mastodon-to-minio
|
||||
sudo cp -v "${PWD}/systemd/system/mastodon-to-minio.service" /etc/systemd/system/
|
||||
sudo cp -v "${PWD}/systemd/system/mastodon-to-minio.timer" /etc/systemd/system/
|
||||
sudo systemctl enable --now mastodon-to-minio.timer
|
||||
|
||||
thelounge-install:
|
||||
curl -s https://api.github.com/repos/thelounge/thelounge-deb/releases/latest | grep "browser_download_url.*deb" | cut -d : -f 2,3 | tr -d \" | wget -qi -
|
||||
sudo apt install -y ./thelounge*.deb
|
||||
@ -106,12 +78,6 @@ qbt-install:
|
||||
sudo apt update
|
||||
sudo apt install -y qbittorrent-cli
|
||||
|
||||
qbittorrent-install:
|
||||
sudo apt install -y qbittorrent-nox wireguard-tools lynx parallel wget curl httpie
|
||||
|
||||
qbittorrent-enable:
|
||||
sudo systemctl enable --now qbittorrent-nox@{{run_user}}.service
|
||||
|
||||
scihub-setup:
|
||||
mkdir ~/scihub-torrent-urls
|
||||
lynx -dump -nonumbers -listonly=on https://libgen.rs/repository_torrent/ | grep "\.torrent" | tee ~/scihub-torrent-urls/urls.txt
|
||||
|
14
systemd/system/mastodon-backup.service
Normal file
14
systemd/system/mastodon-backup.service
Normal file
@ -0,0 +1,14 @@
|
||||
[Unit]
|
||||
Description=mastodon-backup
|
||||
AssertFileIsExecutable=/home/mastodon/bin/mastodon-backup
|
||||
Requires=mnt-mastodon.mount
|
||||
After=mnt-mastodon.mount
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
User=mastodon
|
||||
Group=mastodon
|
||||
ExecStart=/home/mastodon/bin/mastodon-backup
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
9
systemd/system/mastodon-backup.timer
Normal file
9
systemd/system/mastodon-backup.timer
Normal file
@ -0,0 +1,9 @@
|
||||
[Unit]
|
||||
Description=mastodon-backup
|
||||
|
||||
[Timer]
|
||||
OnCalendar=Sun *-*-* 03:30:00
|
||||
Persistent=true
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
15
systemd/system/mnt-mastodon.mount
Normal file
15
systemd/system/mnt-mastodon.mount
Normal file
@ -0,0 +1,15 @@
|
||||
[Unit]
|
||||
Description=mastodon-data NFS share from TrueNAS (10.0.0.81)
|
||||
DefaultDependencies=no
|
||||
Conflicts=umount.target
|
||||
After=network-online.target remote-fs.target
|
||||
Before=umount.target
|
||||
|
||||
[Mount]
|
||||
What=10.0.0.81:/mnt/coffeeNAS/mastodon-data
|
||||
Where=/mnt/mastodon
|
||||
Type=nfs
|
||||
Options=defaults
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
12
systemd/user/glances.service
Normal file
12
systemd/user/glances.service
Normal file
@ -0,0 +1,12 @@
|
||||
[Unit]
|
||||
Description=Glances
|
||||
After=network.target
|
||||
AssertFileIsExecutable=/home/jas/.local/bin/glances
|
||||
|
||||
[Service]
|
||||
ExecStart=/home/jas/.local/bin/glances -s
|
||||
Restart=always
|
||||
RemainAfterExit=no
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
Loading…
Reference in New Issue
Block a user