docs: drop next/kill-switch/forgejo-secrets; .env auto-injected

This commit is contained in:
root 2026-07-17 12:31:34 +00:00
parent d39974c0cc
commit 4628a141e2

View file

@ -28,18 +28,14 @@ Workflow дёргает платформенный action (`action.yml` из э
### static
Фронт на Vite / CRA / Next export. Собирается через bun, раздаётся как статика, без
контейнера — самый быстрый вариант.
Фронт на Vite / CRA. Собирается через bun, раздаётся как статика, без контейнера —
самый быстрый вариант.
```env
DOMAIN=mysite.com
# BUILD_DIR=dist # Vite=dist, CRA=build, Next export=out
# BUILD_DIR=dist # Vite=dist, CRA=build
```
Для Next.js в static-режиме нужно в `next.config`: `output: 'export'`,
`images.unoptimized: true`, `trailingSlash: true`, и `BUILD_DIR=out`. SSR и API
routes в этом режиме не работают.
### docker
Свой `Dockerfile` в корне. Платформа собирает образ, поднимает контейнер и
@ -114,26 +110,32 @@ TWITTER_URL=https://x.com/mysite
## Установочный сабдомен (`curl get.домен | sh`)
Только для static, настраивается без админа:
Работает и для static, и для docker. Настраивается без админа:
1. Положи скрипт в `public/install.sh` (папка `public/` у Vite попадает в корень сборки).
1. Положи скрипт в репу — в корень или в `public/` (например `install.sh`).
2. Пропиши A-запись `get` → наш IP.
3. Добавь `INSTALL_SH=install.sh` в `.env` и запушь.
Платформа поднимет `get.домен`, выпустит SSL и будет отдавать этот файл как
`text/plain`. Убрал `INSTALL_SH` — сабдомен снимется на следующем деплое.
## Секреты
## Переменные окружения
`.env` в контейнер не попадает — он читается только при деплое. Секреты заводишь в
Forgejo: репа → Settings → Actions → Secrets, имя секрета = имя переменной. Потом
перечисляешь нужные:
Всё, что положишь в `.env`, автоматически прокидывается в контейнер (`docker` /
`docker-db`) как переменные окружения. Просто пиши в `.env` и пушь — ничего отдельно
настраивать не надо.
```env
RUNTIME_KEYS=DATABASE_URL,JWT_SECRET
DOMAIN=mysite.com
DATABASE_URL=postgres://user:pass@host/db
JWT_SECRET=...
API_KEY=...
```
В контейнер попадут только они. В коде читаешь как обычно — `process.env.DATABASE_URL`.
В коде читаешь как обычно — `process.env.DATABASE_URL`. Служебные ключи платформы
(`DOMAIN`, `DEPLOY`, `BUILD_DIR`, `APP_PORT`, `WWW`, `EXTRA_DOMAINS`, `TWITTER_URL`,
`INSTALL_SH`) в контейнер не попадают. Для `docker-db` переменную `DATABASE_URL`
писать не надо — она ставится сама.
## Скорость сборки
@ -152,16 +154,6 @@ RUN npm run build
Для Next.js `output: 'standalone'` в `next.config` роняет образ с гигабайтов до
~200 МБ — деплой заметно быстрее.
## Выключить сайт
```env
ENABLED=false
```
Push — контейнер и файлы удаляются, домен отдаёт 404. Убрал строку (или `true`) —
вернулся. Том и секреты остаются. Админ может выключить и без коммита — переменной
`ENABLED=false` в Settings → Actions → Variables.
## Переменные `.env`
| Ключ | Дефолт | Зачем |
@ -173,9 +165,10 @@ Push — контейнер и файлы удаляются, домен отд
| `WWW` | `auto` | `false` — не подключать www |
| `EXTRA_DOMAINS` | — | доп. домены через запятую, свой SSL на каждый |
| `TWITTER_URL` | — | твиттер/X для админки |
| `INSTALL_SH` | — | static: отдать скрипт на `get.<domain>` |
| `RUNTIME_KEYS` | — | docker: какие секреты прокинуть в контейнер |
| `ENABLED` | `true` | `false` — выключить сайт |
| `INSTALL_SH` | — | отдать скрипт на `get.<domain>` (static или docker) |
Любые другие ключи в `.env` (не из этой таблицы) уходят в контейнер как переменные
окружения.
## Доступ к гиту