Espace mutualisé sécurisé pour héberger une application Node.js sur YunoHost.
Custom Node.js web application with optional SFTP access, configurable database, and full YunoHost integration.
My Node App est un package YunoHost qui fournit un environnement prêt à l'emploi pour faire tourner une application Node.js sur un serveur YunoHost. Il s'inspire de my_webapp_ynh mais remplace PHP par Node.js.
- Installe et configure Node.js avec la version de votre choix
- Met en place un reverse proxy Nginx avec support WebSocket
- Crée un service systemd sécurisé (sandboxing) pour votre application
- Gère les droits d'accès via le système de permissions YunoHost
- Supporte la sauvegarde et restauration complètes
- Permet le changement de domaine/chemin sans réinstallation
| Option | Choix disponibles |
|---|---|
| Version Node.js | 18, 20, 22 |
| Gestionnaire de paquets | npm, pnpm, yarn |
| Base de données | Aucune, MySQL, PostgreSQL |
| Accès SFTP | Oui / Non |
| Permissions d'accès | Gérées par YunoHost |
Toutes ces options sont modifiables après installation depuis le panneau d'administration YunoHost.
My Node App is a YunoHost package that provides a ready-to-use environment to run a Node.js application on a YunoHost server. Inspired by my_webapp_ynh, it replaces PHP with Node.js.
- Installs and configures Node.js with your chosen version
- Sets up an Nginx reverse proxy with WebSocket support
- Creates a hardened systemd service (sandboxing) for your application
- Manages access control through YunoHost's permission system
- Supports full backup and restore
- Allows domain/path changes without reinstallation
| Option | Available choices |
|---|---|
| Node.js version | 18, 20, 22 |
| Package manager | npm, pnpm, yarn |
| Database | None, MySQL, PostgreSQL |
| SFTP access | Yes / No |
| Access permissions | Managed by YunoHost |
All options are editable after installation from the YunoHost admin panel.
After installation, a default welcome page is displayed:
┌──────────────────────────────────────┐
│ My Node App │
│ │
│ Your Node.js application is │
│ running on YunoHost. │
│ │
│ Node.js v20.x — Port 3000 │
└──────────────────────────────────────┘
Replace the default files with your own Node.js project.
Recherchez My Node App dans le catalogue d'applications YunoHost, ou installez depuis une URL GitHub.
# Installation
sudo yunohost app install https://github.com/<your-username>/my_nodeapp_ynh
# Mise à jour / Upgrade
sudo yunohost app upgrade my_nodeapp -u https://github.com/<your-username>/my_nodeapp_ynhUne fois installé, déposez vos fichiers dans le répertoire d'installation :
# Via SFTP (si activé)
sftp <app-user>@<your-domain>
# Ou directement sur le serveur
cd /var/www/<app-name>/Votre application doit :
- Avoir un fichier
index.jscomme point d'entrée - Écouter sur le port défini dans la variable d'environnement
PORT - Écouter sur
127.0.0.1(localhost uniquement, Nginx gère le reste)
Votre application reçoit automatiquement ces variables via le fichier .env :
| Variable | Description |
|---|---|
NODE_ENV |
Toujours production |
PORT |
Port attribué par YunoHost |
DOMAIN |
Domaine de l'application |
PATH_PREFIX |
Chemin URL de l'application |
DB_TYPE |
mysql ou postgresql (si configuré) |
DB_NAME |
Nom de la base de données |
DB_USER |
Utilisateur de la base de données |
DB_PWD |
Mot de passe de la base de données |
DB_HOST |
localhost |
const http = require("http");
const port = process.env.PORT || 3000;
const server = http.createServer((req, res) => {
res.writeHead(200, { "Content-Type": "text/html" });
res.end("<h1>Hello from YunoHost!</h1>");
});
server.listen(port, "127.0.0.1", () => {
console.log(`Server running on port ${port}`);
});sudo systemctl restart <app-name>
# Voir les logs / View logs
sudo journalctl -u <app-name> -fAccédez à Applications > My Node App > Configuration pour modifier :
- SFTP : activer/désactiver l'accès et changer le mot de passe
- Node.js : changer la version (18, 20, 22)
- Package manager : changer entre npm, pnpm, yarn
/var/www/<app-name>/
├── index.js # Point d'entrée (modifiable)
├── package.json # Dépendances Node.js
├── node_modules/ # Dépendances installées
└── .env # Variables d'environnement (auto-généré)
- Le service Node.js tourne dans un sandbox systemd avec des restrictions strictes
- L'application écoute uniquement sur 127.0.0.1 (pas d'accès direct)
- Nginx gère le SSL/TLS et le reverse proxy
- Les droits d'accès sont gérés par le SSO YunoHost
- Les capabilities Linux non nécessaires sont supprimées
┌─────────────┐
│ Internet │
└──────┬──────┘
│ HTTPS
┌──────┴──────┐
│ Nginx │
│ (reverse │
│ proxy + │
│ WebSocket) │
└──────┬──────┘
│ HTTP localhost:PORT
┌──────┴──────┐
│ Node.js │
│ (systemd │
│ service) │
└──────┬──────┘
│ (optionnel)
┌──────┴──────┐
│ Database │
│ MySQL / PG │
└─────────────┘
| Ressource | Lien |
|---|---|
| Documentation packaging YunoHost | https://doc.yunohost.org/en/dev/packaging/ |
| Helpers v2.1 | https://doc.yunohost.org/en/packaging/scripts/helpers_v2.1/ |
| Config panels | https://doc.yunohost.org/en/dev/packaging/advanced/config_panels/ |
| SFTP sur les apps | https://doc.yunohost.org/en/admin/tutorials/sftp_on_apps/ |
| my_webapp_ynh (inspiration) | https://github.com/YunoHost-Apps/my_webapp_ynh |
| nodered_ynh (référence Node.js) | https://github.com/YunoHost-Apps/nodered_ynh |
Pull requests are welcome and should target the testing branch.
The testing branch can be tested using:
# Fresh install
sudo yunohost app install https://github.com/<your-username>/my_nodeapp_ynh/tree/testing
# Upgrade
sudo yunohost app upgrade my_nodeapp -u https://github.com/<your-username>/my_nodeapp_ynh/tree/testingpackage_check ./my_nodeapp_ynhPlease see https://doc.yunohost.org/packaging_apps for more information.
GPL-3.0-only — See LICENSE for details.