Skip to content

Install Buuck on a VPS

Buuck runs on your own server. This page tells you how to install Buuck on a VPS with the Buuck CLI.

Do the steps in the given sequence. The installation needs about 15 minutes after your DNS records are ready.

Buuck has two self-hosted editions. Your purchase email tells you which edition you bought. Use only the registry credentials from that email. The credentials work for one edition only.

Buuck Start Buuck Pro
Registry project buuck buuck-pro
Server image registry.buuck.io/buuck/server registry.buuck.io/buuck-pro/server
Dashboard image registry.buuck.io/buuck/dashboard registry.buuck.io/buuck-pro/dashboard
Booking image Same image, published to both projects (booking) Same image, published to both projects (booking)
Migrate image registry.buuck.io/buuck/db-migrate registry.buuck.io/buuck-pro/db-migrate
Branding Subtle “Powered by Buuck” on booking emails No Buuck branding. White-label emails and UI
Branding controls Fixed Buuck mark Custom branding (logo and look)

Pro Managed is the Pro product with hosting and support from us. You do not install Pro Managed with this page.

Buuck has three applications and five support services. Docker Compose starts all of them together.

Service Function Port
booking The public page. Your customers make their bookings here. 3002
dashboard The private page. Your staff manage the bookings here. 3001
server The API. The two applications get their data from the API. 3000
db-migrate One-time setup. It creates the database users and the database tables. —
postgres The database. The database keeps all of your data. 5432
cache The cache. The cache makes the API faster. 6379
caddy The reverse proxy. It also gets the TLS certificates. 80, 443
dozzle The log viewer. You can read the messages of the other services here. 8080

Only the reverse proxy is open to the internet. The other services are on a private Docker network.

The server, dashboard, and db-migrate images differ by edition. The Start build and the Pro build are separate images. The Pro migrate image creates extra tables that Start does not. The CLI pulls the images for the edition that matches your registry credentials.

You need these items:

  • A VPS with 2 CPU cores, 4 GB of RAM and 20 GB of free disk space.
  • A 64-bit x86 processor. The Buuck images do not run on an ARM processor.
  • A Linux operating system. We test Buuck on Ubuntu 24.04.
  • Root access to the VPS, or a user account with sudo rights.
  • A domain name. You must be able to add records to its DNS zone.
  • Your edition (Start or Pro). The purchase email names the edition.
  • The registry user name and your license key. We send them to you in an email.
  • The version number of your Buuck release. The same email gives you this number.
  • An SMTP account. Buuck sends the booking emails with this account.

This page uses example.com for the domain name. Replace example.com with your own domain name.

Buuck uses four subdomains. Add one DNS A record for each subdomain. Each record points to the IP address of your VPS.

Record Example Service
api api.example.com the server
admin admin.example.com the dashboard
book book.example.com the booking page
logs logs.example.com the log viewer

If your DNS provider has a proxy function, switch the proxy off. The reverse proxy on your VPS must get the requests directly.

Check one record before you continue:

Terminal window
dig +short api.example.com

The command shows the IP address of your VPS. If the command shows no address, wait 10 minutes. Then do the check again.

Connect to your VPS:

Terminal window
ssh root@YOUR-SERVER-IP

Download the Buuck CLI, and run the install command. You can use the command builder below.

Terminal window
curl -fsSL https://get.buuck.io/cli -o /usr/local/bin/buuck
chmod +x /usr/local/bin/buuck
sudo buuck install
Command builder

Fill in your values to build a one-liner Buuck CLI command.

From your purchase email (robot$…)

For Let's Encrypt certificate notices

Implicit TLS (usually off on port 587)

Adds --yes

Opens ports 22, 80, 443

Do not start Docker

sudo buuck install --yes

The CLI asks for these values from your purchase email and from your own setup:

  1. Registry user name (it starts with robot$)
  2. License key
  3. Edition (start or pro)
  4. Buuck version (for example v0.0.1)
  5. API domain (for example api.example.com)
  6. Dashboard domain (for example admin.example.com)
  7. Booking domain (for example book.example.com)
  8. Logs domain (for example logs.example.com)
  9. Email address for TLS certificate notices
  10. Email provider (usually smtp)
  11. From address for booking emails
  12. SMTP host, port, user, password and secure setting

Use the registry user name and the license key from the same purchase email. Those credentials already match your edition (Start → project buuck, Pro → project buuck-pro).

Then the CLI shows a summary. Type y to continue.

The CLI then does this work for you:

  1. Installs Docker Engine and Docker Compose if they are missing.
  2. Can open ports 22, 80 and 443 with ufw if you say yes.
  3. Checks your DNS records.
  4. Creates /opt/buuck with compose.yaml, Caddyfile, .env and dozzle-users.yml.
  5. Generates the database passwords, the cache password, the auth secret, the setup token and the log viewer password.
  6. Logs in to the Buuck registry.
  7. Pulls the images for your edition and starts Buuck.
  8. Waits until the API answers over HTTPS.
  9. Prints the setup link for the first account.

The first start needs about 2 to 3 minutes. The reverse proxy also gets the TLS certificates in this time.

For flags and environment variables, read the Buuck CLI guide.

Look at the status of the services:

Terminal window
cd /opt/buuck
docker compose ps

The db-migrate service shows the status exited (0). This status is correct. The service runs one time only. All of the other services show the status running or healthy.

Send a request to the API:

Terminal window
curl -i https://api.example.com

The API answers with 200 OK and the text OK.

Then open these three addresses in a browser:

  • https://admin.example.com shows the login page of the dashboard.
  • https://book.example.com shows the booking page.
  • https://logs.example.com shows the log viewer. Sign in as admin. The password is DOZZLE_PASSWORD in /opt/buuck/.env.

The browser must show a valid certificate for each address. If a page does not open, read the Problems section.

On Start, booking emails end with a small “Powered by Buuck” line. On Pro, that line is not present.

At the end, the CLI prints a setup link. The link looks like this:

https://admin.example.com/setup?token=YOUR-SETUP-TOKEN
  1. Open the setup link in a browser.
  2. Give your name, your email address and a password.
  3. Give the name of your business and a short name for the address.
  4. Select Complete setup.

The dashboard opens. Your account is the owner of the instance. You can now add your venues, your resources and your offerings.

Your customers make their bookings at https://book.example.com/YOUR-SHORT-NAME.

New accounts need an invitation. Open Instance settings on the dashboard to invite your staff. Each invitation goes to one email address and works one time.

Stop all of the services:

Terminal window
cd /opt/buuck
docker compose stop

Restart all of the services:

Terminal window
cd /opt/buuck
docker compose start

You can find a list of common problems and their solutions on the Common problems page.