Nectere suiteContainer deployment managerv20261021-085118

Nectere Arch

Arch deploys a container image from a registry to Azure Container Instances, Azure Container Apps or Google Cloud Run, or packages it as a bundle for a plain Docker host. ACI deployments can also be updated, restarted and given storage after the fact.

Azure ACI · Azure Container Apps · Cloud Run GHCR · ACR · ECR · GAR · Docker Hub Image update checks Portable Docker bundle
Get itNectere Array › Menu › Deploy › Nectere Arch

01The app

The mock works like the app. Click through the sidebar, open a deployment, or step through Deploy with Next and Back. The switch changes who is signed in.

Signed in as
Not securehttps://array.corp.lab/i/7d42e9b1/Dashboard

A user handles day-to-day work. Users, Server Logs and Backup are admin only. Array sign-on hides Users and Logout because Array owns the accounts.

02Concepts

Arch doesn't build images. It starts from an image already pushed to a registry.

AppAn image in a registry, such as ghcr.io/acme/web-api:latest, and the login to pull it. Inspect records its ports and folders.
CredentialA saved login for Azure, AWS, Google Cloud or a registry. Secrets are masked after saving. Cloud logins can be tested and checked for permissions.
TargetAzure ACI, Azure Container Apps, GCP Cloud Run, or a Local Bundle for a Docker host you run.
DeploymentOne app sent to one target. Holds the settings, URL, created resources and log. Updates and destroys start from here.
BundleA zip with docker-compose.yml, a README with pull and start steps, and a .env file.

Typical order

  1. Credentials: add the cloud login for the target, plus a registry login if the image is private and not on GHCR. Press Test.
  2. Apps: register the image and press Inspect.
  3. Deploy: pick a target and app, step through to Review, press Deploy.
  4. Deployments: wait for succeeded and open the URL.

03Getting Arch

In Nectere Array, open Menu › Deploy › Nectere Arch, name the tile, pick a sign-in mode and press Deploy. Press Open once the tile shows Running. Restarts, Arch updates and its logs are on the back of the tile.

Array sign-on (recommended)Opening the tile signs you in. Array admins arrive as admin, other Array users as user.
Application sign-inArch keeps its own accounts. The first visitor creates the admin, who adds everyone else under Users.

04Sign-in and setup

With Application sign-in, the first visit shows a setup form. The name and password entered there become the admin account. After that everyone uses Log In.

Screen
Not securehttps://array.corp.lab/i/7d42e9b1/loginSign-in
RuleValue
Sign-in lasts8 hours
Lockout5 wrong passwords for one username in 15 minutes locks it for 5 minutes
Minimum password8 characters
UsernamesLetters, numbers, dots, hyphens, underscores and @

Array sign-on

These forms don't appear. Opening the tile from Array signs you in, and the sidebar shows your name with no Logout button. If the Array session expires while Arch is open, Arch shows its own Log In page. Don't log in there. Go back to Array and reopen the tile.

Sidebar
ItemWho sees it
Dashboard, Apps, Credentials, Deploy, DeploymentsEveryone
Usersadmin with Application sign-in. Hidden with Array sign-on.
Server Logs, Backupadmin

Footer

Signed-in user, plus Logout with Application sign-in.

Notifications

Top right, gone after about four seconds. Green is success, rose is failure, blue is information.

Dialogs close with ×, Cancel, Close or Escape. Clicking outside a dialog does nothing, so a half-filled form isn't lost.

06Dashboard

The landing page.

https://array.corp.lab/i/7d42e9b1/Dashboard
  1. 1Counts. Active Deployments counts only deployments that are running. The rest are totals.
  2. 2Shortcuts. Register App and Add Credential open their panel with the form up. New Deployment opens the wizard.
  3. 3Recent Deployments. The ten newest. Click a row to open it.

07Apps

An app points at one image tag in one registry. Auth means Arch holds a login for it, Public means it doesn't. Deleting an app leaves its deployments alone.

https://array.corp.lab/i/7d42e9b1/Apps

Register App

The registry decides where the login comes from. GHCR takes a token in the form and the rest use a saved credential. Public images need neither. When editing, the token box is always blank; leave it blank to keep the saved token.

Registry
Register App
RegistryLogin comes from
GHCRGHCR Token on the app (optional)
ACRAn Azure Service Principal or a Registry Username / Password credential
ECRAn AWS Access Keys credential
GARA GCP Service Account credential
Docker Hub / Generic v2A Registry Username / Password credential

The Credential list only shows matching types. If it's empty, add the credential first. Image references with odd characters are rejected.

Inspect

Inspect reads the image from the registry without running it and saves its exposed ports and folder list. The wizard uses these to fill in Port and offer volumes. Large images take a minute or so, and closing the window doesn't stop it.

State
Image Inspection
MessageWhen
Name and Image are requiredOne of them is blank
Inspection already runningInspect pressed again before the first run finished
An inspection is already running for this appAnother user is inspecting it
Failed to fetch manifest: … 401 (Unauthorized)The login can't read the image, or a private image has no login

08Credentials

Cloud and registry logins. Row icons, left to right: Test, Access report (cloud only), Edit, Delete.

https://array.corp.lab/i/7d42e9b1/Credentials

Credential types

Type sets the fields. Saved secrets show as dots: leave them to keep the secret, type over them to replace it. Type can't be changed after saving.

Type
Edit Credential
TypeFieldsUsed for
Azure Service PrincipalTenant ID, Client ID, Client Secret, Subscription IDACI and Container Apps, ACR pulls
AWS Access KeysAccess Key ID, Secret Access Key, Default RegionECR pulls
GCP Service AccountProject ID, Service Account JSON KeyCloud Run, GAR pulls
Registry Username / PasswordUsername, Password / TokenACR, Docker Hub and other registries

Test

Test signs in for real and reports back in a notification. Azure results end with the client secret length, which catches a secret truncated on paste. Tests time out after 90 seconds.

TypePassing message
Azure Service PrincipalService principal authenticated; subscription reachable. (client secret length: 40)
AWS Access KeysAWS keys valid. {"UserId": "AIDAWXH3EXAMPLE5KQ", "Account": "418272791002", "Arn": "arn:aws:iam::418272791002:user/arch-deploy"}
GCP Service AccountGCP service account activated.
Registry Username / PasswordStored. Registry username/password is checked when an image is pulled.
Azure, subscription wrongLogin worked but subscription not reachable: …

Access report

The shield icon runs read checks for an Azure, AWS or Google credential at three levels: tenant or organisation, then subscription, account or project, then billing. Denied rows with an orange i have a fix as a copyable command. A run takes 15 to 60 seconds. The last result stays, marked cached, until Refresh.

State
Access Report
CloudScope boxLevels checked
AzureSubscription ID, defaults to the credential's subscriptionTenant, Subscription, Billing
AWSAccount ID or role ARN, defaults to the key's own accountOrganization, Account, Billing
GoogleProject ID, defaults to the credential's projectOrganization, Project, Billing
ResultMeans
Allowed OKPassed
Denied ErrorNot permitted, or the call failed
PartialMixed results within the level
Info SkippedInformational, or not applicable to this identity type

09Deploy

Steps depend on the target: seven for ACI, five for Cloud Run. The mock lets you click the rail to jump between steps. The app only moves with Next and Back.

Target
https://array.corp.lab/i/7d42e9b1/Deploy
TargetAppCredentialConfigureNetworkEnv VarsVolumesReview
Azure ACI✓✓✓✓✓✓✓
Azure Container Apps✓✓✓–✓✓✓
GCP Cloud Run✓✓✓–✓–✓
Local Bundle✓–✓–✓✓✓
AWS App RunnerThe first step also offers AWS App Runner. It's an early draft with its own page.

App and Credential

Next stays disabled until an app card is selected. The Credential step lists Azure Service Principals for both Azure targets and GCP Service Accounts for Cloud Run. With none saved it shows No matching credentials. Add a azure-sp in the Credentials panel first. Local Bundle skips the step and uses the app's registry login.

Configure

Port is pre-filled for inspected apps (Auto-detected from image inspection). Otherwise the hint reads No port discovered — inspect the image or enter manually. Names take letters, numbers, hyphens and underscores, up to 63 characters, and are lowercased.

Target
Configure
FieldTargetsNotes
Resource GroupACI, Container AppsRequired. Created if missing.
Container App Name / Service Name / App NameAllRequired. Label varies by target.
PortAllRequired, 1 to 65535. Blank on a bundle means 8080.
HTTPSACIChanges the access URL to https:// and nothing else. The image must serve TLS itself.
Location / RegionAll but Local BundlePer-cloud list, first entry is the default
vCPU, Memory (GB)ACI0.1 to 4 cores, 0.1 to 16 GB. Defaults 2 and 4.
Container SizeContainer AppsFixed pairs from 0.25 vCPU · 0.5 GiB to 4 vCPU · 8 GiB, all valid on the platform
Container Apps EnvironmentContainer AppsBlank means <app-name>-env. Reuses an existing one in the resource group.
Custom DomainContainer AppsOptional. See Custom domain.
Allow unauthenticated access (public)Cloud RunOn by default. Off requires Google sign-in.
Registry login in bundleLocal BundleSee below

Registry login in a bundle

Sets which pull login ships in the README. Embed the app's credential writes the app's own token. Embed a different token takes a read-only token for this bundle only; Arch doesn't save it. Keep it private leaves the login out for whoever runs the bundle to supply.

Network (ACI only)

Public IP is open to anyone. Private VNet has no public address. VNet + Load Balancer sits behind a public load balancer that admits only the source addresses you list. Both VNet modes take an existing network and subnet, or Create New makes a /28.

Mode
Network

Env Vars and Volumes

Key and value rows, passed to the container as environment variables or written to .env in a bundle. Empty rows are ignored. The × on the last row clears it.

Env Vars

Volumes lists the folders found by inspection. Tick the ones that need to survive a restart; anything below a ticked folder greys out. On Azure each becomes a file share on a storage account created with the deployment. In a bundle each becomes a folder under ./data. Uninspected apps can skip the step.

Volumes
Container Apps forget their filesLocal disk is wiped on every update, restart and scale-down, and storage can't be added later. Tick anything worth keeping here.

Review

Press Deploy (Generate Bundle for a Local Bundle). Arch shows Deployment started and opens the new deployment.

Target
Review
MessageFix
Select a credential to continueClick a credential card first
Resource Group is requiredFill it in on Configure
App Name: letters, numbers, hyphens or underscores only (max 63)Remove spaces, dots and other symbols
A valid port is required (1-65535)Enter the port the image listens on
Select an existing VNet and subnet, or create a new VNetFinish the Network step or switch to Public IP
Enter the token to embed, or choose another optionPaste the token or pick another option
Too many background jobs running (limit 6). Wait for one to finish and try again.Six deploys, inspections or destroys are already running. Wait for one.

10Deployments

Every deployment, failed ones included. ACI rows show their resource group under the target. Click a row for its detail view.

https://array.corp.lab/i/7d42e9b1/Deployments

Detail view

Layout varies by target and outcome. Callouts refer to the ACI view.

Deployment
https://array.corp.lab/i/7d42e9b1/Deployment
  1. 1Header buttons. Show Deployment Template is always there. Succeeded ACI deployments add Check for Updates, Redeploy Image and Restart Container.
  2. 2Summary cards. Status, location, timing and the rest at a glance.
  3. 3Configuration. Includes the digest actually deployed and the URL.
  4. 4Deployed Resources. Created means Arch made it, Existing means it was reused. Destroy All Resources is underneath.
  5. 5Helpful Commands. az commands to open a shell in the container and follow its logs. Container Apps adds platform logs and a replica list.
  6. 6Persistent Storage. ACI volumes, with Add Volume Mount and a Remove per row.
  7. 7Logs. Every step of every action, newest last, following live while something runs. Delete is here.
What you can doACIContainer AppsCloud RunLocal Bundle
Open the URL, read the log✓✓✓log only
Check for Updates, Redeploy Image, Restart Container✓–––
Add or remove storage afterwards✓–––
Bind a custom domain–✓––
Helpful Commands✓✓––
Download the bundle, Docker install scripts–––✓
Destroy✓✓✓–

Updates and restarts (ACI)

Arch records the image digest at deploy time. Check for Updates compares it with what the tag points to now, and if they differ Apply Update moves the container to the newer image. Redeploy Image does the same without checking. Both end with Image updated — restart the container to apply changes.

Restart Container confirms with Restart the container? It will be briefly unavailable. The container is down for a few seconds.

Result
Update Check

For GHCR images the digests and Package line link to the image page on GitHub.

MessageMeans
Update started - restart container to applyNew image in place, restart still needed
Container restartingRestart accepted
Can only update succeeded deploymentsRedeploy a failed deployment instead
A update job is already running for this deployment - …Wait for it, then retry

Storage after deploy (ACI)

In Add Volume Mount, press Inspect, pick a folder and press Attach Storage. Arch adds a 50 GB file share and restarts the container with it mounted over that folder. The share starts empty, so copy out anything worth keeping first.

The folder list comes from the app's inspection. No cached paths. Go to GHCR Apps and click Inspect Image first. means the app needs inspecting under Apps. Remove confirms with Remove this volume mount? The container app will be restarted.

Needs a storage accountOnly deployments that had at least one volume ticked in the wizard have one. Otherwise Arch says No storage account found in deployment resources.

Custom domain (Container Apps)

Arch doesn't edit DNS. With a custom domain set in the wizard, the detail view lists two records to create: a TXT proving ownership and a CNAME pointing at the app (an A record for a bare domain such as corp.lab). Then press Bind Domain. Azure issues a free certificate in 5 to 20 minutes.

A bind before DNS has propagated fails. Press it again later.

Domain status
Custom Domain
Log lineMeans
Waiting for the managed certificate to issue (typically 5-20 minutes)...Records accepted, certificate in progress
Bind failed - check the DNS records exist and have propagated, then retry.Azure can't see the records yet
Gave up after 30 minutes - certificate is still provisioning. Re-run the bind later; progress carries over.Press Bind Domain again later
Domain bound - managed certificate issued for billing.corp.labDone. The certificate auto-renews.

Local bundle downloads

Download Bundle (.zip) gets everything. The other buttons preview single files. Docker install scripts… covers hosts without Docker: apt and dnf Linux, generic Linux, Windows and macOS.

Deployment Bundle

On the target host, unzip and follow the README from that folder: create the data folders, log in to the registry if told to, then docker compose pull and docker compose up -d. Update and stop steps are in the README too.

The README can hold a secretWith an embedded login the README carries a live registry token, flagged at the top. Treat the zip as a password. Use Keep it private for bundles leaving your control.

Deployment template

ARM Template is the exact template sent for an ACI deployment. Other targets show No saved template available for this deployment. Deployment Inputs lists every wizard choice, for any target.

Deployment Template
Templates show values in the clearBoth tabs show env var values and registry logins as sent, to anyone who can open the deployment.

Destroy and delete

Destroy All Resources (Destroy Service on Cloud Run) deletes what Arch built in the cloud and logs each item. It confirms first with This will DELETE the cloud resources created by this deployment. This cannot be undone. Continue? The resource group is kept, as is anything Arch didn't create, such as a pre-existing Container Apps environment.

Delete removes the deployment from Arch with its log, template and bundle. Cloud resources keep running.

Destroy first, then deleteDeleting a live deployment leaves its resources for you to clean up in the cloud console. Destroy, wait for All resources destroyed, then Delete.

11Statuses

pending running succeeded failed destroying destroyed destroy_failed startdestroydestroy
StatusBadgeMeans
pendingpendingAccepted, not started
runningrunningDeploy in progress. Counts as Active.
succeededsucceededUp. URL is on the detail view.
failedfailedThe last red log line has the reason
destroyingdestroyingRemoving cloud resources
destroyeddestroyedCloud resources gone. The record stays until Delete.
destroy_faileddestroy_failedSomething couldn't be removed. Check the log and finish in the cloud console.
interruptedinterruptedArch restarted mid-deploy. Check the cloud for what got built.

The Deployments filter has no Destroyed or Interrupted option. Those show under All.

12Users

Admin only, Application sign-in only. A user can register apps, manage credentials, deploy, update and destroy; an admin also gets Users, Server Logs and Backup. Edit changes the role and nothing else, so a forgotten password means deleting and re-adding the account. Your own account can't be deleted.

https://array.corp.lab/i/7d42e9b1/Users

Under Array sign-on the panel is hidden and shows User accounts are managed in Nectere Array. if reached.

13Server Logs

The last 500 lines of today's app-wide activity, tagged by area. Refresh loads newer lines.

https://array.corp.lab/i/7d42e9b1/Server Logs
Treat these logs as sensitiveLines can include env var values from deploy requests. Check before pasting into a ticket or chat.

14Backup and restore

https://array.corp.lab/i/7d42e9b1/Backup & Restore
  • Export configuration downloads necterearch-conf-YYYYMMDD-HHmmss.zip with apps, credentials, deployments, logs and bundles.
  • Import configuration replaces everything, with no merge. It confirms with This OVERWRITES all current configuration with the uploaded backup. Continue?
  • After Import complete. Restart the app container to apply., restart from the Array tile with State › Restart.
  • Credentials in the backup are encrypted with the tile's AZ_CREDENTIAL_KEY, so the zip holds no readable secrets. They only open on a tile with the same key value in its .env.

15Things to know

  • Delete doesn't destroy. Destroy first.
  • Inspect before deploying. No inspection means no port auto-fill, no volumes, and no storage on ACI later.
  • Aftercare is ACI only. Other targets update by deploying again.
  • A tag isn't a version. An ACI deployment of latest stays on the recorded digest until an update is applied.
  • Cloud Run only pulls from Google's registries. Push GHCR or Docker Hub images to Artifact Registry first.
  • Container Apps lose their disk unless volumes are picked in the wizard.
  • HTTPS on ACI is a label. The image must serve TLS.
  • Arch doesn't touch DNS.
  • Old login subtitle. GHCR → Azure Container Instances is left over from the first version.

16Troubleshooting

You seeDo this
AADSTS7000215: Invalid client secret provided in a deploy logThe credential holds the secret ID instead of its value, or the secret expired. Paste the value and Test. The reported length should match.
Login worked but subscription not reachableWrong Subscription ID, or no role on it. The Access report shows which.
MANIFEST_UNKNOWN or manifest … is not foundThe tag doesn't exist. Fix the app's Image URL and redeploy.
Inspect fails with 401 (Unauthorized)Add a token or the right credential to the app.
Port comes up empty in the wizardInspect the app, or type the port.
The Credential step is emptyAdd an Azure Service Principal (Azure targets) or GCP Service Account (Cloud Run).
Cloud Run log warns Cloud Run can only pull from Artifact Registry / GCRPush the image to Artifact Registry, register that copy and deploy it.
No cached paths. Go to GHCR Apps and click Inspect Image first.Inspect the source app under Apps, then retry Add Volume Mount.
Bind Domain keeps failingCheck the TXT and CNAME records match exactly, give DNS time, bind again.
A deployment sits on interruptedArch restarted mid-run. Check what got built, then Destroy or redeploy.
A … job is already running for this deploymentWait for the current action. Progress is in the deployment log.
Sent to the Log In page on an Array sign-on tileThe Array session expired. Reopen the tile from Array.
Credentials won't work after restoring a backupThis tile's AZ_CREDENTIAL_KEY differs from the source tile's. Copy the original value into its .env and restart it.