Files
configng/tools/json/config.system.json
Igor 7586009515 Introduce unified image flashing tool for Armbian (#705)
* Modules for flashing images to block device
* Use redi_url instead of direct image
2025-12-05 20:26:53 +01:00

646 lines
34 KiB
JSON

{
"menu": [
{
"id": "System",
"description": "System wide and admin settings",
"sub": [
{
"id": "Kernel",
"description": "Alternative kernels, headers, overlays, bootenv",
"short": "Hardware",
"sub": [
{
"id": "KER001",
"description": "Use alternative kernels",
"short": "Alternative kernels",
"module": "module_generic",
"about": "Switching between kernels might change functionality of your device. \n\nIt might fail to boot!",
"command": [
"module_armbian_firmware select"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": ""
},
{
"id": "HEAD01",
"description": "Install Linux headers",
"short": "Kernel Headers",
"module": "module_generic",
"command": [
"module_armbian_firmware headers install"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "! module_armbian_firmware headers status"
},
{
"id": "HEAD02",
"description": "Remove Linux headers",
"command": [
"module_armbian_firmware headers remove"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "module_armbian_firmware headers status"
},
{
"id": "DTO001",
"description": "Manage device tree overlays",
"short": "Device Tree Overlays",
"module": "module_generic",
"command": [
"manage_dtoverlays"
],
"status": "Stable",
"author": "@viraniac @igorpecovnik",
"condition": "[ -d /boot/dtb/ ] && [ -f /boot/armbianEnv.txt ]"
},
{
"id": "ODR001",
"description": "Select Odroid board configuration",
"short": "Odroid Boards Config",
"module": "manage_odroid_board",
"command": [
"manage_odroid_board select"
],
"status": "Preview",
"author": "@GeoffClements",
"condition": "[ $BOARDFAMILY == odroidxu4 ]"
},
{
"id": "BOOT01",
"description": "Edit the boot environment",
"short": "Boot Environment",
"module": "module_generic",
"about": "This will open /boot/armbianEnv.txt file to edit\nCTRL+S to save\nCTLR+X to exit\nwould you like to continue?",
"command": [
"nano /boot/armbianEnv.txt"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "[[ -f /boot/armbianEnv.txt ]]"
}
]
},
{
"id": "Storage",
"description": "Install to internal media, ZFS, NFS, read-only rootfs",
"short": "Storage",
"module": "module_generic",
"sub": [
{
"id": "STO001",
"description": "Copy the running Armbian system to another device",
"short": "Install",
"module": "module_generic",
"command": [
"armbian-install"
],
"status": "Preview",
"author": "@igorpecovnik",
"condition": "[[ -f /sbin/armbian-install || -f /usr/bin/armbian-install ]]"
},
{
"id": "FLASH1",
"description": "Download a fresh, official Armbian OS image and write it to a device",
"short": "Download and flash",
"module": "module_images",
"command": [
"module_images install"
],
"status": "Preview",
"author": "@igorpecovnik",
"condition": "module_images status >/dev/null"
},
{
"id": "FLASH2",
"description": "Remove all downloaded Armbian images",
"short": "Remove cached images",
"module": "module_images",
"command": [
"module_images remove"
],
"status": "Preview",
"author": "@igorpecovnik",
"condition": "module_images cache-status"
},
{
"id": "ROO001",
"description": "Enable read only filesystem",
"short": "Read Only FS",
"module": "module_generic",
"prompt": "This will enable Armbian read-only filesystem.\n",
"command": [
"module_overlayfs install"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "module_overlayfs status"
},
{
"id": "ROO002",
"description": "Disable read only filesystem",
"prompt": "This will disable Armbian read-only filesystem.\n",
"command": [
"module_overlayfs remove"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "! module_overlayfs status"
},
{
"id": "NETF01",
"description": "Enable Network filesystem (NFS) support",
"short": "NFS",
"module": "module_generic",
"command": [
"module_nfs install"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "! pkg_installed nfs-common"
},
{
"id": "NETF02",
"description": "Disable Network filesystem (NFS) support",
"command": [
"module_nfs remove"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "pkg_installed nfs-common"
},
{
"id": "NETF03",
"description": "Manage NFS Server",
"short": "NFS server",
"module": "module_generic",
"condition": "pkg_installed nfs-common",
"sub": [
{
"id": "NETF04",
"description": "Enable network filesystem (NFS) daemon",
"short": "NFS server",
"module": "module_generic",
"command": [
"module_nfsd install"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "! module_nfsd status"
},
{
"id": "NETF05",
"description": "Configure network filesystem (NFS) daemon",
"command": [
"module_nfsd manage"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "module_nfsd status"
},
{
"id": "NETF06",
"description": "Remove network filesystem (NFS) daemon",
"command": [
"module_nfsd remove"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "module_nfsd status"
},
{
"id": "NETF07",
"description": "Show network filesystem (NFS) daemon clients",
"module": "module_generic",
"command": [
"module_nfsd clients"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "module_nfsd status && [[ ${NFS_CLIENTS_NUMBER} -gt 0 ]]"
}
]
},
{
"id": "NETF08",
"description": "Manage NFS Client",
"short": "NFS client",
"module": "module_generic",
"condition": "pkg_installed nfs-common",
"sub": [
{
"id": "NETF09",
"description": "Find NFS servers in subnet and mount shares",
"short": "Find NFS servers",
"module": "module_generic",
"command": [
"module_nfs servers"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "pkg_installed nfs-common"
},
{
"id": "NETF10",
"description": "Show and manage NFS mounts",
"command": [
"module_nfs mounts"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "[[ -n $(mount --type=nfs4) ]]"
}
]
},
{
"id": "ZFS001",
"description": "ZFS filesystem - enable support",
"short": "ZFS",
"module": "module_generic",
"command": [
"module_zfs install"
],
"status": "Stable",
"author": "@armbian",
"condition": "! module_zfs status && linux-version compare \"${KERNELID}\" le \"$(module_zfs kernel_max)\""
},
{
"id": "ZFS002",
"description": "ZFS filesystem - remove support",
"command": [
"module_zfs remove"
],
"status": "Stable",
"author": "@armbian",
"condition": "module_zfs status"
}
]
},
{
"id": "Access",
"description": "Manage SSH daemon options, enable 2FA",
"short": "SSH daemon",
"sub": [
{
"id": "ACC001",
"description": "Disable root login",
"short": "Native",
"module": "module_generic",
"command": [
"sed -i \"s|^#\\?PermitRootLogin.*|PermitRootLogin no|\" /etc/ssh/sshd_config",
"srv_restart ssh"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "grep -q '^PermitRootLogin yes' /etc/ssh/sshd_config"
},
{
"id": "ACC002",
"description": "Enable root login",
"command": [
"sed -i \"s/^#\\?PermitRootLogin.*/PermitRootLogin yes/\" /etc/ssh/sshd_config",
"srv_restart ssh"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "grep -q '^PermitRootLogin no' /etc/ssh/sshd_config"
},
{
"id": "ACC003",
"description": "Disable password login",
"command": [
"sed -i \"s/^#\\?PasswordAuthentication.*/PasswordAuthentication no/\" /etc/ssh/sshd_config",
"srv_restart ssh"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "grep -q 'PasswordAuthentication yes' /etc/ssh/sshd_config"
},
{
"id": "ACC004",
"description": "Enable password login",
"command": [
"sed -i \"s/^#\\?PasswordAuthentication.*/PasswordAuthentication yes/\" /etc/ssh/sshd_config",
"srv_restart ssh"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "grep -q 'PasswordAuthentication no' /etc/ssh/sshd_config"
},
{
"id": "ACC005",
"description": "Disable Public key authentication login",
"command": [
"sed -i \"s/^#\\?PubkeyAuthentication.*/PubkeyAuthentication no/\" /etc/ssh/sshd_config",
"srv_restart ssh"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "grep -q 'PubkeyAuthentication yes' /etc/ssh/sshd_config"
},
{
"id": "ACC006",
"description": "Enable Public key authentication login",
"command": [
"sed -i \"s/^#\\?PubkeyAuthentication.*/PubkeyAuthentication yes/\" /etc/ssh/sshd_config",
"srv_restart ssh"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "grep -q 'PubkeyAuthentication no' /etc/ssh/sshd_config"
},
{
"id": "ACC007",
"description": "Disable OTP authentication",
"command": [
"clear",
"! pkg_installed libpam-google-authenticator && ! pkg_installed qrencode || pkg_remove libpam-google-authenticator qrencode",
"sed -i \"s/^#\\?ChallengeResponseAuthentication.*/ChallengeResponseAuthentication no/\" /etc/ssh/sshd_config || sed -i \"0,/KbdInteractiveAuthentication/s//ChallengeResponseAuthentication yes/\" /etc/ssh/sshd_config",
"sed -i '/^auth required pam_google_authenticator.so nullok/ d' /etc/pam.d/sshd",
"srv_restart ssh"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "grep -q 'ChallengeResponseAuthentication yes' /etc/ssh/sshd_config"
},
{
"id": "ACC008",
"description": "Enable OTP authentication",
"command": [
"pkg_installed libpam-google-authenticator || pkg_install libpam-google-authenticator",
"pkg_installed qrencode || pkg_install qrencode",
"sed -i \"s/^#\\?ChallengeResponseAuthentication.*/ChallengeResponseAuthentication yes/\" /etc/ssh/sshd_config",
"sed -i $'/KbdInteractiveAuthentication/{iChallengeResponseAuthentication yes\\n:a;n;ba}' /etc/ssh/sshd_config || sed -n -i '/password updating/{p;:a;N;/@include common-password/!ba;s/.*\\n/auth required pam_google_authenticator.so nullok\\nauth required pam_permit.so\\n/};p' /etc/pam.d/sshd",
"[ ! -f /root/.google_authenticator ] && qr_code generate",
"srv_restart ssh"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "! pkg_installed libpam-google-authenticator || ! pkg_installed qrencode || grep -q '^ChallengeResponseAuthentication no' /etc/ssh/sshd_config || ! grep -q 'ChallengeResponseAuthentication' /etc/ssh/sshd_config"
},
{
"id": "ACC009",
"description": "Generate new OTP authentication QR code",
"command": [
"qr_code generate"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "grep -q '^ChallengeResponseAuthentication yes' /etc/ssh/sshd_config"
},
{
"id": "ACC010",
"description": "Show OTP authentication QR code",
"command": [
"qr_code"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "grep -q '^ChallengeResponseAuthentication yes' /etc/ssh/sshd_config && [ -f /root/.google_authenticator ]"
},
{
"id": "ACC011",
"description": "Disable last login banner",
"command": [
"sed -i \"s/^#\\?PrintLastLog.*/PrintLastLog no/\" /etc/ssh/sshd_config",
"srv_restart ssh"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "grep -q '^PrintLastLog yes' /etc/ssh/sshd_config"
},
{
"id": "ACC012",
"description": "Enable last login banner",
"command": [
"sed -i \"s/^#\\?PrintLastLog.*/PrintLastLog yes/\" /etc/ssh/sshd_config",
"srv_restart ssh"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "grep -q '^PrintLastLog no' /etc/ssh/sshd_config"
},
{
"id": "SSH001",
"description": "Sandboxed & containerised SSH server",
"short": "Containerised",
"module": "module_openssh-server",
"about": "This operation will install SSH server.",
"command": [
"module_openssh-server install"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "! module_openssh-server status"
},
{
"id": "SSH002",
"description": "Remove sandboxed SSH server",
"about": "This operation will remove SSH server.",
"command": [
"module_openssh-server remove"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "module_openssh-server status"
},
{
"id": "SSH003",
"description": "Purge sandboxed SSH server with data folder",
"about": "This operation will purge SSH server with data folder.",
"command": [
"module_openssh-server purge"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "module_openssh-server status"
}
]
},
{
"id": "User",
"description": "Change shell, adjust MOTD",
"short": "Shell and MOTD",
"sub": [
{
"id": "SHELL1",
"description": "Change shell system wide to ZSH",
"short": "Change shell",
"module": "module_generic",
"about": "This will switch system wide shell to ZSH",
"command": [
"manage_zsh enable"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "[[ $(cat /etc/passwd | grep \"^root:\" | rev | cut -d\":\" -f1 | cut -d\"/\" -f1| rev) == \"bash\" ]]"
},
{
"id": "SHELL2",
"description": "Change shell system wide to BASH",
"about": "This will switch system wide shell to BASH",
"command": [
"manage_zsh disable"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "[[ $(cat /etc/passwd | grep \"^root:\" | rev | cut -d\":\" -f1 | cut -d\"/\" -f1| rev) == \"zsh\" ]]"
},
{
"id": "MOTD01",
"description": "Adjust welcome screen (motd)",
"short": "Adjust MOTD",
"module": "module_generic",
"command": [
"adjust_motd"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "[ -f /etc/default/armbian-motd ]"
}
]
},
{
"id": "Updates",
"description": "OS updates and distribution upgrades",
"short": "OS Updates",
"status": "Active",
"condition": "[ -f /etc/armbian-distribution-status ]",
"sub": [
{
"id": "UPD001",
"description": "Enable Armbian firmware upgrades",
"short": "Firmware",
"module": "module_generic",
"about": "This will enable Armbian kernel/firmware upgrades that are currently put on hold.",
"command": [
"module_armbian_firmware unhold"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "module_armbian_firmware hold status"
},
{
"id": "UPD002",
"description": "Disable Armbian firmware upgrades",
"about": "Disable Armbian kernel/firmware upgrades",
"command": [
"module_armbian_firmware hold"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "! module_armbian_firmware hold status"
},
{
"id": "ROLLIN",
"description": "Switch system to rolling packages repository",
"short": "Rolling",
"module": "module_generic",
"about": "This will switch OS to rolling releases.",
"command": [
"module_armbian_firmware repository rolling"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "module_armbian_firmware repository stable status"
},
{
"id": "STABLE",
"description": "Switch system to stable packages repository",
"short": "Stable",
"module": "module_generic",
"about": "This will switch OS to stable releases",
"command": [
"module_armbian_firmware repository stable"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "module_armbian_firmware repository rolling status"
},
{
"id": "STD001",
"description": "Distribution upgrade to latest stable / LTS",
"short": "Stable Distro Upgrade",
"about": "Release upgrade is irriversible operation which upgrades all packages. \n\nResoulted upgrade might break your build beyond repair!",
"command": [
"release_upgrade stable"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "[ -f /etc/armbian-distribution-status ] && release_upgrade stable verify"
},
{
"id": "UNS001",
"description": "Distribution upgrade to rolling unstable",
"short": "Unstable Distro Upgrade",
"about": "Release upgrade is irriversible operation which upgrades all packages. \n\nResoulted upgrade might break your build beyond repair!",
"command": [
"release_upgrade rolling"
],
"status": "Stable",
"author": "@igorpecovnik",
"condition": "[ -f /etc/armbian-distribution-status ] && release_upgrade rolling verify"
},
{
"id": "WTC001",
"description": "Enable automating Docker container base images updating",
"short": "Docker images",
"module": "module_watchtower",
"command": [
"module_watchtower install"
],
"status": "Stable",
"author": "@armbian",
"condition": "! module_watchtower status && pkg_installed docker-ce"
},
{
"id": "WTC002",
"description": "Disable automating Docker container base images updating",
"command": [
"module_watchtower remove"
],
"status": "Stable",
"author": "@armbian",
"condition": "module_watchtower status && pkg_installed docker-ce"
},
{
"id": "UNAT01",
"description": "Enable automatic package updates.",
"short": "Packages",
"module": "module_generic",
"command": [
"module_armbian_upgrades install"
],
"status": "Stable",
"author": "@armbian",
"condition": "! module_armbian_upgrades status"
},
{
"id": "UNAT02",
"description": "Configure automatic package updates",
"command": [
"module_armbian_upgrades configure"
],
"status": "Stable",
"author": "@armbian",
"condition": "module_armbian_upgrades status"
},
{
"id": "UNAT03",
"description": "Disable automatic package updates",
"command": [
"module_armbian_upgrades remove"
],
"status": "Stable",
"author": "@armbian",
"condition": "module_armbian_upgrades status"
}
]
}
]
}
]
}