176 lines
7.3 KiB
Plaintext
176 lines
7.3 KiB
Plaintext
# ~/.profile: executed by Bourne-compatible login shells
|
|
# Engine (Hetzner) - goku
|
|
# Last updated: 2026-07-18
|
|
|
|
# ── PATH ──────────────────────────────────────────────────────────
|
|
if [ -d "$HOME/bin" ]; then
|
|
PATH="$HOME/bin:$PATH"
|
|
fi
|
|
if [ -d "$HOME/.local/bin" ]; then
|
|
PATH="$HOME/.local/bin:$PATH"
|
|
fi
|
|
if [ -d "$HOME/.cargo/bin" ]; then
|
|
PATH="$HOME/.cargo/bin:$PATH"
|
|
fi
|
|
if [ -d "$HOME/.npm-global/bin" ]; then
|
|
PATH="$HOME/.npm-global/bin:$PATH"
|
|
fi
|
|
if [ -d "$HOME/.bun/bin" ]; then
|
|
PATH="$HOME/.bun/bin:$PATH"
|
|
fi
|
|
if [ -d "$HOME/.opencode/bin" ]; then
|
|
PATH="$HOME/.opencode/bin:$PATH"
|
|
fi
|
|
if [ -d "$HOME/go/bin" ]; then
|
|
PATH="$HOME/go/bin:$PATH"
|
|
fi
|
|
if [ -d "$HOME/.local/go/bin" ]; then
|
|
PATH="$HOME/.local/go/bin:$PATH"
|
|
fi
|
|
|
|
# ── Editor ───────────────────────────────────────────────────────
|
|
EDITOR=vim
|
|
VISUAL=vim
|
|
export EDITOR VISUAL
|
|
|
|
# ── Locale ───────────────────────────────────────────────────────
|
|
export LANG=en_US.UTF-8
|
|
export LC_ALL=en_US.UTF-8
|
|
|
|
# ── Shell options ────────────────────────────────────────────────
|
|
HISTSIZE=10000
|
|
HISTFILESIZE=20000
|
|
HISTTIMEFORMAT="%F %T "
|
|
HISTCONTROL=ignoredups:ignorespace
|
|
shopt -s histappend checkwinsize cdspell dirspell autocd
|
|
|
|
# ── Cargo ────────────────────────────────────────────────────────
|
|
. "$HOME/.cargo/env"
|
|
|
|
# ── Library path ─────────────────────────────────────────────────
|
|
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/bin
|
|
|
|
# ── Source bashrc (aliases, functions, prompt) ───────────────────
|
|
if [ "$BASH" ]; then
|
|
if [ -f ~/.bashrc ]; then
|
|
. ~/.bashrc
|
|
fi
|
|
fi
|
|
|
|
# ── Docker shortcuts ─────────────────────────────────────────────
|
|
alias d='docker'
|
|
alias dc='docker compose'
|
|
alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'
|
|
alias dsa='docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'
|
|
alias dlog='docker logs -f'
|
|
alias di='docker images'
|
|
alias dexec='docker exec -it'
|
|
alias dprune='docker system prune -af --volumes'
|
|
alias dup='docker compose up -d'
|
|
alias ddown='docker compose down'
|
|
alias dtop='docker stats --no-stream'
|
|
alias dstop-all='docker stop $(docker ps -q)'
|
|
alias dip="docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}} {{end}}'"
|
|
alias dwatch='watch -n2 "docker ps --format \"table {{.Names}}\t{{.Status}}\t{{.Ports}}\""'
|
|
|
|
# ── System ───────────────────────────────────────────────────────
|
|
alias df='df -h'
|
|
alias du='du -sh'
|
|
alias free='free -h'
|
|
alias psg='ps aux | grep'
|
|
alias cpu='ps aux --sort=-%cpu | head -10'
|
|
alias mem='ps aux --sort=-%mem | head -10'
|
|
alias ports='ss -tlnp'
|
|
alias top='htop'
|
|
alias myip='curl -s ifconfig.me 2>/dev/null || curl -s https://api.ipify.org'
|
|
alias disk-usage='du -sh /* 2>/dev/null | sort -rh | head -10'
|
|
|
|
# ── Network ──────────────────────────────────────────────────────
|
|
alias ping='ping -c 4'
|
|
alias wg-show='wg show'
|
|
alias wg-stats='wg show wg0 | grep -E "transfer|latest handshake|endpoint"'
|
|
|
|
# ── Navigation ───────────────────────────────────────────────────
|
|
alias ..='cd ..'
|
|
alias ...='cd ../..'
|
|
alias ....='cd ../../..'
|
|
alias ll='ls -alF'
|
|
alias la='ls -A'
|
|
alias lt='ls -ltr'
|
|
alias l='ls -CF'
|
|
|
|
# ── Git ──────────────────────────────────────────────────────────
|
|
alias gs='git status'
|
|
alias gl='git log --oneline --graph -20'
|
|
alias gc='git commit -m'
|
|
alias gp='git push'
|
|
alias gpl='git pull'
|
|
alias gd='git diff'
|
|
alias gco='git checkout'
|
|
alias gb='git branch'
|
|
|
|
# ── Tmux ─────────────────────────────────────────────────────────
|
|
alias tm='tmux new -s'
|
|
alias tma='tmux attach -t'
|
|
alias tml='tmux ls'
|
|
alias tmk='tmux kill-session -t'
|
|
|
|
# ── Forge shortcuts (from original bashrc) ───────────────────────
|
|
alias ops="mprocs -c ~/forge/forge-mprocs.yaml"
|
|
alias threads="bash ~/forge/nexus/bin/forge-worker.sh"
|
|
|
|
# ── WireGuard / network ──────────────────────────────────────────
|
|
alias wgo='wg show wg0'
|
|
alias wg-peers='wg show wg0 peers'
|
|
alias wg-latest='wg show wg0 | grep -A3 "latest handshake"'
|
|
alias wg-transfer='wg show wg0 | grep transfer'
|
|
|
|
# ── Functions ────────────────────────────────────────────────────
|
|
|
|
# Full docker inspect
|
|
dipall() {
|
|
docker inspect "$1" --format "\
|
|
Name: {{.Name}}
|
|
Status: {{.State.Status}}
|
|
IP: {{range .NetworkSettings.Networks}}{{.IPAddress}} {{end}}
|
|
Image: {{.Config.Image}}
|
|
Ports: {{range $p, $c := .NetworkSettings.Ports}}{{$p}} {{end}}"
|
|
}
|
|
|
|
# Docker shell
|
|
dsh() {
|
|
docker exec -it "$1" sh -c 'if command -v bash >/dev/null 2>&1; then bash; else sh; fi' 2>/dev/null || \
|
|
docker exec -it "$1" sh
|
|
}
|
|
|
|
# SSH with keys
|
|
sshw() {
|
|
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 -i ~/.ssh/id_ed25519 "$@"
|
|
}
|
|
|
|
sshw-root() {
|
|
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 -i ~/.ssh/id_ed25519 "root@$1" "$2"
|
|
}
|
|
|
|
# Quick wireguard ping all peers
|
|
wg-ping() {
|
|
for ip in 10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.4 10.0.0.5; do
|
|
ping -c 1 -W 1 $ip 2>/dev/null | grep -q "1 received" && echo " $ip OK" || echo " $ip DEAD"
|
|
done
|
|
}
|
|
|
|
# ── Login banner ─────────────────────────────────────────────────
|
|
echo ""
|
|
echo "========================================"
|
|
echo " engine (Hetzner) - goku"
|
|
echo " Uptime: $(uptime -p 2>/dev/null || echo "?")"
|
|
echo " Load: $(cat /proc/loadavg | cut -d' ' -f1-3)"
|
|
echo " Disk: $(df -h / | tail -1 | awk '{print $3 " / " $2 " (" $5 ")"}')"
|
|
echo " RAM: $(free -h | grep Mem | awk '{print $3 " / " $2}')"
|
|
echo " Docker: $(docker ps -q 2>/dev/null | wc -l) running / $(docker ps -aq 2>/dev/null | wc -l) total"
|
|
if command -v wg >/dev/null 2>&1 && wg show wg0 >/dev/null 2>&1; then
|
|
echo " WG: $(wg show wg0 2>/dev/null | grep -c "peer:" 2>/dev/null) peers, $(wg show wg0 2>/dev/null | grep "latest handshake" | wc -l) connected"
|
|
fi
|
|
echo "========================================"
|
|
echo ""
|