node-01.fra uptime 000d 00:00:00 cpu 12% mem 3.4/16 G net ↓ 0.0 ↑ 0.0 MB/s --:--:-- UTC
// loc DE · 50.1109° N, 8.6821° E
// asn AS-private/24
// since 2018-07
online · accepting packets

hi, i'm emir.

i run a small constellation of servers from my bedroom.
i write code, route packets, and believe that boring infrastructure wins.

? shortcuts T open terminal scroll
0
years_self_hosting
0
monthly_uptime
0
containers_running
0
monthly_traffic
0
prod_incidents_ytd
// 02

who's running this

a quick cat ~/about.md

i'm emir — a developer somewhere in germany. since 2018 i've been running my own little corner of the internet on hardware i can physically touch.

i like things that just work. boring databases. boring file formats. boring init systems. the kind of stack you can leave alone for six months and come back to find still online.

by day i write code. by night i racktune servers, draw network diagrams, and watch grafana panels go very flat and very green.

  • infrastructure obsessed — i'd rather ssh than click
  • open by default — open-source, open protocols, open about what's running
  • quiet operator — i'd rather ship something that hums than something that shouts
web linux self-hosting networking monitoring open-source
emir@node-01 : ~ — zsh — 84×24
emir@node-01:~$ whoami
emir — developer / self-hosting enthusiast
emir@node-01:~$ uname -a
Linux node-01 6.6 #1 SMP debian x86_64 GNU/Linux
emir@node-01:~$ cat ~/.passions
web · linux · networks · synthwave · late-night ssh
emir@node-01:~$ help
try: whoami · skills · stack · services · uptime · contact · sudo make-coffee · clear
emir@node-01:~$
// 03

the stack

battle-tested, deliberately boring

iron

layer 0
  • nodes1× hetzner · 2× home
  • hyperv.proxmox + zfs
  • netwireguard mesh
  • backupborg → b2

os & runtime

layer 1
  • osdebian stable
  • shellzsh + tmux
  • cont.docker + compose
  • initsystemd

web

layer 2
  • edgecaddy + nginx
  • tlslet's encrypt
  • fronthtml · css · js
  • apinode · python

data

layer 3
  • sqlpostgres 16
  • kvredis
  • objminio (s3)
  • fszfs datasets

observe

layer 4
  • metricsprometheus
  • dashgrafana
  • logsloki + vector
  • netsmokeping · lg

ops

layer 5
  • cfgansible · git
  • ciforgejo actions
  • secretssops + age
  • vibescaffeine
// 04

the network

live status of public services

// 05

things i built

side quests, in various states of done

01 live

retardhub

a community space for like-minded people. forums, shared resources, the occasional flame war. self-hosted top to bottom.

community php postgres
retardhub.net
02 in dev

nodewatch

a tiny self-hosted monitor for hobbyists: ping, port-check, certificate expiry, simple webhooks. one binary, one config file.

go monitoring sqlite
v0.4 · soon
03 planning

boring.cloud

a blog / wiki collecting the unsexy lessons of running a tiny network for years. uptime, postmortems, costs.

writing infra
tbd
// philosophy
"

boring infrastructure wins. pick tools you can reason about at 3 a.m. with low battery. keep one database. keep one shell. keep good backups. make the dashboard green and go to bed.

own your stack

if i can host it on a box i can reach, i will.

protocols > products

smtp, imap, ssh, dns. they'll outlive us all.

plain text wins

git tracks it. grep finds it. humans read it.

uptime is a feature

five nines isn't a brag, it's a contract.

// 06

open a socket

i read everything · usually reply within a day

discord
@emir · 4351 4456 8074 1417 17
open in discord ↗
telegram
@tcpemir
open in telegram ↗