Skip to content

Onboarding a new employee

Help the new user connect to the Wi-Fi, login to their d-centralize account, and give them the link to this handbook.

Most accounts are provisioned by the onboarding sync tool. Add the new hire to onboarding/users.yaml in dc scripts — localpart, full name, the Bitwarden item holding their private email, their keycloak_groups, and any extra services (cuda-dev, or wireguard with vpn_devices) — then run:

Terminal window
cd ~/git/scripts/onboarding
uv run sync_users.py # dry-run: review the plan
uv run sync_users.py --apply # provision (Bitwarden unlocked)

It is idempotent (safe to re-run) and provisions:

  • Mailbox (mailcow) — the @d-centralize.nl account, single sign-on from the start. Webmail/UI login goes through Keycloak; mail clients (IMAP/SMTP) use app passwords.
  • Keycloak SSO — the account, created with their @d-centralize.nl email so single sign-on works across every app immediately. 2FA is enforced after a short grace period.
  • Vaultwarden — org membership and group/collection access derived from keycloak_groups.
  • cuda-dev box(es) — for users with cuda-dev in services: a container per host, with the SSH key delivered through a Bitwarden Send.
  • VPN peer(s) — for users with wireguard in services: one WireGuard peer per device in vpn_devices, applied to the router, the config delivered as a scannable QR through a Bitwarden Send.

The steps below cover only what the sync tool does not handle.

Before handing out the office keys, draft a key agreement using inContract.

Also create a 6-digit code for opening the front door through the Loqed app.

  • Choose Sleutel toevoegen
  • Naam van ontvanger: Enter first + last name.
  • Enable: Toegangscode and set a random pin.
  • Share the generated key to the user through email.
  • Invite the user to the d-centralize Mattermost and appropriate teams.
  • For Appsemble, add members to the Appsemble team, Server settings —> members —> Appsemble —> Members. Add members to the team.

In dc scripts, use gitlab/add_gitlab_user.py to invite the user to the following projects:

GroupRoleLink
dcentralizeReporterdcentralize_group
Handbook projectDeveloperhandbook_project

Note that if you provide a user access to a project like: (https://gitlab.d-centralize.nl/pro6pp/pro6pp) and this project uses the dependency_proxy, make sure this user is also added as guest to the group (https://gitlab.d-centralize.nl/pro6pp) or else the CI pipelines will always fail.

Note that the users still need to be approved after having accepted the invite by an admin through the gitlab pending users screen.

If a user needs to run pipelines which depend on a Container Registry from another project (see container_registry_permissions), the user needs at least reporter access in that project holding containers. Inherited guest permissions from the group are not enough.

Users that have admin permissions in Clockify can add new users to the d-centralize team. Then add relevant projects and/or clients when needed.

To troubleshoot issues, it’s useful to have access to Sentry. Invite people through self-hosted sentry.

When user signs in, the user appears in the user list and you can assign the group(s).

Mail Inphos support to obtain a personal Wi-Fi login + access to the service portal for the new team member.