Auto-hébergement
Déployez dTax sur votre serveur Linux en moins de 15 minutes avec Docker Compose.
Prérequis
- Serveur Linux (Ubuntu 22.04+ recommandé), 2+ Go de RAM
- Docker Engine 24+ et Docker Compose v2
- Un nom de domaine pointant vers l’IP du serveur
- Ports 80 et 443 ouverts dans le pare-feu
Démarrage rapide
-
Cloner le dépôt
Fenêtre de terminal git clone https://github.com/dTaxLab/dtax.gitcd dtax -
Configurer les variables d’environnement
Fenêtre de terminal cp .env.production.example .envÉditez
.envet renseignez toutes les valeurs requises :Variable Description POSTGRES_PASSWORDMot de passe de base de données robuste JWT_SECRETChaîne aléatoire, 32 caractères minimum ENCRYPTION_KEYChaîne hexadécimale de 64 caractères — voir note ci-dessous CORS_ORIGINVotre domaine, ex. https://tax.example.comAPP_URLMême domaine (utilisé dans les emails de réinitialisation) NEXT_PUBLIC_API_URLhttps://tax.example.com/api(variable compilée — doit être définie avantdocker compose build) -
Démarrer les services
Fenêtre de terminal docker compose up -dLance PostgreSQL, Redis, API, Web et nginx. Le service
migrateexécute automatiquement les migrations de base de données.Vérifier le bon fonctionnement :
Fenêtre de terminal docker compose pscurl http://localhost/api/health
Architecture
┌──────────┐ :80/:443 ────│ nginx │ └────┬─────┘ ┌────┴─────┐ ┌─────│ Routage │─────┐ │ └──────────┘ │ ┌────┴───┐ ┌─────┴────┐ │ API │ │ Web │ │ :3001 │ │ :3000 │ └────┬───┘ └──────────┘ ┌────┴───┐ ┌───────┐ │Postgres│ │ Redis │ └────────┘ └───────┘Le Sync Worker s’exécute dans le processus API et interroge PostgreSQL toutes les 5 secondes pour les jobs en attente. Il gère deux types de jobs :
WALLET_SYNC— récupère les transactions on-chain ou d’exchangePRICE_ENRICH— complète les prix USD manquants, puis calcule automatiquement les rapports fiscaux FIFO et envoie un email récapitulatif
Aucun conteneur worker séparé n’est nécessaire. Configurez RESEND_API_KEY + FROM_EMAIL + APP_URL pour activer les notifications d’email de rapport fiscal prêt.
TLS avec Let’s Encrypt
-
Mettre à jour la configuration nginx
Éditez
docker/nginx/nginx.confet remplacezserver_name _;par votre domaine :server_name tax.example.com; -
Obtenir le certificat
Fenêtre de terminal docker compose up -d nginxdocker run --rm \-v dtax_letsencrypt:/etc/letsencrypt \-v dtax_certbot-data:/var/www/certbot \certbot/certbot certonly \--webroot -w /var/www/certbot \-d tax.example.com \--agree-tos --email you@example.com -
Activer HTTPS et redémarrer nginx
Fenêtre de terminal docker compose restart nginx -
Renouvellement automatique des certificats
Fenêtre de terminal echo "0 3 * * * docker run --rm \-v dtax_letsencrypt:/etc/letsencrypt \-v dtax_certbot-data:/var/www/certbot \certbot/certbot renew --quiet \&& docker compose restart nginx" | crontab -
Premier administrateur
- Créez un compte sur
https://yourdomain.com/register - Promouvez le compte en administrateur via la base de données :
docker compose exec postgres psql -U dtax -c \ "UPDATE \"User\" SET role='ADMIN' WHERE email='your@email.com';"Mises à jour
git pulldocker compose builddocker compose up -dSauvegardes
chmod +x docker/scripts/backup.sh./docker/scripts/backup.sh ./backups
# Sauvegarde automatique chaque jour à 2hecho "0 2 * * * /path/to/dtax/docker/scripts/backup.sh /path/to/dtax/backups" | crontab -
# Restaurer depuis une sauvegardegunzip -c backups/dtax_20260313_020000.sql.gz | \ docker compose exec -T postgres psql -U dtax dtaxServices optionnels
| Service | Variables d’environnement | Rôle |
|---|---|---|
| Resend | RESEND_API_KEY, FROM_EMAIL | Vérification email, réinitialisation de mot de passe et notifications automatiques de rapport fiscal prêt — sans cela, la réinitialisation de mot de passe, la vérification email et les emails de rapport fiscal post-enrichissement sont silencieusement ignorés |
| Stripe | STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_PRO_PRICE_ID, STRIPE_CPA_PRICE_ID | Facturation des abonnements |
| Anthropic | ANTHROPIC_API_KEY | Classification IA des transactions & chat |
| Etherscan | ETHERSCAN_API_KEY | Indexation blockchain EVM |
| Solscan | SOLSCAN_API_KEY | Indexation blockchain Solana |
| PostHog | NEXT_PUBLIC_POSTHOG_KEY, NEXT_PUBLIC_POSTHOG_HOST | Analytics produit |
| Sentry | SENTRY_DSN | Suivi des erreurs |
Dépannage
Les services ne démarrent pas
docker compose logs apidocker compose logs webdocker compose logs nginxL’API crashe immédiatement
Cherchez FATAL: ENCRYPTION_KEY dans les logs API. Régénérez la clé avec openssl rand -hex 32.
Tout réinitialiser
docker compose down -vdocker compose up -d