Pronto Documentation

Everything you need to install, configure, and run Pronto on your own server.

Self-hostedDocker ComposeMIT License

Quick Start

1

Clone the repository

Clone the public repository and copy the environment file:

git clone https://github.com/SGrappelli/pronto.git
cd pronto
cp .env.example .env
2

Configure environment

Open .env and fill in the required variables. Minimum required: NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY. See the full variable reference below.

3

Start the application

Run the following command. Migrations run automatically on startup:

docker compose up -d

Your instance will be available at http://localhost:3000

System Requirements

RequirementMinimum
OSLinux, macOS, or Windows (WSL2)
RAM1 GB minimum, 2 GB recommended
Disk5 GB free space
DockerDocker 24+ with Docker Compose v2
InternetRequired for initial setup and notifications
Domain (optional)Any domain or subdomain pointing to your server

Environment Variables

Copy .env.example to .env and fill in the values below.

VariableRequiredDescription
NEXT_PUBLIC_SUPABASE_URLYour Supabase project URL
NEXT_PUBLIC_SUPABASE_ANON_KEYSupabase anonymous key
SUPABASE_SERVICE_ROLE_KEYSupabase service role key (keep secret)
NEXTAUTH_SECRETRandom string for session encryption
NEXTAUTH_URLFull URL of your instance (e.g. https://yourdomain.com)
NEXT_PUBLIC_DEPLOYMENT_MODESet to: selfhosted
RESEND_API_KEYResend API key for email notifications
TELEGRAM_BOT_TOKENTelegram Bot token from @BotFather
WHATSAPP_PHONE_NUMBER_IDMeta Cloud API Phone Number ID
WHATSAPP_ACCESS_TOKENMeta Cloud API permanent access token
VIBER_BOT_TOKENViber Bot token

NEXT_PUBLIC_DEPLOYMENT_MODE=selfhosted removes all SaaS billing UI and enables unlimited clients, staff, and locations.

Setting Up Notifications

Email (Resend)+
  1. 1.Create a free account at resend.com
  2. 2.Add and verify your domain
  3. 3.Generate an API key
  4. 4.Set RESEND_API_KEY in your .env file
  5. 5.Restart: docker compose restart app
Telegram+
  1. 1.Open Telegram and message @BotFather
  2. 2.Send /newbot and follow the prompts
  3. 3.Copy the token you receive
  4. 4.Set TELEGRAM_BOT_TOKEN in your .env file
  5. 5.In Pronto → Settings → Notifications, enter your bot token per business
WhatsApp (Meta Cloud API)+
  1. 1.Go to developers.facebook.com and create an app
  2. 2.Add the WhatsApp product to your app
  3. 3.Copy your Phone Number ID and generate a permanent access token
  4. 4.Set WHATSAPP_PHONE_NUMBER_ID and WHATSAPP_ACCESS_TOKEN in .env
  5. 5.Note: free-form messages only work within the 24-hour customer service window. Business-initiated messages require pre-approved HSM templates in Meta Business Manager.
Viber+
  1. 1.Go to partners.viber.com and create a bot
  2. 2.Copy the bot token
  3. 3.Set VIBER_BOT_TOKEN in your .env file
  4. 4.Note: Viber bots created after February 2024 require a commercial plan (~€100/month).

Updating to a New Version

git pull origin main
docker compose down
docker compose up -d --build

Migrations run automatically on startup — no manual SQL required.

Frequently Asked Questions

What are the minimum server requirements to run Pronto?+

Pronto requires Docker 24+, 1 GB RAM minimum (2 GB recommended), and 5 GB of free disk space. It runs on Linux, macOS, or Windows with WSL2. A $6/month VPS is sufficient for most small businesses.

Do I need a Supabase account to self-host Pronto?+

Yes. Pronto uses Supabase for the database and authentication. You can use the free Supabase tier, which supports up to 500 MB of database storage and is more than enough for most small business deployments.

How do I enable WhatsApp notifications?+

Pronto uses the Meta Cloud API for WhatsApp. You need a Meta Developer account and a verified WhatsApp Business number. Set WHATSAPP_PHONE_NUMBER_ID and WHATSAPP_ACCESS_TOKEN in your .env file. Note that business-initiated messages require pre-approved message templates.

Can I run Pronto without a domain name?+

Yes. Pronto works on a plain IP address or localhost for local use. For production with SSL, a domain name is recommended. You can use any reverse proxy (Nginx, Caddy) to add HTTPS.

How do I update Pronto to a new version?+

Run git pull origin main, then docker compose down && docker compose up -d --build. Database migrations run automatically on startup — no manual SQL steps are needed.

Is there a limit on clients or staff in the self-hosted version?+

No. The self-hosted version is completely unlimited — no caps on clients, staff members, locations, or bookings. Set NEXT_PUBLIC_DEPLOYMENT_MODE=selfhosted in your .env to enable this mode.

Where can I get help if something is not working?+

Open an issue on the GitHub repository at github.com/SGrappelli/pronto. The community and maintainers respond to issues there. For paid installation assistance, contact us through the GitHub page.

Need a managed version?

Don’t want to manage a server? Pronto is also available as a hosted service at trypronto.app — no installation required.