Install Noust
Install Noust with one command, open its console through an SSH tunnel, and create the first administrator.
Goal: Noust installed on a server, its console running, and you signed in as its first administrator.
Time: about a minute for the install, a few more to sign in.
You need: a server on a supported Linux with at least 1 GB of memory, root access over SSH, and ports 80 and 443 free.
Steps
-
Connect to the server as root.
Shellssh root@203.0.113.10Noust needs root: it installs packages, writes to
/etcand/var, and manages systemd. -
Download the installer and check it. The installer is published with every release, next to a list of checksums.
Shellcurl -fsSLO https://github.com/Perkybeet/noust/releases/latest/download/install.sh curl -fsSLO https://github.com/Perkybeet/noust/releases/latest/download/SHA256SUMS sha256sum -c --ignore-missing SHA256SUMSThe last command must print
install.sh: OK. Platforms explains how to check the signature of the checksums as well. -
Run it.
Shellsh install.shIt reads the distribution and the processor, and refuses one that is not on the list. It adds the Noust package repository after checking its signing key, installs the
noustpackage, prepares the server (noust setup init: nginx, certbot, git, Node.js and Noust's directories) and starts the console as a service (noust web enable). To see what it would do without doing it, runsh install.sh --dry-run. -
Open the console from your computer. The console listens on
127.0.0.1:8080of the server and nowhere else, so you reach it through an SSH tunnel. The installer prints the exact command, with your server's address in it. On your computer:Shellssh -N -L 8080:127.0.0.1:8080 root@203.0.113.10Leave it running and open http://127.0.0.1:8080/login?with=token in your browser.
-
Sign in with the access token, and create your account. Paste the access token (the installer printed it once, in a box) and press Sign in. The console then asks for the first administrator: a username and a password. A second factor is offered next; you can set it up later, but do it before you publish the console or add a second server.
What you should see
The installer ends with these lines, your server's address in them:
Noust is installed.
The console listens on 127.0.0.1:8080 of this server, and on purpose nowhere else.
To open the console from your computer, run this there:
ssh -N -L 8080:127.0.0.1:8080 root@203.0.113.10
Then browse to:
http://127.0.0.1:8080/login?with=token
Its access token is in the box above; it is shown only once.On the server, noust setup doctor lists what deployments need, each line green:
noust setup doctorIn the console, the overview of a new server is one card: Deploy your first app.
Other ways to install
The one-line installer is the recommended way. These do the same by hand. After any of them, run
noust setup init and noust web enable yourself.
# Ubuntu 26.04. For another release, change xUbuntu_26.04 in both lines:
# xUbuntu_24.04, xUbuntu_22.04, Debian_12 or Debian_13.
curl -fsSL https://download.opensuse.org/repositories/home:/Perkybeet/xUbuntu_26.04/Release.key | \
gpg --dearmor | tee /usr/share/keyrings/noust.gpg > /dev/null
echo 'deb [signed-by=/usr/share/keyrings/noust.gpg] https://download.opensuse.org/repositories/home:/Perkybeet/xUbuntu_26.04/ /' | \
tee /etc/apt/sources.list.d/noust.list
apt update
apt install noustdnf config-manager --add-repo \
https://download.opensuse.org/repositories/home:/Perkybeet/Fedora_42/home:Perkybeet.repo
dnf install noust# Tumbleweed. On Leap 15.6, use openSUSE_Leap_15.6 instead of openSUSE_Tumbleweed.
zypper ar -f https://download.opensuse.org/repositories/home:/Perkybeet/openSUSE_Tumbleweed/ home_Perkybeet
zypper install noustpip install 'noust[all]' # the command line, the console, the API and the monitorgit clone https://github.com/Perkybeet/noust.git
cd noust
pip install -e ".[all]"The packages come from the home:Perkybeet project on the openSUSE Build Service. The RHEL family
(AlmaLinux, Rocky Linux, CentOS Stream) has no package: the one-line installer puts Noust in a
virtual environment under /opt/noust instead.
The console needs FastAPI, Uvicorn and psutil. The Debian package recommends them and the RPM
package suggests them; if they are missing, noust web install installs them.
A container, to manage other servers
The image ghcr.io/perkybeet/noust runs a central: a console that manages your other servers
and deploys nothing itself. It is the way to run Noust on a NAS or on any Docker host.
docker run -d --name noust --restart unless-stopped \
-p 8443:8443 -v noust-data:/data \
--read-only --tmpfs /tmp:size=16m --cap-drop ALL \
--security-opt no-new-privileges:true \
ghcr.io/perkybeet/noust:latest
docker logs noust # the sign-in token, once, and the certificate's fingerprintRun a central covers it, including a NAS running UGOS Pro.
Without logging in
To install Noust on a new server from its first boot, with a cloud-init user-data file or Ansible, see Install without logging in.
If it fails
error: Noust does not install on ...and exit status 3: the distribution or the processor is not on the list. The lines after it say why.The repository key does not have the expected fingerprint. Nothing was installed.: stop there. Platforms says how to tell a rotated key from a wrong one.- The browser cannot reach
127.0.0.1:8080: the tunnel is not open, or the console is not running. On the server,noust web statussays whether it runs. - You lost the access token: on the server,
noust web token --newprints a new one. The old one stops working.
The installation did not work has the rest.