Pronto Documentation
Everything you need to install, configure, and run Pronto on your own server.
Quick Start
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 .envConfigure 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.
Start the application
Run the following command. Migrations run automatically on startup:
docker compose up -dYour instance will be available at http://localhost:3000
System Requirements
| Requirement | Minimum |
|---|---|
| OS | Linux, macOS, or Windows (WSL2) |
| RAM | 1 GB minimum, 2 GB recommended |
| Disk | 5 GB free space |
| Docker | Docker 24+ with Docker Compose v2 |
| Internet | Required 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.
| Variable | Required | Description |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL | ✅ | Your Supabase project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY | ✅ | Supabase anonymous key |
SUPABASE_SERVICE_ROLE_KEY | ✅ | Supabase service role key (keep secret) |
NEXTAUTH_SECRET | ✅ | Random string for session encryption |
NEXTAUTH_URL | ✅ | Full URL of your instance (e.g. https://yourdomain.com) |
NEXT_PUBLIC_DEPLOYMENT_MODE | ✅ | Set to: selfhosted |
RESEND_API_KEY | ⚡ | Resend API key for email notifications |
TELEGRAM_BOT_TOKEN | ⚡ | Telegram Bot token from @BotFather |
WHATSAPP_PHONE_NUMBER_ID | ⚡ | Meta Cloud API Phone Number ID |
WHATSAPP_ACCESS_TOKEN | ⚡ | Meta Cloud API permanent access token |
VIBER_BOT_TOKEN | ⚡ | Viber 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.Create a free account at resend.com
- 2.Add and verify your domain
- 3.Generate an API key
- 4.Set RESEND_API_KEY in your .env file
- 5.Restart: docker compose restart app
Telegram+
- 1.Open Telegram and message @BotFather
- 2.Send /newbot and follow the prompts
- 3.Copy the token you receive
- 4.Set TELEGRAM_BOT_TOKEN in your .env file
- 5.In Pronto → Settings → Notifications, enter your bot token per business
WhatsApp (Meta Cloud API)+
- 1.Go to developers.facebook.com and create an app
- 2.Add the WhatsApp product to your app
- 3.Copy your Phone Number ID and generate a permanent access token
- 4.Set WHATSAPP_PHONE_NUMBER_ID and WHATSAPP_ACCESS_TOKEN in .env
- 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.Go to partners.viber.com and create a bot
- 2.Copy the bot token
- 3.Set VIBER_BOT_TOKEN in your .env file
- 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 --buildMigrations 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.