# Dev VPS - Initial Setup and Configuration

**Server:** Dev VPS (Development/Testing Environment)  
**IP:** 64.50.188.128  
**Location:** Chicago, IL  
**Provider:** Breezehost  
**Deployed:** April 1, 2026  
**Configured by:** Chronicler #51

---

## Overview

Fresh Ubuntu 24.04 LTS server configured as a development and testing environment for Firefrost Gaming projects. Provides isolated environment for experimentation, CI/CD testing, and development work without affecting production infrastructure.

---

## Server Specifications

**Hardware:**
- CPU: 2x AMD Epyc (Cloud-2)
- RAM: 4GB (3.8GB usable)
- Storage: 80GB NVMe SSD (38GB allocated, 36GB free)
- Swap: 512MB
- Network: 1 Gbps (inbound/outbound)

**Network Configuration:**
- Primary IP: 64.50.188.128
- Gateway: 64.50.188.1
- Netmask: 255.255.255.0
- Interface: ens3
- MAC: 00:6C:80:0E:FB:72
- DNS Primary: 1.1.1.1 (Cloudflare)
- DNS Secondary: 8.8.8.8 (Google)
- IPv6: Disabled (was auto-assigned, manually disabled)

**Operating System:**
- Distribution: Ubuntu Server 24.04.4 LTS (Noble Numbat) Minimal
- Kernel: 6.8.0-106-generic x86_64
- Architecture: x86_64
- Support: Until April 2029 (5 years)

---

## Installed Software

### System Utilities
- **UFW Firewall:** v0.36.2-6 (active and enabled on boot)
- **Cockpit:** Latest (web-based server management)
  - cockpit-storaged (storage management)
  - cockpit-networkmanager (network configuration)
  - cockpit-packagekit (package management)

### Development Tools
- **Node.js:** Latest LTS (v20.x series)
- **npm:** Latest (bundled with Node.js)
- **Docker:** v29.3.1 (latest stable)
  - docker-ce
  - docker-ce-cli
  - containerd.io
  - docker-buildx-plugin
  - docker-compose-plugin

### Planned Installations
- **Git:** For version control
- **fail2ban:** SSH brute-force protection
- **Python 3:** For automation scripts
- **Nginx:** Reverse proxy (if needed for testing)

---

## Security Configuration

### Firewall Rules (UFW)

**Status:** Active and enabled on system startup  
**Logging:** On (low level)  
**Default Policies:**
- Incoming: DENY
- Outgoing: ALLOW
- Routed: DISABLED

**Allowed Ports:**
| Port | Protocol | Service | Comment |
|------|----------|---------|---------|
| 22 | TCP | SSH | Remote access |
| 9090 | TCP | Cockpit | Web terminal |

**View current rules:**
```bash
ufw status verbose
```

**Add new rule:**
```bash
ufw allow [port]/tcp comment 'Service Name'
```

### IPv6 Configuration

**Status:** Disabled

IPv6 was auto-assigned by Breezehost but manually disabled for simplicity.

**Configuration in `/etc/sysctl.conf`:**
```
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
```

**To re-enable IPv6 (if needed):**
```bash
sed -i '/net.ipv6.conf.all.disable_ipv6/d' /etc/sysctl.conf
sed -i '/net.ipv6.conf.default.disable_ipv6/d' /etc/sysctl.conf
sysctl -p
reboot
```

### Root Access

**SSH:** Enabled (currently)  
**Cockpit:** Enabled (root removed from disallowed-users)  
**Password:** Set (stored in Vaultwarden)

**Future Hardening (TODO):**
- Create sudo-enabled admin user
- Disable root SSH login
- Enable SSH key-only authentication
- Install fail2ban for brute-force protection

---

## Service Access

### SSH Access

**Method 1: MobaXterm (Windows)**
```
Host: 64.50.188.128
Port: 22
User: root
Auth: Password or SSH key
```

**Method 2: Command Line**
```bash
ssh root@64.50.188.128
```

### Cockpit Web Terminal

**URL:** https://64.50.188.128:9090

**Login Credentials:**
- Username: `root`
- Password: [stored in Vaultwarden]

**Features Available:**
- Terminal (web-based SSH)
- System monitoring (CPU, RAM, disk, network)
- Storage management
- Network configuration
- Package management (APT)
- Service management (systemd)
- Log viewer

**Certificate Warning:** Self-signed certificate will trigger browser warning - this is normal, click "Accept Risk and Continue"

---

## Docker Configuration

**Version:** 29.3.1  
**Status:** Installed and running

### Basic Docker Commands

**Test installation:**
```bash
docker run hello-world
```

**Common commands:**
```bash
# List running containers
docker ps

# List all containers (including stopped)
docker ps -a

# List images
docker images

# Pull an image
docker pull ubuntu:latest

# Run a container
docker run -it ubuntu:latest bash

# Remove stopped containers
docker container prune

# Remove unused images
docker image prune
```

### Docker Compose

**Installed:** Yes (v2 plugin)

**Usage:**
```bash
docker compose up -d
docker compose down
docker compose logs -f
```

---

## Node.js Configuration

**Version:** Latest LTS (v20.x)  
**npm Version:** Latest (bundled)

### Basic Commands

**Check versions:**
```bash
node --version
npm --version
```

**Install packages globally:**
```bash
npm install -g [package-name]
```

**Install packages locally:**
```bash
npm install [package-name]
```

---

## System Monitoring

### Command Line Tools

**System info:**
```bash
# OS version
cat /etc/os-release

# Kernel version
uname -r

# System uptime
uptime

# Memory usage
free -h

# Disk usage
df -h

# CPU info
lscpu

# Network interfaces
ip a

# Active connections
ss -tulpn
```

### Cockpit Dashboard

Access via https://64.50.188.128:9090 for graphical monitoring:
- Real-time CPU/RAM/disk graphs
- Network traffic monitoring
- Service status
- System logs

---

## Common Maintenance Tasks

### Update System Packages

```bash
apt update
apt upgrade -y
apt autoremove -y
```

### Restart Services

```bash
# Restart Docker
systemctl restart docker

# Restart Cockpit
systemctl restart cockpit

# Restart UFW
ufw reload
```

### Check Service Status

```bash
systemctl status docker
systemctl status cockpit.socket
systemctl status ufw
```

### Clean Up Disk Space

```bash
# Remove old packages
apt autoremove -y
apt autoclean

# Remove Docker cruft
docker system prune -a

# Remove old logs
journalctl --vacuum-time=7d
```

---

## Development Workflow Examples

### Testing a Node.js Application

```bash
# Clone repo
git clone [repo-url]
cd [project]

# Install dependencies
npm install

# Run application
npm start
```

### Testing with Docker

```bash
# Build custom image
docker build -t myapp:latest .

# Run container
docker run -d -p 8080:8080 myapp:latest

# View logs
docker logs -f [container-id]

# Stop container
docker stop [container-id]
```

### Testing CI/CD Pipelines

```bash
# Clone Firefrost services repo
git clone https://[token]@git.firefrostgaming.com/firefrost-gaming/firefrost-services.git

# Test deployment script
cd firefrost-services
./deploy.sh --test
```

---

## Troubleshooting

### Cannot SSH to Server

**Check firewall:**
```bash
ufw status
```

**Ensure SSH is allowed:**
```bash
ufw allow 22/tcp
```

**Check SSH service:**
```bash
systemctl status ssh
```

### Cockpit Not Accessible

**Check service:**
```bash
systemctl status cockpit.socket
```

**Restart if needed:**
```bash
systemctl restart cockpit
```

**Check firewall:**
```bash
ufw allow 9090/tcp
```

### Docker Container Won't Start

**Check logs:**
```bash
docker logs [container-name]
```

**Check Docker service:**
```bash
systemctl status docker
```

**Restart Docker:**
```bash
systemctl restart docker
```

### Out of Disk Space

**Check usage:**
```bash
df -h
du -sh /* | sort -h
```

**Clean up:**
```bash
apt autoremove -y
apt autoclean
docker system prune -a
journalctl --vacuum-time=7d
```

---

## Future Enhancements

### Phase 1 (Security Hardening)
- [ ] Create sudo-enabled admin user (`architect`)
- [ ] Install fail2ban
- [ ] Disable root SSH login
- [ ] SSH key-only authentication
- [ ] Configure automatic security updates

### Phase 2 (Development Tools)
- [ ] Install Git
- [ ] Install Python 3 and pip
- [ ] Install Nginx (if needed)
- [ ] Set up CI/CD runner (GitHub Actions or Gitea Actions)
- [ ] Configure development database (PostgreSQL or MySQL)

### Phase 3 (Monitoring)
- [ ] Install Netdata for advanced monitoring
- [ ] Configure log aggregation
- [ ] Set up alerting (Discord webhooks)
- [ ] Integrate with Uptime Kuma on Command Center

---

## Cost and Resources

**Monthly Cost:** $10  
**Provider:** Breezehost (locked-in pricing)  
**Commitment:** Month-to-month (no contract)

**Resource Allocation:**
- CPU: Light (development workloads)
- RAM: Adequate for most dev tasks (4GB)
- Storage: Sufficient for testing (80GB)
- Network: Fast (1 Gbps)

---

## Related Documentation

- **Infrastructure Manifest:** `docs/core/infrastructure-manifest.md`
- **Command Center Setup:** `docs/deployment/command-center-setup.md`
- **Docker Best Practices:** `docs/guides/docker-best-practices.md`
- **Security Hardening Guide:** `docs/guides/server-security-hardening.md`

---

## Deployment Log

**April 1, 2026 - Initial Setup:**
1. ✅ Ubuntu 24.04 LTS installed (Noble Numbat Minimal)
2. ✅ System updated (apt update && upgrade)
3. ✅ Root password set
4. ✅ IPv6 disabled
5. ✅ UFW firewall configured (ports 22, 9090)
6. ✅ Node.js LTS installed
7. ✅ Docker v29.3.1 installed
8. ✅ Cockpit web terminal installed
9. ✅ Root login to Cockpit enabled
10. ✅ Server rebooted and tested

**Status:** ✅ OPERATIONAL - Ready for development work

---

**Fire + Frost + Foundation = Where Love Builds Legacy** 🔥❄️💙

---

**Last Updated:** April 1, 2026  
**Configured by:** Chronicler #51  
**Next Steps:** Security hardening (create admin user, fail2ban, SSH keys)
