Skip to content

Commit 719821f

Browse files
authored
Merge pull request #14 from rtmelsov/rtmelsov-patch-4
Update README.md
2 parents f85fa32 + 7a1e28a commit 719821f

File tree

1 file changed

+123
-0
lines changed

1 file changed

+123
-0
lines changed

README.md

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
Adv Keeper — «еле-еле, но работает»
2+
3+
Маленький демо-проект: gRPC-сервер + TUI-клиент (Go) для регистрации/логина и загрузки/скачивания файлов.
4+
План был «сделать за неделю», получилось «сделали — и это уже праздник»
5+
6+
Что умеет
7+
8+
Регистрация и логин (пароли в БД, клиент хранит только сессию).
9+
10+
JWT-авторизация на сервере.
11+
12+
Загрузка/скачивание файлов с прогрессом.
13+
14+
Кроссплатформенный TUI (Linux / macOS / Windows).
15+
16+
Автомиграции БД при старте сервера.
17+
18+
systemd-юнит для деплоя (чтобы «само вставало и работало… ну почти»).
19+
20+
Быстрый старт (клиент)
21+
22+
Клиенту нужна одна переменная окружения: AK_GRPC_ADDR — адрес gRPC сервера, например 89.207.255.214:8080.
23+
24+
Windows (PowerShell)
25+
$env:AK_GRPC_ADDR = "89.207.255.214:8080"
26+
.\tui_windows_amd64.exe
27+
28+
29+
Сделать навсегда:
30+
31+
[Environment]::SetEnvironmentVariable(
32+
"AK_GRPC_ADDR","89.207.255.214:8080",[EnvironmentVariableTarget]::User
33+
)
34+
35+
macOS / Linux
36+
export AK_GRPC_ADDR=89.207.255.214:8080
37+
./tui # или ./tui_darwin_arm64, ./tui_linux_amd64
38+
39+
40+
Опционально: куда сохранять скачанные файлы
41+
42+
export AK_FILES_DIR="$HOME/Downloads/adv-keeper"
43+
44+
45+
Навигация в TUI: ↑/↓ и Enter. После логина сессия лежит в:
46+
47+
Linux/macOS: ~/.config/adv-keeper/session.json
48+
49+
Windows: %AppData%\adv-keeper\session.json
50+
51+
Сборка клиента
52+
53+
Требуется Go 1.22+.
54+
55+
make build # текущая платформа -> ./dist/tui
56+
make linux # linux_amd64
57+
make mac # darwin_arm64 (Apple Silicon)
58+
make windows # windows_amd64.exe
59+
60+
Сервер (шпаргалка владельцу)
61+
.env
62+
# /etc/adv-keeper.env
63+
AK_GRPC_ADDR=0.0.0.0:8080
64+
DB_DSN=postgres://admin:admin@127.0.0.1:5432/adv?sslmode=disable
65+
JWT_SECRET=super-secret-not-for-git
66+
FILES_DIR=/opt/adv-keeper/data
67+
MIGRATIONS_PATH=file:///opt/adv-keeper/migrations
68+
69+
systemd unit
70+
# /etc/systemd/system/adv-keeper.service
71+
[Unit]
72+
Description=Adv Keeper Server
73+
After=network.target
74+
Requires=postgresql.service
75+
76+
[Service]
77+
User=ak
78+
Group=ak
79+
EnvironmentFile=/etc/adv-keeper.env
80+
WorkingDirectory=/opt/adv-keeper
81+
ExecStart=/opt/adv-keeper/current
82+
Restart=always
83+
RestartSec=2
84+
LimitNOFILE=65535
85+
86+
[Install]
87+
WantedBy=multi-user.target
88+
89+
90+
Развёртывание (у нас через GitHub Actions) кладёт бинарь в /opt/adv-keeper/releases/<server-TS>, двигает current и рестартит сервис.
91+
Миграции берутся из MIGRATIONS_PATH.
92+
93+
Проверки:
94+
95+
sudo systemctl status adv-keeper --no-pager
96+
journalctl -u adv-keeper -n 100 --no-pager
97+
ss -ltnp 'sport = :8080' # слушает ли порт
98+
99+
100+
Открыть порт наружу (UFW):
101+
102+
sudo ufw allow 8080/tcp
103+
sudo ufw status
104+
105+
FAQ
106+
107+
connection refused
108+
На сервере AK_GRPC_ADDR=0.0.0.0:8080, порт открыт, сервис запущен.
109+
110+
Дисклеймер безопасности
111+
112+
Это демо. Порт 8080 может быть открыт, JWT секрет — в переменных окружения, логика — нарочно упрощена.
113+
Не храните чувствительные данные, только тестовые!!!
114+
115+
Статус
116+
117+
«Работает у меня на облаке»
118+
119+
⚠️ «Улучшить можно всё»
120+
121+
🥳 «Но оно живёт, и это главное»
122+
123+
Если что-то не взлетело — заводите issue. Если взлетело — тоже заводите, нам нужна моральная поддержка. 🙌

0 commit comments

Comments
 (0)