Install
Two pieces, and most people need only the first.
The server#
Requires Docker and Docker Compose. Nothing else — no Go, no Node, no Postgres of your own.
mkdir pando && cd pando
curl -fsSLO https://github.com/bemeek-io/pando/releases/latest/download/docker-compose.yml
docker compose up -dThat starts the published image, trypando/pando, with
the Postgres and BuildKit it needs beside it. Open http://localhost:8080.
The compose file pins the image to its release. To upgrade, download the newer release's
docker-compose.yml over it and run docker compose up -d again; your apps and data are kept in
named volumes. Postgres is only reachable from the other containers, and its password defaults to
pando; to choose your own, put POSTGRES_PASSWORD=... in a .env file beside the compose file
before the first start.
The image is built on Docker Hardened Images, for linux/amd64 and
linux/arm64, and signed; checking the signature is in
docs/releasing.md. Its server runs as a non-root user. To
build it from source instead, clone the repository, sign in with docker login dhi.io, and run
docker compose up -d --build, as described in CONTRIBUTING.md.
The CLI#
Optional. It is the same binary as the server and talks to an installation over its API, so it goes on your own machine rather than on the host, and everything it does can also be done in the console.
macOS, and Linux with Homebrew 4.5 or newer:
brew install bemeek-io/tap/pandoDebian and Ubuntu: take a version from the
releases page and download the .deb for your
architecture.
VERSION=0.2.0 # the release you want
curl -LO https://github.com/bemeek-io/pando/releases/download/v${VERSION}/pando_${VERSION}_linux_amd64.deb
sudo apt install ./pando_${VERSION}_linux_amd64.debThe same page has .rpm and .apk packages, and plain tarballs for macOS and Linux on both
architectures. Every command and flag: docs/cli.md. To build it from source
instead:
go install github.com/bemeek-io/pando/cmd/pando@latestOr skip installing it and use the copy already inside the container, via
docker compose exec pando pando ….
First sign-in#
A new installation has no accounts. Open the console and Pando asks you to set up the administrator: choose a username and password there, and you are signed in.
Whoever reaches the console first sets up the administrator, so do this before anyone else can reach Pando. To create the account at startup instead, for an unattended install, supply its password; you are asked to change it when you first sign in:
# Read only on first run, when there is no account yet.
PANDO_ADMIN_PASSWORD=... docker compose up -dIf the administrator's password is lost, reset it from the host. This ends every session for that account:
docker compose exec pando pando admin reset-passwordpando admin talks to the database rather than the API, so it works when nobody can sign in.
Deploying your first app#
In the console, choose Add app and paste a repository URL. Pando clones it and shows you a proposal: which build method it chose, which port it thinks the app listens on, which services it appears to need, and what it is unsure about. Review it and accept. Anything it could not determine becomes a question rather than a guess.
Apps are reachable on their own port, starting at http://localhost:9000, and the address is shown
on the app's page. Twenty ports are published by default; PANDO_APP_PORT_START and
PANDO_APP_PORT_END change the range.