One-Command Installer
One command sets up Pano with everything around it: the Pano release, a private Java runtime, a launcher that restarts Pano after a crash, a service that starts it with the system and the pano command. Everything Pano writes stays in one folder.
Run it
curl -fsSL https://panomc.com/install | bashpowershell -c "irm https://panomc.com/install.ps1 | iex"No curl? Use wget -qO- https://panomc.com/install | bash. Linux and macOS need curl or wget, and tar. The downloads page builds the command for you.
The installer first asks for a language (English, Turkish or Russian), then shows the options screen: Up / Down move, Enter changes a row or starts the install, q quits. With -y, or without a terminal, it asks nothing and installs with the defaults and the options you passed.
When it is done, open the address it prints, http://localhost (or http://<your-server-ip>), and follow the Setup Wizard.
Options
Options go after bash -s --; on Windows the script runs as a script block:
curl -fsSL https://panomc.com/install | bash -s -- --mariadb --version 1.0.0powershell -c "& ([scriptblock]::Create((irm https://panomc.com/install.ps1))) -MariaDB -Version 1.0.0"| Linux / macOS | Windows | What it does |
|---|---|---|
--mariadb | -MariaDB | Install MariaDB and create the database and user pano for Pano |
--docker | — | Run Pano and MariaDB as containers. See Docker mode |
--gui | -Gui | Run Pano with its window instead of hidden in the background |
--version <version> | -Version | Install this version. Default: the latest |
--channel <channel> | -Channel | Newest version of a channel: release, beta or alpha |
--system, --user | -System, -User | Install for the whole system or only for the current user |
--dir <folder>, --here | -Dir, -Here | Install into this folder, or into the current one |
--port <port> | -Port | Port Pano listens on. Default: 80; 8088 when 80 is taken or, on Linux, for a one-user install |
--java <version> | -Java | Java Pano runs on: 11 (default), 17, 21 or 25 |
--system-java | — | Install that Java with the package manager instead of in Pano's folder |
--memory <amount> | -Memory | The most memory Pano's Java may use, in MB or GB (1024, 2g). Default 1g, at least 512 |
--no-restart | -NoRestart | Do not restart Pano after a crash |
--no-autostart | -NoAutostart | Do not start Pano when the system starts |
--lang <en|tr|ru> | -Lang | Language of the install |
-y, --yes | -Yes | Do not ask anything |
-h, --help | -Help | Show the options |
- Version: without
--versionor--channelyou get the newest stable release. The download is checked against its SHA-256. - Scope: run as root / administrator it installs for the whole system, otherwise for the current user. A system install asks for
sudo(Windows: administrator rights). - Memory: under 1 GB Pano runs, but it may run out of memory.
What it installs
| Current user | Whole system | |
|---|---|---|
| Folder on Linux / macOS | ~/pano | /opt/pano |
| Folder on Windows | %USERPROFILE%\Pano | C:\Pano (the system drive) |
pano command on Linux / macOS | ~/.local/bin/pano | /usr/local/bin/pano |
In the folder: Pano-<version>.jar, the Java runtime in runtime/jre, the launcher and the pano command in bin/, the settings file pano.env, and everything Pano creates itself (config.conf, plugins/, themes/, logs/, …).
- Service: a systemd unit
panoon Linux, a launchd jobcom.panomc.panoon macOS, a scheduled taskPanoon Windows. On Linux without systemd there is no service: start Pano yourself after a reboot withpano start. With--guion Linux you get an applications menu entry instead. - Crashes: the launcher restarts Pano after a crash, at most 5 times in 5 minutes, and never after a stop you asked for. Restarts and updates from the panel go through it too.
--mariadb: uses the system's package manager on Linux, Homebrew on macOS andwingeton Windows. The password lands inpano.envand the database step of the Setup Wizard is filled in. If MariaDB cannot be set up, Pano is installed anyway and the wizard asks for a database.pano.env:PANO_MEMORYandPANO_JVM_ARGSare read on every start. The port and the database are only copied intoconfig.confon the first start; change them in the panel later.- Updating: run the installer again in the same folder. Pano is updated, your data stays.
Docker mode
--docker (Linux and macOS, needs Docker with the compose plugin) installs nothing but two containers, Pano and MariaDB. It writes compose.yaml and .env (database password, image tag, port, memory limit) into the install folder, ~/pano by default, pulls the images and starts them. There is no Java, no service and no pano command: run docker compose ps, logs -f, stop or up -d in that folder, and docker compose down -v to remove it with its data. See Install with Docker.
The pano command
| Command | Does |
|---|---|
pano start, pano stop, pano restart | Start, stop or restart Pano |
pano status | Is it running? |
pano logs | Follow the log |
pano dir | Print the install folder |
pano uninstall | Remove Pano |
On Windows open a new terminal first. If the installer says the command's folder is not in your PATH, call <folder>/bin/pano instead.
The install folder also has run.sh (Windows: run.bat): it starts Pano like pano start, for when you would rather open the folder than type a command.
Uninstall
pano uninstall removes the program, its Java runtime, the service and the pano command, and keeps your data (config, plugins, themes, uploads). Add --purge (Windows: -Purge) to delete the data too. MariaDB and its pano database are never removed.