Aller au contenu

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

  1. Cloner le dépôt

    Fenêtre de terminal
    git clone https://github.com/dTaxLab/dtax.git
    cd dtax
  2. Configurer les variables d’environnement

    Fenêtre de terminal
    cp .env.production.example .env

    Éditez .env et renseignez toutes les valeurs requises :

    VariableDescription
    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.com
    APP_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 avant docker compose build)
  3. Démarrer les services

    Fenêtre de terminal
    docker compose up -d

    Lance PostgreSQL, Redis, API, Web et nginx. Le service migrate exécute automatiquement les migrations de base de données.

    Vérifier le bon fonctionnement :

    Fenêtre de terminal
    docker compose ps
    curl 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’exchange
  • PRICE_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

  1. Mettre à jour la configuration nginx

    Éditez docker/nginx/nginx.conf et remplacez server_name _; par votre domaine :

    server_name tax.example.com;
  2. Obtenir le certificat

    Fenêtre de terminal
    docker compose up -d nginx
    docker 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
  3. Activer HTTPS et redémarrer nginx

    Fenêtre de terminal
    docker compose restart nginx
  4. 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

  1. Créez un compte sur https://yourdomain.com/register
  2. Promouvez le compte en administrateur via la base de données :
Fenêtre de terminal
docker compose exec postgres psql -U dtax -c \
"UPDATE \"User\" SET role='ADMIN' WHERE email='your@email.com';"

Mises à jour

Fenêtre de terminal
git pull
docker compose build
docker compose up -d

Sauvegardes

Fenêtre de terminal
chmod +x docker/scripts/backup.sh
./docker/scripts/backup.sh ./backups
# Sauvegarde automatique chaque jour à 2h
echo "0 2 * * * /path/to/dtax/docker/scripts/backup.sh /path/to/dtax/backups" | crontab -
# Restaurer depuis une sauvegarde
gunzip -c backups/dtax_20260313_020000.sql.gz | \
docker compose exec -T postgres psql -U dtax dtax

Services optionnels

ServiceVariables d’environnementRôle
ResendRESEND_API_KEY, FROM_EMAILVé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
StripeSTRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_PRO_PRICE_ID, STRIPE_CPA_PRICE_IDFacturation des abonnements
AnthropicANTHROPIC_API_KEYClassification IA des transactions & chat
EtherscanETHERSCAN_API_KEYIndexation blockchain EVM
SolscanSOLSCAN_API_KEYIndexation blockchain Solana
PostHogNEXT_PUBLIC_POSTHOG_KEY, NEXT_PUBLIC_POSTHOG_HOSTAnalytics produit
SentrySENTRY_DSNSuivi des erreurs

Dépannage

Les services ne démarrent pas

Fenêtre de terminal
docker compose logs api
docker compose logs web
docker compose logs nginx

L’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

Fenêtre de terminal
docker compose down -v
docker compose up -d