Adv Keeper — это клиент-серверное приложение для безопасного хранения пользовательских данных и файлов.
Сервер предоставляет gRPC API, а к нему подключается TUI-клиент (Bubble Tea).
Под капотом: Go, gRPC, Postgres, JWT, потоковая передача файлов (streaming RPC), миграции БД при старте.
- Регистрация и вход (JWT access token).
- Хранение файлов на сервере + запись метаданных в Postgres.
- Загрузка файлов потоком (без чтения всего файла в память).
- Список файлов, скачивание и удаление.
- TUI-клиент: регистрация/логин, выбор файла через file picker, просмотр списка и деталей.
-
Server (
./cmd/server):- gRPC на TCP (
GRPC_ADDR). - Postgres (
DB_DSN). - Файлы сохраняются на диск (
FILES_DIR), метаданные — в БД. - JWT для авторизации (проверка токена в unary/stream interceptors).
- Автоматический прогон миграций при старте (
MIGRATIONS_URL, напримерfile:///opt/adv-keeper/migrations).
- gRPC на TCP (
-
Client (TUI) (
./cmd/tui):- Подключается к серверу по
AK_GRPC_ADDR(илиGRPC_ADDR). - Хранит сессию локально:
~/.config/adv-keeper/session.json. - Имеет экраны: Register, Login, Vault (загрузка), FileList, FileDetails.
- Подключается к серверу по
- Go 1.22+
- Postgres 14+ (на сервере)
- Для деплоя по SSH/CI —
rsync/systemd(опционально)
Создай файл окружения (пример для systemd: /etc/adv-keeper.env):
env
# gRPC адрес (0.0.0.0:8080 — доступ снаружи, 127.0.0.1:8080 — локально)
GRPC_ADDR=0.0.0.0:8080
DB_DSN=postgres://admin:[email protected]:5432/adv?sslmode=disable
FILES_DIR=/opt/adv-keeper/data
JWT_SECRET=supersecret_change_me
MIGRATIONS_URL=file:///opt/adv-keeper/migrations
Убедись, что директории существуют и доступны процессу:
sudo mkdir -p /opt/adv-keeper/data /opt/adv-keeper/migrations
sudo chown -R ak:ak /opt/adv-keeper
Сборка и запуск (сервер локально)
go mod tidy
go build -o bin/server ./cmd/server
# запустить
DB_DSN='postgres://admin:[email protected]:5432/adv?sslmode=disable' \
FILES_DIR='./data' \
JWT_SECRET='devsecret' \
GRPC_ADDR='127.0.0.1:8080' \
MIGRATIONS_URL='file://./migrations' \
./bin/server
Проверить порт:
nc -vz 127.0.0.1 8080
Сборка и запуск (клиент) Минимальный Makefile уже есть. Основные цели:
# все платформы (бинари в ./dist)
make linux
make mac
make windows
# или просто собрать текущую платформу
make build
./dist/tui
Перед запуском укажи адрес сервера:
# если сервер на этой же машине
export AK_GRPC_ADDR=127.0.0.1:8080
# если сервер в облаке
export AK_GRPC_ADDR=89.207.255.214:8080
