Born from consolidating numerous containers onto my TrueNAS server, this project aims to organize the growing (80+ services) catalog managed through a single root compose file with per-service directories, environment files, and a just-based CLI.
# Clone and enter
git clone https://github.com/jovalle/nexus.git && cd nexus
# Run setup (installs just, docker, creates network, etc.)
./setup.sh # interactive
./setup.sh --auto # opinionated defaults
# Copy and fill in your environment
cp .env.example .env
# Run everything
just run
# Run a single service
just run plexnexus/
├── .env # Global environment variables (gitignored)
├── .env.example # Template with placeholder values
├── archive/ # Retired service definitions
├── backups/ # Backup data (gitignored)
├── compose.yaml # Root compose — includes all services
├── justfile # Task runner recipes
├── scripts/ # Maintenance scripts
├── services/
│ └── {name}/
│ ├── compose.yaml # Service definition
│ └── .env # Service-specific overrides (gitignored)
└── setup.sh # Host provisioning scriptAll management goes through just:
just # List all recipes
just run [svc] # Run service(s)
just stop [svc] # Stop service(s)
just restart svc # Restart a service
just tail svc # Stream logs
just show [svc] # Show container status
just retire svc # Retire a serviceRun just --list for the full recipe list.
Install shell completion with just install completion.
Environment variables flow from two levels:
- Root
.env— shared values (paths, domain, timezone, credentials) services/<name>/.env— service-specific overrides
See .env.example for all available variables.
MIT
