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
- Installation
- Configuration (bash)
- Configuration (UI web)
- Création de la base
- Commandes CLI
- Interface web
- Mise à jour
- Désinstallation
- Limitations
- Dépannage
Prérequis
- Linux (script bash)
- Accès SSH (sur
/home/$USER) - Outils de base :
basename,curl,screen,nginx(pour l’UI web) - Testé avec :
- VPS / dédiés ✅
- Seedbox : Ultra.cc ✅, Whatbox ✅, Dediseedbox ❌ (limitations)
L’installateur 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é) :
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 :
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.
#!/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_FILErequis ;MYSQL_*facultatifs. - Si
dbtype="mysql"→MYSQL_HOST/PORT/USER/PASS/DBrequis ;DB_FILEfacultatif. - Les dossiers
DOSSIER_*doivent exister.
Configuration (UI web) — /home/$USER/autopost/config.js
Champs obligatoires + règles sqlite/mysql + proxy/HTTPS.
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 l’UI
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'→dbFilerequis ;DB_*facultatifs.dbtype: 'mysql'→DB_HOST/PORT/USER/PASSWORD/DATABASErequis ;dbFilefacultatif.- Si vous êtes derrière Nginx/Cloudflare, ajustez
trustProxyetcookieSecure. - Les dossiers
finishdirectory,logdirectory,infodirectorydoivent exister.
Création de la base
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 d’un fichier sur le site. |
update |
Met à jour les scripts. |
Autocomplétion bash fournie (install/update l’activent automatiquement).
Interface web
- L’installateur installe Node v22 (via
nvm) et tous les modules requis. - Lancer l’UI (ex. en arrière-plan) :
(ou configurez un service systemd /postauto restartpm2selon vos préférences)
Configuration Nginx
Important : les routes statiques sont servies sous
/autopost.
# 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 mettezcookieSecure: truesi le site est servi en HTTPS.
Mise à jour
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)
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
wget -qO uninstall.sh https://tig.unfr.pw/UNFR/postauto/raw/branch/main/uninstall.sh \
&& chmod +x uninstall.sh \
&& ./uninstall.sh
- Propose d’arrêter
postauto, de supprimer la conf, la base, les NZB, et les fichiers Node. - Nettoie l’autocomplétion (
~/.bash_completion.d/postauto) et l’ancien bloc éventuel dans~/.bashrc.
Limitations
- Bash → Linux uniquement.
- Accès SSH requis sur
/home/$USER. - Les seedbox peuvent restreindre les ports et/ou l’exé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 installenvm+ 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 l’installateur (dans
~/bin). - Sessions derrière Nginx : mettez
trustProxyà1(ou2via Cloudflare→Nginx) etcookieSecure: truesi HTTPS. - Dossiers manquants : créez/ajustez
DOSSIER_*(bash) et*directory(UI).
Développement
Vos idées et axes d’amélioration sont les bienvenus — PRs et issues appréciés 🙂