feat: rename service to galo, add halo branding and release build
- rename Go module, binary, systemd unit, PG_DATABASE default, frontend package and docs from shared-album to galo - add theme-aware halo emblem and favicon (new ui-branding capability) - add make build-release (versioned, stripped, static binary) and run the binary from the repo root
This commit is contained in:
+17
-17
@@ -66,7 +66,7 @@
|
||||
### Сборка backend
|
||||
```bash
|
||||
cd backend
|
||||
CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o ../bin/shared-album ./cmd/server
|
||||
CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o ../bin/galo ./cmd/server
|
||||
```
|
||||
|
||||
### Сборка frontend
|
||||
@@ -84,10 +84,10 @@ cp -r build/* ../backend/static/
|
||||
3. Собрать backend (`go build`) — статика вшивается в бинарник
|
||||
4. Положить бинарник на сервер и запустить через systemd
|
||||
|
||||
### systemd unit `/etc/systemd/system/shared-album.service`
|
||||
### systemd unit `/etc/systemd/system/galo.service`
|
||||
```ini
|
||||
[Unit]
|
||||
Description=Shared Album backend
|
||||
Description=Galo backend
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
@@ -95,9 +95,9 @@ Wants=network-online.target
|
||||
Type=simple
|
||||
User=album
|
||||
Group=album
|
||||
WorkingDirectory=/opt/shared-album
|
||||
EnvironmentFile=/opt/shared-album/.env
|
||||
ExecStart=/opt/shared-album/shared-album
|
||||
WorkingDirectory=/opt/galo
|
||||
EnvironmentFile=/opt/galo/.env
|
||||
ExecStart=/opt/galo/galo
|
||||
Restart=on-failure
|
||||
RestartSec=5s
|
||||
|
||||
@@ -106,7 +106,7 @@ NoNewPrivileges=true
|
||||
PrivateTmp=true
|
||||
ProtectSystem=strict
|
||||
ProtectHome=true
|
||||
ReadWritePaths=/opt/shared-album
|
||||
ReadWritePaths=/opt/galo
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -115,8 +115,8 @@ WantedBy=multi-user.target
|
||||
Активация:
|
||||
```bash
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable --now shared-album
|
||||
sudo journalctl -u shared-album -f
|
||||
sudo systemctl enable --now galo
|
||||
sudo journalctl -u galo -f
|
||||
```
|
||||
|
||||
### Прокси (опционально)
|
||||
@@ -141,7 +141,7 @@ PG_HOST=pg.localnet
|
||||
PG_PORT=5432
|
||||
PG_USER=album
|
||||
PG_PASSWORD=change_me
|
||||
PG_DATABASE=shared_album
|
||||
PG_DATABASE=galo
|
||||
PG_SSLMODE=disable
|
||||
|
||||
# Metadata backend
|
||||
@@ -480,7 +480,7 @@ X-Accel-Buffering: no
|
||||
## 13. Структура проекта
|
||||
|
||||
```
|
||||
shared-album/
|
||||
galo/
|
||||
├── backend/
|
||||
│ ├── cmd/server/main.go
|
||||
│ ├── internal/
|
||||
@@ -527,7 +527,7 @@ shared-album/
|
||||
│ ├── vite.config.ts
|
||||
│ └── package.json
|
||||
├── deploy/
|
||||
│ ├── shared-album.service # systemd unit
|
||||
│ ├── galo.service # systemd unit
|
||||
│ └── nginx-sse.conf # пример прокси для SSE
|
||||
├── tailwind.config.ts
|
||||
├── .env.example
|
||||
@@ -547,12 +547,12 @@ frontend:
|
||||
|
||||
backend:
|
||||
cd backend && CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" \
|
||||
-o ../bin/shared-album ./cmd/server
|
||||
-o ../bin/galo ./cmd/server
|
||||
|
||||
build: frontend backend
|
||||
|
||||
run: backend
|
||||
./bin/shared-album
|
||||
./bin/galo
|
||||
|
||||
migrate:
|
||||
cd backend && migrate -path migrations -database \
|
||||
@@ -605,7 +605,7 @@ migrate:
|
||||
## 18. Пошаговые промпты для итеративной генерации
|
||||
|
||||
### Шаг 1 — Скелет и подключения
|
||||
Создай структуру проекта shared-album: backend (Go + Gin) и frontend
|
||||
Создай структуру проекта galo: backend (Go + Gin) и frontend
|
||||
(SvelteKit 2 + Svelte 5 + adapter-static + Tailwind).
|
||||
Без Docker — нативная сборка Go-бинарника, статика вшивается через go:embed.
|
||||
Используй существующие pg.localnet и Garage на s3.localnet.
|
||||
@@ -614,7 +614,7 @@ config-пакет на Go, подключение к pg.localnet через pgx
|
||||
клиент S3 к Garage (AWS SDK v2, region=garage, UsePathStyle=true),
|
||||
health-check /api/health (проверяет БД и S3).
|
||||
Добавь Makefile: build (frontend → static → backend), run, migrate.
|
||||
Добавь systemd unit deploy/shared-album.service.
|
||||
Добавь systemd unit deploy/galo.service.
|
||||
|
||||
### Шаг 2 — Миграции
|
||||
Добавь golang-migrate и миграции для таблиц: users, albums, album_members,
|
||||
@@ -666,7 +666,7 @@ ThemeSwitcher.svelte — 4 кнопки с активным состоянием
|
||||
### Шаг 8 — Сборка и деплой без Docker
|
||||
Настрой Makefile: frontend собирается в статику, копируется в backend/static,
|
||||
backend собирается с go:embed. Финальный артефакт — один бинарник.
|
||||
Добавь systemd unit в deploy/shared-album.service с EnvironmentFile=.env
|
||||
Добавь systemd unit в deploy/galo.service с EnvironmentFile=.env
|
||||
и базовым харденингом (NoNewPrivileges, ProtectSystem, PrivateTmp).
|
||||
Добавь пример nginx-конфига с proxy_buffering off для SSE.
|
||||
Напиши README: как собрать, как положить бинарник, как запустить через systemd.
|
||||
Reference in New Issue
Block a user