No daemon.
No Docker.
Just containers.
cardinal — лёгкий container runtime на Go: статический бинарь ~5 MB, ноль демонов, OCI-образы, bridge-сеть cardinal0, кластер, FaaS, бэкапы с шифрованием и supervisor на systemd.
Контейнеры без боли. Демон не нужен.
Один бинарь делает всё: namespaces, overlayfs, veth + iptables, cgroups v2, бэкапы, кластер и FaaS. Файлы переживают cardinal stop — смотри их через cardinal fs.
No daemon, no Docker
Нет dockerd, нет фоновых служб. cardinal run -d — короткий unshare + namespaces, а переживание ребута берёт на себя systemd-supervisor.
Микроскопический
Статический бинарь ~5 MB против 100+ MB Docker. Ставится одной командой, обновляется через cardinal update.
OCI-образы
pull / push / build / commit / verify — Docker Hub, ghcr, quay, multi-arch. Офлайн-проверка дайджестов из коробки.
Bridge-сеть из коробки
Каждый контейнер — 10.0.2.X на мосту cardinal0, хост — 10.0.2.1. Интернет и DNS (8.8.8.8) сразу, порты — мгновенно: port add.
Security по умолчанию
seccomp режет 30+ опасных syscall, AppArmor, --isolated, read-only /sys, audit-логи и шифрование бэкапов AES-256-GCM.
Бэкапы и overlay
backup enable --interval 6h — снапшоты overlay + volumes по расписанию, verify архивов, restore в остановленный контейнер.
Cluster · FaaS · Compose
cardinal.toml + up, cluster-оркестрация, fn-функции, service с healthcheck, blueprints и Docker-совместимый REST API для панелей.
Видно всё внутри
fs ls / cat / tree / find работают даже на остановленных контейнерах, cp таскает файлы туда-сюда, attach — Ctrl+C safe.
От нуля до nginx за 30 секунд
Требования: Linux с unshare, nsenter, ip, iptables, mount, pgrep + namespaces (PID/Mount/Net/UTS/IPC) + overlayfs. Выбери способ установки — дальше всё одинаково.
curl -fsSL https://raw.githubusercontent.com/animesao/cardinal/main/install.sh | sudo bashЧто запускают на cardinal
Web · nginx
Статика, Flask, Node — с Volumes и live-файлами.
cardinal run -d --restart always \ -n web -p 8080:80 \ -v /data/site:/usr/share/nginx/html \ nginx:alpine
Minecraft Paper
Java 21 + jar на хосте, данные в bind-mount.
cardinal run -d --restart always \ -n mc-paper -p 25565:25565 \ -v $PWD:/data --memory 4G \ eclipse-temurin:21-jdk \ java -Xmx3500M -jar paper.jar nogui
Telegram / Discord боты
Зависимости ставятся в overlay и переживают рестарт.
cardinal run -d --restart always \ -n tg-bot -v /data/tg-bot:/bot \ -e BOT_TOKEN=secret \ --startup "pip install -r /bot/requirements.txt \ && exec python /bot/bot.py" \ python:3.12
Postgres + Redis
Базы на named volumes, бот ходит через 10.0.2.1.
cardinal run -d --restart always \ -n pg -p 5432:5432 \ -v pg_data:/var/lib/postgresql/data \ -e POSTGRES_PASSWORD=secret \ postgres:16
cardinal.toml
Весь стек — одним файлом и одной командой.
[container.web]
image = "nginx:alpine"
ports = ["80:80"]
restart = "always"
[container.db]
image = "postgres:16"
env = { POSTGRES_PASSWORD = "secret" }
# cardinal up / cardinal downWings + Panel
REST-агент для удалённого управления и фронтендов.
curl -fsSL https://cardinal.spcfy.eu/\ downloads/install-wings.sh \ -o /tmp/install-wings.sh sudo bash /tmp/install-wings.sh curl -H "Authorization: Bearer KEY" \ http://localhost:8080/v1/containers
cardinal vs Docker
| Feature | cardinal | Docker |
|---|---|---|
| Daemon | No daemon ✓ | dockerd required |
| Binary size | ~5 MB | 100+ MB |
| Image format | OCI / Docker V2 | OCI / Docker V2 |
| Bridge network | cardinal0 10.0.2.0/24 | docker0 |
| Auto-start | systemd supervisor | systemd dockerd |
| Cluster / rolling updates | ✓ built-in | ✓ Swarm |
| Seccomp / AppArmor | ✓ default + custom | ✓ |
| Backup encryption | ✓ AES-256-GCM | ✕ |
| Audit logging | ✓ container events | via auditd |
Как это устроено
Storage: $CARDINAL_DATA_DIR (default: /root/.cardinal/) images/ containers/ overlay/ logs/ consoles/ networks/ cardinal run -d ├─ unshare --fork --pid --mount --net --uts --ipc cardinal init <id> │ └─ pivot_root → overlay → /proc + lo + eth0 → exec CMD └─ cardinal console-serve <id> → stdout pipe → log file → unix socket → attach System boot → systemd → cardinal-bootstrap.service → supervisor └─ adopt --restart always containers → overlay → veth + iptables → monitor + restart-delay
v2.0.31 — живой проект
v2.0.31 — Синхронизация документации, установки, AppImage и релизной автоматики с корневым файлом VERSION.
v1.24.0 — Харденинг: seccomp (30+ заблокированных syscall), AppArmor, изоляция --isolated, шифрование бэкапов AES-256-GCM, audit-логи.
v1.23.0 — Supervisor с задержками и crash-loop защитой, плановые бэкапы с verify, offline verify образов, двуязычные EN/RU доки.
v1.22.31 — OCI-разархивация, systemd recovery, ротация логов, inspect JSON, кластер, FaaS, blueprints, Compose, healthcheck, REST API.
v1.20.0 → v1.10.0 — Динамические порты, pivot_root фикс, disk-лимиты, --startup скрипты, stats из cgroup v2, attach через Unix-socket.
Доки на двух языках
Установка
Universal, Debian, Fedora, Arch, Alpine, NixOS, Gentoo, Void, Snap, AppImage.
/install →CLI-справочник
52 команды: run, exec, fs, cp, backup, cluster, fn, network, volume…
/docs →Примеры
Web, Flask, Postgres, Redis, Minecraft, Telegram и Discord боты.
/examples →Версии
Весь changelog: от 1.14.0 до свежей v2.0.31 с фильтром.
/versions →Новости
20 свежих историй про cardinal: релизы, security, рантайм.
/news →Блог
Личные заметки: cardinal, self-hosting, homelab.
/blog →Готов? Один бинарь — и полетели.
curl -fsSL https://raw.githubusercontent.com/animesao/cardinal/main/install.sh | sudo bash
