Introduction

Gitea est un dépôt git complet (HTTP/HTTPS et SSH) qui consomme peu de mémoire. Il est facilement installable sur une distribution "Alpine linux".

Installation

  • Sur une "Alpine linux 3.14", 32 bits,  384 Mo de mémoire, disque dur de 32 Go.
  • Il ne doit pas y avoir de serveur ssh actif (sshd ou dropbear). Désinstallez-le si nécessaire.
  • Dans "/etc/apk/repositories", activez tous les dépôts, puis "apk update", "apk upgrade", reboot.
  • Installez gitea : "apk add gitea".
  • A partir d'un client, en mode graphique, avec un navigateur web :
    • Connectez vous sur "http://ipDuServeurGitea:3000"
    • Utilisez les options par défaut, il est possible de tout modifier plus tard.
    • Créez un premier compte. Celui-ci sera l'administrateur de gitea.
  • Sur la machine Alpine, modifiez le fichier "/etc/gitea/app.ini" :
# Configuration cheat sheet: https://docs.gitea.io/en-us/config-cheat-sheet/
RUN_USER = gitea
RUN_MODE = prod
APP_NAME = Git with a cup of tea

[repository]
ROOT        = /var/lib/gitea/git
SCRIPT_TYPE = sh

[server]
STATIC_ROOT_PATH = /usr/share/webapps/gitea
APP_DATA_PATH    = /var/lib/gitea/data
LFS_START_SERVER = true
LFS_JWT_SECRET   = PhIAAXEQlWlR5vHbSmqUafS4X51OKGRIc-qWKoBPlvs
SSH_DOMAIN       = forge.mondomaine.net
DOMAIN           = forge.mondomaine.net
HTTP_PORT        = 3000
ROOT_URL         = http://forge.mondomaine.net:3000/
DISABLE_SSH      = false
SSH_PORT         = 2222
LFS_CONTENT_PATH = /var/lib/gitea/data/lfs
OFFLINE_MODE     = false
START_SSH_SERVER = true

[database]
DB_TYPE  = sqlite3
PATH     = /var/lib/gitea/db/gitea.db
SSL_MODE = disable
HOST     = 127.0.0.1:3306
NAME     = gitea
USER     = gitea
PASSWD   = 
SCHEMA   = 
CHARSET  = utf8
LOG_SQL  = false

[session]
PROVIDER = file

[log]
ROOT_PATH = /var/log/gitea
MODE      = console
LEVEL     = info
ROUTER    = console

[security]
INTERNAL_TOKEN     = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE2MzkyMzU3NzB9.rgqpVi86zR-Tgt2ZkKGgQr5qKmiWsP9J2gIMa7HMRsU
INSTALL_LOCK       = true
SECRET_KEY         = S2QSbW7tL0MWG7CxlUGe1YzadHCIUu3DRL5IfTJemPrTBwL0XgJ3zSS55dzPTzkT
PASSWORD_HASH_ALGO = pbkdf2

[mailer]
ENABLED = false

[service]
REGISTER_EMAIL_CONFIRM            = false
ENABLE_NOTIFY_MAIL                = false
DISABLE_REGISTRATION              = false
ALLOW_ONLY_EXTERNAL_REGISTRATION  = true
ENABLE_CAPTCHA                    = false
REQUIRE_SIGNIN_VIEW               = false
DEFAULT_KEEP_EMAIL_PRIVATE        = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
DEFAULT_ENABLE_TIMETRACKING       = true
NO_REPLY_ADDRESS                  = noreply.localhost

[picture]
DISABLE_GRAVATAR        = false
ENABLE_FEDERATED_AVATAR = true

[openid]
ENABLE_OPENID_SIGNIN = true
ENABLE_OPENID_SIGNUP = true
  • "ALLOW_ONLY_EXTERNAL_REGISTRATION = true" permet de désactiver la création de compte.
  • "START_SSH_SERVER = true" permet de lancer le serveur ssh intégré à gitea.
  • N'oubliez pas d'activer le service "gitea" au démarrage, avec la commande "rc-update add gitea".
  • Reboot

Création d'utilisateurs

Compte classique

A l'aide du compte administrateur, dans la partie "Administration du site" (menu déroulant du profil) :

  • Onglet "Comptes utilisateurs"
  • Bouton "Créer un compte"
  • User visibility : Limited (pour ne pas apparaître sans connexion)

Compte en lecture seule (eleve:btsinfo)

  • Onglet "Comptes utilisateurs"
  • Bouton "Créer un compte"
  • User visibility : Limited
  • Après création du compte, changer le nombre maximal de dépôts à 0.
  • Ne pas autoriser la création d'organisation.
  • Dans l'onglet "Couriels de l'utilisateur", désactiver l'email.

Compte administrateur

  • User visibility : Private

Utilisation de SSH

  • Le serveur SSH intégré utilise dans tous les cas le compte système gitea. Un mappage vers le compte utilisateur est réalisé en interne.
  • L'accès classique avec login et mot de passe est impossible, il faut obligatoirement utiliser un  système de clé privé/publique
  • Par exemple pour le compte "classique" ezola :
    • Créer sur un client une paire de clé avec "ssh-keygen". Je n'utilise pas de passphrase.
    • Copier le contenu de la clé publique "~/.ssh/id_rsa.pub" en passant par un éditeur comme geany, vers le compte ezola sur gitea, dans la partie "configuration" du profil, onglet "Clés SSH/GPG".
    • Le SSH est maintenant possible, uniquement à partir du client qui contient la clé privé "id_rsa", et vers le compte ezola.
    • La commande git de clonage est semblable à :
      git clone ssh://gitea@forge.mondomaine.net:2222/ezola/Essai.git