Деплой
FileDB — статический Go-бинарник без внешних зависимостей: ни libc, ни системных пакетов. FileDB однонодовая по дизайну — репликации нет; каждая реплика должна иметь свой каталог данных.
| Способ | Когда использовать |
|---|---|
| Docker | Разовые деплои, dev/test, всё эфемерное |
| Docker Compose | Продакшен на одном хосте с reverse proxy |
| Kubernetes | Много реплик, managed-кластеры |
| systemd | Долгоживущие Linux VM, bare-metal |
| Windows-служба | Windows-серверы — через NSSM или Task Scheduler |
Docker
docker run -d --name filedb
-p 127.0.0.1:8080:8080
-v filedb-data:/data
-e FILEDB_PASSWORD=$(openssl rand -hex 24)
-e FILEDB_TRUSTED_PROXY=172.17.0.1
--read-only --tmpfs /tmp --cap-drop=ALL --security-opt=no-new-privileges
ghcr.io/filedb/filedb:2.10
Ключевое: никогда не публикуйте порт наружу напрямую (-p 127.0.0.1:8080:8080, не -p 8080:8080) — перед FileDB всегда должен стоять nginx/Caddy.
systemd (Linux VM / bare-metal)
sudo useradd --system --home /var/lib/filedb --shell /usr/sbin/nologin filedb
sudo mkdir -p /var/lib/filedb /var/log/filedb /etc/filedb
sudo chown filedb:filedb /var/lib/filedb /var/log/filedb
sudo install -m 755 filedb /usr/local/bin/
sudo install -m 644 filedb.service /etc/systemd/system/
sudo install -m 600 /dev/stdin /etc/filedb/env <<EOF
FILEDB_PASSWORD=$(openssl rand -hex 24)
FILEDB_TRUSTED_PROXY=127.0.0.1
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now filedb
Windows-служба (NSSM)
nssm install FileDB "C:Program Filesfiledbfiledb.exe"
nssm set FileDB AppParameters "-data C:ProgramDatafiledbdata -addr :8080"
nssm set FileDB ObjectName "NT AUTHORITYLocalService"
nssm set FileDB AppEnvironmentExtra "FILEDB_PASSWORD=$(New-Guid)"
Graceful shutdown на Windows — эквивалент SIGTERM это Ctrl+Break; NSSM шлёт его первым, у бинарника есть время на чистое завершение перед SIGKILL.
Reverse proxy
FileDB не терминирует TLS сам — всегда ставьте nginx или Caddy перед ним. Caddy проще всего для автоматического Let's Encrypt:
db.example.com {
reverse_proxy filedb:8080 {
header_up X-Real-IP {remote_host}
header_up X-Forwarded-For {remote_host}
}
}
Далее →
Архитектура