1
0
postauto/readme.md
2025-08-13 08:45:18 +02:00

264 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Postauto
### Poster automatiquement via une simple commande depuis un VPS, dédié ou seedbox
**Postauto** est un ensemble de scripts (bash + une petite UI web Node.js) qui :
- 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**
## 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)
## Prérequis
- Linux (script bash)
- Accès **SSH** (sur `/home/$USER`)
- Outils de base : `basename`, `curl`, `screen`, `nginx` (pour lUI web)
- Testé avec :
- VPS / dédiés ✅
- Seedbox : Ultra.cc ✅, Whatbox ✅, Dediseedbox ❌ (limitations)
> Linstallateur installe/emballe tout le reste (mediainfo, sqlite3 si besoin, 7z, BDInfo, Nyuu, ParPar, Node v22, modules npm…).
## Installation
### Avec droits sudo (recommandé)
Installe mediainfo/sqlite via paquets Debian (meilleure compatibilité) :
```bash
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
```
### Sans sudo
Utilise des binaires « standalone » dans `~/bin` :
```bash
wget -qO install.sh https://tig.unfr.pw/UNFR/postauto/raw/branch/main/install.sh \
&& chmod +x install.sh \
&& ./install.sh
```
## Configuration (bash) — `/home/$USER/autopost/conf.sh`
> Variables **obligatoires** (placeholders à remplacer), + règles **sqlite/mysql**.
```bash
#!/bin/bash
# CONFIG À MODIFIER
URL_API="A NOUS DEMANDER SUR DISCORD"
APIKEY="A RETROUVER DANS VOTRE PROFIL"
DOSSIER_GLOBAL="/home/$USER/"
DOSSIER_NFO="/home/$USER/autopost/mediainfo/"
DOSSIER_LOGS="/home/$USER/autopost/logs/"
DOSSIER_NZB_ATTENTE="/home/$USER/autopost/ATTENTE/"
DOSSIER_NZB_FINAL="/home/$USER/autopost/FINIS/"
# cp -rl | cp -rs | ln -s | mv | cp
MOVE_CMD="cp -rl"
# CONFIG FOURNISSEUR USENET DE POST (requis)
NG_HOST=""
NG_PORT=""
NG_USER=""
NG_PASS=""
NG_NBR_CONN=""
# 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"
# mysql -> champs MySQL requis, DB_FILE facultatif
MYSQL_HOST=""
MYSQL_PORT=
MYSQL_USER=""
MYSQL_PASS=""
MYSQL_DB=""
```
**Rappels :**
- Si `dbtype="sqlite"`**`DB_FILE` requis** ; `MYSQL_*` facultatifs.
- Si `dbtype="mysql"`**`MYSQL_HOST/PORT/USER/PASS/DB` requis** ; `DB_FILE` facultatif.
- Les dossiers `DOSSIER_*` doivent **exister**.
## Configuration (UI web) — `/home/$USER/autopost/config.js`
> Champs **obligatoires** + règles **sqlite/mysql** + proxy/HTTPS.
```js
const path = require('path');
module.exports = {
// Réseau
port: 3000, // ⚠️ Choisissez un port autorisé par votre hébergeur (Ultra.cc: `app-ports free`)
name: 'NomDuNoeud', // Nom affiché dans lUI
background_color: 'slate-900', // Tailwind color: https://tailwindcss.com/docs/colors
// Base de données
dbtype: 'sqlite', // 'sqlite' ou 'mysql'
// sqlite -> dbFile requis
dbFile: path.join(__dirname, 'base_autopost.db'),
// mysql -> champs requis
DB_HOST: '',
DB_PORT: 3306,
DB_USER: '',
DB_PASSWORD: '',
DB_DATABASE: '',
DB_TABLE: 'release',
// Dossiers
finishdirectory: path.join(__dirname, 'FINIS'),
logdirectory: path.join(__dirname, 'logs'),
infodirectory: path.join(__dirname, 'mediainfo'),
// Sessions (générer un secret : `curl -L pw.vdx.sh/w/32`)
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',
// Auth UI (à changer !)
auth: {
username: 'user',
password: 'pass'
}
};
```
**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**.
## 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
# Remplacez 127.0.0.1:3000 par le host:port de votre UI (voir config.js: port)
location /autopost/ {
proxy_pass http://127.0.0.1:3000;
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 /autopost/js/ {
proxy_pass http://127.0.0.1:3000;
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 /autopost/jquery/ {
proxy_pass http://127.0.0.1:3000;
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;
}
```
> Réglez **`trustProxy`** (1 pour Nginx, 2 pour Cloudflare→Nginx) et mettez **`cookieSecure: true`** si le site est servi en **HTTPS**.
## Mise à jour
```bash
postauto stop \
&& wget -qO update.sh https://tig.unfr.pw/UNFR/postauto/raw/branch/main/update.sh \
&& chmod +x update.sh \
&& ./update.sh
```
### 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
```
## 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 🙂