Team onboarding (Alex)¶
Welcome. This page is your start here guide for the self-hosted platform Rafael set up. Use it when reviewing docs.rafaelgonzalezalbes.com or joining day-to-day work.
Resumen rápido
Tienes acceso a git, ci, pm, status, security y docs (subdominios de rafaelgonzalezalbes.com).
El flujo diario: ticket en Plane → rama feature/PORT-N-... → PR en Forgejo → Woodpecker despliega si el merge va a main.
More languages & depth
- Español (completo): Guía de inicio (español)
- Passwords & how apps connect: Secrets & connections
Bookmark these URLs¶
| Service | URL | Login |
|---|---|---|
| Docs (this site) | docs.rafaelgonzalezalbes.com | No login (team-only URL, not indexed by Google) |
| Git (Forgejo) | git.rafaelgonzalezalbes.com | Username alex + your password |
| CI (Woodpecker) | ci.rafaelgonzalezalbes.com | Sign in with Forgejo (same alex account) |
| Issues (Plane) | pm.rafaelgonzalezalbes.com | Invite email from Rafael |
| Monitoring (Uptime Kuma) | status.rafaelgonzalezalbes.com | Username alex + password (Rafael runs scripts/kuma-add-user.sh on VPS) |
| Security (DefectDojo) | security.rafaelgonzalezalbes.com | Login — Rafael provisions your account |
| Public portfolio | rafaelgonzalezalbes.com | Public — no login |
bridge.* and mcp.* are infra services (webhooks / Cursor OAuth) — no daily login. See Access control.
Your access (what you can do)¶
| Area | Your role |
|---|---|
Forgejo org infra |
Admin — platform repo infra/devops |
Forgejo org bioscan |
Admin — app repos (e.g. bioscancheck) |
Repo rafael.gonzalez.albes/portfolio |
Write + review PRs |
| Woodpecker | Admin (with Rafael) — see all pipelines |
Plane workspace rafael-gonzalez-albes |
Member — create/move tickets |
| VPS SSH (infra) | Linux user alex.rodriguez.vera on infra VPS (bioscan-vps). Passwordless sudo. Root password login disabled. |
| VPS SSH (apps) | Same workflow for apps VPS after Rafael runs scripts/bootstrap-apps-vps.sh — alias apps-vps, path /opt/apps |
| Local SSH setup | SERVER_USER=alex.rodriguez.vera in local/.env, then bash scripts/setup-local-ssh.sh for infra. Apps: cp local/apps-vps.env.example local/apps-vps.env + scripts/setup-apps-vps-ssh.ps1 |
You and Rafael are the only platform users. Registration is disabled everywhere.
First login checklist¶
Do these once:
- Forgejo — open git.rafaelgonzalezalbes.com, log in as
alex, confirm you see orgsinfraandbioscanand repoportfolio. - Woodpecker — open ci.rafaelgonzalezalbes.com → Sign in with Forgejo → authorize. You should see repos
infra/devopsandrafael.gonzalez.albes/portfolio. - Plane — accept workspace invite, open Portfolio project issues. Tickets use prefix
PORT(e.g.PORT-12). - Uptime Kuma — log in at status.rafaelgonzalezalbes.com and skim monitors (git, ci, pm, docs, security, portfolio site).
Woodpecker after repo goes private
If CI clone fails with exit 128, tell Rafael — usually fixed by refreshing OAuth + syncing the repo private flag. See Access control.
How we work (daily flow)¶
flowchart LR
Plane[Plane ticket PORT-N] --> Branch["branch feature/PORT-N-slug"]
Branch --> PR[Forgejo PR]
PR --> CI[Woodpecker build + test]
CI -->|merge main| Deploy[SFTP to IONOS]
CI -->|comment| Plane
- Pick or create a Plane issue (
PORT-…for portfolio,BIOS-…for BioScanCheck later). - Branch:
feature/PORT-42-short-description - Push to Forgejo, open PR, title:
[PORT-42] Short summary - Wait for Woodpecker green on the PR.
- Merge to
main→ portfolio auto-deploys to rafaelgonzalezalbes.com. - Reference
fixes PORT-42in the squash commit to close the ticket.
Full rules: Team workflow.
Repos to clone¶
# Portfolio (React + Vite) — main app in active CI
git clone https://git.rafaelgonzalezalbes.com/rafael.gonzalez.albes/portfolio.git
# Platform / DevOps (docs, scripts, docker) — ask Rafael before changing
git clone https://git.rafaelgonzalezalbes.com/infra/devops.git
# BioScanCheck app — product code (CI on apps VPS when enabled)
git clone https://git.rafaelgonzalezalbes.com/bioscan/bioscancheck.git
# WearLab — Alex's app (apps VPS)
git clone https://git.rafaelgonzalezalbes.com/alex/wearlab-main.git
Use your Forgejo username + password, or set up an SSH key in Forgejo → Settings → SSH keys.
Local setup (your PC)¶
Minimum (portfolio work)¶
cd portfolio
npm install
npm run dev # http://localhost:5173
npm test
npm run lint
Optional — platform / deploy scripts (Windows + WSL)¶
cd infra-devops
cp local/.env.example local/.env # Rafael fills secrets — never commit
bash scripts/setup-local-ssh.sh # adds ssh config host bioscan-vps
After that: ssh bioscan-vps as alex.rodriguez.vera (or Rafael as rafael.gonzalez.albes). Both have passwordless sudo. Do not rely on root password auth.
Optional — Cursor MCP (AI agents)¶
Lets Cursor create Plane tickets, list PRs, check CI logs. See MCP overview.
- Clone
infra/devops - Copy
templates/cursor-mcp.json.example→.cursor/mcp.json - Rafael shares API tokens into your
local/.env(not in git) npm run mcp:build --prefix mcp-server
What is live today¶
| Project | CI/CD | Deploy target | Plane prefix |
|---|---|---|---|
| Portfolio | Yes — green on main |
IONOS → public site | PORT |
| infra/devops | Yes — platform auto-deploy | Infra VPS /opt/devops |
— |
| WearLab | Yes — location: apps-vps |
Apps VPS /opt/apps/wearlab |
— |
| BioScanCheck | Planned / migrating | Apps VPS /opt/apps/bioscan |
BIOS |
Two servers: platform on infra VPS (85.215.32.166), apps on apps VPS (82.165.177.110). See Architecture overview.
Plane stack
Plane (pm.*) may be temporarily offline — deploy-platform.sh skips bridge/MCP unless ENABLE_PLANE_STACK=true. Tickets and OAuth still work if the Plane containers are running from an earlier deploy.
Docs site — what to review¶
When checking this documentation site, useful pages:
| Page | Why |
|---|---|
| Secrets & connections | Passwords, Woodpecker secrets, how apps talk to each other |
| Team workflow | Branch names, PR rules, CI steps |
| Access control | Who can see what; public vs private |
| Portfolio | How portfolio deploy works |
| WearLab | Apps VPS deploy and Woodpecker labels |
| Apps VPS | Second server for product stacks |
| Onboard project | Adding a new app later |
| MCP overview | Cursor integration |
| Monitoring | Uptime Kuma monitors |
Sanity checks:
- [ ] Home page and sidebar search work
- [ ] Mermaid diagrams render (Architecture, Portfolio deploy)
- [ ] Links to
git.*,ci.*,pm.*open correctly - [ ] Spanish tip on this page displays (Material admonition)
Kanban columns (Plane)¶
All projects use the same board:
Backlog → Ready → In Progress → In Review → CI Green → QA → Done
- In Review — PR open
- CI Green — Woodpecker passed
- Done — merged and deployed
Secrets and security¶
- Never commit
.env, SFTP passwords, API keys, or SSH private keys. - Rafael holds Woodpecker repo secrets and
local/.envon his machine. - If you need a Forgejo personal access token (for MCP or registry): Forgejo → Settings → Applications → Generate token (
read:repository,write:repository,read:useras needed). - Platform subdomains send
X-Robots-Tag: noindex— they won't appear in Google, but URLs still work if you have them.
Full guide: Secrets & connections — where every password lives, Woodpecker secret names, service diagrams, troubleshooting.
Get help¶
| Need | Contact |
|---|---|
| Forgejo / Woodpecker / Plane login | Rafael |
| Woodpecker secrets, SFTP, VPS SSH | Rafael |
| Plane invite or project access | Rafael |
| Broken CI after infra change | Rafael — or runbook Access control |
Related pages¶
- Access control — full lockdown + Alex admin scripts
- Architecture overview — big picture diagram
- DNS — subdomain → VPS map