Skip to content

Deploy on a server

This guide installs Strawly on a Linux server so your team can reach it over HTTPS at an address like https://strawly.example.com. The installer sets up Docker, HTTPS certificates and every secret for you.

What you need

  • A Linux server with Ubuntu 24.04 or Debian 12, from any provider (Azure, Hetzner, DigitalOcean, your own hardware). You need to be able to sign in to it over SSH as a user with sudo.
  • A domain name you can add DNS records to, for example strawly.example.com.
  • Ports 80 and 443 open to the internet on the server's firewall or network security group. Let's Encrypt uses port 80 to issue the certificate.
  • At least 2 CPU cores, 2 GB of memory and 10 GB of free disk for one instance. See System requirements.

No domain? You can still run Strawly on a private network without HTTPS. Choose option 2 in step 3, and see Without a domain.

1. Point the domain at the server

At your DNS provider, create an A record for the name you want (for example strawly) pointing to the server's public IP address. DNS changes can take a few minutes to apply.

2. Connect to the server

ssh you@your-server-ip

3. Run the installer

curl -fsSL https://git.strawly.app/Strawly/deployment/raw/branch/main/install.sh | sudo bash

The installer:

  1. Installs Docker from Docker's official repository, if the server does not have it. It asks first.
  2. Asks for an instance name. Press Enter to keep strawly.
  3. Asks how people will reach Strawly. Choose 1, a domain name with HTTPS.
  4. Asks for the domain and an email address for certificate notices, then checks that the domain points to this server.
  5. Asks for the admin email and whether to enable the Azure module.
  6. Generates every password and key, picks the newest versions, starts Strawly and gets the HTTPS certificate.

At the end it prints the address, the admin email and a first password. The password is shown only once.

4. Sign in

Open https://your-domain, sign in, and choose a new password when asked.

Strawly then asks whether to restore a backup or start blank. Choose restore if you are moving from a test instance or another server. See Backup and Restore.

5. Connect your cloud

Follow Azure Optimizations to create a service principal and enter it under Settings > Credentials. Then open Settings > Modules and turn on the Azure resource types you want analysed. They start turned off on a new instance.

Keeping it running

Task Command
See versions and health strawly status
Back up the database strawly backup
Upgrade to the newest versions strawly upgrade
Undo the last upgrade strawly rollback
Read the logs strawly logs backend
Move to another port strawly set-port <port>

strawly upgrade backs up the database before changing anything. See Updating.

Copy backups off the server regularly: the files are in /opt/strawly/instances/<name>/backups/. A backup on the same disk does not protect you if the server is lost.

Without a domain

Choose 2, on my local network in step 3. The installer then asks for a port, suggesting the first free one from 8080. Strawly is reachable at http://<server-ip>:<port> from other machines on the same network. To change the port later, run strawly set-port <port>.

Plain HTTP

Without a domain, Strawly uses plain HTTP, so passwords and cost data cross the network unencrypted. Use it only on a network you trust. Strawly shows administrators a reminder while it runs this way.

To add a domain later, point DNS at the server and run:

strawly add-domain strawly.example.com you@example.com

Uninstall

strawly uninstall

This removes every instance and its database, the HTTPS proxy and its certificates, the Strawly Docker images, the strawly command and the /opt/strawly folder. It first offers to save a final database backup of each instance to a folder in your home directory. That folder is the only thing left afterwards, and only if you choose to keep it.

Docker stays installed, because other software may use it. If the Strawly installer installed Docker, the command prints how to remove it.