another-install-script : Un menu d’installation pour le homelab
another-install-script propose un menu shell pour choisir des opérations système et installer des conteneurs. Les menus et les définitions de services sont séparés, ce qui évite de placer toutes les commandes dans setup.sh.
Langages du dépôtShell 93.8%3
Parts calculées à partir des octets GitHub Linguist.
| Langage | % | Octets |
|---|---|---|
| Shell | 129 426 | |
| Dockerfile | 4 311 | |
| Python | 4 242 |
Aperçu
Pourquoi il existe
Installateur shell interactif (TUI) automatisant le déploiement de conteneurs Docker et de configurations serveur.
Cas d’usage
Déploiement rapide de serveurs et d'environnements homelab en une commande.
Démarrage
Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.
git clone https://github.com/antoinebou13/another-install-script.git
cd another-install-script
sudo bash setup.shcd tests
bash test.shcd tests
bash coverage.shgit submodule update --init --recursive
git pull --recurse-submodules
git submodule update --remote
cd docs/generator
chmod +x generate_docs.sh
bash generate_docs.sh ../docs.md+-- docs
| +-- vendor
| +-- ...
| +-- docs.md
| +-- generate_docs.md
| +-- ...
+-- containers
| +-- $container_name
| | | +-- docker-compose.yml
| | | +-- $container_name.sh
| | | +-- ...
+-- srcRéférences du dépôt
Extraits des guides du dépôt, dans leur langue d’origine. Les liens ouvrent la version du code consultée.
Prérequis et premier essai
How to install
README.md
List of other installed program that you can chose to install
README.md
This script also offers optional installation of several other programs including git, python3, docker, docker-compose, snapd, curl, vim, and more.
- build-essential
- git
- python3
- python3-pip
- wireless-tools
- wpasupplicant
- default-jre
- jq
- net-tools
- firefox
- lxde
- vim
- snapd
- nmap
- wget
- curl
- mlocate
- cmake
- docker
- docker-compose
- dry
- ctop
- emojify
- dokku
- lynk
Développement et contributions
How to run coverage and tests
README.md
Contributing
README.md
Contributing
.github/CONTRIBUTING.md
Fonctions et composants 2
- Point d’entrée et menus
- setup.sh charge src/menu.sh et appelle main_setup_menu. Le script racine traite les arguments, tandis que le module chargé pilote la navigation. config.yml constitue le fichier de configuration placé à côté du lanceur.
- Définitions des services
- Le dossier containers contient les éléments d’installation propres aux services. Cette séparation facilite l’ajout de services, mais chaque installation modifie tout de même l’hôte ou son environnement Docker.
Architecture
Les composants et leurs liens restent lisibles en texte. Le diagramme ajoute une vue interactive.
- setup.sh
- src/menu.sh
- Configuration et sélection
- Installation du conteneur
Liens vérifiés dans le dépôt.
Mermaid Diagramme interactif (chargement à l’ouverture)
Vue générale des composants et des échanges vérifiés dans le dépôt.

flowchart LR
subgraph group_cli["CLI management"]
node_menu["CLI menu<br/>[menu.sh]"]
node_router["Command router<br/>[router.sh]"]
node_utilities["Shell utilities<br/>[utils.sh]"]
end
subgraph group_services["Service deployment"]
node_service_catalog["Service catalog"]
node_service_scripts["Service installers"]
node_compose_definitions["Compose definitions"]
node_container_manager["Container manager<br/>[containers.sh]"]
node_docker_manager["Docker operations<br/>[docker.sh]"]
end
subgraph group_system["Server management"]
node_program_installer["Program installer<br/>[install.sh]"]
node_other_tools["Other programs<br/>[other.sh]"]
node_firewall["Firewall management<br/>[firewall.sh]"]
node_backup["Backup management<br/>[backup.sh]"]
end
subgraph group_config["Configuration utilities"]
node_config_loader["Config management<br/>[config.sh]"]
node_list_generator["Service list generator<br/>[containers_list.py]"]
node_proxy_generator["Proxy config generator"]
node_settings["System settings<br/>[config.yml]"]
end
node_user(("Server administrator"))
node_docker["Docker"]
node_user -->|"chooses services"| node_menu
node_menu -.->|"routes commands"| node_router
node_router -.->|"manages containers"| node_container_manager
node_container_manager -.->|"uses Docker operations"| node_docker_manager
node_docker_manager -.->|"operates"| node_docker
node_service_scripts -.->|"uses definitions"| node_compose_definitions
node_container_manager -.->|"installs services"| node_service_catalog
node_user -->|"requests programs"| node_program_installer
node_program_installer -.->|"offers programs"| node_other_tools
node_list_generator -->|"reads settings"| node_settings
node_proxy_generator -->|"reads settings"| node_settings
class node_menu,node_router,node_utilities toneBlue
class node_service_catalog,node_service_scripts,node_compose_definitions,node_container_manager,node_docker_manager toneAmber
class node_program_installer,node_other_tools,node_firewall,node_backup,node_user toneMint
class node_config_loader,node_list_generator,node_proxy_generator,node_settings toneRose
class node_docker toneIndigoUn gestionnaire en ligne de commande pour installer et configurer des services auto-hébergés. Le parcours documenté part du menu, choisit un service ou un programme, puis délègue les conteneurs, le proxy et la configuration à des utilitaires Shell et Python.
- Composants
- 18
- Connexions
- 11
- Liens appuyés par le code ou le README
- 4/11
Version texte du diagramme
- setup.sh → src/menu.sh
- src/menu.sh → Configuration et sélection
- Configuration et sélection → Installation du conteneur
Suivre un parcours dans le code
Partez de l’appel à main_setup_menu, puis inspectez le service choisi dans containers avant de l’exécuter. Le menu distribue les actions; le service choisi détermine les changements réels.
Déploiement et exploitation
Les ports, le stockage et les relations de démarrage ci-dessous viennent de la configuration du dépôt. depends_on indique l’ordre de démarrage, pas la disponibilité du service.
Types et structure des fichiers
2 types déclarés, dont 2 dans l’aperçu des relations de base.
Diagramme des types
classDiagram
direction TB
class t9c1d5cd3c00c["GeneratorAIS"] {
__init__()
read_yml()
generate_containers_list()
write_containers_list_text()
}
class t51dcacef3aad["ReverseProxy"] {
read_yml()
generate_nginx_conf()
generate_server_block()
}
class bb0976d8612e0["object"] {
<<unresolved_base>>
}
bb0976d8612e0 <|-- t9c1d5cd3c00c
Les bases non résolues restent identifiées; les signatures complètes ne sont pas reconstruites.
Index des types
GeneratorAIS(class) ·src/containers_list.py:8Méthodes dans l’aperçu :
__init__, read_yml, generate_containers_list, write_containers_list_text.Bases déclarées :
object.ReverseProxy(class) ·src/nginx_reverse_proxy.py:9Méthodes dans l’aperçu :
read_yml, generate_nginx_conf, generate_server_block.
Référence
203 / 203 fichiers admissibles lus (291 dans l’arbre); 0 trop volumineux, 0 échec de lecture et 1 diagnostic de syntaxe.
Ce que couvre l’analyse
Les dossiers connus de dépendances et de compilation, les fichiers d’identifiants et les binaires sont exclus. La collecte couvre les README, les manifestes reconnus et les fichiers source pris en charge.
Les statistiques Linguist couvrent l’ensemble du dépôt et peuvent inclure d’autres langages.
Carte des fichiers
flowchart TD
root["another-install-script"]
f0["setup.sh"]
root --> f0
f1["src/menu.sh"]
root --> f1
f2["README.md"]
root --> f2
f3["uninstall.sh"]
root --> f3
f4["version.sh"]
root --> f4
f5["src/backup.sh"]
root --> f5
f6["src/config.sh"]
root --> f6
f7["src/containers.sh"]
root --> f7
f8["src/containers_list.py"]
root --> f8
f9["src/docker.sh"]
root --> f9
f10["src/firewall.sh"]
root --> f10
f11["src/install.sh"]
root --> f11
f12["src/nginx_reverse_proxy.py"]
root --> f12
f13["src/other.sh"]
root --> f13
f14["src/router.sh"]
root --> f14
f15["src/utils.sh"]
root --> f15
Fichiers à lire 3
Références
- GitHubDépôt source
- READMEDocumentation du dépôt
- MediaBox homelab — ce que je fais tourner en Docker (et le reste en signet)Article du blog