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. |
| msg_info "Configuring FleetPilot" | ||
| mkdir -p /opt/fleetpilot/data /opt/fleetpilot/logs /root/.ssh | ||
| chmod 700 /opt/fleetpilot/data /root/.ssh | ||
| # FleetPilot signs in to the servers it manages with this key. |
There was a problem hiding this comment.
| # FleetPilot signs in to the servers it manages with this key. |
| }, | ||
| "notes": [ | ||
| { | ||
| "text": "Open https://<container-ip> and accept the self-signed certificate once. Sign in as admin; the password is DASHBOARD_PASSWORD in /opt/fleetpilot/.env. Change it after the first sign-in under My Profile and set up two-factor sign-in.", |
There was a problem hiding this comment.
| "text": "Open https://<container-ip> and accept the self-signed certificate once. Sign in as admin; the password is DASHBOARD_PASSWORD in /opt/fleetpilot/.env. Change it after the first sign-in under My Profile and set up two-factor sign-in.", | |
| "text": "The dashboard password is auto-generated and is saved as DASHBOARD_PASSWORD in /opt/fleetpilot/.env.", |
| "type": "info" | ||
| }, | ||
| { | ||
| "text": "FleetPilot manages other machines over SSH with the key /root/.ssh/id_ed25519.pub inside the container. Add that key to each server's authorized_keys, or use Manage Hosts → Install Key. To manage the Proxmox node itself, add the node as a host the same way.", |
There was a problem hiding this comment.
| "text": "FleetPilot manages other machines over SSH with the key /root/.ssh/id_ed25519.pub inside the container. Add that key to each server's authorized_keys, or use Manage Hosts → Install Key. To manage the Proxmox node itself, add the node as a host the same way.", | |
| "text": "FleetPilot manages other machines over SSH with the key /root/.ssh/id_ed25519.pub inside the container. Add that key to each server's authorized_keys, or use Manage Hosts → Install Key.", |
| }, | ||
| { | ||
| "text": "Update FleetPilot with this script's update function. The in-app 'FleetPilot update' page expects a git checkout and does not apply to this container.", | ||
| "type": "warning" | ||
| } |
There was a problem hiding this comment.
| }, | |
| { | |
| "text": "Update FleetPilot with this script's update function. The in-app 'FleetPilot update' page expects a git checkout and does not apply to this container.", | |
| "type": "warning" | |
| } | |
| } |
|
I've just realised the parent repository does not have 600 GitHub stars. Sorry this does not meet our requirements for merging into our repository. |
✍️ 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