2026-05-17 22:17:44 +00:00
Debian setup script
This repository contains a simple idempotent-ish script to provision a Debian-based machine after a rebuild.
Files
- setup-debian.sh: main script to run (creates/updates ~/.bashrc entries)
2026-05-17 22:26:57 +00:00
- setup-k8s-workspace.sh: configures kubectl context, k9s defaults, and bootstraps Flux to Git
- .env.example: template for Kubernetes workspace environment variables
2026-05-17 22:17:44 +00:00
Usage
1. Make the script executable and run it as your user (it will use sudo when needed):
```bash
chmod +x ~/setup-debian.sh
~/setup-debian.sh
```
Optional: set your global Git identity during setup:
```bash
GIT_USER_NAME="Your Name" GIT_USER_EMAIL="you@example.com" ~/setup-debian.sh
```
or run with sudo:
```bash
sudo bash ~/setup-debian.sh
```
What the script does
- Updates apt and installs requested packages (curl, net-tools, ncdu, tmux, htop, nala, neofetch, nfs-common, git, neovim, etc.)
- Installs `snapd` and installs Bitwarden via snap
- Attempts to detect a unix socket (ssh/bitwarden) and export `SSH_AUTH_SOCK` to `~/.bashrc`
- Installs VS Code via snap
- Installs latest `kubectl` binary and enables bash completion + aliases (`k`)
2026-05-17 22:26:57 +00:00
- Installs latest `k9s` binary
2026-05-17 22:17:44 +00:00
- Adds a `fgk` alias for `flux get kustomizations all`
- Adds arrow-key history search (type prefix then Up/Down)
Notes
- The script attempts to detect a Bitwarden SSH agent socket but may not find it automatically depending on how Bitwarden exposes it; if needed, manually set `SSH_AUTH_SOCK` in your shell to the socket path.
- `flux` must be installed separately if you need `fgk` to work.
2026-05-17 22:26:57 +00:00
Kubernetes workspace setup
1. Ensure `kubectl` , `k9s` , and `flux` are installed (the main setup script installs these).
2. Copy and edit the env template:
```bash
cp .env.example .env
```
3. Set values in `.env` (default provider is `gitea` , compatible with Forgejo).
4. Run the workspace bootstrap script:
```bash
chmod +x ./setup-k8s-workspace.sh
./setup-k8s-workspace.sh
```
Example `.env` values for Forgejo (`FLUX_PROVIDER=gitea`):
```bash
KUBECONFIG_SOURCE="$HOME/.kube/my-cluster-config" \
KUBE_CONTEXT="my-cluster" \
FLUX_PROVIDER="gitea" \
FLUX_GIT_URL="ssh://git@forgejo.example.com:30222/org/platform-gitops.git" \
FLUX_GIT_BRANCH="main" \
FLUX_GIT_PATH="clusters/my-cluster" \
FLUX_GIT_PRIVATE_KEY_FILE="$HOME/.ssh/id_ed25519" \
./setup-k8s-workspace.sh
```
Environment variables for setup-k8s-workspace.sh
- `ENV_FILE` (default `.env` ): env file to load before execution
- `KUBECONFIG_SOURCE` (optional): source kubeconfig to copy to `~/.kube/config`
- `KUBE_CONTEXT` (optional): context to switch to before checks/bootstrap
- `APPLY_K9S_CONFIG` (default `true` ): write `~/.config/k9s/config.yaml` if missing
- `FORCE_K9S_CONFIG` (default `false` ): overwrite existing k9s config
- `FLUX_BOOTSTRAP` (default `true` ): run or skip Flux bootstrap
- `FLUX_PROVIDER` (default `gitea` ): `gitea` , `forgejo` , `github` , or `gitlab`
- `FLUX_GIT_BRANCH` (default `main` ): branch for Flux manifests
- `FLUX_GIT_PATH` (default `clusters/<current-context>` ): path for Flux manifests
- `FLUX_NAMESPACE` (default `flux-system` ): Flux namespace
- `FLUX_GIT_URL` (required for `gitea` /`forgejo`): repo URL for `flux bootstrap git`
- `FLUX_GIT_PRIVATE_KEY_FILE` (default `~/.ssh/id_ed25519` ): SSH key for `gitea` /`forgejo`
- `FLUX_INSECURE_HOSTKEYS` (default `false` ): pass `--insecure-hostkey` for `gitea` /`forgejo`
- `FLUX_GITHUB_OWNER` , `FLUX_GITHUB_REPO` (required for `github` )
- `GITHUB_TOKEN` (required in environment for `github` )
- `FLUX_GITLAB_HOSTNAME` (default `gitlab.com` ), `FLUX_GITLAB_OWNER` , `FLUX_GITLAB_REPO` (required for `gitlab` )
- `GITLAB_TOKEN` (required in environment for `gitlab` )