d4d38ad9013f069322df968214daa2555f4e87b1
Once the archive verifies, USB detection runs (so a stick plugged in while
the backup ran is found): mounted removable storage is auto-detected via
lsblk -J + a recursive jq filter (rm, mounted, type part|disk — JSON makes
spacey mountpoints safe), or BACKUP_USB_ROOT pins a fixed stick and skips
detection. None mounted → one re-scan prompt ('s' skips, EOF from cron
skips silently, rc stays 0); one stick → y/N confirm; several → numbered
pick (0 = skip). The copy lands in <usb>/backups/ (mkdir -p, chmod 600
best-effort — a vfat chmod failure warns, never fails the copy) and the
transfer is proven 100% by sha256 source-vs-copy before any success is
announced; a mismatch warns with both hashes, notifies 'USB copy FAILED',
and exits 1. The ERR trap is re-armed before the USB phase so a copy
failure no longer notifies 'Backup FAILED'. Docs: usage() Environment,
POS.md backup row, howto/system.md (USB section + env table + mismatch
troubleshooting), DEV.md system.env list. Stub suite
(/tmp/opencode/backup-test, HOME-isolated, sudo/gpg/lsblk/sender stubs,
corrupting-cp + vfat-chmod overrides, per-test lsblk JSON fixtures):
40/40 green.
Linux_post_install — Personal Bootstrap & Homelab Toolkit
One command turns a bare Debian/Ubuntu install into a fully productive machine.
What is this
After reinstalling Linux you usually need to install packages, set up SSH, configure a firewall, and install apps. This repo automates all of that in one go.
It is a personal toolkit — a bootstrap script, a unified pos CLI for everyday tasks, optional app installers, and self-hosted services via ScaleTail + Tailscale.
What you get:
- 25+ system packages installed automatically
- The
posCLI: AI (Gemini chat), network, Docker (compose + vbox VMs), media, system, SSH, share (USB over network + NFS), communication (Telegram), and entertainment (public-API plugins → Telegram) tools - Wi-Fi hotspot tools (
create_ap,wihotspot-gui) viapos network hotspot pos tree— browse the whole CLI: categories, commands, and subcommands- 15 optional desktop apps (VS Code, Brave, OBS, Tailscale, …) — pick what you want
- 119+ self-hosted services with Tailscale access (Jellyfin, Home Assistant, …)
- systemd services for SSH agent, boot-time automation, and a daily Telegram health digest (
pos system health) - Everything lands in
/usr/local/bin/— you can delete the repo after install
Quick Start
git clone https://gitea.skink-platy.ts.net/admin/Linux_post_install.git
cd Linux_post_install
./install.sh # core: packages + CLI + services + ScaleTail
./install.sh --feature # also install features/ scripts (asks before overwriting)
./install.sh --apps # also install optional desktop apps (interactive)
| Flag | What it does |
|---|---|
--feature |
Install features/ scripts to /usr/local/bin/, sets their flags |
--apps |
Interactive app picker after core install |
--full |
Core install + all apps (non-interactive) |
--dry-run |
Preview without executing |
--skip <phase> |
Skip a phase: preinstall, scripts, postinstall, scalepoint, apps |
--steps <spec> |
Run only specific phases, e.g. --steps 1,3 |
--no-color |
Disable colored output |
Documentation
| Topic | Where |
|---|---|
| Docs index | DOC/README.md |
pos HOW-TO guides (recipes + troubleshooting) |
DOC/HOWTO.md |
| Core scripts (installer, libs, features) — how they work + config | DOC/SCRIPTS.md |
pos CLI reference (all commands, compose config, wrappers) |
DOC/POS.md |
| Optional apps (picker + full catalog) | DOC/APPS.md |
| Systemd services & bash completion | DOC/SYSTEMD.md |
| Developer guide (add tools/apps/features) | DOC/DEV.md |
| Algorithm diagrams | DOC/algorithm.md |
Description
Languages
Shell
99.9%