onboarding/applications.md

1625 lines
37 KiB
Markdown

# Development Machine Applications - Complete Installation Guide
This comprehensive guide details ALL 60+ applications and tools installed on development machines via Ansible playbooks.
Each application includes purpose, usage examples, and practical commands to help you get the most out of your
development environment.
## 📋 **Navigation**
- [Base System Tools](#base-system-tools) (17 applications)
- [SSH & Security](#ssh--security) (Multiple tools)
- [Development Tools](#development-tools) (6 applications)
- [Shell Environment](#shell-environment) (6 tools)
- [Desktop Applications](#desktop-applications) (4 applications)
- [IDE & Code Editors](#ide--code-editors) (2 applications)
- [Container Platform](#container-platform) (5 components)
- [System Monitoring](#system-monitoring) (14 applications)
- [Backup Tools](#backup-tools) (4 applications)
- [VPN & Networking](#vpn--networking) (2 components)
- [Custom Scripts](#custom-scripts) (4 scripts)
---
## Base System Tools
Essential command-line utilities and system tools that form the foundation of any development environment.
### curl
**Purpose**: Command-line tool for transferring data with URLs
**Use**: Download files, test APIs, send HTTP requests, and transfer data between servers.
**Syntax**: `curl [options] [URL]`
**Examples**:
```bash
# Download a file
curl -O https://example.com/file.zip
# Test API endpoints
curl -X GET https://api.github.com/users/octocat
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com
# Follow redirects and show headers
curl -L -I https://github.com
# Download with progress bar
curl --progress-bar -O https://example.com/largefile.zip
```
### wget
**Purpose**: Network downloader for retrieving files from web servers
**Use**: Download files, mirror websites, resume interrupted downloads.
**Syntax**: `wget [options] [URL]`
**Examples**:
```bash
# Download a file
wget https://example.com/file.tar.gz
# Download recursively (mirror site)
wget -r -np -k https://example.com/docs/
# Resume interrupted download
wget -c https://example.com/largefile.iso
# Download in background
wget -b https://example.com/file.zip
```
### unzip
**Purpose**: Extract files from ZIP archives
**Use**: Decompress ZIP files, view archive contents, extract specific files.
**Syntax**: `unzip [options] archive.zip`
**Examples**:
```bash
# Extract all files
unzip archive.zip
# Extract to specific directory
unzip archive.zip -d /target/directory/
# List contents without extracting
unzip -l archive.zip
# Extract specific files
unzip archive.zip file1.txt file2.txt
```
### xclip
**Purpose**: Command-line clipboard interface
**Use**: Copy/paste text between terminal and GUI applications.
**Syntax**: `xclip [options]`
**Examples**:
```bash
# Copy text to clipboard
echo "Hello World" | xclip -sel clipboard
# Copy file contents to clipboard
xclip -sel clipboard < file.txt
# Paste from clipboard
xclip -sel clipboard -o
# Copy command output
ls -la | xclip -sel clipboard
```
### tree
**Purpose**: Display directory structure in tree format
**Use**: Visualize file system hierarchy, understand project structure.
**Syntax**: `tree [options] [directory]`
**Examples**:
```bash
# Show current directory tree
tree
# Show with file sizes
tree -s
# Show hidden files
tree -a
# Limit depth
tree -L 2
# Output to file
tree > project_structure.txt
```
### net-tools
**Purpose**: Collection of networking utilities
**Use**: Network configuration and troubleshooting (netstat, ifconfig, route).
**Examples**:
```bash
# Show network interfaces
ifconfig
# Show listening ports
netstat -tulpn
# Show routing table
route -n
# Show network statistics
netstat -s
```
### jq
**Purpose**: Command-line JSON processor
**Use**: Parse, filter, and manipulate JSON data in shell scripts and pipelines.
**Syntax**: `jq [options] 'filter' [file]`
**Examples**:
```bash
# Pretty print JSON
echo '{"name":"John","age":30}' | jq '.'
# Extract specific field
curl -s https://api.github.com/users/octocat | jq '.name'
# Filter arrays
echo '[{"name":"John"},{"name":"Jane"}]' | jq '.[].name'
# Complex filtering
jq '.users[] | select(.age > 25) | .name' users.json
```
### ripgrep (rg)
**Purpose**: Ultra-fast text search tool
**Use**: Search for patterns in files, replace grep with better performance.
**Syntax**: `rg [options] pattern [path]`
**Examples**:
```bash
# Search for text in current directory
rg "function"
# Search in specific file types
rg "TODO" --type js
# Case insensitive search
rg -i "error"
# Show line numbers and context
rg -n -C 3 "import"
# Search and replace preview
rg "old_function" --replace "new_function"
```
### fd-find (fd)
**Purpose**: Fast and user-friendly alternative to find
**Use**: Search for files and directories with simple syntax.
**Syntax**: `fd [options] pattern [path]`
**Examples**:
```bash
# Find files by name
fd config
# Find by extension
fd -e js
# Find directories only
fd -t d src
# Execute command on results
fd -e log -x rm {}
# Search hidden files
fd -H .env
```
### yq (via snap)
**Purpose**: YAML processor and query tool
**Use**: Parse, filter, and manipulate YAML files.
**Syntax**: `yq [options] 'query' [file]`
**Examples**:
```bash
# Pretty print YAML
yq '.' config.yaml
# Extract specific field
yq '.database.host' config.yaml
# Convert YAML to JSON
yq -o json config.yaml
# Update YAML values
yq '.port = 8080' config.yaml
```
### btop (via snap)
**Purpose**: Modern system monitor and process viewer
**Use**: Monitor system resources, processes, and network activity with beautiful interface.
**Examples**:
```bash
# Launch btop
btop
# Key shortcuts within btop:
# 'q' - quit
# 'm' - toggle memory view
# 'n' - toggle network view
# 't' - toggle tree view
# '+/-' - increase/decrease update interval
```
### Additional Base System Tools
These monitoring and system tools are also included in the base installation:
#### **iotop**
**Purpose**: I/O usage monitoring
**Use**: Monitor disk read/write activity by process for performance analysis.
**Syntax**: `iotop [options]`
**Examples**:
```bash
# Monitor I/O in real-time
sudo iotop
# Show only processes doing I/O
sudo iotop -o
# Show accumulated I/O
sudo iotop -a
# Non-interactive mode
sudo iotop -b -n 3
```
#### **nethogs**
**Purpose**: Network bandwidth monitoring per process
**Use**: See which applications are using network bandwidth in real-time.
**Syntax**: `nethogs [options] [device]`
**Examples**:
```bash
# Monitor network usage
sudo nethogs
# Monitor specific interface
sudo nethogs eth0
# Monitor with custom delay
sudo nethogs -d 5
# Monitor multiple interfaces
sudo nethogs eth0 wlan0
```
#### **logwatch**
**Purpose**: Log analysis and reporting
**Use**: Automatically analyze system logs and generate summary reports.
**Syntax**: `logwatch [options]`
**Examples**:
```bash
# Generate today's report
logwatch --detail low --mailto admin@example.com
# Generate report for date range
logwatch --range yesterday --detail high
# View specific service logs
logwatch --service sshd --detail high
```
---
## SSH & Security
Tools for secure remote access, system protection, and network security.
### openssh-server
**Purpose**: SSH daemon server for secure remote access
**Use**: Enables secure shell connections to your machine from other systems.
**Syntax**: Service management via systemctl
**Examples**:
```bash
# Check SSH service status
sudo systemctl status ssh
# Start/stop/restart SSH service
sudo systemctl start ssh
sudo systemctl restart ssh
# Connect to remote server
ssh username@hostname
ssh -p 2222 user@server.com # Custom port
```
### ufw (Uncomplicated Firewall)
**Purpose**: Simple firewall management
**Use**: Protect your system by controlling network traffic with easy rules.
**Syntax**: `ufw [options] [rule]`
**Examples**:
```bash
# Enable/disable firewall
sudo ufw enable
sudo ufw disable
# Allow/deny ports
sudo ufw allow 22 # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw deny 23 # Telnet
# Check status
sudo ufw status verbose
```
### fail2ban
**Purpose**: Intrusion prevention system
**Use**: Automatically bans IP addresses showing suspicious activity.
**Syntax**: `fail2ban-client [options]`
**Examples**:
```bash
# Check status
sudo fail2ban-client status
# Check specific jail
sudo fail2ban-client status sshd
# Unban IP address
sudo fail2ban-client set sshd unbanip 192.168.1.100
# Start/stop service
sudo systemctl restart fail2ban
```
---
## Development Tools
Essential tools for software development including version control, programming languages, and build systems.
### git
**Purpose**: Distributed version control system
**Use**: Track code changes, collaborate with teams, manage project history.
**Syntax**: `git [command] [options]`
**Examples**:
```bash
# Initialize repository
git init
# Clone repository
git clone https://github.com/user/repo.git
# Stage and commit changes
git add .
git commit -m "Add new feature"
# Push to remote
git push origin main
# Create and switch branch
git checkout -b feature-branch
# Merge branches
git merge feature-branch
# View commit history
git log --oneline --graph
```
### nodejs & npm
**Purpose**: JavaScript runtime and package manager
**Use**: Run JavaScript outside browsers, manage project dependencies.
**Syntax**: `node [script]` / `npm [command]`
**Examples**:
```bash
# Run JavaScript file
node app.js
# Initialize new project
npm init -y
# Install dependencies
npm install express
npm install -g typescript
# Run scripts
npm start
npm test
# Check installed packages
npm list
npm outdated
```
### python3 & pip3
**Purpose**: Python programming language and package installer
**Use**: Python development, scripting, data analysis, web development.
**Syntax**: `python3 [script]` / `pip3 [command]`
**Examples**:
```bash
# Run Python script
python3 script.py
# Interactive Python shell
python3
# Install packages
pip3 install requests
pip3 install -r requirements.txt
# List installed packages
pip3 list
pip3 show requests
# Create virtual environment
python3 -m venv myenv
source myenv/bin/activate
```
### build-essential
**Purpose**: Essential compilation tools for building software
**Use**: Compile C/C++ programs, build native modules, install packages from source.
**Examples**:
```bash
# Compile C program
gcc -o program program.c
# Compile C++ program
g++ -o program program.cpp
# Build with make
make
make install
# Check compiler versions
gcc --version
g++ --version
```
---
## Shell Environment
Advanced shell configuration and terminal multiplexing tools for enhanced productivity.
### zsh
**Purpose**: Advanced shell with powerful features
**Use**: Enhanced command-line experience with better completion and customization.
**Examples**:
```bash
# Switch to zsh
chsh -s /usr/bin/zsh
# Check current shell
echo $SHELL
# Zsh-specific features:
# - Better tab completion
# - Glob patterns: **/*.js
# - Parameter expansion: ${file%.txt}.bak
```
### tmux
**Purpose**: Terminal multiplexer
**Use**: Split terminal windows, create persistent sessions, manage multiple terminal sessions.
**Syntax**: `tmux [command]`
**Examples**:
```bash
# Start new session
tmux new-session -s mysession
# List sessions
tmux list-sessions
# Attach to session
tmux attach-session -t mysession
# Detach from session (inside tmux)
Ctrl+b d
# Split window horizontally
Ctrl+b %
# Split window vertically
Ctrl+b "
# Switch between panes
Ctrl+b arrow-keys
```
### fzf
**Purpose**: Command-line fuzzy finder
**Use**: Interactively search files, command history, and process lists.
**Examples**:
```bash
# Find and edit file
vim $(fzf)
# Search command history
history | fzf
# Find and kill process
kill $(ps aux | fzf | awk '{print $2}')
# Search in current directory
find . -type f | fzf
# Integration with other commands
git log --oneline | fzf
```
### Oh My Zsh
**Purpose**: Zsh configuration framework
**Use**: Manage zsh configuration with themes and plugins.
**Examples**:
```bash
# Update Oh My Zsh
omz update
# List available themes
omz theme list
# Set theme
omz theme set powerlevel10k
# List plugins
omz plugin list
# Enable plugin
# Edit ~/.zshrc and add to plugins array
```
### **Essential Oh My Zsh Plugins Guide**
The following plugins significantly enhance your shell experience. Add them to your `~/.zshrc` file:
```bash
plugins=(git sudo z colored-man-pages fzf zsh-syntax-highlighting zsh-autosuggestions web-search copypath)
```
#### **git**
**Purpose**: Git integration and aliases
**Usage**: Provides shortcuts and status information for Git repositories
```bash
# Aliases provided:
ga # git add
gst # git status
gc # git commit
gp # git push
gl # git pull
gco # git checkout
gbr # git branch
# Branch info in prompt automatically shown
# Works in any Git repository
```
##### **sudo**
**Purpose**: Easily retry commands with sudo
**Usage**: Press `ESC` twice to add sudo to the beginning of current command
```bash
# Type a command that needs sudo
apt update
# Press ESC ESC to get:
sudo apt update
# Also works with previous command
# Just press ESC ESC on empty line
```
##### **z**
**Purpose**: Smart directory jumping based on frequency
**Usage**: Jump to frequently used directories with partial names
```bash
# After visiting directories, z learns your patterns
cd ~/Documents/code/projects/myapp
cd ~/Downloads
cd ~/Documents/code/projects/myapp # visited again
# Later, jump directly:
z myapp # jumps to ~/Documents/code/projects/myapp
z doc # jumps to ~/Documents
z proj # jumps to ~/Documents/code/projects
# List all tracked directories
z -l
```
##### **colored-man-pages**
**Purpose**: Colorized manual pages for better readability
**Usage**: Automatic - man pages now have syntax highlighting
##### **fzf**
**Purpose**: Fuzzy finder integration with zsh
**Usage**: Enhanced command-line searching and filtering
```bash
# Search command history with fzf
Ctrl+R # Interactive history search
# Search files
Ctrl+T # Insert selected files into command line
# Change directory
Alt+C # cd into selected directory
```
##### **zsh-syntax-highlighting**
**Purpose**: Real-time command syntax highlighting
**Usage**: Automatic visual feedback while typing commands
- Valid commands appear in green
- Invalid commands appear in red
- Paths, strings, and options are color-coded
##### **zsh-autosuggestions**
**Purpose**: Fish-like intelligent command suggestions
**Usage**: Shows command suggestions based on history
```bash
# Automatic features:
# - Gray suggestions appear as you type
# - Press → (right arrow) to accept suggestion
# - Press Ctrl+f to accept suggestion
# - Press Alt+f to accept one word
```
##### **web-search**
**Purpose**: Quick web searches from command line
**Usage**: Search various websites directly from terminal
```bash
# Search engines available:
google "search term" # Google search
duckduckgo "search term" # DuckDuckGo search
github "repository name" # GitHub search
stackoverflow "question" # Stack Overflow search
# Examples:
google "python tutorial"
github "awesome-zsh-plugins"
stackoverflow "zsh configuration"
```
##### **copypath**
**Purpose**: Copy file/directory paths to clipboard
**Usage**: Quickly copy paths for use in other applications
```bash
# Copy current directory path
copypath
# Copy specific file path
copypath filename.txt
# Copy absolute path
copypath /full/path/to/file
```
### Powerlevel10k
**Purpose**: Zsh theme with rich prompt customization
**Use**: Beautiful and informative command prompt with git status, system info.
**Examples**:
```bash
# Configure theme
p10k configure
# Show configuration wizard
p10k configure
# Instant prompt (in .zshrc)
# Enable Powerlevel10k instant prompt
```
### zsh-syntax-highlighting
**Purpose**: Real-time syntax highlighting for zsh commands
**Use**: Provides visual feedback by highlighting commands as you type them.
**Features**:
- Valid commands appear in green
- Invalid commands appear in red
- Strings, options, and paths are color-coded
- Works automatically after installation
### zsh-autosuggestions
**Purpose**: Fish-like intelligent autosuggestions for zsh
**Use**: Suggests commands based on your command history as you type.
**Examples**:
```bash
# These work automatically after installation:
# - Type partial command, see gray suggestion
# - Press → (right arrow) to accept full suggestion
# - Press Ctrl+f to accept suggestion
# - Press Alt+f to accept one word
# - Press Ctrl+e to accept to end of line
# Example: typing 'git' might suggest 'git status' in gray
```
### Custom Aliases & Functions
The system comes with a comprehensive set of aliases to improve productivity. Here are the key categories:
#### **Navigation & File Operations**
```bash
# Quick navigation
alias ..="cd .." # Go up one directory
alias ...="cd ../.." # Go up two directories
alias ....="cd ../../.." # Go up three directories
alias cd..="cd .." # Handle common typo
alias h="cd ~" # Go to home directory
alias dc="cd ~/Documents/code" # Go to code directory
# File listing with colors
alias ls="ls --color=auto" # Colorized ls output
# Clear screen shortcut
alias c="clear" # Quick clear
```
#### **System Information & Monitoring**
```bash
# Disk and memory usage (human readable)
alias df="df -h" # Disk usage: df -h shows sizes in KB, MB, GB
alias du="du -h" # Directory usage: du -h /path shows folder sizes
alias free="free -h" # Memory usage: free -h shows RAM/swap usage
# Process management
alias ps="ps aux" # Show all processes: ps aux | grep process_name
alias cpu="lscpu" # CPU information: shows cores, architecture, etc.
alias top="btop" # Use modern btop instead of top
alias mem="free -m" # Memory in MB: quick memory check
alias ports="ss -tulpn" # Open ports: see what's listening on which ports
# Examples:
# df -h # Check disk space
# du -h ~/Downloads # Check Downloads folder size
# free -h # Check memory usage
# ports | grep :80 # Check if port 80 is in use
```
#### **Network Information**
```bash
# IP address information
alias myip="curl -s http://ipecho.net/plain; echo" # Get public IP
alias localip="ip route get 1.2.3.4 | awk '{print $7}'" # Get local IP
# Examples:
# myip # Shows: 203.0.113.42 (your public IP)
# localip # Shows: 192.168.1.100 (your local network IP)
```
#### **Development Tools**
```bash
# Python shortcuts
alias py="python3" # Quick python3 access
alias pip="pip3" # Use pip3 by default
alias venv="python3 -m venv" # Create virtual environment
alias activate="source venv/bin/activate" # Activate venv
# Examples:
# py script.py # Run Python script
# venv myproject # Create virtual environment
# activate # Activate the venv in current directory
# pip install requests # Install package in active venv
```
#### **Docker Shortcuts**
```bash
# Docker command shortcuts
alias d="docker" # Short docker command
alias dc="docker-compose" # Docker Compose shortcut
alias dcu="docker-compose up -d" # Start containers in background
alias dcd="docker-compose down" # Stop and remove containers
alias dcb="docker-compose build" # Build containers
alias dps="docker ps" # Show running containers
alias di="docker images" # Show docker images
# Examples:
# dps # Quick check of running containers
# dcu # Start your docker-compose project
# dcd # Stop your docker-compose project
# d exec -it container_name bash # Enter running container
```
#### **Package Management**
```bash
# Debian/Ubuntu package management
alias update="sudo apt update && sudo apt upgrade -y" # Update system
alias install="sudo apt install" # Install package
alias remove="sudo apt remove" # Remove package
alias search="apt search" # Search for packages
# Examples:
# update # Update all system packages
# install htop # Install htop package
# search python # Find python-related packages
# remove old-package # Uninstall package
```
#### **File Permissions & Ownership**
```bash
# Permission shortcuts
alias chmox="chmod +x" # Make file executable
alias own="sudo chown -R $USER:$USER" # Take ownership of files
# Examples:
# chmox script.sh # Make script executable
# own ~/Downloads # Take ownership of Downloads folder
```
#### **Date & Time**
```bash
# Date and time shortcuts
alias now="date +'%Y-%m-%d %H:%M:%S'" # Current timestamp
alias today="date +'%Y-%m-%d'" # Today's date
# Examples:
# now # Shows: 2023-12-01 14:30:45
# today # Shows: 2023-12-01
```
#### **Configuration Management**
```bash
# Zsh configuration shortcuts
alias reload="source ~/.zshrc && echo 'ZSH config reloaded from ~/.zshrc'"
alias editrc="nano ~/.zshrc" # Edit zsh configuration
# Examples:
# editrc # Open .zshrc in nano editor
# reload # Reload zsh configuration after changes
```
#### **Node.js Development**
```bash
# Node.js project shortcuts
alias nfresh="rm -rf node_modules/ package-lock.json && npm install"
# Examples:
# nfresh # Clean install - removes node_modules and reinstalls
# # Useful when package-lock.json conflicts occur
```
### Environment Variables & Path Configuration
The shell environment includes several important environment variables:
```bash
# Node Version Manager (NVM)
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
# Python pipx tools path
export PATH="$PATH:/home/beast/.local/bin"
# Examples of using these:
# nvm install 18 # Install Node.js version 18
# nvm use 16 # Switch to Node.js version 16
# nvm list # List installed Node.js versions
```
### Pro Tips for Using Aliases
```bash
# View all aliases
alias # Show all defined aliases
# Create temporary alias (session only)
alias ll="ls -la" # Create ll alias for detailed listing
# Add permanent alias to ~/.zshrc
echo 'alias myalias="command"' >> ~/.zshrc
reload # Reload to apply changes
# Use aliases in combination
dps | grep nginx # Show only nginx containers
ports | grep :3000 # Check if port 3000 is in use
update && install docker # Update system then install docker
```
---
## Desktop Applications
GUI applications for productivity, web browsing, and document management.
### Brave Browser
**Purpose**: Privacy-focused web browser
**Use**: Web browsing with built-in ad blocking and privacy protection.
**Features**:
- Built-in ad blocker
- Tor browsing mode
- Cryptocurrency rewards
- Enhanced privacy controls
### LibreOffice
**Purpose**: Complete office suite
**Use**: Document creation, spreadsheets, presentations, and more.
**Components**:
- Writer (documents)
- Calc (spreadsheets)
- Impress (presentations)
- Draw (graphics)
- Base (databases)
### Redshift
**Purpose**: Blue light filter for displays
**Use**: Reduce eye strain by adjusting screen color temperature based on time.
**Examples**:
```bash
# Start redshift
redshift
# Set location manually
redshift -l 40.7:-74.0 # NYC coordinates
# Set color temperature
redshift -t 6500:3500
# One-time adjustment
redshift -O 3500
```
### Evince
**Purpose**: PDF document viewer
**Use**: View PDF files, documents, and e-books.
**Features**:
- PDF viewing and navigation
- Search within documents
- Annotation support
- Print functionality
---
## IDE & Code Editors
Integrated development environments and code editors for software development.
### Visual Studio Code (via snap)
**Purpose**: Lightweight but powerful code editor
**Use**: Multi-language code editing with extensive plugin ecosystem.
**Examples**:
```bash
# Open VS Code
code
# Open specific file
code filename.js
# Open current directory
code .
# Open with specific workspace
code workspace.code-workspace
# Install extension from command line
code --install-extension ms-python.python
```
### Cursor (via snap)
**Purpose**: AI-powered code editor
**Use**: Code editing with integrated AI assistance for development.
**Features**:
- AI-powered code completion
- Natural language code generation
- Intelligent code suggestions
- Built on VS Code foundation
---
## Container Platform
Docker ecosystem for containerization and application deployment.
### Docker CE (Community Edition)
**Purpose**: Container platform for application packaging and deployment
**Use**: Create, manage, and run containers for consistent development environments.
**Examples**:
```bash
# Check Docker version
docker --version
# Run container
docker run hello-world
docker run -it ubuntu bash
# List containers
docker ps
docker ps -a
# Build image
docker build -t myapp .
# Run with port mapping
docker run -p 8080:80 nginx
# Execute command in running container
docker exec -it container_name bash
```
### Docker CLI
**Purpose**: Command-line interface for Docker
**Use**: Manage containers, images, networks, and volumes from command line.
**Examples**:
```bash
# Image management
docker images
docker pull nginx
docker rmi image_name
# Container management
docker start container_name
docker stop container_name
docker rm container_name
# System cleanup
docker system prune
docker image prune
```
### containerd.io
**Purpose**: Container runtime
**Use**: Low-level container runtime that Docker uses internally.
**Note**: Typically managed automatically by Docker, not used directly.
### Docker Buildx plugin
**Purpose**: Extended build capabilities for Docker
**Use**: Build multi-platform images and advanced build features.
**Examples**:
```bash
# Create builder instance
docker buildx create --name mybuilder --use
# Build for multiple platforms
docker buildx build --platform linux/amd64,linux/arm64 -t myapp .
# Inspect builder
docker buildx inspect
```
### Docker Compose plugin
**Purpose**: Multi-container application management
**Use**: Define and run multi-container Docker applications using YAML files.
**Examples**:
```bash
# Start services defined in docker-compose.yml
docker compose up
# Start in background
docker compose up -d
# Stop services
docker compose down
# View logs
docker compose logs
# Scale services
docker compose scale web=3
# Example docker-compose.yml:
version: '3.8'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: postgres
environment:
POSTGRES_PASSWORD: password
```
---
## System Monitoring
Comprehensive tools for monitoring system performance, network activity, and resource usage.
### htop
**Purpose**: Interactive process viewer
**Use**: Monitor system processes with enhanced interface compared to top.
**Examples**:
```bash
# Launch htop
htop
# Key shortcuts within htop:
# F1 - Help
# F2 - Setup
# F3 - Search
# F4 - Filter
# F5 - Tree view
# F6 - Sort by
# F9 - Kill process
# F10 - Quit
```
### iotop
**Purpose**: I/O usage monitoring by process
**Use**: Monitor disk read/write activity to identify I/O bottlenecks.
**Examples**:
```bash
# Monitor I/O in real-time
sudo iotop
# Show only processes doing I/O
sudo iotop -o
# Show accumulated I/O
sudo iotop -a
# Non-interactive mode
sudo iotop -b -n 3
```
### nethogs
**Purpose**: Network bandwidth monitoring per process
**Use**: See which applications are using network bandwidth.
**Examples**:
```bash
# Monitor network usage
sudo nethogs
# Monitor specific interface
sudo nethogs eth0
# Monitor with custom delay
sudo nethogs -d 5
# Monitor multiple interfaces
sudo nethogs eth0 wlan0
```
### iftop
**Purpose**: Network bandwidth monitor
**Use**: Display network usage on interface in real-time.
**Examples**:
```bash
# Monitor default interface
sudo iftop
# Monitor specific interface
sudo iftop -i eth0
# Show port numbers
sudo iftop -P
# Don't resolve hostnames
sudo iftop -n
```
### ncdu
**Purpose**: Disk usage analyzer with interactive interface
**Use**: Analyze disk space usage and identify large files/directories.
**Examples**:
```bash
# Analyze current directory
ncdu
# Analyze specific directory
ncdu /var/log
# Export results to file
ncdu -o diskusage.json
# Navigation within ncdu:
# Arrow keys - navigate
# Enter - enter directory
# 'd' - delete file/directory
# 'q' - quit
```
### dstat
**Purpose**: Versatile system statistics tool
**Use**: Monitor system performance metrics in real-time.
**Examples**:
```bash
# Basic system stats
dstat
# Show specific metrics
dstat -cdngy # cpu, disk, network, page, system
# Show top processes using CPU
dstat --top-cpu
# Show top processes using I/O
dstat --top-io
# Output to CSV
dstat --output stats.csv
```
### nmap
**Purpose**: Network discovery and security scanner
**Use**: Scan networks, discover hosts, identify open ports and services.
**Examples**:
```bash
# Scan single host
nmap 192.168.1.1
# Scan network range
nmap 192.168.1.0/24
# Scan specific ports
nmap -p 22,80,443 192.168.1.1
# Service version detection
nmap -sV 192.168.1.1
# OS detection
nmap -O 192.168.1.1
# Aggressive scan
nmap -A 192.168.1.1
```
### tcpdump
**Purpose**: Network packet analyzer
**Use**: Capture and analyze network traffic for troubleshooting.
**Examples**:
```bash
# Capture all traffic
sudo tcpdump
# Capture on specific interface
sudo tcpdump -i eth0
# Capture specific host
sudo tcpdump host 192.168.1.1
# Capture specific port
sudo tcpdump port 80
# Save to file
sudo tcpdump -w capture.pcap
# Read from file
tcpdump -r capture.pcap
```
### wireshark-common
**Purpose**: Network protocol analyzer utilities
**Use**: Command-line tools for network analysis (part of Wireshark suite).
**Examples**:
```bash
# Analyze capture file
tshark -r capture.pcap
# Live capture
sudo tshark -i eth0
# Filter specific protocol
tshark -f "tcp port 80"
# Export specific fields
tshark -T fields -e ip.src -e ip.dst -r capture.pcap
```
### sysstat
**Purpose**: System performance monitoring tools
**Use**: Collect and report system activity statistics.
**Examples**:
```bash
# CPU usage over time
sar -u 1 10
# Memory usage
sar -r 1 10
# Disk I/O statistics
iostat 1 10
# Network statistics
sar -n DEV 1 10
# Generate daily report
sar -A
```
### atop
**Purpose**: Advanced system and process monitor
**Use**: Detailed system performance monitoring with historical data.
**Examples**:
```bash
# Launch atop
atop
# View specific time
atop -r /var/log/atop/atop_20231201
# Key shortcuts within atop:
# 'g' - generic info
# 'm' - memory info
# 'd' - disk info
# 'n' - network info
# 'q' - quit
```
### btop (via snap)
**Purpose**: Modern system monitor with beautiful interface
**Use**: Resource monitoring with graphs and modern terminal UI.
**Examples**:
```bash
# Launch btop
btop
# Key shortcuts:
# 'q' - quit
# 'm' - toggle memory view
# 'n' - toggle network view
# 't' - toggle tree view
# '+/-' - adjust update interval
```
### bandwhich (via snap)
**Purpose**: Network utilization monitor by process
**Use**: See which processes are using network bandwidth in real-time.
**Examples**:
```bash
# Monitor network usage
sudo bandwhich
# Show processes and connections
sudo bandwhich --show-processes --show-connections
# Monitor specific interface
sudo bandwhich --interface eth0
```
---
## Backup Tools
Comprehensive backup solutions for data protection and synchronization.
### rsync
**Purpose**: File synchronization and backup tool
**Use**: Efficiently sync files between locations, create backups.
**Syntax**: `rsync [options] source destination`
**Examples**:
```bash
# Basic sync
rsync -av /source/ /destination/
# Sync with progress
rsync -av --progress /source/ /destination/
# Sync over SSH
rsync -av /local/path/ user@server:/remote/path/
# Exclude files
rsync -av --exclude='*.log' /source/ /destination/
# Dry run (test without changes)
rsync -av --dry-run /source/ /destination/
# Delete files in destination not in source
rsync -av --delete /source/ /destination/
```
### borgbackup
**Purpose**: Deduplicating backup program
**Use**: Create space-efficient encrypted backups with deduplication.
**Examples**:
```bash
# Initialize repository
borg init --encryption=repokey /path/to/repo
# Create backup
borg create /path/to/repo::backup-{now} ~/Documents ~/Pictures
# List archives
borg list /path/to/repo
# Extract archive
borg extract /path/to/repo::backup-2023-12-01
# Mount archive as filesystem
borg mount /path/to/repo::backup-2023-12-01 /mnt/backup
# Check repository
borg check /path/to/repo
```
### rclone
**Purpose**: Cloud storage synchronization tool
**Use**: Sync files with cloud storage providers (Google Drive, Dropbox, AWS S3, etc.).
**Examples**:
```bash
# Configure cloud storage
rclone config
# List configured remotes
rclone listremotes
# Sync to cloud
rclone sync /local/path remote:bucket/path
# Copy files
rclone copy /local/file remote:bucket/
# Mount cloud storage
rclone mount remote:bucket /mnt/cloud --daemon
# Check differences
rclone check /local/path remote:bucket/path
```
### restic
**Purpose**: Fast, secure backup program
**Use**: Create encrypted backups to various storage backends.
**Examples**:
```bash
# Initialize repository
restic init --repo /path/to/repo
# Create backup
restic backup ~/Documents --repo /path/to/repo
# List snapshots
restic snapshots --repo /path/to/repo
# Restore files
restic restore latest --repo /path/to/repo --target /restore/path
# Mount snapshots
restic mount --repo /path/to/repo /mnt/restic
# Check repository
restic check --repo /path/to/repo
```
---
## VPN & Networking
Secure networking and VPN solutions for private connectivity.
### Tailscale
**Purpose**: Mesh VPN service
**Use**: Create secure private networks between devices across the internet.
**Examples**:
```bash
# Login to Tailscale
sudo tailscale up
# Check status
tailscale status
# Show IP addresses
tailscale ip
# Logout
tailscale logout
# Enable exit node
sudo tailscale up --advertise-exit-node
# Use exit node
sudo tailscale up --exit-node=100.x.x.x
```
### tailscaled
**Purpose**: Tailscale daemon
**Use**: Background service that maintains VPN connections.
**Examples**:
```bash
# Check service status
sudo systemctl status tailscaled
# Start/stop service
sudo systemctl start tailscaled
sudo systemctl stop tailscaled
# Enable at boot
sudo systemctl enable tailscaled
```
---
## Custom Scripts
Custom monitoring and backup scripts for system administration.
### /usr/local/bin/monitoring/sysinfo
**Purpose**: System overview dashboard script
**Use**: Display comprehensive system information and status.
**Examples**:
```bash
# Run system info script
sysinfo
# Typical output includes:
# - System uptime and load
# - Memory and disk usage
# - Network interfaces
# - Running services
# - Recent log entries
```
### /usr/local/bin/monitoring/netinfo
**Purpose**: Network monitoring script
**Use**: Display network status, connections, and traffic information.
**Examples**:
```bash
# Run network info script
netinfo
# Typical output includes:
# - Network interfaces and IPs
# - Active connections
# - Network statistics
# - Bandwidth usage
# - Routing table
```
### /opt/backups/scripts/backup-home.sh
**Purpose**: Home directory backup script
**Use**: Automated backup of user home directories.
**Examples**:
```bash
# Run home backup
sudo /opt/backups/scripts/backup-home.sh
# Typically includes:
# - User documents and files
# - Configuration files
# - Application data
# - Compression and encryption
```
### /opt/backups/scripts/backup-system.sh
**Purpose**: System configuration backup script
**Use**: Backup critical system configurations and settings.
**Examples**:
```bash
# Run system backup
sudo /opt/backups/scripts/backup-system.sh
# Typically backs up:
# - System configuration files
# - Package lists
# - Service configurations
# - User account information
```
---
## 🎯 **Quick Reference**
### **Most Used Commands**
```bash
# System monitoring
htop # Process monitor
btop # Modern system monitor
docker ps # Container status
tailscale status # VPN status
# Development
git status # Git repository status
npm start # Run Node.js project
python3 app.py # Run Python script
code . # Open VS Code in current directory
# File operations
rg "pattern" # Search in files
fd filename # Find files
tree -L 2 # Show directory structure
rsync -av src/ dst/ # Sync directories
# System administration
sudo ufw status # Firewall status
sudo systemctl status docker # Service status
journalctl -f # View system logs
ncdu # Analyze disk usage
```
### **Configuration Files**
- **Zsh**: `~/.zshrc`, `~/.p10k.zsh`
- **Git**: `~/.gitconfig`
- **SSH**: `~/.ssh/config`, `~/.ssh/authorized_keys`
- **Tmux**: `~/.tmux.conf`
- **Docker**: `/etc/docker/daemon.json`
### **Service Management**
```bash
# Check service status
sudo systemctl status <service>
# Start/stop/restart services
sudo systemctl start <service>
sudo systemctl stop <service>
sudo systemctl restart <service>
# Enable/disable at boot
sudo systemctl enable <service>
sudo systemctl disable <service>
```
---
*This comprehensive guide covers all applications installed via the Ansible automation system. Each tool is
configured and ready for immediate use in your development environment.*