1
0

reecriture README via IA

This commit is contained in:
unfr 2025-08-13 08:45:18 +02:00
parent eec9bfe67d
commit d4e0e34d32

302
readme.md
View File

@ -1,83 +1,88 @@
## Postauto # Postauto
### Pour poster automatiquement avec une simple commande depuis un VPS , serveur dédié ou seedbox. ### Poster automatiquement via une simple commande depuis un VPS, dédié ou seedbox
Postauto est un script permettant via une simple commande d'ajouter un fichier à traiter dans une base de données. **Postauto** est un ensemble de scripts (bash + une petite UI web Node.js) qui :
Une fois votre fichier ajouté il sera traité automatiquement. - génèrent les **PAR2**
- postent via **Nyuu** (avec **obfuscation**)
- envoient automatiquement sur le site (MediaInfo/BDInfo inclus)
- proposent un **suivi sur une page web**
#### Possibilités. ## Sommaire
- [Prérequis](#prérequis)
- [Installation](#installation)
- [Configuration (bash)](#configuration-bash--homeuserautopostconfsh)
- [Configuration (UI web)](#configuration-ui-web--homeuserautopostconfigjs)
- [Création de la base](#création-de-la-base)
- [Commandes CLI](#commandes-cli)
- [Interface web](#interface-web)
- [Configuration Nginx](#configuration-nginx)
- [Mise à jour](#mise-à-jour)
- [Désinstallation](#désinstallation)
- [Limitations](#limitations)
- [Dépannage](#dépannage)
- Création des PAR2 ## Prérequis
- Post via NYUU ( obfuscation totale) - Linux (script bash)
- ✨Envoi automatique sur le site✨ (avec MediaInfo/BDInfo directement ajouté) - Accès **SSH** (sur `/home/$USER`)
- Suivi sur une page web - Outils de base : `basename`, `curl`, `screen`, `nginx` (pour lUI web)
- Testé avec :
- VPS / dédiés ✅
- Seedbox : Ultra.cc ✅, Whatbox ✅, Dediseedbox ❌ (limitations)
#### Limitations. > Linstallateur installe/emballe tout le reste (mediainfo, sqlite3 si besoin, 7z, BDInfo, Nyuu, ParPar, Node v22, modules npm…).
- [ ] Le script est écrit en bash il ne tourne donc que sous linux. ## Installation
- [ ] Il faut impérativement un accès SSH sur /home/$USER
- VPS et Dédié pas de souci de ce coté.
- Seedbox nous avons testé via ultracc whatbox et dediseedbox ( ultracc et whatbox ok, dediseedbox pas ok).
- [ ] Il faut avoir les applications suivantes de disponibles.
| Commande | README | ### Avec droits sudo (recommandé)
| ------ | ------ | Installe mediainfo/sqlite via paquets Debian (meilleure compatibilité) :
| basename | Normalement installé par défaut | ```bash
| curl | à installer si nécessaire | wget -qO install.sh https://tig.unfr.pw/UNFR/postauto/raw/branch/main/install.sh \
| screen | à installer si nécessaire | && chmod +x install.sh \
| nginx | à installer si vous désirez utiliser l'interface de suivi | && sudo --preserve-env=HOME ./install.sh
#### Installation.
##### 2 solutions possible
- vous disposez des droits sudo :
```sh
wget -qO install.sh https://tig.unfr.pw/UNFR/postauto/raw/branch/main/install.sh && chmod +x install.sh && sudo --preserve-env=HOME ./install.sh
```
> Cela installera via les paquets debian sqlite et mediinfo (meilleur compatibilité)
- vous ne disposez pas des droits sudo :
```sh
wget -qO install.sh https://tig.unfr.pw/UNFR/postauto/raw/branch/main/install.sh && chmod +x install.sh && ./install.sh
``` ```
#### Update ### Sans sudo
Utilise des binaires « standalone » dans `~/bin` :
```sh ```bash
postauto stop && wget -qO update.sh https://tig.unfr.pw/UNFR/postauto/raw/branch/main/update.sh && chmod +x update.sh && ./update.sh wget -qO install.sh https://tig.unfr.pw/UNFR/postauto/raw/branch/main/install.sh \
&& chmod +x install.sh \
&& ./install.sh
``` ```
##### Update passage EN 7z (12/03/2024) ## Configuration (bash) — `/home/$USER/autopost/conf.sh`
```sh > Variables **obligatoires** (placeholders à remplacer), + règles **sqlite/mysql**.
cd autopost
wget -qO compress.sh https://tig.unfr.pw/UNFR/postauto/raw/branch/main/autopost/compress.sh && chmod +x compress.sh && ./compress.sh
```
#### Configuration. ```bash
Éditer le fichier /home/$USER/autopost/conf.sh
```sh
#!/bin/bash #!/bin/bash
#CONFIG A MODIF # CONFIG À MODIFIER
URL_API="A NOUS DEMANDER SUR DISCORD" URL_API="A NOUS DEMANDER SUR DISCORD"
APIKEY="A RETROUVER DANS VOTRE PROFIL" APIKEY="A RETROUVER DANS VOTRE PROFIL"
DB_FILE="/home/$USER/autopost/base_autopost.db"
DOSSIER_GLOBAL="/home/$USER/" DOSSIER_GLOBAL="/home/$USER/"
DOSSIER_NFO="/home/$USER/autopost/mediainfo/" DOSSIER_NFO="/home/$USER/autopost/mediainfo/"
DOSSIER_LOGS="/home/$USER/autopost/logs/" DOSSIER_LOGS="/home/$USER/autopost/logs/"
DOSSIER_NZB_ATTENTE="/home/$USER/ATTENTE/" DOSSIER_NZB_ATTENTE="/home/$USER/autopost/ATTENTE/"
DOSSIER_NZB_FINAL="/home/$USER/FINIS/" DOSSIER_NZB_FINAL="/home/$USER/autopost/FINIS/"
#CONFIG FOURNISSEUR USENET DE POST # cp -rl | cp -rs | ln -s | mv | cp
MOVE_CMD="cp -rl"
# CONFIG FOURNISSEUR USENET DE POST (requis)
NG_HOST="" NG_HOST=""
NG_PORT="" NG_PORT=""
NG_USER="" NG_USER=""
NG_PASS="" NG_PASS=""
NG_NBR_CONN="" NG_NBR_CONN=""
dbtype="sqlite" # ou "mysql" # Base de données
dbtype="sqlite" # ou "mysql"
MYSQL_TABLE="release" # OBLIGATOIRE
# sqlite -> DB_FILE requis, champs MySQL facultatifs
DB_FILE="/home/$USER/autopost/base_autopost.db" DB_FILE="/home/$USER/autopost/base_autopost.db"
# mysql -> champs MySQL requis, DB_FILE facultatif
MYSQL_HOST="" MYSQL_HOST=""
MYSQL_PORT= MYSQL_PORT=
MYSQL_USER="" MYSQL_USER=""
@ -85,61 +90,50 @@ MYSQL_PASS=""
MYSQL_DB="" MYSQL_DB=""
``` ```
#### Création du fichier de base de données. **Rappels :**
```sh - Si `dbtype="sqlite"`**`DB_FILE` requis** ; `MYSQL_*` facultatifs.
postauto createdb - Si `dbtype="mysql"`**`MYSQL_HOST/PORT/USER/PASS/DB` requis** ; `DB_FILE` facultatif.
``` - Les dossiers `DOSSIER_*` doivent **exister**.
#### Commande ## Configuration (UI web) — `/home/$USER/autopost/config.js`
| commande | README | > Champs **obligatoires** + règles **sqlite/mysql** + proxy/HTTPS.
| ------ | ------ |
| start | Permet de démarrer le script. |
| stop | Permet d'arrêter le script. |
| restart | Permet de redémarrer le script. |
| show | Permet de rentrer dans la fenêtre d'exécution du script (ctrl a+d pour en sortir). |
| status | Voir les 500 derniers enregistrements du fichier DB avec leur status (Attente, Echec, Succès) (Attente, Echec, Succès). |
| add | Ajouté un fichier MKV à traiter dans la base (doit être suivi du chemin complet de votre fichier). |
| createdb | Permet de créer la DB (si vous souhaitez écraser la DB une confirmation vous sera demandé). |
| log | Permet de voir le log de ppost d'un fichier précis. |
| check | Permet de vérifier la présence d'un fichier sur le site. |
| update | Permet d'updater le script. |
#### interface web
Une interface est disponible, il vous faut nginx pour que celle-ci fonctionne
#### Configuration de l'interface web.
Éditer le fichier /home/$USER/autopost/config.js
```js ```js
const path = require('path'); const path = require('path');
module.exports = { module.exports = {
// Port sur lequel le serveur écoute // Réseau
// Attention si vous êtes sur une seedbox de bien choisir un port laisser libre par votre hébergeur port: 3000, // ⚠️ Choisissez un port autorisé par votre hébergeur (Ultra.cc: `app-ports free`)
// chez ultracc par exemple la commande est app-ports free name: 'NomDuNoeud', // Nom affiché dans lUI
port: Voir indications ci dessus, background_color: 'slate-900', // Tailwind color: https://tailwindcss.com/docs/colors
// Chemin vers le fichier de base de données SQLite // Base de données
dbtype: 'sqlite', // 'sqlite' ou 'mysql'
// sqlite -> dbFile requis
dbFile: path.join(__dirname, 'base_autopost.db'), dbFile: path.join(__dirname, 'base_autopost.db'),
//MySQL // mysql -> champs requis
DB_HOST: '', DB_HOST: '',
DB_PORT: , DB_PORT: 3306,
DB_USER: '', DB_USER: '',
DB_PASSWORD: '', DB_PASSWORD: '',
DB_DATABASE: '', DB_DATABASE: '',
DB_TABLE: 'release',
// Chemins personnalisables pour les dossiers // Dossiers
finishdirectory: path.join(__dirname, 'FINIS'), finishdirectory: path.join(__dirname, 'FINIS'),
logdirectory: path.join(__dirname, 'logs'), logdirectory: path.join(__dirname, 'logs'),
infodirectory: path.join(__dirname, 'mediainfo'), infodirectory: path.join(__dirname, 'mediainfo'),
// Secret pour la configuration des sessions "curl -L pw.vdx.sh/w/32" // Sessions (générer un secret : `curl -L pw.vdx.sh/w/32`)
sessionSecret: 'Voir commande ci dessus', sessionSecret: 'collez-ici-le-secret-généré',
trustProxy: 0, // 0 = pas de proxy, 1 = Nginx, 2 = Cloudflare->Nginx, etc.
cookieSecure: false, // true si HTTPS bout-à-bout (reverse proxy compris)
sessionStorePath: './sessions',
// Informations d'authentification // Auth UI (à changer !)
auth: { auth: {
username: 'user', username: 'user',
password: 'pass' password: 'pass'
@ -147,37 +141,123 @@ module.exports = {
}; };
``` ```
##### Configuration de nginx **Rappels :**
- `dbtype: 'sqlite'`**`dbFile` requis** ; `DB_*` facultatifs.
- `dbtype: 'mysql'`**`DB_HOST/PORT/USER/PASSWORD/DATABASE` requis** ; `dbFile` facultatif.
- Si vous êtes derrière Nginx/Cloudflare, ajustez **`trustProxy`** et **`cookieSecure`**.
- Les dossiers `finishdirectory`, `logdirectory`, `infodirectory` doivent **exister**.
Ajouter ce bloc dans la configuration de votre nom de domaine ## Création de la base
```bash
postauto createdb
```
## Commandes CLI
| Commande | Description |
|-----------|-------------|
| `start` | Démarre le script principal. |
| `stop` | Arrête le script. |
| `restart` | Redémarre le script. |
| `show` | Entre dans la session `screen` (Ctrl+A puis D pour détacher). |
| `status` | Affiche les 500 derniers enregistrements avec leur statut (Attente / Échec / Succès). |
| `add` | Ajoute un **fichier MKV** à traiter (chemin complet requis). |
| `createdb`| Crée (ou recrée, avec confirmation) la base de données. |
| `log` | Affiche le log de post pour un fichier donné. |
| `check` | Vérifie la présence dun fichier sur le site. |
| `update` | Met à jour les scripts. |
> Autocomplétion bash fournie (install/update lactivent automatiquement).
## Interface web
- Linstallateur installe **Node v22** (via `nvm`) et tous les modules requis.
- Lancer lUI (ex. en arrière-plan) :
```bash
postauto restart
```
(ou configurez un service systemd / `pm2` selon vos préférences)
### Configuration Nginx
> **Important :** les routes statiques sont servies sous **`/autopost`**.
```nginx ```nginx
# Remplacez 127.0.0.1:3000 par le host:port de votre UI (voir config.js: port)
location /autopost/ { location /autopost/ {
proxy_pass http://127.0.0.1:XXXXX; proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1; proxy_http_version 1.1;
proxy_set_header X-Forwarded-Host $http_host; proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
} }
location /js/ {
proxy_pass http://127.0.0.1:XXXXX; location /autopost/js/ {
proxy_http_version 1.1; proxy_pass http://127.0.0.1:3000;
proxy_set_header X-Forwarded-Host $http_host; proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
} }
location /jquery/ {
proxy_pass http://127.0.0.1:XXXXX; location /autopost/jquery/ {
proxy_http_version 1.1; proxy_pass http://127.0.0.1:3000;
proxy_set_header X-Forwarded-Host $http_host; proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
} }
``` ```
> Pensez à bien remplacer XXXXX par le port que vous avez mis dans votre config.js > Réglez **`trustProxy`** (1 pour Nginx, 2 pour Cloudflare→Nginx) et mettez **`cookieSecure: true`** si le site est servi en **HTTPS**.
## Mise à jour
#### Désinstallation. ```bash
postauto stop \
```sh && wget -qO update.sh https://tig.unfr.pw/UNFR/postauto/raw/branch/main/update.sh \
wget -qO uninstall.sh https://tig.unfr.pw/UNFR/postauto/raw/branch/main/uninstall.sh && chmod +x uninstall.sh && ./uninstall.sh && chmod +x update.sh \
&& ./update.sh
``` ```
#### Dévelopement. ### Passage en 7z (12/03/2024)
```bash
cd ~/autopost
wget -qO compress.sh https://tig.unfr.pw/UNFR/postauto/raw/branch/main/autopost/compress.sh \
&& chmod +x compress.sh \
&& ./compress.sh
```
Comme toujours vos idées et axes d'amélioration sont les bienvenus. ## Désinstallation
```bash
wget -qO uninstall.sh https://tig.unfr.pw/UNFR/postauto/raw/branch/main/uninstall.sh \
&& chmod +x uninstall.sh \
&& ./uninstall.sh
```
- Propose darrêter `postauto`, de supprimer la conf, la base, les NZB, et les fichiers Node.
- Nettoie lautocomplétion (`~/.bash_completion.d/postauto`) et lancien bloc éventuel dans `~/.bashrc`.
## Limitations
- Bash → Linux uniquement.
- Accès SSH requis sur `/home/$USER`.
- Les seedbox peuvent restreindre les ports et/ou lexécution de services persistants (voir hébergeur).
## Dépannage
- **Port refusé** : choisissez un port autorisé (Ultra.cc : `app-ports free`).
- **Node manquant** : relancez `install.sh` (il installe `nvm` + Node v22).
- **MediaInfo/sqlite** : avec sudo, installés via apt ; sans sudo, binaires fournis dans `~/bin`.
- **Erreur GLIBC** sur sqlite ou autre binaire : utilisez la version embarquée par linstallateur (dans `~/bin`).
- **Sessions** derrière Nginx : mettez `trustProxy` à `1` (ou `2` via Cloudflare→Nginx) et `cookieSecure: true` si HTTPS.
- **Dossiers manquants** : créez/ajustez `DOSSIER_*` (bash) et `*directory` (UI).
## Développement
Vos idées et axes damélioration sont les bienvenus — PRs et issues appréciés 🙂