Před začátkem je třeba připravit tyto hodnoty. V návodu jsou všude zvýrazněné stejnou barvou, aby bylo jasné, kam patří.
| Proměnná | Popis | Příklad |
|---|---|---|
| NAME | Krátký název projektu / brandu | andesbet |
| DOMAIN | Doména webu | andesbet.pe |
| PSQL_USER | Uživatel lokální PostgreSQL databáze | lh12771300 |
| PSQL_HESLO | Heslo k databázi (speciální znaky nutno percent-encodovat v DATABASE_URL) | Xt9mQZ@Lp#3rN^Yv=Bs! |
| PORT | Port, na kterém poběží appka | 3001 |
| GLOBAL_PSQL_USER | Uživatel globální databáze | lh12771300 |
| GLOBAL_PSQL_HESLO | Heslo globální databáze (stejný formát jako PSQL_HESLO, nutno percent-encodovat) | Xt9mQZ@Lp#3rN^Yv=Bs! |
| WEBHOOK_API_KEY | Stejný klíč jako na globálním webu | BapFkENKljXoUEhmPU0UtisduooUbsok |
| SOURCE_VIEWER_UPSTREAM_BASIC_AUTH | Basic auth globálního webu | uzivatel:heslo |
Xt9mQZ@Lp#3rN^Yv=Bs! se zakóduje jako Xt9mQZ%40Lp%233rN%5EYv%3DBs%21.ssh PSQL_USER@DOMAIN
SSH klíč je třeba přidat do:
/domains/DOMAIN/.ssh/
git clone git@gitlab.com:kleek/gto.git cd gto
Ověření přístupu do databáze:
PGPASSWORD='PSQL_HESLO' psql -h localhost -U PSQL_USER -d postgres
Google autentikaci je třeba vytvořit na console.cloud.google.com.
Odtud se získají:
| Proměnná | Popis |
|---|---|
| GOOGLE_CLIENT_ID | Client ID OAuth aplikace |
| GOOGLE_CLIENT_SECRET | Client Secret OAuth aplikace |
V kořeni projektu je třeba vytvořit soubor .env:
NEXT_PUBLIC_IS_SUPER_ADMIN=false DATABASE_URL=postgres://PSQL_USER:PSQL_HESLO@localhost:5432/PSQL_USERdb GLOBAL_DATABASE_URL=postgres://GLOBAL_PSQL_USER:GLOBAL_PSQL_HESLO@localhost:5432/GLOBAL_PSQL_USERdb SITE_PUBLIC_URL=https://DOMAIN BETTER_AUTH_URL=https://DOMAIN BETTER_AUTH_SECRET=vygenerovat pomocí openssl rand -base64 32 GOOGLE_CLIENT_ID=GOOGLE_CLIENT_ID GOOGLE_CLIENT_SECRET=GOOGLE_CLIENT_SECRET NEXT_PUBLIC_SITE_LANGUAGE=cs # nastavit jazyk webu SOURCE_VIEWER_UPSTREAM_BASIC_AUTH=uzivatel:heslo # basic auth globálního webu WEBHOOK_API_KEY=WEBHOOK_API_KEY
openssl rand -base64 32
fnm install 24 fnm use 24 fnm default 24 corepack enable pnpm pnpm -v pnpm i
pnpm db:push pnpm db:seed
Do .gitlab-ci.yml v masteru je třeba přidat blok:
deploy:NAME: extends: .deploy_template tags: [deploy-NAME] resource_group: deploy-NAME rules: - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "NAME"
Poté je třeba vytvořit novou protected branch z masteru se jménem NAME a na serveru se na ni přepnout:
git checkout -b NAME origin/master git push -u origin NAME
module.exports = {
apps: [
{
name: "NAME",
script: "node_modules/next/dist/bin/next",
args: "start --port PORT",
instances: 1,
exec_mode: "fork",
env: { NODE_ENV: "production" },
},
],
};
pnpm install --frozen-lockfile pnpm build npm i -g pm2 pm2 start ecosystem.config.js pm2 save
Nejprve je třeba otevřít web a přihlásit se do administrace (vytvoří se záznam uživatele). Poté v databázi:
PGPASSWORD='PSQL_HESLO' psql -h localhost -U PSQL_USER -d postgres
\c PSQL_USERdb SELECT * FROM admin_member; -- je třeba zkopírovat user_id nově vytvořeného uživatele UPDATE admin_member SET role = 'admin', approved_at = NOW(), updated_at = NOW() WHERE user_id = 'ID';
Fialově zvýrazněné ID je třeba nahradit hodnotou user_id zkopírovanou z výpisu SELECT.
GitLab → Settings → CI/CD → Runners → Create project runner
Tag: deploy-NAME → Create → je třeba zkopírovat vygenerovaný token glrt-XXXX
cd /domains/DOMAIN/ mkdir -p ~/bin ~/.gitlab-runner-work curl -L --output ~/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64" chmod +x ~/bin/gitlab-runner echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc source ~/.bashrc gitlab-runner --version gitlab-runner register --non-interactive \ --url "https://gitlab.com/" \ --token "glrt-XXXX" \ --executor "shell" pm2 start ~/bin/gitlab-runner --name ci-runner -- run --working-directory $HOME/.gitlab-runner-work pm2 save