feat: 系统设置增加备份恢复与默认登录 admin
支持手动/每日自动备份四所数据库、K线库与 env,上传 zip 一键恢复;中控默认账号 admin/admin123。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -862,7 +862,7 @@
|
||||
<div class="hint-body">
|
||||
保存后写入 <code>hub_settings.json</code>。Flask / Agent 填本机地址即可;复盘链接可留空(由 Flask 地址自动生成)。<br />
|
||||
<code>HUB_DISABLED_IDS</code> 可强制关闭账户;<code>HUB_BRIDGE_TOKEN</code> 与实例一致,或实例 <code>APP_AUTH_DISABLED=true</code>。<br />
|
||||
公网反代请在 hub <code>.env</code> 设置 <code>HUB_USERNAME</code> 与 <code>HUB_PASSWORD</code>;HTTPS 反代建议 <code>HUB_COOKIE_SECURE=true</code>。
|
||||
公网反代请在 hub <code>.env</code> 设置 <code>HUB_USERNAME</code> 与 <code>HUB_PASSWORD</code>(默认 <code>admin</code> / <code>admin123</code>);HTTPS 反代建议 <code>HUB_COOKIE_SECURE=true</code>。
|
||||
</div>
|
||||
</details>
|
||||
<p id="settings-meta-line" class="settings-meta-line"></p>
|
||||
@@ -989,6 +989,57 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="settings-section card settings-backup-panel" data-settings-section="backup">
|
||||
<div class="settings-section-head">
|
||||
<button type="button" class="settings-section-fold" aria-expanded="true" aria-label="折叠"></button>
|
||||
<h3 class="settings-display-title">备份与恢复</h3>
|
||||
<button type="button" class="primary settings-section-save" data-settings-section="backup">保存</button>
|
||||
</div>
|
||||
<div class="settings-section-body">
|
||||
<p class="settings-display-hint">
|
||||
打包四所 <code>crypto.db</code>、中控 K 线/归档等 SQLite、<code>hub_settings.json</code> 与 <code>.env</code>(可选)。
|
||||
恢复前会自动做一次 pre-restore 快照,并尝试 <code>pm2 restart all</code>。
|
||||
</p>
|
||||
<div class="settings-grid backup-settings-grid">
|
||||
<label class="chk-label settings-display-chk">
|
||||
<input type="checkbox" id="backup-auto-enabled" checked />
|
||||
每日自动备份(北京时间)
|
||||
</label>
|
||||
<div class="field">
|
||||
<label>自动备份时刻(时,0–23)</label>
|
||||
<input id="backup-auto-hour" type="number" min="0" max="23" step="1" value="0" />
|
||||
</div>
|
||||
<div class="field">
|
||||
<label>保留天数</label>
|
||||
<input id="backup-retention-days" type="number" min="1" max="365" step="1" value="30" />
|
||||
</div>
|
||||
<label class="chk-label settings-display-chk">
|
||||
<input type="checkbox" id="backup-include-env" checked />
|
||||
包含 .env 配置文件
|
||||
</label>
|
||||
<label class="chk-label settings-display-chk">
|
||||
<input type="checkbox" id="backup-include-images" />
|
||||
包含四所 static/images 截图
|
||||
</label>
|
||||
<div class="field field-wide">
|
||||
<label>备份目录(留空默认 /root/backups/crypto_monitor_portal)</label>
|
||||
<input id="backup-root" type="text" placeholder="/root/backups/crypto_monitor_portal" autocomplete="off" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="backup-actions">
|
||||
<button type="button" id="backup-run-now" class="primary">立即备份</button>
|
||||
<span id="backup-status-line" class="backup-status-line"></span>
|
||||
</div>
|
||||
<div class="backup-restore-upload">
|
||||
<label class="backup-upload-label">
|
||||
<span>上传备份包恢复(.zip)</span>
|
||||
<input id="backup-restore-file" type="file" accept=".zip,application/zip" />
|
||||
</label>
|
||||
<button type="button" id="backup-restore-upload-btn" class="danger">上传并恢复</button>
|
||||
</div>
|
||||
<div id="backup-list" class="backup-list"></div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="settings-section card" data-settings-section="exchanges">
|
||||
<div class="settings-section-head">
|
||||
<button type="button" class="settings-section-fold" aria-expanded="true" aria-label="折叠"></button>
|
||||
@@ -1064,6 +1115,7 @@
|
||||
<script src="/assets/dashboard.js?v=20260612-dash-monitor-count"></script>
|
||||
<script src="/assets/ai_review_render.js?v=3"></script>
|
||||
<script src="/assets/time_close_ui.js?v=2"></script>
|
||||
<script src="/assets/backup.js?v=1"></script>
|
||||
<script src="/assets/app.js?v=20260614-instance-nav"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user