docs: drop next/kill-switch/forgejo-secrets; .env auto-injected
This commit is contained in:
parent
d39974c0cc
commit
4628a141e2
1 changed files with 21 additions and 28 deletions
49
README.md
49
README.md
|
|
@ -28,18 +28,14 @@ Workflow дёргает платформенный action (`action.yml` из э
|
||||||
|
|
||||||
### static
|
### static
|
||||||
|
|
||||||
Фронт на Vite / CRA / Next export. Собирается через bun, раздаётся как статика, без
|
Фронт на Vite / CRA. Собирается через bun, раздаётся как статика, без контейнера —
|
||||||
контейнера — самый быстрый вариант.
|
самый быстрый вариант.
|
||||||
|
|
||||||
```env
|
```env
|
||||||
DOMAIN=mysite.com
|
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
|
### docker
|
||||||
|
|
||||||
Свой `Dockerfile` в корне. Платформа собирает образ, поднимает контейнер и
|
Свой `Dockerfile` в корне. Платформа собирает образ, поднимает контейнер и
|
||||||
|
|
@ -114,26 +110,32 @@ TWITTER_URL=https://x.com/mysite
|
||||||
|
|
||||||
## Установочный сабдомен (`curl get.домен | sh`)
|
## Установочный сабдомен (`curl get.домен | sh`)
|
||||||
|
|
||||||
Только для static, настраивается без админа:
|
Работает и для static, и для docker. Настраивается без админа:
|
||||||
|
|
||||||
1. Положи скрипт в `public/install.sh` (папка `public/` у Vite попадает в корень сборки).
|
1. Положи скрипт в репу — в корень или в `public/` (например `install.sh`).
|
||||||
2. Пропиши A-запись `get` → наш IP.
|
2. Пропиши A-запись `get` → наш IP.
|
||||||
3. Добавь `INSTALL_SH=install.sh` в `.env` и запушь.
|
3. Добавь `INSTALL_SH=install.sh` в `.env` и запушь.
|
||||||
|
|
||||||
Платформа поднимет `get.домен`, выпустит SSL и будет отдавать этот файл как
|
Платформа поднимет `get.домен`, выпустит SSL и будет отдавать этот файл как
|
||||||
`text/plain`. Убрал `INSTALL_SH` — сабдомен снимется на следующем деплое.
|
`text/plain`. Убрал `INSTALL_SH` — сабдомен снимется на следующем деплое.
|
||||||
|
|
||||||
## Секреты
|
## Переменные окружения
|
||||||
|
|
||||||
`.env` в контейнер не попадает — он читается только при деплое. Секреты заводишь в
|
Всё, что положишь в `.env`, автоматически прокидывается в контейнер (`docker` /
|
||||||
Forgejo: репа → Settings → Actions → Secrets, имя секрета = имя переменной. Потом
|
`docker-db`) как переменные окружения. Просто пиши в `.env` и пушь — ничего отдельно
|
||||||
перечисляешь нужные:
|
настраивать не надо.
|
||||||
|
|
||||||
```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` роняет образ с гигабайтов до
|
Для Next.js `output: 'standalone'` в `next.config` роняет образ с гигабайтов до
|
||||||
~200 МБ — деплой заметно быстрее.
|
~200 МБ — деплой заметно быстрее.
|
||||||
|
|
||||||
## Выключить сайт
|
|
||||||
|
|
||||||
```env
|
|
||||||
ENABLED=false
|
|
||||||
```
|
|
||||||
|
|
||||||
Push — контейнер и файлы удаляются, домен отдаёт 404. Убрал строку (или `true`) —
|
|
||||||
вернулся. Том и секреты остаются. Админ может выключить и без коммита — переменной
|
|
||||||
`ENABLED=false` в Settings → Actions → Variables.
|
|
||||||
|
|
||||||
## Переменные `.env`
|
## Переменные `.env`
|
||||||
|
|
||||||
| Ключ | Дефолт | Зачем |
|
| Ключ | Дефолт | Зачем |
|
||||||
|
|
@ -173,9 +165,10 @@ Push — контейнер и файлы удаляются, домен отд
|
||||||
| `WWW` | `auto` | `false` — не подключать www |
|
| `WWW` | `auto` | `false` — не подключать www |
|
||||||
| `EXTRA_DOMAINS` | — | доп. домены через запятую, свой SSL на каждый |
|
| `EXTRA_DOMAINS` | — | доп. домены через запятую, свой SSL на каждый |
|
||||||
| `TWITTER_URL` | — | твиттер/X для админки |
|
| `TWITTER_URL` | — | твиттер/X для админки |
|
||||||
| `INSTALL_SH` | — | static: отдать скрипт на `get.<domain>` |
|
| `INSTALL_SH` | — | отдать скрипт на `get.<domain>` (static или docker) |
|
||||||
| `RUNTIME_KEYS` | — | docker: какие секреты прокинуть в контейнер |
|
|
||||||
| `ENABLED` | `true` | `false` — выключить сайт |
|
Любые другие ключи в `.env` (не из этой таблицы) уходят в контейнер как переменные
|
||||||
|
окружения.
|
||||||
|
|
||||||
## Доступ к гиту
|
## Доступ к гиту
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue