Skip to content
View TuroYT's full-sized avatar

Highlights

  • Pro

Block or report TuroYT

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
TuroYT/README.md

 ╔══════════════════════════════════════════════════════════════════╗
 ║  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   ║
 ╚══════════════════════════════════════════════════════════════════╝

LinkedIn Website Instagram Discord


$ whoami

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."
};

$ cat /etc/stack.conf

# ─── 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"

Tech Stack


$ ls -la ~/projects/

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

🗂️ snowshare

Self-hosted file & link sharing platform.
Next.js · Prisma · NextAuth
⭐ 63 stars · GPL-3.0
Because WeTransfer doesn't deserve your data.

⚙️ armature

Opinionated NestJS boilerplate.
Prisma · JWT auth · RBAC · typed errors · i18n
Optional Redis/BullMQ · Stripe · Google OAuth
The skeleton so you can ship the muscle.

🔐 lakartxela

Digital loyalty card app for local businesses.
NestJS · Ionic/Angular · PostgreSQL
🚧 In active development
La carte de fidélité, version Neo-Basque Tech.

🧪 saas-ideas.encrypted

gpg: decryption failed: No secret key

Nice try. Stay tuned.


$ systemctl status homelab

● 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 ✅                          │
  │                                                             │
  └─────────────────────────────────────────────────────────────┘

$ neofetch

GitHub Streak
Activity Graph

Profile Views


$ fortune | cowsay

 _____________________________________________
/ "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 |
                ||     ||

$ echo "Let's build something cool together"
> contact@romain-pinsolle.fr
/* Session closed. Connection to node1.sheephost.fr terminated. */

Pinned Loading

  1. snowshare snowshare Public

    A modern, secure file and link sharing platform built with Next.js, Prisma, and NextAuth. Share URLs, code snippets, and files with customizable expiration, privacy, and QR codes.

    TypeScript 63 5