58 lines
2.2 KiB
Bash
58 lines
2.2 KiB
Bash
|
|
#!/usr/bin/env bash
|
|||
|
|
set -euo pipefail
|
|||
|
|
|
|||
|
|
BASE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|||
|
|
if [[ "$(id -u)" == "0" ]]; then echo "CodexPi ne doit pas être installé ou lancé en root." >&2; exit 1; fi
|
|||
|
|
cd "$BASE"
|
|||
|
|
|
|||
|
|
# Active le garde-fou versionné qui refuse les secrets dans les commits.
|
|||
|
|
git config core.hooksPath .githooks
|
|||
|
|
|
|||
|
|
# The Docker deployment never uses a project-local Python environment.
|
|||
|
|
for legacy_venv in "$BASE/.venv" "$BASE/.venv-delete-on-pi"; do
|
|||
|
|
resolved_venv="$(realpath -m -- "$legacy_venv")"
|
|||
|
|
if [[ "$resolved_venv" != "$BASE/.venv" && "$resolved_venv" != "$BASE/.venv-delete-on-pi" ]]; then
|
|||
|
|
echo "Refus de supprimer un chemin inattendu: $resolved_venv" >&2
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
[[ ! -e "$resolved_venv" ]] || rm -rf -- "$resolved_venv"
|
|||
|
|
done
|
|||
|
|
|
|||
|
|
"$BASE/scripts/audit.sh"
|
|||
|
|
command -v docker >/dev/null || { echo "Docker est requis" >&2; exit 1; }
|
|||
|
|
docker compose version >/dev/null || { echo "Le plugin Docker Compose est requis" >&2; exit 1; }
|
|||
|
|
docker info >/dev/null || { echo "Docker n'est pas accessible à l'utilisateur $(id -un)" >&2; exit 1; }
|
|||
|
|
|
|||
|
|
[[ -f .env ]] || cp .env.example .env
|
|||
|
|
mkdir -p data
|
|||
|
|
mkdir -p "$HOME/.codex" "$HOME/.claude" "$HOME/.config/opencode" "$HOME/.config/gh" "$HOME/.local/share/opencode"
|
|||
|
|
chmod 700 data
|
|||
|
|
chmod 600 .env
|
|||
|
|
|
|||
|
|
ensure_env() {
|
|||
|
|
local key="$1" value="$2"
|
|||
|
|
grep -q "^${key}=" .env || printf '\n%s=%s\n' "$key" "$value" >> .env
|
|||
|
|
}
|
|||
|
|
ensure_env PUID "$(id -u)"
|
|||
|
|
ensure_env PGID "$(id -g)"
|
|||
|
|
ensure_env DOCKER_GID "$(stat -c '%g' /var/run/docker.sock)"
|
|||
|
|
ensure_env CODEXPI_PROXY_PORT 8765
|
|||
|
|
ensure_env CODEXPI_BIND_ADDRESS 0.0.0.0
|
|||
|
|
ensure_env CODEXPI_HOME "$HOME"
|
|||
|
|
|
|||
|
|
"$BASE/scripts/compose.sh" build
|
|||
|
|
"$BASE/scripts/compose.sh" run --rm django-web python3 manage.py migrate --noinput
|
|||
|
|
"$BASE/scripts/compose.sh" up -d
|
|||
|
|
if command -v systemctl >/dev/null 2>&1 && [[ -d /run/systemd/system ]]; then
|
|||
|
|
"$BASE/scripts/install-boot-service.sh"
|
|||
|
|
else
|
|||
|
|
echo "Avertissement : systemd est absent ; l’auto-réparation de l’accès Docker ne peut pas être activée." >&2
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo
|
|||
|
|
echo "Installation Docker terminée."
|
|||
|
|
echo "Ouvrez l'application pour lancer l'assistant et créer le premier administrateur."
|
|||
|
|
echo "État des services: ./scripts/compose.sh ps"
|
|||
|
|
echo "Santé locale: curl http://127.0.0.1:8765/proxy-health"
|
|||
|
|
echo "Accès réseau local: http://IP_DU_PI:8765"
|