Claude 0a88f8ae1f Make Samba and rclone backup system optional
- Add interactive prompt before Samba installation
- Add interactive prompt before rclone backup system setup
- Update summary section to conditionally display installed components
- Fix indentation in backup script section
2025-12-28 00:18:18 +00:00
2025-12-27 19:04:05 -05:00

Ubuntu 24.04 Desktop Post-Installation Script

Automated setup script for Ubuntu 24.04 Desktop that installs essential tools, configures SSH, sets up Docker, configures remote access, and creates a split-backup system using rclone.

What This Script Does

Core Utilities Installed

  • net-tools - Network utilities (ifconfig, netstat)
  • ncdu - Disk usage analyzer with ncurses interface
  • git - Version control system
  • curl & wget - Download tools
  • vim - Text editor (instructions use nano)
  • htop - Interactive process viewer
  • tree - Directory structure visualizer
  • zip/unzip - Archive utilities
  • rclone - Sync tool for split backup strategy

SSH Configuration

  • OpenSSH Server - Enables remote SSH access
  • SSH Key Generation - Creates 4096-bit RSA key pair for this computer
  • Key Import - Optionally imports public keys from GitHub and/or Launchpad
  • Security - Automatically disables password authentication if keys are imported

Docker Installation

  • Docker Engine - Latest version from official Docker repository (not snap)
  • Docker Compose - Installed as a plugin (modern method)
  • User Configuration - Adds your user to docker group (run docker without sudo)

Samba File Sharing

  • Samba Server - SMB/CIFS file server for network file sharing
  • Primary Drive Share - Entire primary drive shared as "Primary"
  • User Configuration - Creates Samba user matching your system username
  • Cross-Platform Access - Works with Windows, Mac, and Linux

Remote Access Tools

  • NetBird - Mesh VPN for secure device connections
    • Supports both NetBird SSH and traditional SSH
    • Enables remote access across networks
  • RustDesk - Open-source remote desktop software

Backup System - Split Backup Strategy

  • Automated rclone backup script using split-backup approach
  • Mount point management at ~/drives/primary, ~/drives/backup1, ~/drives/backup2
  • Interactive drive mounting with automatic fstab configuration
  • Systemd timer for scheduled daily backups (optional)

Prerequisites

  • Fresh Ubuntu 24.04 Desktop installation
  • Sudo/root access
  • Internet connection
  • (Optional) External drives for backup configuration

Quick Start

1. Download the Script

# Clone the repository
git clone https://github.com/outis1one/post-ubuntu-install.git
cd post-ubuntu-install

# Or download the script directly
wget https://raw.githubusercontent.com/outis1one/post-ubuntu-install/main/ubuntu-post-install.sh -O post-install.sh

2. Make Executable

chmod +x post-install.sh

3. Run the Script

sudo ./post-install.sh

4. Follow Interactive Prompts

The script will ask you:

  • SSH Key Generation: Generate new 4096-bit RSA key? (y/n)
  • Import SSH Keys: GitHub username, Launchpad username (or leave blank)
  • Mount Drives: Mount backup drives now? (y/n)
  • Drive Selection: Device paths for primary, backup1, backup2 (e.g., /dev/sdb1)
  • fstab Configuration: Add mounts to /etc/fstab for auto-mount? (y/n)
  • Samba Password: Set password for Samba user (suggested: use same as system password)

5. Post-Installation Steps

Required:

# Log out and back in for docker group to take effect
logout

Recommended:

# Configure rclone backup (see Backup Configuration section)
sudo nano /usr/local/bin/backup-scripts/rclone-backup.sh

SSH Configuration

SSH Key Combinations Supported

You can use any combination of:

  • ✓ GitHub keys + Launchpad keys + NetBird SSH
  • ✓ GitHub keys only
  • ✓ Launchpad keys only
  • ✓ NetBird SSH only
  • ✓ Your generated key + any of the above
  • ✓ Password authentication only (if no keys imported)

Traditional SSH vs NetBird SSH

Traditional SSH (uses imported keys):

ssh user@hostname
ssh user@192.168.1.100

NetBird SSH (manages keys automatically):

netbird ssh peer-name

These work independently - NetBird SSH works even if password auth is disabled.

Your Generated SSH Key

After installation, find your public key:

cat ~/.ssh/id_rsa.pub

Use it to:

  • Add to GitHub: Settings → SSH and GPG keys → New SSH key
  • Add to other servers: Append to remote ~/.ssh/authorized_keys
  • Connect from this computer to other servers

Backup Configuration

Understanding Split Backup Strategy

The Problem:

  • Your primary drive: 4TB
  • Your backup drives: 2TB each
  • Can't fit full primary on one backup drive

The Solution: Divide your data between backup1 and backup2:

primary/work/    (500G)  → backup1/work/    ┐
primary/photos/  (800G)  → backup1/photos/  ├─ 1.3TB on backup1
                                             ┘
primary/videos/  (1.2T)  → backup2/videos/  ┐
primary/music/   (500G)  → backup2/music/   ├─ 1.7TB on backup2
                                             ┘

Step-by-Step Backup Setup

1. Check Your Folder Sizes

du -sh ~/drives/primary/*

Example output:

500G  primary/work
800G  primary/photos
1.2T  primary/videos
500G  primary/music

2. Edit the Backup Script

sudo nano /usr/local/bin/backup-scripts/rclone-backup.sh

Find and edit these sections:

# Folders to backup to BACKUP1 only
BACKUP1_DIRS=(
    "work"        # 500G
    "photos"      # 800G
)
# Total: ~1.3TB

# Folders to backup to BACKUP2 only
BACKUP2_DIRS=(
    "videos"      # 1.2T
    "music"       # 500G
)
# Total: ~1.7TB

Balance the data so each backup drive has enough space.

3. Test with Dry-Run (CRITICAL!)

# Test backup1 sync (shows what WOULD happen)
rclone sync ~/drives/primary/work ~/drives/backup1/work --checksum --dry-run -v

# Test backup2 sync
rclone sync ~/drives/primary/videos ~/drives/backup2/videos --checksum --dry-run -v

Review the output carefully!

4. Run First Backup

sudo /usr/local/bin/backup-scripts/rclone-backup.sh

Monitor progress:

tail -f /var/log/rclone-backup.log

5. Enable Automatic Backups (Optional)

After successful manual backup:

sudo systemctl enable rclone-backup.timer
sudo systemctl start rclone-backup.timer

Check status:

sudo systemctl status rclone-backup.timer
sudo systemctl list-timers

Change schedule (default: 2 AM daily):

sudo systemctl edit rclone-backup.timer

Manual Drive Mounting

If you skipped auto-mounting during installation:

# Create mount points (already done by script)
mkdir -p ~/drives/primary ~/drives/backup1 ~/drives/backup2

# Find your drives
lsblk -f
sudo blkid

# Mount drives
sudo mount /dev/sdb1 ~/drives/primary
sudo mount /dev/sdc1 ~/drives/backup1
sudo mount /dev/sdd1 ~/drives/backup2

# Make permanent (add to /etc/fstab)
sudo nano /etc/fstab

Add lines like:

UUID=xxxx-xxxx /home/username/drives/primary auto defaults 0 2
UUID=yyyy-yyyy /home/username/drives/backup1 auto defaults 0 2
UUID=zzzz-zzzz /home/username/drives/backup2 auto defaults 0 2

Drive Failure Recovery

If PRIMARY Drive Fails ⚠️ CRITICAL

You need BOTH backup drives to restore (data is split between them):

# 1. Get new drive (same size or larger)
# 2. Format it
sudo mkfs.ext4 /dev/sdX1

# 3. Mount as primary
sudo mount /dev/sdX1 ~/drives/primary

# 4. Restore from BOTH backups
rclone sync ~/drives/backup1/ ~/drives/primary/ --checksum
rclone sync ~/drives/backup2/ ~/drives/primary/ --checksum

# 5. Update /etc/fstab with new UUID
sudo blkid /dev/sdX1
sudo nano /etc/fstab

If BACKUP Drive Fails

Example: backup1 fails (contained work/ and photos/ backups)

Status:

  • ✓ Primary still has work/ and photos/ (original data is safe)
  • ✓ backup2 still works (videos/ and music/ still backed up)
  • ⚠️ work/ and photos/ have NO backup until backup1 is replaced

Recovery:

# 1. Replace the drive
# 2. Format it
sudo mkfs.ext4 /dev/sdX1

# 3. Mount it
sudo mount /dev/sdX1 ~/drives/backup1

# 4. Update /etc/fstab if needed
sudo nano /etc/fstab

# 5. Run backup script - syncs assigned folders back
sudo /usr/local/bin/backup-scripts/rclone-backup.sh

⚠️ Replace failed backup drives quickly! While a backup is down, those folders have no redundancy.

Verification Commands

Check Backups Match Primary

# Verify backup1 folders
rclone check ~/drives/primary/work ~/drives/backup1/work
rclone check ~/drives/primary/photos ~/drives/backup1/photos

# Verify backup2 folders
rclone check ~/drives/primary/videos ~/drives/backup2/videos
rclone check ~/drives/primary/music ~/drives/backup2/music

If perfect: "0 differences found"

Check Space Usage

# See what's on each drive
du -sh ~/drives/primary/*
du -sh ~/drives/backup1/*
du -sh ~/drives/backup2/*

# Check free space
df -h ~/drives/primary
df -h ~/drives/backup1
df -h ~/drives/backup2

NetBird Setup

# 1. Connect to NetBird (opens browser for auth)
netbird up

# 2. View connected peers
netbird status

# 3. SSH via NetBird (if enabled in dashboard)
netbird ssh peer-name

# 4. Configure ACLs and settings
# Visit: https://app.netbird.io

Samba File Sharing

The script automatically shares your entire primary drive via Samba.

Share Details

  • Share name: Primary
  • Path: ~/drives/primary
  • Username: Your system username
  • Password: The Samba password you set during installation (suggested to match your system password)
  • Permissions: Read/Write access for the configured user

Accessing the Share

From Windows:

1. Open File Explorer
2. In the address bar, type:
   \\hostname\Primary
   Or use IP: \\192.168.1.100\Primary

3. Enter credentials when prompted:
   Username: your_username
   Password: your_samba_password

From macOS:

1. Open Finder
2. Press Cmd+K (or Go → Connect to Server)
3. Enter:
   smb://hostname/Primary
   Or: smb://192.168.1.100/Primary

4. Click Connect and enter credentials

From Linux:

# Browse in file manager
smb://hostname/Primary

# Or mount manually
sudo mkdir /mnt/primary-share
sudo mount -t cifs //hostname/Primary /mnt/primary-share -o username=your_username

Find Your Hostname/IP

# Show hostname
hostname

# Show IP address
hostname -I
ip addr show

Managing Samba

# Restart Samba
sudo systemctl restart smbd nmbd

# Check status
sudo systemctl status smbd

# View share configuration
sudo nano /etc/samba/smb.conf

# Change Samba password
sudo smbpasswd your_username

# Add additional users
sudo smbpasswd -a new_username

Add Additional Shares

Edit /etc/samba/smb.conf:

sudo nano /etc/samba/smb.conf

Add new share:

[ShareName]
   comment = Description of share
   path = /path/to/share
   browseable = yes
   read only = no
   writable = yes
   valid users = username
   create mask = 0775
   directory mask = 0775

Restart Samba:

sudo systemctl restart smbd nmbd

Troubleshooting Samba

Can't connect to share:

# Check if Samba is running
sudo systemctl status smbd

# Check firewall (if enabled)
sudo ufw allow samba

# Test configuration
testparm

# View active connections
sudo smbstatus

Permission denied:

# Check share permissions
ls -la ~/drives/primary

# Ensure Samba user exists
sudo pdbedit -L

# Reset Samba password
sudo smbpasswd your_username

Troubleshooting

Docker Permission Denied

# If you get "permission denied" after install
# Log out and back in for group membership to take effect
logout

SSH Key Already Exists

If you see "key already exists" warning:

  • Choose 'n' to keep existing key
  • Or choose 'y' to overwrite (cannot be undone!)

Drive Won't Mount

# Check if drive is recognized
lsblk -f

# Check filesystem
sudo fsck /dev/sdX1

# Try manual mount
sudo mount -t auto /dev/sdX1 ~/drives/primary

Backup Script Fails

# Check if drives are mounted
df -h | grep drives

# Check log for errors
tail -50 /var/log/rclone-backup.log

# Verify directories exist on primary
ls -la ~/drives/primary/

NetBird Won't Connect

# Check service status
sudo systemctl status netbird

# Restart service
sudo systemctl restart netbird

# Check logs
sudo journalctl -u netbird -f

Samba Share Not Accessible

# Verify Samba is running
sudo systemctl status smbd

# Check share configuration
testparm

# View Samba users
sudo pdbedit -L

# Check if firewall is blocking
sudo ufw status
sudo ufw allow samba

# Restart Samba
sudo systemctl restart smbd nmbd

Split Backup Advantages & Disadvantages

✓ Advantages

  • Budget-friendly: 4TB primary = 2TB backup1 + 2TB backup2 (saves money)
  • Simpler than RAID: No complex RAID setup or rebuild process
  • Easy recovery: Mount points stay the same, just swap drives
  • No downtime: Replace drives one at a time
  • Flexible: Easily rebalance folders between drives

⚠️ Disadvantages

  • Split redundancy: Each folder backed up to ONE drive only (not both)
  • Two-drive restore: Need BOTH backups to fully restore primary
  • Urgent replacement: Failed backup leaves some folders without redundancy
  • Manual balancing: You must divide folders between drives yourself

Files Created by This Script

/usr/local/bin/backup-scripts/rclone-backup.sh  # Backup script
/etc/systemd/system/rclone-backup.service       # Systemd service
/etc/systemd/system/rclone-backup.timer         # Systemd timer
/var/log/rclone-backup.log                      # Backup log
/etc/fstab.backup-TIMESTAMP                     # fstab backup (if modified)
/etc/ssh/sshd_config.backup                     # SSH config backup (if modified)
/etc/samba/smb.conf.backup-TIMESTAMP            # Samba config backup
~/drives/primary/                               # Primary mount point (shared via Samba)
~/drives/backup1/                               # Backup1 mount point
~/drives/backup2/                               # Backup2 mount point
~/.ssh/id_rsa                                   # Private SSH key (if generated)
~/.ssh/id_rsa.pub                               # Public SSH key (if generated)
~/.ssh/authorized_keys                          # Imported SSH keys (if any)

Security Notes

  • Private SSH key (~/.ssh/id_rsa): Keep secret! Never share!
  • Public SSH key (~/.ssh/id_rsa.pub): Safe to share
  • Password authentication: Disabled if keys imported (more secure)
  • Docker group: Equivalent to root access - only add trusted users
  • Samba password: Stored separately from system password; change with sudo smbpasswd username
  • Samba shares: Only accessible to configured users; ensure strong passwords
  • Network security: Samba shares are accessible to anyone on your local network who has credentials
  • Backup drives: Consider encrypting sensitive data

Support & Feedback

This script continues even if individual packages fail. Check the output for warnings or errors.

To report issues or improve the script:

  • Review log files in /var/log/
  • Check systemd service status
  • Verify drive mounts with df -h

License

This script is provided as-is for Ubuntu 24.04 Desktop installations.

Changelog

  • Initial version: Ubuntu 24.04 Desktop post-installation automation
  • Features: SSH (with key generation and import), Docker, Samba file sharing, NetBird, RustDesk, split-backup with rclone
S
Description
Mirror of outis1one/ubuntu-post-install from GitHub
Readme MIT
13 MiB
Languages
Shell 96.4%
Python 3.6%