Skip to content

WearLab

Full-stack app — Docker backend on the apps VPS, CI builds on the apps Woodpecker agent.

Repository

Field Value
Forgejo alex/wearlab-main
Profile fullstack
Woodpecker label location: apps-vps
Public URL https://wearlab.rafaelgonzalezalbes.com

Deploy target

Field Value
Apps VPS IP 82.165.177.110
Path /opt/apps/wearlab/
SSH user deploy (Woodpecker CI)
Edge proxy Traefik in /opt/apps/traefik on apps VPS

Woodpecker pipeline

Top of .woodpecker.yml:

labels:
  location: apps-vps

Build and image steps run on the apps VPS agent. Deploy runs in a bridge-network Alpine container and SSHs to 172.17.0.1 (Docker bridge gateway on the apps host — not 127.0.0.1 and not the public IP). The remote command runs /opt/apps/wearlab/run-deploy.sh as deploy.

Deploy logic: scripts/ci-deploy-wearlab.sh in the app repo (template in templates/ci-deploy-wearlab.sh).

Woodpecker secrets

App repos use ssh_* (not deploy_ssh_*):

Secret Value
ssh_host 172.17.0.1 (CI deploy from apps agent container)
ssh_user deploy
ssh_key Base64-encoded OpenSSH private key (single line; Woodpecker mangles multiline keys)
sops_age_key AGE secret line for wearlab SOPS

Wire on the infra VPS:

cp ~/.ssh/bioscan_vps /tmp/wearlab_wire_key
SSH_KEY_FILE=/tmp/wearlab_wire_key bash scripts/set-wearlab-wp-ssh-secrets-sql.sh

Or from your machine: bash local/run-rewire-wearlab-on-vps.sh

Diagnose: bash scripts/diagnose-wearlab-ci-ssh.sh (on infra VPS).

Migration from infra VPS

WearLab previously ran on the infra VPS. Migration checklist: Migrate app to apps VPS.

Scripts:

  • bash scripts/bootstrap-apps-vps.sh — first-time apps VPS setup
  • bash scripts/migrate-wearlab-uploads.sh — move Docker volume data
  • bash scripts/deploy-apps-woodpecker-agent.sh — remote CI agent on apps VPS

Monitoring

Uptime Kuma monitor WearLab (HTTPS)https://wearlab.{domain} (apps VPS group in uptime-kuma/monitors.manifest.json).

See Monitoring.