Comenzando con gitrust: compila, configura y envía tu primera confirmación¶
Source : ce tutoriel intègre le contenu de
gitrust/docs/GETTING_STARTED.mdavec la structure pédagogique complète (objectifs Bloom, modèle mental, checkpoints observables, section « Et si ça ne marche pas »).
Objetivos¶
Al final de este tutorial, sabrás:
- O1. Compile gitrust desde el código fuente y lance la instancia de desarrollo localmente
- O2. Configurar el entorno de desarrollo (base de datos, variables de entorno, activos CSS)
- O3. Ejecute un primer envío SSH a su instancia local y verifique el resultado en la interfaz web
Requisitos previos¶
- Técnico: Rust estable ≥ 1.80 (
rustc --version), PostgreSQL ≥ 15 (psql --version), Node.js ≥ 18 (node --version), Git 2.x (git --version), Docker (opcional, recomendado para la base de datos) - Pédagogique : être un utilisateur autonome de gitrust (parcours
usercomplété ou équivalent) ; familiarité avec Rust (au moins 3 mois de pratique) et avec HTTP/PostgreSQL - Tiempo estimado: ~45 minutos
Descripción general¶
Antes de ejecutar el primer comando, tomemos 3 minutos para comprender qué vas a ensamblar y cómo encajan las piezas.
gitrust es un monorepo Rust de 6 cajas que se compila en un solo binario. Cuando ejecuta cargo run, este binario inicia dos servidores simultáneamente: un servidor HTTP (:4000) para la interfaz web y la API REST, y un servidor SSH (:2222) para operaciones git push/pull. Comparten la misma base de datos PostgreSQL y el mismo almacenamiento de repositorio en disco.
graph TB
subgraph sources ["Sources gitrust (monorepo Rust)"]
C1[rustwarden-core
auth, sessions, middleware]
C2[gitrust-core
modèles, services métier]
C3[gitrust-git
opérations Git bare]
C4[gitrust-web
handlers HTTP + templates]
C5[gitrust-ssh
serveur SSH Git]
C6[gitrust-hooks
post-receive, pre-receive]
end
subgraph runtime ["Processus unique (cargo run)"]
HTTP["HTTP :4000
UI + API REST"]
SSH["SSH :2222
git push/pull"]
end
subgraph storage ["Stockage"]
PG[(PostgreSQL
comptes, dépôts,
issues, PRs)]
REPOS[Dépôts bare
data/repos/]
end
C1 & C2 & C3 & C4 & C5 & C6 -->|cargo build| HTTP
C1 & C2 & C3 & C4 & C5 & C6 -->|cargo build| SSH
HTTP & SSH --> PG
HTTP & SSH --> REPOS
Qué harás: clonar las fuentes → preparar PostgreSQL → copiar y completar .env → compilar los recursos CSS → ejecutar cargo run → verificar la instancia → enviar una primera confirmación a través de SSH.
Paso 1: verifique los requisitos del sistema¶
Antes de clonar cualquier cosa, asegúrese de tener instaladas todas las herramientas necesarias:
Resultado esperado (las versiones exactas pueden variar):
rustc 1.82.0 (f6e511eec 2024-10-15)
cargo 1.82.0 (8f40fc59f 2024-10-15)
psql (PostgreSQL) 16.3
v20.11.0
git version 2.43.0
Si falta alguna dependencia del sistema, instálela:
# Debian / Ubuntu
sudo apt install build-essential pkg-config libssl-dev libpq-dev cmake git
# macOS
brew install postgresql openssl cmake
Punto de control: Todos los comandos de verificación deben devolver un número de versión sin errores. Si no se encuentra rustc, instale Rust mediante curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh luego recarga tu shell.
Paso 2: clonar el proyecto¶
Resultado esperado:
Cloning into 'gitrust'...
remote: Enumerating objects: 12847, done.
remote: Counting objects: 100% (12847/12847), done.
Receiving objects: 100% (12847/12847), 18.42 MiB | 4.20 MiB/s, done.
Punto de control: compruebe que la estructura de la caja esté presente:
Resultado esperado:
Paso 3: Configurar el entorno (.env)¶
Copie el archivo de ejemplo y edite los 5 valores esenciales:
Abra .env en su editor y complete estos valores:
# Connexion à la base de données
DATABASE_URL=postgres://gitrust:motdepasse@localhost:5432/gitrust
# Clé secrète JWT (générez-la avec : openssl rand -hex 32)
JWT_SECRET=votre_cle_secrete_64_caracteres
# Compte administrateur créé au premier lancement
ADMIN_USERNAME=admin
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=MotDePasseFort123!
Les autres variables ont des valeurs par défaut raisonnables pour le développement. Consultez
.env.examplepour la liste complète.
Genere un valor real para JWT_SECRET:
Salida esperada (valor diferente en cada ejecución):
Copie este valor a .env para JWT_SECRET.
Punto de control: comprueba que no queden valores de ejemplo en .env:
El comando debería regresar vacío (sin líneas). Si devuelve filas, esos valores de marcador de posición todavía están presentes: la aplicación se iniciará pero con una configuración insegura.
Paso 4: preparar la base de datos PostgreSQL¶
Tienes dos opciones:
Opción A: Docker (recomendado para principiantes):
Resultado esperado:
[+] Running 2/2
✔ Container gitrust_postgres_dev Started 0.8s
✔ Container gitrust_pgadmin Started 1.1s
Opción B: PostgreSQL existente en la máquina:
psql -U postgres << 'SQL'
CREATE USER gitrust WITH PASSWORD 'motdepasse';
CREATE DATABASE gitrust OWNER gitrust;
SQL
Resultado esperado:
Adapte la contraseña en DATABASE_URL en .env si usa la opción B.
Punto de control: comprobar que la base es accesible desde la aplicación:
Resultado esperado:
version
-------------------------------------------------------------------------------------------------------
PostgreSQL 16.3 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 13.2.0-23ubuntu4) 13.2.0, 64-bit
(1 row)
Si obtiene "psql: error: la conexión al servidor falló", verifique que PostgreSQL se esté ejecutando y que "DATABASE_URL" coincida.
Paso 5: compila los recursos CSS¶
gitrust utiliza Tailwind CSS + DaisyUI. Los activos deben compilarse localmente; no hay CDN, todos los archivos se entregan desde static/:
Resultado esperado:
Punto de control: verifique que se genere el archivo CSS:
Resultado esperado:
Si el archivo tiene 0 bytes o no existe, la compilación falló: ejecute npm install nuevamente y luego el comando npx tailwindcss.
Paso 6: inicia la aplicación¶
La primera compilación tarda entre 2 y 5 minutos (se compilan todas las dependencias). Las compilaciones posteriores son incrementales y mucho más rápidas.
Au premier lancement, gitrust exécute automatiquement :
1. Migraciones de bases de datos (creación de todas las tablas)
2. Creando la cuenta de administrador (desde .env)
3. Generando la clave de host SSH (data/ssh_host_ed25519_key)
4. Creando el directorio de almacenamiento del repositorio (data/repos/)
Resultado esperado (después de la compilación):
Compiling gitrust-web v0.9.0 (/home/vous/gitrust/crates/gitrust-web)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 187.42s
Running `target/debug/gitrust`
2026-04-17T10:20:00Z INFO gitrust > Starting gitrust v0.9.0
2026-04-17T10:20:00Z INFO gitrust > Running database migrations... applied 42
2026-04-17T10:20:01Z INFO gitrust > Admin account created: admin
2026-04-17T10:20:01Z INFO gitrust > SSH host key: SHA256:xxxxxxxxxxxxxxxxxxxx
Server listening on http://0.0.0.0:4000
Punto de control: abra http://localhost:4000 en su navegador. Necesitas ver la página de inicio de gitrust. Inicie sesión con las credenciales ADMIN_USERNAME / ADMIN_PASSWORD definidas en .env. Si la página no se carga, verifique que aparezca el mensaje "Servidor escuchando en http://0.0.0.0:4000" en los registros.
Paso 7: crea un repositorio y envía tu primera confirmación¶
En la interfaz web (http://localhost:4000), haga clic en “Nuevo repositorio”, proporcione un nombre (por ejemplo, mi-proyecto) y haga clic en Crear.
Agregue su clave SSH pública en Configuración > Claves SSH pegando el contenido de ~/.ssh/id_ed25519.pub.
Luego en tu terminal:
git clone ssh://git@localhost:2222/admin/mon-projet.git
cd mon-projet
echo "# Mon projet" > README.md
git add README.md
git commit -m "Initial commit"
git push origin main
Resultado esperado:
Cloning into 'mon-projet'...
warning: You appear to have cloned an empty repository.
[main (root-commit) a1b2c3d] Initial commit
1 file changed, 1 insertion(+)
create mode 100644 README.md
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 226 bytes | 226.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To ssh://localhost:2222/admin/mon-projet.git
* [new branch] main -> main
Punto de control: regrese al navegador a http://localhost:4000/admin/my-project. La página debe mostrar el archivo README.md con el contenido #My project e indicar 1 confirmación en la rama main.
Funciones adicionales disponibles¶
IC integrado (opcional)¶
El CI se ejecuta en un servidor de compilación a través de SSH + rsync. Configurar en .env:
# Même machine (défaut pour le développement)
CI_REMOTE_HOST=localhost
# Ou serveur dédié
CI_REMOTE_HOST=192.168.13.110
CI_REMOTE_USER=ci-runner
Modo Fácil — agrega .gitrust-ci.yml a la raíz de tu repositorio:
Modo de energía: coloque un módulo Dagger en .dagger/ en la raíz. gitrust ejecutará dagger call -m .dagger/ ci.
Notificaciones¶
Configure SMTP en .env para notificaciones por correo electrónico:
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=user
SMTP_PASSWORD=password
SMTP_FROM=noreply@gitrust.eu
Idioma de la interfaz¶
gitrust está disponible en 6 idiomas (fr, en, de, es, pt, it). Establezca el idioma predeterminado para la instancia:
Resumen¶
- ✓ O1 logrado: gitrust se compila desde el código fuente y se ejecuta localmente:
cargo runmuestra "Servidor escuchando en http://0.0.0.0:4000" - ✓ O2 logrado: el entorno está configurado:
.envpoblado, PostgreSQL conectado, recursos CSS generados, migraciones aplicadas - ✓ O3 logrado: una primera inserción SSH fue exitosa; la confirmación es visible en la interfaz web en
http://localhost:4000/admin/mon-project
Y si no funciona¶
| Symptôme | Cause probable | Correction |
|---|---|---|
error[E0463]: can't find crate for 'std' à la compilation |
Toolchain Rust manquante ou mauvaise version | Exécutez rustup update stable && rustup default stable. Vérifiez avec rustc --version ≥ 1.80 |
connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed |
PostgreSQL non démarré ou DATABASE_URL incorrect |
Démarrez PostgreSQL (sudo systemctl start postgresql ou docker compose up -d dans database/). Vérifiez que DATABASE_URL dans .env correspond |
Permission denied (publickey) lors du git push |
Clé SSH non enregistrée dans gitrust ou mauvais port | Vérifiez dans Settings > SSH Keys que la clé est présente. Testez avec ssh -T git@localhost -p 2222 — vous devez voir « Vous êtes authentifié » |
Siguiente paso¶
→ 02 — Primera contribución: clonar, construir, probar, PR: aprenda cómo crear una rama de funciones, escribir pruebas y enviar su primera solicitud de extracción siguiendo el flujo de trabajo de gitrust (~90 min)