profileShare juurutamine, code.rasmusj.com
Eesmärk: rasmusj.com saab näidata privaatsete repode koodi ilma ühtegi repo avalikuks tegemata. Portfooliolehel on kaks linki, üks kogu hetktõmmisele ja üks iga projekti juures otse selle repo juurde.
Kolm sammu, millest ainult esimest ja kolmandat pead ise tegema.
1. DNS ja GitHubi app (10 min, sinu teha)
DNS. Lisa A-kirje code.rasmusj.com -> sinu serveri IP, sama mis
ülejäänud saitidel. Oota, kuni nslookup code.rasmusj.com vastab.
GitHubi app. Sul on app juba olemas ja töötab lokaalselt. Vaja on ainult
kolm aadressi ümber suunata, sest need peavad olema samal origin'il kui
BASE_URL. Ava github.com/settings/apps, vali oma app ja muuda:
| Väli | Uus väärtus |
|---|---|
| Homepage URL | https://code.rasmusj.com |
| Callback URL | https://code.rasmusj.com/auth/github/callback |
| Setup URL | https://code.rasmusj.com/github/installed |
Klienditunnust ja saladust vahetada ei ole vaja, need jäävad samaks.
Kontrolli, et app on paigaldatud kõigile portfoolio repodele. Ava
github.com/settings/installations, vali app, "Configure", ja veendu, et
valitud on splitapp, roundtable, voicetask, allyouknow,
countrysense ja profileshare. Kui mõni puudub, lisa.
2. Server (esmakordselt, minu ette valmistatud)
Caddy plokk. Lisa /opt/caddy/Caddyfile faili ja lae Caddy uuesti
(docker exec caddy caddy reload --config /etc/caddy/Caddyfile):
code.rasmusj.com {
encode zstd gzip
reverse_proxy profileshare:3000
}
.env serveris. See fail elab ainult serveris, deploy.sh ei kirjuta seda
kunagi üle. Loo see kord:
mkdir -p /opt/projects/profileshare
cat > /opt/projects/profileshare/.env <<'EOF'
GITHUB_CLIENT_ID=...
GITHUB_CLIENT_SECRET=...
GITHUB_APP_SLUG=...
NODE_ENV=production
SESSION_SECRET=...
BASE_URL=https://code.rasmusj.com
PORT=3000
DATABASE_PATH=data/profileshare.db
EOF
chmod 600 /opt/projects/profileshare/.env
Kolm esimest väärtust kopeeri oma lokaalsest .env failist. SESSION_SECRET
genereeri uus, sest serveri andmebaas on uus ja lokaalse seansisaladuse
kaasa vedamine ei anna midagi peale ühe lisakoha, kust see lekkida saab:
node -e "console.log(require('node:crypto').randomBytes(32).toString('hex'))"
Lokaalset data/profileshare.db faili serverisse ei kopeerita. Selles on
neli aegunud hetktõmmist ja mõtet neid kaasa tuua ei ole.
Juuruta:
./deploy.sh
Skript jooksutab enne saatmist testid, keeldub tööst kui .env puudub, ja
ootab lõpus, kuni tervisekontroll roheliseks läheb.
3. Hetktõmmis ja lingid portfooliolehele (5 min, sinu teha)
- Ava
https://code.rasmusj.com, logi GitHubiga sisse. - Vali kõik kuus repot:
splitapp,roundtable,voicetask,allyouknow,countrysense,profileshare. - Vali kehtivusaeg. Võta 365 päeva. Praktikakohta otsid mitu kuud ja kirjades olev link peab veel siis töötama, kui keegi selle kolm nädalat hiljem avab.
- Kopeeri loodud link. See on kujul
https://code.rasmusj.com/s/<shareId>. - Saada see link mulle, siis panen portfooliolehele paika. Või tee ise:
portfolio/lib/content.ts, välicodeAccess.url.
Repo ID-d. Kolm on juba teada, need on GitHubi püsivad numbrid ja neid ei pea uuesti otsima:
| Projekt | repoId |
|---|---|
| roundtable | 1296615860 |
| countrysense | 1299668802 |
| voicetask | 1309047169 |
Puudu on splitapp, allyouknow ja profileshare. Need saab kätte nii: ava
hetktõmmises see repo ja vaata aadressi lõppu, /repositories/<number>.
Kui link aegub
Tee töölaual uus hetktõmmis ja asenda portfoolios üks rida,
codeAccess.url. Repo ID-d on püsivad ja neid ei pea puutuma, sest
projektilingid ehitatakse kokku funktsiooniga repoUrl().
Kui link on aegunud ja uut ei ole, kaovad koodilingid lehelt ise ära ja tekst läheb tagasi variandile "küsi ja saadan lingi". Katkist linki leht kunagi ei näita.
Kust mida vaadata
docker logs -f profileshare # logid
docker inspect -f '{{.State.Health.Status}}' profileshare
docker exec profileshare ls -la /app/data # andmebaas on siin
Varundus on ühe faili kopeerimine:
docker cp profileshare:/app/data/profileshare.db ./profileshare-backup.db