From 4628a141e20db169f651db632ec157230de1be2d Mon Sep 17 00:00:00 2001 From: root Date: Fri, 17 Jul 2026 12:31:34 +0000 Subject: [PATCH] docs: drop next/kill-switch/forgejo-secrets; .env auto-injected --- README.md | 49 +++++++++++++++++++++---------------------------- 1 file changed, 21 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 72d925d..37dc002 100644 --- a/README.md +++ b/README.md @@ -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.` | -| `RUNTIME_KEYS` | — | docker: какие секреты прокинуть в контейнер | -| `ENABLED` | `true` | `false` — выключить сайт | +| `INSTALL_SH` | — | отдать скрипт на `get.` (static или docker) | + +Любые другие ключи в `.env` (не из этой таблицы) уходят в контейнер как переменные +окружения. ## Доступ к гиту