
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Tableau de bord compagnon non officiel pour les utilisateurs de Plex.
Application web pour gérer votre accès Plex, afficher abonnements, statistiques de visionnage, et accéder à Seerr via SSO intégré.
📖 https://github.com/iDrinkx/portall/blob/main/CHANGELOG.md pour l'historique des versions et fonctionnalités
🔐 Authentification Plex : Connexion via compte Plex (OAuth)
📊 Dashboard : Vue d'ensemble (abonnement, statistiques, demandes Seerr)
🎫 Abonnements Wizarr : Date d'expiration et groupe (requis pour toutes les fonctionnalités)
📈 Statistiques Tautulli : Historique de visionnage, temps total, collections (requis pour toutes les fonctionnalités)
🛡️ Intégration Seerr (SSO) : Accès à Seerr dans une iframe full-page sans re-connexion
🏆 Système XP & Succès : Points d'expérience et badges selon l'activité de visionnage
👤 Page Profil : Stats personnelles, demandes Seerr, succès débloqués
📅 Calendrier des sorties : Sorties films/séries à venir depuis Radarr et Sonarr (4 vues : semaine, mois, jour, liste)
🔄 Reverse Proxy Automatique : Détection auto via headers X-Forwarded-*
⚡ Configuration Minimale : Juste SESSION_SECRET en obligatoire
🟢 Carte Uptime Kuma sur la page de connexion : Affichage compact des services avant login Plex via l'API privée Kuma
!https://github.com/iDrinkx/portall/raw/v1.42.12/./public/img/screenshots/01-dashboard.png !https://github.com/iDrinkx/portall/raw/v1.42.12/./public/img/screenshots/02-profil.png !https://github.com/iDrinkx/portall/raw/v1.42.12/./public/img/screenshots/03-succes.png !https://github.com/iDrinkx/portall/raw/v1.42.12/./public/img/screenshots/04-repartition-xp.png !https://github.com/iDrinkx/portall/raw/v1.42.12/./public/img/screenshots/05-classement.png !https://github.com/iDrinkx/portall/raw/v1.42.12/./public/img/screenshots/06-statistiques.png !https://github.com/iDrinkx/portall/raw/v1.42.12/./public/img/screenshots/07-calendrier.png
100% (référence principale du projet)~82% (estimation actuelle de couverture UI)🛠️ Docker & Docker Compose 👤 Compte Plex 🔗 Wizarr, Tautulli, Seerr (requis pour toutes les fonctionnalités)
bash# L'app détecte automatiquement le reverse proxy via X-Forwarded-* docker compose up -d # Accès : https://portall.votredomaine.com
Image Docker publique :
ghcr.io/idrinkx/portall:latest
portall/ Dockerfile docker-compose.yml server.js # Serveur Express principal TECHNICAL.md # Architecture et configuration runtime package.json routes/ auth.routes.js # Login Plex OAuth + setup initial dashboard.routes.js # Dashboard, paramètres admin, intégrations seerr-proxy.routes.js # Route iframe Seerr (/seerr) views/ layout.ejs login.ejs setup.ejs succes.ejs parametres/ index.ejs # Onglets admin dashboard/ index.ejs # Dashboard principal profil/ index.ejs seerr/ index.ejs # Iframe full-page Seerr apps/ iframe.ejs # Wrapper iframe pour cartes custom/intégrations service-connect.ejs # Connexion utilisateur Komga/Jellyfin/RomM statistiques/ index.ejs activite.ejs public/ css/style.css js/ dashboard.js statistiques.js utils/ config.js # Config centralisée DB > env > défaut database.js # SQLite et app_settings i18n.js # Traductions fr/en site-background.js # Fond global configurable dashboard-builtins.js # Cartes natives dashboard dashboard-custom-html.js # HTML custom sous les cartes achievements.js # Système de succès tautulli-direct.js # Lecture directe DB Tautulli seerr.js # API Seerr (stats demandes) wizarr.js # API Wizarr config/ logo.png # Logo personnalisable
portall propose un système de gamification avancé pour encourager l'engagement :
Exemples de badges :
Pour plus de détails, consultez la page /succes ou le dashboard.
Le projet n'a plus besoin d'un fichier de configuration runtime séparé pour fonctionner.
Le modèle actuel est:
docker-compose.yml contient uniquement les variables de bootstrap/setupParametres > ConnexionsVariables de bootstrap typiques:
SESSION_SECRETPORTCOOKIE_SECURENODE_ENVPour komga_auto, jellyfin_auto et romm_auto, chaque utilisateur connecte son compte une seule fois dans le portail.
portall peut afficher un résumé compact des services Uptime Kuma directement sur la page de connexion Plex.
Configuration à renseigner dans Parametres > Connexions :
UPTIME_KUMA_URLUPTIME_KUMA_USERNAMEUPTIME_KUMA_PASSWORDComportement actuel :
En ligne, En attente, En maintenance, Hors ligne)Important :
Depuis ..., il est recommandé d'utiliser la meme timezone sur tous les conteneursTZ=UTC sur les conteneurs test et stableTZ=Europe/Paris, utilisez exactement la meme valeur partoutyamlservices: portall: image: ghcr.io/idrinkx/portall:latest container_name: portall ports: - "4000:3000" environment: SESSION_SECRET: "change-me" NODE_ENV: "production" COOKIE_SECURE: "true" TZ: "UTC" restart: unless-stopped networks: - proxy volumes: - /chemin/appdata/portall/config:/config - /chemin/appdata/tautulli:/tautulli-data networks: proxy: external: true
portall intègre Seerr (ex-Overseerr / Jellyseerr) via SSO Organizr-style :
SEERR_URL) et récupère le connect.siddomain=.votredomaine.com (sous-domaine parent commun)/seerr iframe full-page chargée depuis SEERR_PUBLIC_URLPrérequis :
SEERR_PUBLIC_URL et l'URL de portall doivent partager le même domaine parent
(ex: portall.votredomaine.com + seerr.votredomaine.com parent .votredomaine.com)secure: true)SEERR_URL et SEERR_PUBLIC_URL peuvent être renseignés depuis Parametres > Connexions# Pages GET / Login ou redirect dashboard GET /dashboard Dashboard principal (auth requis) GET /profil Page profil utilisateur (auth requis) GET /statistiques Statistiques de visionnage (auth requis) GET /statistiques/activite Activité détaillée (auth requis) GET /seerr Seerr en iframe full-page (auth requis) GET /succes Liste des succès disponibles GET /calendrier Calendrier des sorties Radarr + Sonarr (auth requis) # Auth GET /login Initie l'auth Plex OAuth GET /auth-complete Callback Plex OAuth GET /logout Déconnexion # APIs JSON GET /api/subscription Infos abonnement Wizarr GET /api/stats Statistiques Tautulli GET /api/seerr Stats demandes Seerr GET /api/server-stats Stats librairies serveur (films, séries, musiques) GET /api/calendar Calendrier events Radarr + Sonarr (auth requis) POST /api/cache/invalidate Invalide le cache utilisateur
Aucun header X-Forwarded-* http://localhost:3000 (basePath: "")
X-Forwarded-Proto: https X-Forwarded-Host: portall.votredomaine.com X-Forwarded-Prefix: / https://portall.votredomaine.com (auto-détecté)
Aucune configuration manuelle requise.
portall.sid)PLEX_URL + PLEX_TOKEN)SESSION_SECRET en production : openssl rand -hex 32Le code source principal est ce dépôt GitHub.
Pour toute suggestion ou bug, ouvrez une issue ou contactez l'auteur.
Q : Que modifier pour passer du local à la production ?
R : Rien côté app. Configurez ngx proxy manager pour pointer vers portall, les headers X-Forwarded-* sont auto-détectés.
Q : Seerr ne charge pas dans l'iframe ?
R : Vérifiez que SEERR_PUBLIC_URL et l'URL du portail partagent le même domaine parent (.votredomaine.com). HTTPS requis.
Q : Comment changer le port ?
R : Dans docker-compose.yml : ports: ["4000:3000"] l'interne reste 3000, l'externe est libre.
Q : Comment personnaliser le logo ?
R : Placez votre logo.png dans le volume ./config:/config.
Plus de questions ?
docker compose logs -f portallSi vous souhaitez proposer une amélioration ou signaler un bug, ouvrez une issue ou proposez une pull request sur le dépôt principal.
Ce projet est distribué sous licence GNU General Public License v3.0 (GPLv3).
Vous pouvez utiliser, modifier et redistribuer ce projet conformément aux termes de la GPLv3.
Toute redistribution d'une version modifiée doit rester sous GPLv3 et re*** les obligations de la licence.
Ce logiciel est fourni sans garantie, dans les limites prévues par la GPLv3.
Voir le fichier https://github.com/iDrinkx/portall/blob/v1.42.12/LICENSE pour plus d'informations.
This project is not affiliated with, endorsed by, or sponsored by Plex Inc.
"Plex" is a trademark of Plex Inc.
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务