.env du container dev
.localhost
C'est la variante la plus simple pour démarrer. L'environnement complet (Rails + Sidekiq + PostgreSQL/PostGIS + Redis + Caddy HTTPS local) est containerisé. Votre poste n'a besoin que de Docker et de Git.
navigateur ─► 127.0.0.1:443 (Caddy, cert auto via tls internal)
├─ duke.ekylibre.localhost ─► host.docker.internal:8000 (Duke local, optionnel)
├─ ekylibre.localhost ─► app:3000 (landing)
└─ *.ekylibre.localhost ─► app:3000 (tenants)
| Service | Port hôte | Rôle |
|---|---|---|
app |
3000 |
Serveur Rails |
app |
8808 |
Rack Mini Profiler |
db |
5431 |
PostgreSQL 13 + PostGIS |
redis |
— (interne) | Redis 7 |
sidekiq |
— (interne) | Worker de jobs |
caddy |
127.0.0.1:80 / 127.0.0.1:443
|
Reverse-proxy HTTPS local |
Avoir validé les prérequis communs — en particulier Docker Engine ≥ 24 et Docker Compose v2.
L'image de base est sur GHCR public, aucune authentification requise.
mkdir -p ~/projects && cd ~/projects
git clone -b 5.0-beta https://github.com/ekylibre/ekylibre.git
cd ekylibre
.env du container dev
cp docker/dev/.env.dist docker/dev/.env
Éditer docker/dev/.env et renseigner au minimum :
| Variable | Description |
|---|---|
RAILS_ENV |
Laisser à development
|
DB_USERNAME / DB_PASSWORD
|
Identifiants PostgreSQL (ex: ekylibre / ekylibre) |
REDIS_URL |
Doit valoir redis://redis
|
UID / GID
|
Vos UID/GID hôte (id pour les obtenir) |
Important : si votre UID hôte n'est pas
1000, renseignezUIDetGIDdans.env— sinon les fichiers créés dans le volume monté seront propriété derootet vous ne pourrez plus les éditer depuis votre éditeur préféré.Pas de configuration
/etc/hostsà faire :*.ekylibre.localhostest résolu nativement par systemd-resolved / glibc (RFC 6761).
Depuis la racine du projet :
docker compose -f docker/dev/docker-compose.yml build
Le premier build est long (téléchargement de l'image de base Ruby 2.6, ~1 GB). Les suivants sont instantanés grâce au cache Docker.
docker compose -f docker/dev/docker-compose.yml up
Au premier démarrage, le container app exécute automatiquement :
bundle install — gems Rubyyarn install — packages JSrails db:create db:migrate — création + migrationsrake lexicon:load — 5 à 10 minutes (nomenclatures agricoles)3000
L'admin est ensuite accessible sur http://localhost:3000/admin.
docker compose -f docker/dev/docker-compose.yml exec app bundle exec rake first_run
.localhost
Pour bénéficier de l'HTTPS local et tester le multi-tenant, il faut faire confiance à la CA Caddy une seule fois.
sudo apt install -y libnss3-tools # une seule fois (Firefox/Chrome)
docker/dev/trust-ca.sh
Le script :
caddy-data
/usr/local/share/ca-certificates/ (store système)Redémarrer le navigateur après.
resolvectl query demo.ekylibre.localhost
# 127.0.0.1, ::1 — synthetic (résolution native)
curl -I https://ekylibre.localhost/
# HTTP/2 200 — landing page
curl -I https://closeriedesterres.ekylibre.localhost/
# HTTP/2 200 — tenant Rails (cert auto)
Tout tenant créé dans l'admin est accessible instantanément, sans toucher à /etc/hosts.
Les plugins sont déclarés dans Gemfile.local (à la racine, monté en volume).
La clé SSH de l'hôte est montée automatiquement dans les containers (~/.ssh:/home/ekylibre/.ssh). S'assurer qu'elle est bien autorisée sur GitHub :
ssh -T git@github.com
# Hi <username>! You've successfully authenticated...
| Plugin | Dépôt |
|---|---|
ekylibre-baqio |
ekylibre/ekylibre-baqio |
ekylibre-ednotif |
ekylibre/ekylibre-ednotif |
ekylibre-banking |
ekylibre/ekylibre-banking |
ekylibre-qonto |
ekylibre/ekylibre-qonto |
hajimari |
ekylibre/ekylibre-hajimari |
idea |
ekylibre/ekylibre-idea |
planning |
ekylibre/ekylibre-planning |
ekylibre-samsys |
ekylibre/ekylibre-samsys |
ekylibre-traccar |
ekylibre/ekylibre-traccar |
ekylibre_ekyviti |
ekylibre/ekylibre-viti |
weenat |
ekylibre/ekylibre-weenat |
ekylibre-economic |
ekylibre/ekylibre-economic |
ekylibre-natuition |
ekylibre/ekylibre-natuition |
Gemfile.local
Aucun rebuild d'image n'est nécessaire — bundle install est lancé au démarrage du container. Pour le forcer :
docker compose -f docker/dev/docker-compose.yml exec app bundle install --path vendor/bundle
# Arrêter
docker compose -f docker/dev/docker-compose.yml down
# Logs d'un service
docker compose -f docker/dev/docker-compose.yml logs -f app
# Shell dans le container app
docker compose -f docker/dev/docker-compose.yml exec app bash
# Console Rails
docker compose -f docker/dev/docker-compose.yml exec app bundle exec rails c
# Connexion directe à la DB depuis l'hôte
psql -h localhost -p 5431 -U ekylibre eky_development
Toutes regroupées dans Résolution de problèmes :
vendor/bundle / /app → vérifier UID/GID dans .env
Memory overcommit → sudo sysctl vm.overcommit_memory=1
403 Forbidden) → vérifier authentification registryL'app est en route. Pour comprendre les services et leurs interactions, lire Architecture. Pour contribuer, lire Contribuer.
Cette documentation est open-source. Aidez-nous à l'améliorer en ouvrant une issue ou une pull request.