feat(community): add TrueNAS Config Backup app - #5491

Open
CampAsAChamp wants to merge 2 commits into
truenas:masterfrom
CampAsAChamp:add-truenas-config-backup
Open

feat(community): add TrueNAS Config Backup app#5491
CampAsAChamp wants to merge 2 commits into
truenas:masterfrom
CampAsAChamp:add-truenas-config-backup

Conversation

@CampAsAChamp

@CampAsAChampCampAsAChamp commented Aug 1, 2026

Copy link
Copy Markdown

App Addition

  • I have opened an issue to discuss this app addition before submitting this pull request.

AI

  • Part or All of this PR was generated by an LLM.

Description

Adds TrueNAS Config Backup to the community train.

Schedules and manages downloads of a TrueNAS system's configuration backup via the
config.save WebSocket API (SCALE 25.04+ flow using core.download), with retention
pruning, run-history logging, optional webhooks, and a password-protected web dashboard.

App Information

Testing

Tested locally with:

  • basic-values.yaml (ix_volume storage, custom cron schedule)
  • host-path-values.yaml (host_path storage, daily schedule, webhook URL)

Both test files render successfully. Full container CI will run on this PR.

Icons and Screenshots

Please upload the following to the CDN:

Special Notes

  • HTTPS required for API key auth — TrueNAS revokes keys used over plain HTTP.
  • When running on the same box, https://127.0.0.1 may not work depending on container
    networking; LAN IP fallback may be needed.
  • Single-container app, runs as uid/gid 568, uses ixVolume by default for backups and config.
  • Optional cron schedule presets; manual-only mode supported.
  • Default WebUI port is 30461 (30330 conflicts with mailpit).
  • Healthcheck uses bash http probe on /healthz (image has no curl).
  • Restore is performed in the TrueNAS UI, not through this app.

Checklist

  • App runs successfully locally (render + compose config validated)
  • Only modified files under /ix-dev/
  • README.md included
  • Multiple test scenarios tested
  • questions.yaml has clear descriptions and follows structure of existing apps
  • All automated CI checks pass

Closes#5473

Adds truenas-config-backup to the community train. Schedules and manages
TrueNAS configuration backups via the config.save WebSocket API with
retention, run history, and a web dashboard.
Closestruenas#5473
@CampAsAChamp
CampAsAChamp marked this pull request as draft August 1, 2026 16:08
@CampAsAChamp
CampAsAChamp marked this pull request as ready for review August 1, 2026 16:09
@CampAsAChamp

Copy link
Copy Markdown
Author

Hello just bumping this

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add TrueNAS Config Backup to community train

1 participant

@CampAsAChamp
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(community): add TrueNAS Config Backup app - #5491

Open
CampAsAChamp wants to merge 2 commits into
truenas:masterfrom
CampAsAChamp:add-truenas-config-backup
Open

feat(community): add TrueNAS Config Backup app#5491
CampAsAChamp wants to merge 2 commits into
truenas:masterfrom
CampAsAChamp:add-truenas-config-backup

Conversation

@CampAsAChamp

@CampAsAChampCampAsAChamp commented Aug 1, 2026

Copy link
Copy Markdown

App Addition

  • I have opened an issue to discuss this app addition before submitting this pull request.

AI

  • Part or All of this PR was generated by an LLM.

Description

Adds TrueNAS Config Backup to the community train.

Schedules and manages downloads of a TrueNAS system's configuration backup via the
config.save WebSocket API (SCALE 25.04+ flow using core.download), with retention
pruning, run-history logging, optional webhooks, and a password-protected web dashboard.

App Information

Testing

Tested locally with:

  • basic-values.yaml (ix_volume storage, custom cron schedule)
  • host-path-values.yaml (host_path storage, daily schedule, webhook URL)

Both test files render successfully. Full container CI will run on this PR.

Icons and Screenshots

Please upload the following to the CDN:

Special Notes

  • HTTPS required for API key auth — TrueNAS revokes keys used over plain HTTP.
  • When running on the same box, https://127.0.0.1 may not work depending on container
    networking; LAN IP fallback may be needed.
  • Single-container app, runs as uid/gid 568, uses ixVolume by default for backups and config.
  • Optional cron schedule presets; manual-only mode supported.
  • Default WebUI port is 30461 (30330 conflicts with mailpit).
  • Healthcheck uses bash http probe on /healthz (image has no curl).
  • Restore is performed in the TrueNAS UI, not through this app.

Checklist

  • App runs successfully locally (render + compose config validated)
  • Only modified files under /ix-dev/
  • README.md included
  • Multiple test scenarios tested
  • questions.yaml has clear descriptions and follows structure of existing apps
  • All automated CI checks pass

Closes#5473

Adds truenas-config-backup to the community train. Schedules and manages
TrueNAS configuration backups via the config.save WebSocket API with
retention, run history, and a web dashboard.
Closestruenas#5473
@CampAsAChamp
CampAsAChamp marked this pull request as draft August 1, 2026 16:08
@CampAsAChamp
CampAsAChamp marked this pull request as ready for review August 1, 2026 16:09
@CampAsAChamp

Copy link
Copy Markdown
Author

Hello just bumping this

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add TrueNAS Config Backup to community train

1 participant

@CampAsAChamp
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(community): add TrueNAS Config Backup app - #5491

Open
CampAsAChamp wants to merge 2 commits into
truenas:masterfrom
CampAsAChamp:add-truenas-config-backup
Open

feat(community): add TrueNAS Config Backup app#5491
CampAsAChamp wants to merge 2 commits into
truenas:masterfrom
CampAsAChamp:add-truenas-config-backup

Conversation

@CampAsAChamp

@CampAsAChampCampAsAChamp commented Aug 1, 2026

Copy link
Copy Markdown

App Addition

  • I have opened an issue to discuss this app addition before submitting this pull request.

AI

  • Part or All of this PR was generated by an LLM.

Description

Adds TrueNAS Config Backup to the community train.

Schedules and manages downloads of a TrueNAS system's configuration backup via the
config.save WebSocket API (SCALE 25.04+ flow using core.download), with retention
pruning, run-history logging, optional webhooks, and a password-protected web dashboard.

App Information

Testing

Tested locally with:

  • basic-values.yaml (ix_volume storage, custom cron schedule)
  • host-path-values.yaml (host_path storage, daily schedule, webhook URL)

Both test files render successfully. Full container CI will run on this PR.

Icons and Screenshots

Please upload the following to the CDN:

Special Notes

  • HTTPS required for API key auth — TrueNAS revokes keys used over plain HTTP.
  • When running on the same box, https://127.0.0.1 may not work depending on container
    networking; LAN IP fallback may be needed.
  • Single-container app, runs as uid/gid 568, uses ixVolume by default for backups and config.
  • Optional cron schedule presets; manual-only mode supported.
  • Default WebUI port is 30461 (30330 conflicts with mailpit).
  • Healthcheck uses bash http probe on /healthz (image has no curl).
  • Restore is performed in the TrueNAS UI, not through this app.

Checklist

  • App runs successfully locally (render + compose config validated)
  • Only modified files under /ix-dev/
  • README.md included
  • Multiple test scenarios tested
  • questions.yaml has clear descriptions and follows structure of existing apps
  • All automated CI checks pass

Closes#5473

Adds truenas-config-backup to the community train. Schedules and manages
TrueNAS configuration backups via the config.save WebSocket API with
retention, run history, and a web dashboard.
Closestruenas#5473
@CampAsAChamp
CampAsAChamp marked this pull request as draft August 1, 2026 16:08
@CampAsAChamp
CampAsAChamp marked this pull request as ready for review August 1, 2026 16:09
@CampAsAChamp

Copy link
Copy Markdown
Author

Hello just bumping this

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add TrueNAS Config Backup to community train

1 participant

@CampAsAChamp
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(community): add TrueNAS Config Backup app - #5491

Open
CampAsAChamp wants to merge 2 commits into
truenas:masterfrom
CampAsAChamp:add-truenas-config-backup
Open

feat(community): add TrueNAS Config Backup app#5491
CampAsAChamp wants to merge 2 commits into
truenas:masterfrom
CampAsAChamp:add-truenas-config-backup

Conversation

@CampAsAChamp

@CampAsAChampCampAsAChamp commented Aug 1, 2026

Copy link
Copy Markdown

App Addition

  • I have opened an issue to discuss this app addition before submitting this pull request.

AI

  • Part or All of this PR was generated by an LLM.

Description

Adds TrueNAS Config Backup to the community train.

Schedules and manages downloads of a TrueNAS system's configuration backup via the
config.save WebSocket API (SCALE 25.04+ flow using core.download), with retention
pruning, run-history logging, optional webhooks, and a password-protected web dashboard.

App Information

Testing

Tested locally with:

  • basic-values.yaml (ix_volume storage, custom cron schedule)
  • host-path-values.yaml (host_path storage, daily schedule, webhook URL)

Both test files render successfully. Full container CI will run on this PR.

Icons and Screenshots

Please upload the following to the CDN:

Special Notes

  • HTTPS required for API key auth — TrueNAS revokes keys used over plain HTTP.
  • When running on the same box, https://127.0.0.1 may not work depending on container
    networking; LAN IP fallback may be needed.
  • Single-container app, runs as uid/gid 568, uses ixVolume by default for backups and config.
  • Optional cron schedule presets; manual-only mode supported.
  • Default WebUI port is 30461 (30330 conflicts with mailpit).
  • Healthcheck uses bash http probe on /healthz (image has no curl).
  • Restore is performed in the TrueNAS UI, not through this app.

Checklist

  • App runs successfully locally (render + compose config validated)
  • Only modified files under /ix-dev/
  • README.md included
  • Multiple test scenarios tested
  • questions.yaml has clear descriptions and follows structure of existing apps
  • All automated CI checks pass

Closes#5473

Adds truenas-config-backup to the community train. Schedules and manages
TrueNAS configuration backups via the config.save WebSocket API with
retention, run history, and a web dashboard.
Closestruenas#5473
@CampAsAChamp
CampAsAChamp marked this pull request as draft August 1, 2026 16:08
@CampAsAChamp
CampAsAChamp marked this pull request as ready for review August 1, 2026 16:09
@CampAsAChamp

Copy link
Copy Markdown
Author

Hello just bumping this

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add TrueNAS Config Backup to community train

1 participant

@CampAsAChamp
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(community): add TrueNAS Config Backup app - #5491

Open
CampAsAChamp wants to merge 2 commits into
truenas:masterfrom
CampAsAChamp:add-truenas-config-backup
Open

feat(community): add TrueNAS Config Backup app#5491
CampAsAChamp wants to merge 2 commits into
truenas:masterfrom
CampAsAChamp:add-truenas-config-backup

Conversation

@CampAsAChamp

@CampAsAChampCampAsAChamp commented Aug 1, 2026

Copy link
Copy Markdown

App Addition

  • I have opened an issue to discuss this app addition before submitting this pull request.

AI

  • Part or All of this PR was generated by an LLM.

Description

Adds TrueNAS Config Backup to the community train.

Schedules and manages downloads of a TrueNAS system's configuration backup via the
config.save WebSocket API (SCALE 25.04+ flow using core.download), with retention
pruning, run-history logging, optional webhooks, and a password-protected web dashboard.

App Information

Testing

Tested locally with:

  • basic-values.yaml (ix_volume storage, custom cron schedule)
  • host-path-values.yaml (host_path storage, daily schedule, webhook URL)

Both test files render successfully. Full container CI will run on this PR.

Icons and Screenshots

Please upload the following to the CDN:

Special Notes

  • HTTPS required for API key auth — TrueNAS revokes keys used over plain HTTP.
  • When running on the same box, https://127.0.0.1 may not work depending on container
    networking; LAN IP fallback may be needed.
  • Single-container app, runs as uid/gid 568, uses ixVolume by default for backups and config.
  • Optional cron schedule presets; manual-only mode supported.
  • Default WebUI port is 30461 (30330 conflicts with mailpit).
  • Healthcheck uses bash http probe on /healthz (image has no curl).
  • Restore is performed in the TrueNAS UI, not through this app.

Checklist

  • App runs successfully locally (render + compose config validated)
  • Only modified files under /ix-dev/
  • README.md included
  • Multiple test scenarios tested
  • questions.yaml has clear descriptions and follows structure of existing apps
  • All automated CI checks pass

Closes#5473

Adds truenas-config-backup to the community train. Schedules and manages
TrueNAS configuration backups via the config.save WebSocket API with
retention, run history, and a web dashboard.
Closestruenas#5473
@CampAsAChamp
CampAsAChamp marked this pull request as draft August 1, 2026 16:08
@CampAsAChamp
CampAsAChamp marked this pull request as ready for review August 1, 2026 16:09
@CampAsAChamp

Copy link
Copy Markdown
Author

Hello just bumping this

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add TrueNAS Config Backup to community train

1 participant

@CampAsAChamp
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(community): add TrueNAS Config Backup app - #5491

Open
CampAsAChamp wants to merge 2 commits into
truenas:masterfrom
CampAsAChamp:add-truenas-config-backup
Open

feat(community): add TrueNAS Config Backup app#5491
CampAsAChamp wants to merge 2 commits into
truenas:masterfrom
CampAsAChamp:add-truenas-config-backup

Conversation

@CampAsAChamp

@CampAsAChampCampAsAChamp commented Aug 1, 2026

Copy link
Copy Markdown

App Addition

  • I have opened an issue to discuss this app addition before submitting this pull request.

AI

  • Part or All of this PR was generated by an LLM.

Description

Adds TrueNAS Config Backup to the community train.

Schedules and manages downloads of a TrueNAS system's configuration backup via the
config.save WebSocket API (SCALE 25.04+ flow using core.download), with retention
pruning, run-history logging, optional webhooks, and a password-protected web dashboard.

App Information

Testing

Tested locally with:

  • basic-values.yaml (ix_volume storage, custom cron schedule)
  • host-path-values.yaml (host_path storage, daily schedule, webhook URL)

Both test files render successfully. Full container CI will run on this PR.

Icons and Screenshots

Please upload the following to the CDN:

Special Notes

  • HTTPS required for API key auth — TrueNAS revokes keys used over plain HTTP.
  • When running on the same box, https://127.0.0.1 may not work depending on container
    networking; LAN IP fallback may be needed.
  • Single-container app, runs as uid/gid 568, uses ixVolume by default for backups and config.
  • Optional cron schedule presets; manual-only mode supported.
  • Default WebUI port is 30461 (30330 conflicts with mailpit).
  • Healthcheck uses bash http probe on /healthz (image has no curl).
  • Restore is performed in the TrueNAS UI, not through this app.

Checklist

  • App runs successfully locally (render + compose config validated)
  • Only modified files under /ix-dev/
  • README.md included
  • Multiple test scenarios tested
  • questions.yaml has clear descriptions and follows structure of existing apps
  • All automated CI checks pass

Closes#5473

Adds truenas-config-backup to the community train. Schedules and manages
TrueNAS configuration backups via the config.save WebSocket API with
retention, run history, and a web dashboard.
Closestruenas#5473
@CampAsAChamp
CampAsAChamp marked this pull request as draft August 1, 2026 16:08
@CampAsAChamp
CampAsAChamp marked this pull request as ready for review August 1, 2026 16:09
@CampAsAChamp

Copy link
Copy Markdown
Author

Hello just bumping this

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add TrueNAS Config Backup to community train

1 participant

@CampAsAChamp
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(community): add TrueNAS Config Backup app - #5491

Open
CampAsAChamp wants to merge 2 commits into
truenas:masterfrom
CampAsAChamp:add-truenas-config-backup
Open

feat(community): add TrueNAS Config Backup app#5491
CampAsAChamp wants to merge 2 commits into
truenas:masterfrom
CampAsAChamp:add-truenas-config-backup

Conversation

@CampAsAChamp

@CampAsAChampCampAsAChamp commented Aug 1, 2026

Copy link
Copy Markdown

App Addition

  • I have opened an issue to discuss this app addition before submitting this pull request.

AI

  • Part or All of this PR was generated by an LLM.

Description

Adds TrueNAS Config Backup to the community train.

Schedules and manages downloads of a TrueNAS system's configuration backup via the
config.save WebSocket API (SCALE 25.04+ flow using core.download), with retention
pruning, run-history logging, optional webhooks, and a password-protected web dashboard.

App Information

Testing

Tested locally with:

  • basic-values.yaml (ix_volume storage, custom cron schedule)
  • host-path-values.yaml (host_path storage, daily schedule, webhook URL)

Both test files render successfully. Full container CI will run on this PR.

Icons and Screenshots

Please upload the following to the CDN:

Special Notes

  • HTTPS required for API key auth — TrueNAS revokes keys used over plain HTTP.
  • When running on the same box, https://127.0.0.1 may not work depending on container
    networking; LAN IP fallback may be needed.
  • Single-container app, runs as uid/gid 568, uses ixVolume by default for backups and config.
  • Optional cron schedule presets; manual-only mode supported.
  • Default WebUI port is 30461 (30330 conflicts with mailpit).
  • Healthcheck uses bash http probe on /healthz (image has no curl).
  • Restore is performed in the TrueNAS UI, not through this app.

Checklist

  • App runs successfully locally (render + compose config validated)
  • Only modified files under /ix-dev/
  • README.md included
  • Multiple test scenarios tested
  • questions.yaml has clear descriptions and follows structure of existing apps
  • All automated CI checks pass

Closes#5473

Adds truenas-config-backup to the community train. Schedules and manages
TrueNAS configuration backups via the config.save WebSocket API with
retention, run history, and a web dashboard.
Closestruenas#5473
@CampAsAChamp
CampAsAChamp marked this pull request as draft August 1, 2026 16:08
@CampAsAChamp
CampAsAChamp marked this pull request as ready for review August 1, 2026 16:09
@CampAsAChamp

Copy link
Copy Markdown
Author

Hello just bumping this

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add TrueNAS Config Backup to community train

1 participant

@CampAsAChamp
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(community): add TrueNAS Config Backup app - #5491

Open
CampAsAChamp wants to merge 2 commits into
truenas:masterfrom
CampAsAChamp:add-truenas-config-backup
Open

feat(community): add TrueNAS Config Backup app#5491
CampAsAChamp wants to merge 2 commits into
truenas:masterfrom
CampAsAChamp:add-truenas-config-backup

Conversation

@CampAsAChamp

@CampAsAChampCampAsAChamp commented Aug 1, 2026

Copy link
Copy Markdown

App Addition

  • I have opened an issue to discuss this app addition before submitting this pull request.

AI

  • Part or All of this PR was generated by an LLM.

Description

Adds TrueNAS Config Backup to the community train.

Schedules and manages downloads of a TrueNAS system's configuration backup via the
config.save WebSocket API (SCALE 25.04+ flow using core.download), with retention
pruning, run-history logging, optional webhooks, and a password-protected web dashboard.

App Information

Testing

Tested locally with:

  • basic-values.yaml (ix_volume storage, custom cron schedule)
  • host-path-values.yaml (host_path storage, daily schedule, webhook URL)

Both test files render successfully. Full container CI will run on this PR.

Icons and Screenshots

Please upload the following to the CDN:

Special Notes

  • HTTPS required for API key auth — TrueNAS revokes keys used over plain HTTP.
  • When running on the same box, https://127.0.0.1 may not work depending on container
    networking; LAN IP fallback may be needed.
  • Single-container app, runs as uid/gid 568, uses ixVolume by default for backups and config.
  • Optional cron schedule presets; manual-only mode supported.
  • Default WebUI port is 30461 (30330 conflicts with mailpit).
  • Healthcheck uses bash http probe on /healthz (image has no curl).
  • Restore is performed in the TrueNAS UI, not through this app.

Checklist

  • App runs successfully locally (render + compose config validated)
  • Only modified files under /ix-dev/
  • README.md included
  • Multiple test scenarios tested
  • questions.yaml has clear descriptions and follows structure of existing apps
  • All automated CI checks pass

Closes#5473

Adds truenas-config-backup to the community train. Schedules and manages
TrueNAS configuration backups via the config.save WebSocket API with
retention, run history, and a web dashboard.
Closestruenas#5473
@CampAsAChamp
CampAsAChamp marked this pull request as draft August 1, 2026 16:08
@CampAsAChamp
CampAsAChamp marked this pull request as ready for review August 1, 2026 16:09
@CampAsAChamp

Copy link
Copy Markdown
Author

Hello just bumping this

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add TrueNAS Config Backup to community train

1 participant

@CampAsAChamp