Ce dossier regroupe les fichiers utiles pour exécuter Anonyfiles API en production.
Une Dockerfile est disponible à la racine du projet. Elle installe les dépendances listées dans requirements-full.txt puis lance l'API avec Uvicorn.
docker build -t anonyfiles .
docker run -p 8000:8000 anonyfilesPour certains hébergeurs (Heroku, Scalingo...), le Procfile fournit la commande de démarrage :
web: uvicorn anonyfiles_api.api:app --host 0.0.0.0 --port ${PORT:-8000}Cette commande nécessite que la variable d'environnement PORT soit définie par la plateforme (Railway le fait automatiquement). À défaut, Uvicorn démarrera sur le port 8000.
Le fichier anonyfiles-api.service permet de lancer l'API comme service Linux. Exemple d'installation :
sudo cp deploy/anonyfiles-api.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now anonyfiles-api.serviceLes variables d'environnement à définir (dans /etc/default/anonyfiles-api par exemple) :
ANONYFILES_USER: utilisateur exécutant le serviceANONYFILES_HOME: chemin du projetANONYFILES_HOST: adresse d'écoute (ex.127.0.0.1)ANONYFILES_PORT: port d'écoute (ex.8000)ANONYFILES_JOBS_DIR: répertoire des jobs (défautjobs)
Le fichier nixpacks.toml décrit les étapes d'installation et la commande de lancement pour Nixpacks.
nixpacks build . --name anonyfiles
nixpacks run .Ces commandes créent une image contenant l'API puis la démarrent avec le même ordre que défini dans le Procfile. Assurez-vous que la variable PORT est disponible dans l'environnement pour que Uvicorn écoute sur le bon port.
Le fichier nixpacks.toml est utilisé comme configuration de build
pour le service d'hébergement Railway.
Pour mettre en place un déploiement automatisé :
- Installer l'outil en ligne de commande Railway :
npm install -g @railway/cli
- Lier le dépôt local au projet Railway existant :
railway link
- Définir les variables d'environnement nécessaires depuis le tableau de bord Railway.
- Le workflow
railway.ymldéclenche automatiquement le déploiement à chaque push sur la branche principale.