profileShare

rasmusjy / profileshare

Read-only snapshot

No repository description.

main default branch 54 files Expires Sep 13, 2026, 9:06 AM
DEPLOY.md 4,334 bytes

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)

  1. Ava https://code.rasmusj.com, logi GitHubiga sisse.
  2. Vali kõik kuus repot: splitapp, roundtable, voicetask, allyouknow, countrysense, profileshare.
  3. 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.
  4. Kopeeri loodud link. See on kujul https://code.rasmusj.com/s/<shareId>.
  5. Saada see link mulle, siis panen portfooliolehele paika. Või tee ise: portfolio/lib/content.ts, väli codeAccess.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