DEPLOY.md
4,334 bytes
| 1 | # profileShare juurutamine, code.rasmusj.com |
|---|---|
| 2 | |
| 3 | Eesmärk: rasmusj.com saab näidata privaatsete repode koodi ilma ühtegi repo |
| 4 | avalikuks tegemata. Portfooliolehel on kaks linki, üks kogu hetktõmmisele ja |
| 5 | üks iga projekti juures otse selle repo juurde. |
| 6 | |
| 7 | Kolm sammu, millest ainult esimest ja kolmandat pead ise tegema. |
| 8 | |
| 9 | --- |
| 10 | |
| 11 | ## 1. DNS ja GitHubi app (10 min, sinu teha) |
| 12 | |
| 13 | **DNS.** Lisa A-kirje `code.rasmusj.com` -> sinu serveri IP, sama mis |
| 14 | ülejäänud saitidel. Oota, kuni `nslookup code.rasmusj.com` vastab. |
| 15 | |
| 16 | **GitHubi app.** Sul on app juba olemas ja töötab lokaalselt. Vaja on ainult |
| 17 | kolm aadressi ümber suunata, sest need peavad olema samal origin'il kui |
| 18 | `BASE_URL`. Ava github.com/settings/apps, vali oma app ja muuda: |
| 19 | |
| 20 | | Väli | Uus väärtus | |
| 21 | |---|---| |
| 22 | | Homepage URL | `https://code.rasmusj.com` | |
| 23 | | Callback URL | `https://code.rasmusj.com/auth/github/callback` | |
| 24 | | Setup URL | `https://code.rasmusj.com/github/installed` | |
| 25 | |
| 26 | Klienditunnust ja saladust vahetada ei ole vaja, need jäävad samaks. |
| 27 | |
| 28 | **Kontrolli, et app on paigaldatud kõigile portfoolio repodele.** Ava |
| 29 | github.com/settings/installations, vali app, "Configure", ja veendu, et |
| 30 | valitud on `splitapp`, `roundtable`, `voicetask`, `allyouknow`, |
| 31 | `countrysense` ja `profileshare`. Kui mõni puudub, lisa. |
| 32 | |
| 33 | --- |
| 34 | |
| 35 | ## 2. Server (esmakordselt, minu ette valmistatud) |
| 36 | |
| 37 | **Caddy plokk.** Lisa `/opt/caddy/Caddyfile` faili ja lae Caddy uuesti |
| 38 | (`docker exec caddy caddy reload --config /etc/caddy/Caddyfile`): |
| 39 | |
| 40 | ``` |
| 41 | code.rasmusj.com { |
| 42 | encode zstd gzip |
| 43 | reverse_proxy profileshare:3000 |
| 44 | } |
| 45 | ``` |
| 46 | |
| 47 | **.env serveris.** See fail elab ainult serveris, `deploy.sh` ei kirjuta seda |
| 48 | kunagi üle. Loo see kord: |
| 49 | |
| 50 | ```bash |
| 51 | mkdir -p /opt/projects/profileshare |
| 52 | cat > /opt/projects/profileshare/.env <<'EOF' |
| 53 | GITHUB_CLIENT_ID=... |
| 54 | GITHUB_CLIENT_SECRET=... |
| 55 | GITHUB_APP_SLUG=... |
| 56 | NODE_ENV=production |
| 57 | SESSION_SECRET=... |
| 58 | BASE_URL=https://code.rasmusj.com |
| 59 | PORT=3000 |
| 60 | DATABASE_PATH=data/profileshare.db |
| 61 | EOF |
| 62 | chmod 600 /opt/projects/profileshare/.env |
| 63 | ``` |
| 64 | |
| 65 | Kolm esimest väärtust kopeeri oma lokaalsest `.env` failist. **`SESSION_SECRET` |
| 66 | genereeri uus**, sest serveri andmebaas on uus ja lokaalse seansisaladuse |
| 67 | kaasa vedamine ei anna midagi peale ühe lisakoha, kust see lekkida saab: |
| 68 | |
| 69 | ```bash |
| 70 | node -e "console.log(require('node:crypto').randomBytes(32).toString('hex'))" |
| 71 | ``` |
| 72 | |
| 73 | Lokaalset `data/profileshare.db` faili serverisse ei kopeerita. Selles on |
| 74 | neli aegunud hetktõmmist ja mõtet neid kaasa tuua ei ole. |
| 75 | |
| 76 | **Juuruta:** |
| 77 | |
| 78 | ```bash |
| 79 | ./deploy.sh |
| 80 | ``` |
| 81 | |
| 82 | Skript jooksutab enne saatmist testid, keeldub tööst kui `.env` puudub, ja |
| 83 | ootab lõpus, kuni tervisekontroll roheliseks läheb. |
| 84 | |
| 85 | --- |
| 86 | |
| 87 | ## 3. Hetktõmmis ja lingid portfooliolehele (5 min, sinu teha) |
| 88 | |
| 89 | 1. Ava `https://code.rasmusj.com`, logi GitHubiga sisse. |
| 90 | 2. Vali kõik kuus repot: `splitapp`, `roundtable`, `voicetask`, `allyouknow`, |
| 91 | `countrysense`, `profileshare`. |
| 92 | 3. Vali kehtivusaeg. **Võta 365 päeva.** Praktikakohta otsid mitu kuud ja |
| 93 | kirjades olev link peab veel siis töötama, kui keegi selle kolm nädalat |
| 94 | hiljem avab. |
| 95 | 4. Kopeeri loodud link. See on kujul `https://code.rasmusj.com/s/<shareId>`. |
| 96 | 5. Saada see link mulle, siis panen portfooliolehele paika. Või tee ise: |
| 97 | `portfolio/lib/content.ts`, väli `codeAccess.url`. |
| 98 | |
| 99 | **Repo ID-d.** Kolm on juba teada, need on GitHubi püsivad numbrid ja neid ei |
| 100 | pea uuesti otsima: |
| 101 | |
| 102 | | Projekt | repoId | |
| 103 | |---|---| |
| 104 | | roundtable | `1296615860` | |
| 105 | | countrysense | `1299668802` | |
| 106 | | voicetask | `1309047169` | |
| 107 | |
| 108 | Puudu on `splitapp`, `allyouknow` ja `profileshare`. Need saab kätte nii: ava |
| 109 | hetktõmmises see repo ja vaata aadressi lõppu, `/repositories/<number>`. |
| 110 | |
| 111 | --- |
| 112 | |
| 113 | ## Kui link aegub |
| 114 | |
| 115 | Tee töölaual uus hetktõmmis ja asenda portfoolios **üks rida**, |
| 116 | `codeAccess.url`. Repo ID-d on püsivad ja neid ei pea puutuma, sest |
| 117 | projektilingid ehitatakse kokku funktsiooniga `repoUrl()`. |
| 118 | |
| 119 | Kui link on aegunud ja uut ei ole, kaovad koodilingid lehelt ise ära ja tekst |
| 120 | läheb tagasi variandile "küsi ja saadan lingi". Katkist linki leht kunagi ei |
| 121 | näita. |
| 122 | |
| 123 | ## Kust mida vaadata |
| 124 | |
| 125 | ```bash |
| 126 | docker logs -f profileshare # logid |
| 127 | docker inspect -f '{{.State.Health.Status}}' profileshare |
| 128 | docker exec profileshare ls -la /app/data # andmebaas on siin |
| 129 | ``` |
| 130 | |
| 131 | Varundus on ühe faili kopeerimine: |
| 132 | |
| 133 | ```bash |
| 134 | docker cp profileshare:/app/data/profileshare.db ./profileshare-backup.db |
| 135 | ``` |
| 136 | |