147 lines
4.3 KiB
YAML
147 lines
4.3 KiB
YAML
# systems-prod-01 Server Profile
|
|
# Last Updated: 2026-06-25
|
|
# Updated By: jared
|
|
|
|
server:
|
|
name: systems-prod-01
|
|
hostname: systems-prod-01.vps.ovh.us
|
|
provider: OVHcloud
|
|
location: Virginia (US-EAST-VA) - USA
|
|
region: os-us-east-va-2
|
|
ip: 15.204.247.153
|
|
ipv6: 2604:2dc0:101:200::c3
|
|
gateway_ipv6: 2604:2dc0:101:200::1
|
|
created: 2025-09-18
|
|
status: Active
|
|
purpose: Multi-service hosting migration from DigitalOcean for cost optimization
|
|
|
|
specs:
|
|
model: VPS-3
|
|
cpu: 8 vCores
|
|
ram: 24 GB
|
|
storage: 200 GB
|
|
bandwidth: TBD
|
|
os: Ubuntu 25.04
|
|
kernel: 6.14.0-29-generic
|
|
arch: x86_64
|
|
|
|
access:
|
|
ssh_user: jared
|
|
ssh_port: 22
|
|
ssh_key: ~/.ssh/id_rsa.pub (jared@x1carbon)
|
|
root_login: disabled
|
|
password_auth: disabled
|
|
auth_method: ssh_key_only
|
|
sudo: full_access
|
|
jump_host: N/A
|
|
|
|
security:
|
|
firewall: ufw
|
|
firewall_status: active
|
|
firewall_rules:
|
|
- "22/tcp (OpenSSH) ALLOW IN Anywhere"
|
|
- "80/tcp ALLOW IN Anywhere"
|
|
- "443/tcp ALLOW IN Anywhere"
|
|
- "default: deny (incoming), allow (outgoing)"
|
|
selinux: N/A
|
|
fail2ban: not_configured
|
|
ids: not_configured
|
|
auto_updates: enabled (unattended-upgrades)
|
|
|
|
software:
|
|
docker:
|
|
version: 29.2.1
|
|
compose_version: 2.39.3
|
|
user_in_group: jared
|
|
installed_from: official_convenience_script
|
|
daemon_config: production_ready
|
|
networks:
|
|
- traefik (172.20.0.0/16) # external-facing; Traefik routes here
|
|
- internal (172.21.0.0/16) # backend communication
|
|
|
|
runtime:
|
|
- traefik:v3.6 (reverse proxy)
|
|
- apache2-utils (for htpasswd)
|
|
|
|
system_packages:
|
|
essential_installed: curl, git, vim, htop, iftop, iotop, ncdu, tree, jq, zip, unzip, build-essential, rsync, fail2ban
|
|
pending_updates: 3 (held due to phasing)
|
|
status: completed
|
|
|
|
services:
|
|
- name: traefik
|
|
type: reverse_proxy
|
|
version: v3.6
|
|
status: running
|
|
ports: [80, 443]
|
|
ssl: letsencrypt (HTTP-01) + cloudflare (DNS-01 for remetrics)
|
|
dashboard: protected (see credentials.md)
|
|
directory: /home/jared/services/traefik
|
|
|
|
monitoring:
|
|
status: partial_coverage
|
|
tools:
|
|
- htop (system monitoring, manual)
|
|
- container-health-monitor.sh (BestSolarTech-only, runs every 10 min)
|
|
- daily-maintenance.sh (BestSolarTech-only, runs 4:30 AM EST — FIXED 2026-06-25)
|
|
- health-check.sh (all services, on-demand via syshealth — FIXED 2026-06-25)
|
|
- backup.sh (all services, runs 2 AM EST)
|
|
- watchtower (opt-in only via WATCHTOWER_LABEL_ENABLE=true — FIXED 2026-06-25, runs 3 AM)
|
|
notes:
|
|
- syshealth now works (points to ~/services/monitoring/scripts/health-check.sh, deployed 2026-06-25)
|
|
- Per-service auto-remediation only for BestSolarTech; health-check.sh covers detection for all
|
|
- See docs/health-monitoring.md for full gap list
|
|
logs: local_with_rotation
|
|
alerts: none
|
|
|
|
backups:
|
|
status: configured_and_active
|
|
strategy: pg_dumpall (PostgreSQL), mysqldump (MariaDB), service-dir tar
|
|
frequency: nightly at 02:00 EST (07:00 UTC)
|
|
retention:
|
|
on_server: 2 days (~/backups/current/)
|
|
synology_nas: pulled nightly at 03:00 EST
|
|
offsite_b2: via Synology Hyper Backup
|
|
script: ~/services/backup.sh (auto-discovers all services in ~/services/)
|
|
notification: ~/.local/bin/notify_backup.rb (on success)
|
|
tested: yes (remetrics 480-user migration confirmed, 2026-06-24)
|
|
|
|
networking:
|
|
vpc: N/A
|
|
subnet: N/A
|
|
private_ip: N/A
|
|
dns: TBD
|
|
domain: TBD
|
|
cdn: N/A
|
|
|
|
storage:
|
|
volumes:
|
|
- mount: /
|
|
size: 200 GB
|
|
type: SSD
|
|
purpose: System and application storage
|
|
|
|
maintenance:
|
|
auto_updates: configured (unattended-upgrades)
|
|
last_system_update: 2025-09-18
|
|
last_docker_update: N/A
|
|
reboot_required: no
|
|
maintenance_window: TBD
|
|
swap_configured: yes (4GB active)
|
|
timezone: America/New_York
|
|
ntp_sync: active (chrony)
|
|
log_rotation: configured
|
|
|
|
cost:
|
|
monthly: TBD
|
|
billing: monthly
|
|
credits_used: N/A
|
|
|
|
notes:
|
|
- MIGRATION COMPLETE (2026-06-24): All services migrated from DigitalOcean to OVH
|
|
- Source DigitalOcean VPS (hyperthrive-docker-services, 161.35.12.75) DELETED 2026-06-24
|
|
- remetrics.io migrated 2026-06-24 from separate DO droplet (147.182.131.217); that droplet FROZEN as rollback (not yet deleted)
|
|
- 21 containers running as of 2026-06-25 (see docs/services-inventory.md for full list)
|
|
- Passwordless sudo configured for automation
|
|
- 4GB swap file active
|
|
- Historical phase notes (Phases 1-7 setup) moved to migrations/migration-plan.md |