Repository navigation
FleetPilot - #2417
FleetPilot#2417ChristianHandy wants to merge 1 commit into
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Try this script
COMMUNITY_SCRIPTS_URL=https://raw.githubusercontent.com/ChristianHandy/DevScripts/feat/fleetpilot \
bash -c "$(curl -fsSL https://raw.githubusercontent.com/ChristianHandy/DevScripts/feat/fleetpilot/ct/fleetpilot.sh)"
Against a core branch as wellAdd Useful flags while testing
|
|
|
Thanks for the automated checks. I know FleetPilot doesn't meet the 600-star requirement yet, and I've left that box unchecked on purpose. If you're open to it, could a maintainer set If the star requirement rules it out, closing this is completely fine; I'll resubmit once FleetPilot qualifies. |
✍️ Description
New script: FleetPilot, a self-hosted operations dashboard for home labs and small companies. It manages servers over SSH and APIs without agents: OS updates, SMART disk health, routers (FRITZ!Box, OpenWrt, OPNsense, pfSense, MikroTik), Proxmox VMs, TrueNAS/Unraid storage, backup servers and fans.
Upstream research (there is no Dockerfile or compose file upstream):
requirements.txt: Python only, no database server (SQLite). Installed withsetup_uv+uv pip install -r; Python 3.13, the Debian 13 default.gunicorn.conf.py: the upstream app server config. One worker with threads, because FleetPilot runs background pollers. Binds127.0.0.1:5000behind nginx..env.example:SECRET_KEY,DASHBOARD_USERNAME/DASHBOARD_PASSWORD(first admin account, created on first start),FLEETPILOT_DATA_DIR. The production flags (FLEETPILOT_PRODUCTION,_TRUST_PROXY,_COOKIE_SECURE,_HSTS) come from upstream's installer and docs (docs/installation.md).Choices
create_self_signed_cert: FleetPilot sets secure cookies, and WebAuthn security keys need a secure context. Port 80 redirects to 443.random_passwordin.env. Without it, FleetPilot 1.6 falls back to a weak default./root/.ssh, because FleetPilot signs in to managed servers with it. This is explained in the notes.check_for_gh_release, thencreate_backupof.env, thenCLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="data logs venv",restore_backup,setup_uvanduv pip install.🔗 Related PR / Issue
Upstream: https://github.com/ChristianHandy/FleetPilot. These files are also kept in
proxmox/community-scripts/there.✅ Prerequisites (X in brackets)
🏗️ arm64 Support (X in brackets)
var_arm64is left commented out, so users are asked. FleetPilot is pure Python with no prebuilt binaries, but this script has not been run on arm64.🖥️ Tested on (X in brackets)
Tested on Proxmox VE 9.2.20 (kernel 7.0.14) with the current core engine. The files were loaded locally with
COMMUNITY_SCRIPTS_ROOT, usingmode=defaultandDIAGNOSTICS=no.~/.fleetpilotset back to 1.5.3, a full update stopped the service, backed up.env, deployed the release, restored.env(same checksum) and keptdata/(users intact). The service came back up.🛠️ Type of Change (X in brackets)
README,AppName.md,CONTRIBUTING.md, or other docs.🔍 Code & Security Review (X in brackets)
CODE-AUDIT.md&CONTRIBUTING.mdguidelinesAppName.sh,AppName-install.sh,AppName.json)fetch_and_deploy_gh_release,fetch_and_deploy_codeberg_release,fetch_and_deploy_gl_release, orfetch_and_deploy_from_urlinstead ofgit pull.🤖 AI Assistance (X in brackets)
AGENTS.mdand.github/agents/pve-script-creator.agent.mdas guidance, and the output has been reviewed and corrected to match those guidelines.LLM use: Claude Opus 5.5 (Claude Code, low reasoning-effort setting) wrote the ct, install and json files following
AGENTS.md. It checked them against the checklist and tested install and update on the author's Proxmox VE 9.2 host, as described above.📋 Additional Information (optional)
useradd/runuser, noapt-get, every msg block is balanced, and the footer ismotd_ssh/customize/cleanup_lxc. shellcheck is clean at warning level, apart from engine-provided variables.📦 Application Requirements (for new scripts)
FleetPilot does not have 600 stars yet (it was created 2026-01-03). Feel free to close this PR if that rules it out; the scripts will stay maintained upstream in the meantime.
🌐 Source