<Home>
DocumentationSELF-HOSTED / DEVELOPMENT RELEASEView source ↗
GUIDE 03 / Start here

Your first application

Deploy an image or template, review the changes and check that its services become ready.

Select a project and environment before creating an application. Development, staging and production are separate scopes; choosing one does not copy data or configuration from another.

Start in the dashboard#

Open New application to use container images or import TOML. For a database or an application with several prerequisites, start in Catalog. The template form identifies required variables, secret references, storage and resource requirements before review.

You can also import a specific TOML path from an approved GitHub or GitLab repository. Repository approval and account sign-in are separate. See Deployments for source setup.

Start with the CLI#

Install the CLI on Linux or macOS:

curl -fsSL https://hakopod.com/scripts/cli.sh | sh

Or with npm, which also covers Windows, where the shell installer is not supported:

npm i -g @hakopod/cli

Use @hakopod/cli to deploy an existing image or TOML application specification to your installation. To build from a Git repository through a source pipeline, use @hakopod/cloud (binary hakopod-cloud).

Use the management API address supplied by your operator. The address below is an example; replace it with your installation's HTTPS API origin or its documented loopback tunnel.

hakopod login --api-url https://control.example.com --project demo --environment development
hakopod init --name hello

Login opens browser consent for the selected scope. The initializer creates this complete application file, refusing to overwrite an existing one:

schema_version = 1
name = "hello"

[services.web]
image = "nginxinc/nginx-unprivileged:stable-alpine"
port = 8080
public = true

The image is the CLI's built-in starter. During deployment, Hakopod resolves its tag to an immutable digest. public = true requests HTTP ingress; it does not publish arbitrary TCP ports.

Review and deploy#

hakopod validate --file hakopod.toml
hakopod plan --file hakopod.toml --project demo --environment development
hakopod deploy --file hakopod.toml --project demo --environment development --wait
hakopod status hello --project demo --environment development

Validate checks the file locally. Plan shows the configuration Hakopod will apply, its differences from the current revision, warnings and resource profiles. Deploy obtains a fresh plan and submits it with the expected application revision. A concurrent change causes a conflict rather than silently replacing someone else's work.

Open the resulting application in the dashboard. Follow its deployment, inspect service readiness, then use its assigned public endpoint. A previously successful deployment does not prove a service is healthy now; check current observations and pod events.

When a service does not become ready#

Check the pod's events for scheduling, storage and image-pull errors. Check that the image listens on the declared port and supports an unprivileged user. An HTTP healthcheck must return success at its configured path. Scheduling errors may require an administrator to check node taints or add capacity.

Read recent logs with:

hakopod logs hello --service web --tail 100

Next, add configuration, connect private services, or set up a source deployment.