╔══════════════════════════════════════════════════════════════════╗
║ TERMINAL SESSION — node1.sheephost.fr ║
║ Last login: today from 64.xxx.xx.xx on pts/0 ║
║ Uptime: since 2005 · Mass of infra deployed · 0 cloud bills ║
╚══════════════════════════════════════════════════════════════════╝
const romain = {
name: "Romain Pinsolle",
aka: "Turo",
location: "Pays Basque, France 🇫🇷",
role: "Alternant @ Safran Helicopter Engines",
education: "BUT Informatique",
side_quest: "Building SaaS for local businesses",
rides: "Kawasaki Z400 🏍️",
os: "Arch Linux (btw)",
uptime: "99.7% — the 0.3% is motorcycle maintenance",
mantra: "If it can run on a server, it runs on MY server."
};# ─── APPLICATION LAYER ───────────────────────────────────────────
backend:
framework: NestJS
language: TypeScript (strict mode, obviously)
orm: [ TypeORM, Prisma ]
databases: [ PostgreSQL, SQL Server, MongoDB ]
auth: JWT / Passport / Google OAuth
queues: Redis + BullMQ
payments: Stripe
monitoring: Datadog APM
frontend:
frameworks: [ Ionic/Angular, React, Next.js ]
styling: [ Tailwind CSS, SCSS ]
mobile:
stack: Ionic Capacitor # cross-platform, one codebase
# ─── INFRASTRUCTURE LAYER ────────────────────────────────────────
infra:
hypervisor: Proxmox VE # Dell PowerEdge R730
containers: Docker Swarm
deployment: Dokploy
reverse_proxy: Caddy # automatic HTTPS, zero config
object_storage: Garage S3 # self-hosted, s3-compatible
automation: n8n # workflows > cron jobs
ci_cd: GitHub Actions
security: [ Semgrep, Zscaler ]
dns: Cloudflare
domain: sheephost.fr
# ─── PHILOSOPHY ──────────────────────────────────────────────────
philosophy:
cloud_provider: "my closet"
monthly_aws_bill: 0
containers_running: "yes"drwxr-xr-x romain romain 4096 Apr 01 snowshare/
drwxr-xr-x romain romain 4096 Apr 01 armature/
drwxr-x--- romain romain 4096 Apr 01 lakartxela/ # 🔒
-rw-r--r-- romain romain 512 Apr 01 saas-ideas.encrypted
🗂️ |
⚙️ |
|
|
● homelab.service - Romain's Self-Hosted Empire
Loaded: loaded (/etc/systemd/system/homelab.service; enabled)
Active: active (running) since forever
Main PID: 1337
Memory: yes
Tasks: too many
┌─────────────────────────────────────────────────────────────┐
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Proxmox │───▶│ Docker │───▶│ Dokploy │ │
│ │ (R730) │ │ Swarm │ │ (deploy) │ │
│ └──────────┘ └──────────┘ └─────┬────┘ │
│ │ │
│ ┌────────────────────────────────┬┘ │
│ ▼ ▼ ▼ │
│ ┌─────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Caddy │ │ Garage │ │ n8n │ │
│ │ (proxy) │ │ S3 │ │ (auto) │ │
│ └─────────┘ └──────────┘ └──────────┘ │
│ │
│ Services: Lakartxela · SnowShare · Etiqueo · Datadog · n8n │
│ Domain: *.sheephost.fr │
│ Status: All systems nominal ✅ │
│ │
└─────────────────────────────────────────────────────────────┘
_____________________________________________
/ "Why do I have 47 Docker containers \
| running on a server in my closet?" |
| |
| "Because AWS wanted €200/month and I have |
| a Dell PowerEdge and zero self-control." |
| |
| Anyway, je selfhost mes vaches aussi. 🐄 |
\ — Turo, probably /
---------------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||




