Skip to content

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 ForgejoWoodpecker despliega si el merge va a main.

More languages & depth

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:

  1. Forgejo — open git.rafaelgonzalezalbes.com, log in as alex, confirm you see orgs infra and bioscan and repo portfolio.
  2. Woodpecker — open ci.rafaelgonzalezalbes.comSign in with Forgejo → authorize. You should see repos infra/devops and rafael.gonzalez.albes/portfolio.
  3. Plane — accept workspace invite, open Portfolio project issues. Tickets use prefix PORT (e.g. PORT-12).
  4. 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
  1. Pick or create a Plane issue (PORT-… for portfolio, BIOS-… for BioScanCheck later).
  2. Branch: feature/PORT-42-short-description
  3. Push to Forgejo, open PR, title: [PORT-42] Short summary
  4. Wait for Woodpecker green on the PR.
  5. Merge to main → portfolio auto-deploys to rafaelgonzalezalbes.com.
  6. Reference fixes PORT-42 in 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.

  1. Clone infra/devops
  2. Copy templates/cursor-mcp.json.example.cursor/mcp.json
  3. Rafael shares API tokens into your local/.env (not in git)
  4. 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/.env on his machine.
  • If you need a Forgejo personal access token (for MCP or registry): Forgejo → Settings → Applications → Generate token (read:repository, write:repository, read:user as 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