Initial commit - NUC server configuration and docs
- CLAUDE.md: Server instructions and service reference - docs/: Persistent documentation (architecture, guides) - .artifacts/: Session-generated notes - playwriter-browser/: Remote browser container config Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
259
docs/hard-disk-change.md
Normal file
259
docs/hard-disk-change.md
Normal file
@@ -0,0 +1,259 @@
|
||||
# NUC Hard Disk Change Guide
|
||||
|
||||
**Date:** 2026-02-01 17:30
|
||||
**Context:** Step-by-step guide to replace NUC hard disk with larger one
|
||||
|
||||
---
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- [ ] Clonezilla USB boot drive ([download](https://clonezilla.org/downloads.php))
|
||||
- [ ] External USB drive (larger than current disk usage)
|
||||
- [ ] New internal disk (must be >= current used space)
|
||||
- [ ] 1-2 hours of downtime
|
||||
|
||||
---
|
||||
|
||||
## Before You Start
|
||||
|
||||
### Check current disk usage
|
||||
|
||||
```bash
|
||||
ssh nuc "df -h / && lsblk"
|
||||
```
|
||||
|
||||
### Verify services are backed up
|
||||
|
||||
```bash
|
||||
ssh nuc "docker exec kopia kopia snapshot list --all | tail -10"
|
||||
```
|
||||
|
||||
### Export critical configs (safety net)
|
||||
|
||||
```bash
|
||||
ssh nuc "tar czf /tmp/nuc-configs-backup.tar.gz /data/coolify /opt/homepage/config 2>/dev/null"
|
||||
scp nuc:/tmp/nuc-configs-backup.tar.gz ~/Desktop/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: Create Clonezilla Image
|
||||
|
||||
### 1.1 Boot from Clonezilla USB
|
||||
|
||||
1. Insert Clonezilla USB into NUC
|
||||
2. Power on, press **F10** for boot menu
|
||||
3. Select USB drive
|
||||
4. Choose: `Clonezilla live (Default)`
|
||||
|
||||
### 1.2 Create disk image
|
||||
|
||||
```
|
||||
Select: device-image
|
||||
Select: local_dev (save to external USB)
|
||||
Choose: savedisk
|
||||
Image name: nuc-full-2026-02-01
|
||||
Source disk: /dev/sda (or /dev/nvme0n1)
|
||||
Compression: -z1p (parallel gzip, fastest)
|
||||
Options: -fsck-src-part -c (check & checksum)
|
||||
```
|
||||
|
||||
### 1.3 Wait for completion
|
||||
|
||||
- 256GB disk → ~20-40 min
|
||||
- 512GB disk → ~40-60 min
|
||||
|
||||
### 1.4 Verify image
|
||||
|
||||
Clonezilla shows checksums. Note them down:
|
||||
```
|
||||
Image checksum: ________________________________
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 2: Swap Physical Disk
|
||||
|
||||
### 2.1 Power off NUC
|
||||
|
||||
```bash
|
||||
ssh nuc "sudo shutdown now"
|
||||
```
|
||||
|
||||
### 2.2 Open NUC and replace disk
|
||||
|
||||
1. Disconnect power
|
||||
2. Remove bottom cover (4 screws)
|
||||
3. Remove old disk (M.2 or 2.5" SATA)
|
||||
4. Insert new disk
|
||||
5. Replace cover
|
||||
|
||||
---
|
||||
|
||||
## Phase 3: Restore to New Disk
|
||||
|
||||
### 3.1 Boot Clonezilla again
|
||||
|
||||
1. Insert Clonezilla USB + external drive with image
|
||||
2. Boot from USB
|
||||
|
||||
### 3.2 Restore image
|
||||
|
||||
```
|
||||
Select: device-image
|
||||
Select: local_dev
|
||||
Choose: restoredisk
|
||||
Image: nuc-full-2026-02-01
|
||||
Target: /dev/sda (new disk)
|
||||
```
|
||||
|
||||
### 3.3 Confirm and wait
|
||||
|
||||
Same time as backup (~20-60 min)
|
||||
|
||||
---
|
||||
|
||||
## Phase 4: Expand Partition
|
||||
|
||||
After restore, the new disk has the old partition sizes. Expand to use all space:
|
||||
|
||||
### 4.1 Boot into Ubuntu
|
||||
|
||||
Remove USB drives, boot normally.
|
||||
|
||||
### 4.2 Expand partition
|
||||
|
||||
```bash
|
||||
# Check current layout
|
||||
lsblk
|
||||
|
||||
# Expand partition (usually partition 2 or 3)
|
||||
sudo growpart /dev/sda 2
|
||||
|
||||
# Expand filesystem
|
||||
sudo resize2fs /dev/sda2
|
||||
|
||||
# Verify
|
||||
df -h /
|
||||
```
|
||||
|
||||
### For NVMe drives:
|
||||
|
||||
```bash
|
||||
sudo growpart /dev/nvme0n1 2
|
||||
sudo resize2fs /dev/nvme0n1p2
|
||||
```
|
||||
|
||||
### For LVM:
|
||||
|
||||
```bash
|
||||
sudo pvresize /dev/sda2
|
||||
sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
|
||||
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 5: Verify Everything Works
|
||||
|
||||
### 5.1 Check services
|
||||
|
||||
```bash
|
||||
# All containers running?
|
||||
docker ps
|
||||
|
||||
# Coolify healthy?
|
||||
curl -s http://localhost:8000/api/health
|
||||
|
||||
# Check each service
|
||||
docker ps --format 'table {{.Names}}\t{{.Status}}' | head -20
|
||||
```
|
||||
|
||||
### 5.2 Test critical services
|
||||
|
||||
| Service | Test |
|
||||
|---------|------|
|
||||
| Coolify | http://192.168.1.3:8000 |
|
||||
| Homepage | http://192.168.1.3:3000 |
|
||||
| Gitea | http://192.168.1.3:3030 |
|
||||
| n8n | http://192.168.1.3:5678 |
|
||||
|
||||
### 5.3 Verify databases
|
||||
|
||||
```bash
|
||||
# LiquidGym Postgres
|
||||
docker exec postgres-x4kk8g4k8w4g0cw480w84g4g psql -U postgres -c "\\l"
|
||||
|
||||
# LiquidGym MySQL
|
||||
docker exec hgwcgs4oswwc8scg080scoo4 mysql -u root -pliquidgym_root_nuc_2026 -e "SHOW DATABASES;"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### GRUB bootloader not found
|
||||
|
||||
```bash
|
||||
# Boot from Ubuntu Live USB
|
||||
sudo mount /dev/sda2 /mnt
|
||||
sudo mount /dev/sda1 /mnt/boot/efi
|
||||
sudo chroot /mnt
|
||||
grub-install /dev/sda
|
||||
update-grub
|
||||
exit
|
||||
reboot
|
||||
```
|
||||
|
||||
### NVMe device name changed
|
||||
|
||||
Edit `/etc/fstab` to use UUID instead of device names:
|
||||
|
||||
```bash
|
||||
# Find UUIDs
|
||||
blkid
|
||||
|
||||
# Edit fstab
|
||||
sudo nano /etc/fstab
|
||||
# Change /dev/sda2 to UUID=xxxxx
|
||||
```
|
||||
|
||||
### Docker services not starting
|
||||
|
||||
```bash
|
||||
sudo systemctl restart docker
|
||||
docker ps -a # Check for exited containers
|
||||
docker start $(docker ps -aq) # Start all
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Rollback Plan
|
||||
|
||||
If new disk fails, you still have:
|
||||
|
||||
1. **Original disk** (keep it safe for 1 week)
|
||||
2. **Clonezilla image** on external drive
|
||||
3. **Config backup** on your Mac (`~/Desktop/nuc-configs-backup.tar.gz`)
|
||||
|
||||
Worst case: put old disk back in, boot, everything works.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
| Step | Time | Risk |
|
||||
|------|------|------|
|
||||
| Create image | 30-60 min | Low |
|
||||
| Swap disk | 10 min | Low |
|
||||
| Restore image | 30-60 min | Low |
|
||||
| Expand partition | 5 min | Low |
|
||||
| Verify services | 10 min | None |
|
||||
| **Total** | ~2 hours | Low |
|
||||
|
||||
---
|
||||
|
||||
## Related
|
||||
|
||||
- Backup Strategy: `2026-02-01_17-30_nuc-backup-strategy.md`
|
||||
- Coolify Dashboard: http://192.168.1.3:8000
|
||||
Reference in New Issue
Block a user