diff --git a/README.md b/README.md index 4f39450..14e4a58 100644 --- a/README.md +++ b/README.md @@ -21,13 +21,16 @@ Project N.O.M.A.D. can be installed on any Debian-based operating system (we rec *Note: sudo/root privileges are required to run the install script* -#### Quick Install +#### Quick Install (Debian-based OS Only) ```bash sudo apt-get update && sudo apt-get install -y curl && curl -fsSL https://raw.githubusercontent.com/Crosstalk-Solutions/project-nomad/refs/heads/main/install/install_nomad.sh -o install_nomad.sh && sudo bash install_nomad.sh ``` Project N.O.M.A.D. is now installed on your device! Open a browser and navigate to `http://localhost:8080` (or `http://DEVICE_IP:8080`) to start exploring! +### Advanced Installation +For more control over the installation process, copy and paste the [Docker Compose template](https://raw.githubusercontent.com/Crosstalk-Solutions/project-nomad/refs/heads/main/install/management_compose.yml) into a `docker-compose.yml` file and customize it to your liking (be sure to replace any placeholders with your actual values). Then, run `docker compose up -d` to start the Command Center and its dependencies. Note: this method is recommended for advanced users only, as it requires familiarity with Docker and manual configuration before starting. + ## How It Works N.O.M.A.D. is a management UI ("Command Center") and API that orchestrates a collection of containerized tools and resources via [Docker](https://www.docker.com/). It handles installation, configuration, and updates for everything — so you don't have to. diff --git a/install/management_compose.yaml b/install/management_compose.yaml index 6522efa..511cc0b 100644 --- a/install/management_compose.yaml +++ b/install/management_compose.yaml @@ -25,18 +25,24 @@ services: - NODE_ENV=production - PORT=8080 - LOG_LEVEL=info - - APP_KEY=replaceme # Needs to be at least 16 chars or will fail validation and container won't start! - - HOST=0.0.0.0 # Leave this as is so the admin server listens all interfaces within the container - this doesn't affect how you access it from the host, it's just for internal container networking - - URL=replaceme # Should be set to the URL you will access the admin interface at (e.g. http://localhost:8080 or http://192.168.1.x:8080) + # APP_KEY needs to be at least 16 chars or will fail validation and container won't start! + - APP_KEY=replaceme + # # Leave HOST as is so the admin server listens all interfaces within the container - this doesn't affect how you access it from the host, it's just for internal container networking + - HOST=0.0.0.0 + # URL should be set to the URL you will access the admin interface at (e.g. http://localhost:8080 or http://192.168.1.x:8080) + - URL=replaceme - DB_HOST=mysql - - DB_PORT=3306 # If you change the MySQL port, make sure to update this accordingly + # If you change the MySQL port, make sure to update this accordingly + - DB_PORT=3306 - DB_DATABASE=nomad - DB_USER=nomad_user - - DB_PASSWORD=replaceme # Needs to match the MYSQL_PASSWORD in the mysql service! + # Needs to match the MYSQL_PASSWORD in the mysql service! + - DB_PASSWORD=replaceme - DB_NAME=nomad - DB_SSL=false - REDIS_HOST=redis - - REDIS_PORT=6379 # If you change the Redis port, make sure to update this accordingly + # If you change the Redis port, make sure to update this accordingly + - REDIS_PORT=6379 depends_on: mysql: condition: service_healthy @@ -48,7 +54,8 @@ services: timeout: 10s retries: 3 dozzle: - image: amir20/dozzle:v10.0 # Dozzle is optional, but note that the "Service Logs & Metrics" link in Settings points to it. We recommend including it unless you have a specific reason not to + # Dozzle is optional, but it's lightweight and allows for easily viewing container logs. We recommend including it unless you have a specific reason not to + image: amir20/dozzle:v10.0 container_name: nomad_dozzle restart: unless-stopped ports: @@ -66,7 +73,8 @@ services: - MYSQL_ROOT_PASSWORD=replaceme - MYSQL_DATABASE=nomad - MYSQL_USER=nomad_user - - MYSQL_PASSWORD=replaceme # Needs to match DB_PASSWORD in the admin service! + # Needs to match DB_PASSWORD in the admin service! + - MYSQL_PASSWORD=replaceme volumes: - /opt/project-nomad/mysql:/var/lib/mysql healthcheck: @@ -85,7 +93,8 @@ services: interval: 30s timeout: 10s retries: 3 - updater: # Updater & disk-collector are lightweight sidecar containers that run alongside the admin container to handle updates and host disk usage collection, respectively. + updater: + # Updater is a lightweight sidecar container that allows the admin container to be updated from within it's own UI image: ghcr.io/crosstalk-solutions/project-nomad-sidecar-updater:latest pull_policy: always container_name: nomad_updater @@ -95,6 +104,8 @@ services: - /opt/project-nomad:/opt/project-nomad # Writable access required so the updater can set the correct image tag in compose.yml - nomad-update-shared:/shared # Shared volume for communication with admin container disk-collector: + # Disk Collector is a lightweight privileged container that collects disk usage information from the host system and shares it with the admin container so it can be displayed in the UI. + # It requires read-only access to the host filesystem and is designed to be as secure and limited in scope as possible while still providing the necessary functionality. image: ghcr.io/crosstalk-solutions/project-nomad-disk-collector:latest pull_policy: always container_name: nomad_disk_collector