mirror of
https://github.com/formbricks/formbricks.git
synced 2026-04-24 03:21:20 -05:00
4ebe144191
Co-authored-by: Matti Nannt <mail@matthiasnannt.com>
425 lines
17 KiB
Plaintext
425 lines
17 KiB
Plaintext
export const metadata = {
|
|
title: "Step by Step Guide on Deploying Formbricks to Production on Ubuntu",
|
|
description:
|
|
"Master the swift deployment of Formbricks on an Ubuntu server with our step-by-step guide. Use a single command to automate Docker, Postgres DB, SSL certificate configuration, and more. Encounter issues? Dive into our troubleshooting steps or join our community on Discord for assistance.",
|
|
};
|
|
|
|
#### Self-Hosting
|
|
|
|
# One-Click Setup
|
|
|
|
<Note>This only works with an Ubuntu machine so please verify the underlying OS beforehand!</Note>
|
|
|
|
If you want to quickly set up a production instance of Formbricks on a server running Ubuntu, we've got you covered! This method utilizes a convenient shell script that takes care of everything, including **Docker**, **Postgres DB**, and **SSL certificate configuration**. The shell script will automatically install all the required dependencies and configure your server, making the process a breeze.
|
|
|
|
<Note>
|
|
This setup installs **Traefik** to work as a **reverse proxy**. This configuration is crucial for directing
|
|
incoming traffic to the correct container, allowing Formbricks to be accessible from the internet securely.
|
|
Traefik is chosen for its simplicity and automatic SSL management with Let's Encrypt.
|
|
</Note>
|
|
|
|
If you want to run Formbricks on a different OS or have more control over the installation process, you can follow the [advanced installation guide with Docker](/self-hosting/docker).
|
|
|
|
### Requirements
|
|
|
|
Before you proceed, make sure you have the following:
|
|
|
|
- A **Linux Ubuntu** Virtual Machine deployed with SSH access.
|
|
- An **A record** set up to connect a custom domain to your instance. Formbricks will **automatically create an SSL certificate** for your domain using Let's Encrypt.
|
|
- **Port 80 and 443** open in your VM's Security Group to allow Traefik to create the SSL certificate.
|
|
|
|
## Start
|
|
|
|
Copy and paste the following command into your terminal:
|
|
|
|
<Col>
|
|
<CodeGroup title="Single Command to deploy Formbricks">
|
|
|
|
```bash
|
|
curl -fsSL https://raw.githubusercontent.com/formbricks/formbricks/main/docker/formbricks.sh -o formbricks.sh && chmod +x formbricks.sh && ./formbricks.sh install
|
|
```
|
|
|
|
</CodeGroup>
|
|
</Col>
|
|
|
|
The script will prompt you for the following information:
|
|
|
|
1. **Overwriting Docker GPG Keys**: If Docker GPG keys already exist, the script will ask if you want to overwrite them.
|
|
|
|
<Col>
|
|
<CodeGroup title="Docker GPG Keys Overwrite Prompt">
|
|
|
|
```bash
|
|
🚀 Executing default step of installing Formbricks
|
|
🧱 Welcome to the Formbricks Setup Script
|
|
|
|
🛸 Fasten your seatbelts! We're setting up your Formbricks environment on your Ubuntu 24.04 LTS server.
|
|
|
|
🧹 Time to sweep away any old Docker installations.
|
|
🔄 Updating your package list.
|
|
📦 Installing the necessary dependencies.
|
|
🔑 Adding Docker's official GPG key and setting up the stable repository.
|
|
File '/etc/apt/keyrings/docker.gpg' exists. Overwrite? (y/N)
|
|
```
|
|
|
|
</CodeGroup>
|
|
</Col>
|
|
|
|
2. **Domain Name**: You will be asked to enter the domain name where you want to host Formbricks. This domain will be used to generate an SSL certificate.
|
|
|
|
<Col>
|
|
<CodeGroup title="Email Prompt">
|
|
|
|
```bash
|
|
🚀 Executing default step of installing Formbricks
|
|
🧱 Welcome to the Formbricks Setup Script
|
|
|
|
🛸 Fasten your seatbelts! We're setting up your Formbricks environment on your Ubuntu 24.04 LTS server.
|
|
|
|
🧹 Time to sweep away any old Docker installations.
|
|
🔄 Updating your package list.
|
|
📦 Installing the necessary dependencies.
|
|
🔑 Adding Docker's official GPG key and setting up the stable repository.
|
|
File '/etc/apt/keyrings/docker.gpg' exists. Overwrite? (y/N) y
|
|
🔄 Updating your package list again.
|
|
🐳 Installing Docker.
|
|
🚀 Testing your Docker installation.
|
|
🎉 Docker is installed!
|
|
🐳 Adding your user to the Docker group to avoid using sudo with docker commands.
|
|
🎉 Hooray! Docker is all set and ready to go. You're now ready to run your Formbricks instance!
|
|
📁 Created Formbricks Quickstart directory at ./formbricks.
|
|
🔗 Please enter your domain name for the SSL certificate (🚨 do NOT enter the protocol (http/https/etc)):
|
|
```
|
|
|
|
</CodeGroup>
|
|
</Col>
|
|
|
|
3. **HTTPS Certificate Prompt**: The script will ask if you want to create an HTTPS certificate for your domain. Enter Y to proceed. This is highly recommended for secure access to your Formbricks instance.
|
|
|
|
<Col>
|
|
<CodeGroup>
|
|
|
|
```bash
|
|
🚀 Executing default step of installing Formbricks
|
|
🧱 Welcome to the Formbricks Setup Script
|
|
|
|
🛸 Fasten your seatbelts! We're setting up your Formbricks environment on your Ubuntu 24.04 LTS server.
|
|
|
|
🧹 Time to sweep away any old Docker installations.
|
|
🔄 Updating your package list.
|
|
📦 Installing the necessary dependencies.
|
|
🔑 Adding Docker's official GPG key and setting up the stable repository.
|
|
File '/etc/apt/keyrings/docker.gpg' exists. Overwrite? (y/N) y
|
|
🔄 Updating your package list again.
|
|
🐳 Installing Docker.
|
|
🚀 Testing your Docker installation.
|
|
🎉 Docker is installed!
|
|
🐳 Adding your user to the Docker group to avoid using sudo with docker commands.
|
|
🎉 Hooray! Docker is all set and ready to go. You're now ready to run your Formbricks instance!
|
|
📁 Created Formbricks Quickstart directory at ./formbricks.
|
|
🔗 Please enter your domain name for the SSL certificate (🚨 do NOT enter the protocol (http/https/etc)):
|
|
my.hosted.url.com
|
|
🔗 Do you want us to set up an HTTPS certificate for you? [Y/n]
|
|
```
|
|
|
|
</CodeGroup>
|
|
</Col>
|
|
|
|
4. **DNS Setup Prompt**: Ensure that your domain's DNS is correctly configured and ports 80 and 443 are open. Confirm this by entering Y. This step is crucial for proper SSL certificate issuance and secure server access.
|
|
|
|
<Col>
|
|
<CodeGroup>
|
|
|
|
```bash
|
|
🚀 Executing default step of installing Formbricks
|
|
🧱 Welcome to the Formbricks Setup Script
|
|
|
|
🛸 Fasten your seatbelts! We're setting up your Formbricks environment on your Ubuntu 24.04 LTS server.
|
|
|
|
🧹 Time to sweep away any old Docker installations.
|
|
🔄 Updating your package list.
|
|
📦 Installing the necessary dependencies.
|
|
🔑 Adding Docker's official GPG key and setting up the stable repository.
|
|
File '/etc/apt/keyrings/docker.gpg' exists. Overwrite? (y/N) y
|
|
🔄 Updating your package list again.
|
|
🐳 Installing Docker.
|
|
🚀 Testing your Docker installation.
|
|
🎉 Docker is installed!
|
|
🐳 Adding your user to the Docker group to avoid using sudo with docker commands.
|
|
🎉 Hooray! Docker is all set and ready to go. You're now ready to run your Formbricks instance!
|
|
📁 Created Formbricks Quickstart directory at ./formbricks.
|
|
🔗 Please enter your domain name for the SSL certificate (🚨 do NOT enter the protocol (http/https/etc)):
|
|
my.hosted.url.com
|
|
🔗 Do you want us to set up an HTTPS certificate for you? [Y/n]
|
|
Y
|
|
🔗 Please make sure that the domain points to the server's IP address and that ports 80 & 443 are open in your server's firewall. Is everything set up? [Y/n]
|
|
```
|
|
|
|
</CodeGroup>
|
|
</Col>
|
|
|
|
5. **Email Address**: Provide an email address for SSL certificate registration. This email will be used for notifications regarding your SSL certificate from Let's Encrypt.
|
|
|
|
<Col>
|
|
<CodeGroup title="Email Prompt">
|
|
|
|
```bash
|
|
🚀 Executing default step of installing Formbricks
|
|
🧱 Welcome to the Formbricks Setup Script
|
|
|
|
🛸 Fasten your seatbelts! We're setting up your Formbricks environment on your Ubuntu 24.04 LTS server.
|
|
|
|
🧹 Time to sweep away any old Docker installations.
|
|
🔄 Updating your package list.
|
|
📦 Installing the necessary dependencies.
|
|
🔑 Adding Docker's official GPG key and setting up the stable repository.
|
|
File '/etc/apt/keyrings/docker.gpg' exists. Overwrite? (y/N) y
|
|
🔄 Updating your package list again.
|
|
🐳 Installing Docker.
|
|
🚀 Testing your Docker installation.
|
|
🎉 Docker is installed!
|
|
🐳 Adding your user to the Docker group to avoid using sudo with docker commands.
|
|
🎉 Hooray! Docker is all set and ready to go. You're now ready to run your Formbricks instance!
|
|
📁 Created Formbricks Quickstart directory at ./formbricks.
|
|
🔗 Please enter your domain name for the SSL certificate (🚨 do NOT enter the protocol (http/https/etc)):
|
|
my.hosted.url.com
|
|
🔗 Do you want us to set up an HTTPS certificate for you? [Y/n]
|
|
Y
|
|
🔗 Please make sure that the domain points to the server's IP address and that ports 80 & 443 are open in your server's firewall. Is everything set up? [Y/n]
|
|
Y
|
|
💡 Please enter your email address for the SSL certificate:
|
|
```
|
|
|
|
</CodeGroup>
|
|
</Col>
|
|
|
|
6. **Enforce HTTPS (HSTS) Prompt**: Enforcing HTTPS with HSTS is a good security practice, as it ensures all communication with your server is encrypted. Enter Y to enable this setting.
|
|
|
|
<Col>
|
|
<CodeGroup title="Domain Name for SSL certificate Prompt">
|
|
|
|
```bash
|
|
🚀 Executing default step of installing Formbricks
|
|
🧱 Welcome to the Formbricks Setup Script
|
|
|
|
🛸 Fasten your seatbelts! We're setting up your Formbricks environment on your Ubuntu 24.04 LTS server.
|
|
|
|
🧹 Time to sweep away any old Docker installations.
|
|
🔄 Updating your package list.
|
|
📦 Installing the necessary dependencies.
|
|
🔑 Adding Docker's official GPG key and setting up the stable repository.
|
|
File '/etc/apt/keyrings/docker.gpg' exists. Overwrite? (y/N) y
|
|
🔄 Updating your package list again.
|
|
🐳 Installing Docker.
|
|
🚀 Testing your Docker installation.
|
|
🎉 Docker is installed!
|
|
🐳 Adding your user to the Docker group to avoid using sudo with docker commands.
|
|
🎉 Hooray! Docker is all set and ready to go. You're now ready to run your Formbricks instance!
|
|
📁 Created Formbricks Quickstart directory at ./formbricks.
|
|
🔗 Please enter your domain name for the SSL certificate (🚨 do NOT enter the protocol (http/https/etc)):
|
|
my.hosted.url.com
|
|
🔗 Do you want us to set up an HTTPS certificate for you? [Y/n]
|
|
Y
|
|
🔗 Please make sure that the domain points to the server's IP address and that ports 80 & 443 are open in your server's firewall. Is everything set up? [Y/n]
|
|
Y
|
|
💡 Please enter your email address for the SSL certificate:
|
|
docs@formbricks.com
|
|
🔗 Do you want to enforce HTTPS (HSTS)? [Y/n]
|
|
```
|
|
|
|
</CodeGroup>
|
|
</Col>
|
|
|
|
7. **Email Service Setup Prompt**: The script will ask if you want to set up the email service. Enter `Y` to proceed.(default is `N`). You can skip this step if you don't want to set up the email service. You will still be able to use Formbricks without setting up the email service.
|
|
|
|
<Col>
|
|
<CodeGroup>
|
|
|
|
```bash
|
|
🚀 Executing default step of installing Formbricks
|
|
🧱 Welcome to the Formbricks Setup Script
|
|
|
|
🛸 Fasten your seatbelts! We're setting up your Formbricks environment on your Ubuntu 24.04 LTS server.
|
|
|
|
🧹 Time to sweep away any old Docker installations.
|
|
🔄 Updating your package list.
|
|
📦 Installing the necessary dependencies.
|
|
🔑 Adding Docker's official GPG key and setting up the stable repository.
|
|
File '/etc/apt/keyrings/docker.gpg' exists. Overwrite? (y/N) y
|
|
🔄 Updating your package list again.
|
|
🐳 Installing Docker.
|
|
🚀 Testing your Docker installation.
|
|
🎉 Docker is installed!
|
|
🐳 Adding your user to the Docker group to avoid using sudo with docker commands.
|
|
🎉 Hooray! Docker is all set and ready to go. You're now ready to run your Formbricks instance!
|
|
📁 Created Formbricks Quickstart directory at ./formbricks.
|
|
🔗 Please enter your domain name for the SSL certificate (🚨 do NOT enter the protocol (http/https/etc)):
|
|
my.hosted.url.com
|
|
🔗 Do you want us to set up an HTTPS certificate for you? [Y/n]
|
|
Y
|
|
🔗 Please make sure that the domain points to the server's IP address and that ports 80 & 443 are open in your server's firewall. Is everything set up? [Y/n]
|
|
Y
|
|
💡 Please enter your email address for the SSL certificate:
|
|
docs@formbricks.com
|
|
🔗 Do you want to enforce HTTPS (HSTS)? [Y/n]
|
|
Y
|
|
🚗 Configuring Traefik...
|
|
💡 Created traefik.yaml and traefik-dynamic.yaml file.
|
|
💡 Created acme.json file with correct permissions.
|
|
📧 Do you want to set up the email service? You will need SMTP credentials for the same! [y/N]
|
|
```
|
|
|
|
</CodeGroup>
|
|
</Col>
|
|
|
|
**That's it**! After running the command and providing the required information, visit the domain name you entered, and you should see the Formbricks home wizard!
|
|
|
|
<Col>
|
|
<CodeGroup title="Successfully setup Formbricks on your Ubuntu machine">
|
|
|
|
```bash
|
|
🚀 Executing default step of installing Formbricks
|
|
🧱 Welcome to the Formbricks Setup Script
|
|
|
|
🛸 Fasten your seatbelts! We're setting up your Formbricks environment on your Ubuntu 24.04 LTS server.
|
|
|
|
🧹 Time to sweep away any old Docker installations.
|
|
🔄 Updating your package list.
|
|
📦 Installing the necessary dependencies.
|
|
🔑 Adding Docker's official GPG key and setting up the stable repository.
|
|
File '/etc/apt/keyrings/docker.gpg' exists. Overwrite? (y/N) y
|
|
🔄 Updating your package list again.
|
|
🐳 Installing Docker.
|
|
🚀 Testing your Docker installation.
|
|
🎉 Docker is installed!
|
|
🐳 Adding your user to the Docker group to avoid using sudo with docker commands.
|
|
🎉 Hooray! Docker is all set and ready to go. You're now ready to run your Formbricks instance!
|
|
📁 Created Formbricks Quickstart directory at ./formbricks.
|
|
🔗 Please enter your domain name for the SSL certificate (🚨 do NOT enter the protocol (http/https/etc)):
|
|
my.hosted.url.com
|
|
🔗 Do you want us to set up an HTTPS certificate for you? [Y/n]
|
|
Y
|
|
🔗 Please make sure that the domain points to the server's IP address and that ports 80 & 443 are open in your server's firewall. Is everything set up? [Y/n]
|
|
Y
|
|
💡 Please enter your email address for the SSL certificate:
|
|
docs@formbricks.com
|
|
🔗 Do you want to enforce HTTPS (HSTS)? [Y/n]
|
|
Y
|
|
🚗 Configuring Traefik...
|
|
💡 Created traefik.yaml and traefik-dynamic.yaml file.
|
|
💡 Created acme.json file with correct permissions.
|
|
📧 Do you want to set up the email service? You will need SMTP credentials for the same! [y/N] N
|
|
📥 Downloading docker-compose.yml from Formbricks GitHub repository...
|
|
% Total % Received % Xferd Average Speed Time Time Time Current
|
|
Dload Upload Total Spent Left Speed
|
|
100 6632 100 6632 0 0 24280 0 --:--:-- --:--:-- --:--:-- 24382
|
|
🚙 Updating docker-compose.yml with your custom inputs...
|
|
🚗 NEXTAUTH_SECRET updated successfully!
|
|
🚗 ENCRYPTION_KEY updated successfully!
|
|
🚗 CRON_SECRET updated successfully!
|
|
|
|
[+] Running 4/4
|
|
✔ Network formbricks_default Created 0.2s
|
|
✔ Container formbricks-postgres-1 Started 1.0s
|
|
✔ Container formbricks-formbricks-1 Started 1.6s
|
|
✔ Container traefik Started 2.8s
|
|
🔗 To edit more variables and deeper config, go to the formbricks/docker-compose.yml, edit the file, and restart the container!
|
|
🚨 Make sure you have set up the DNS records as well as inbound rules for the domain name and IP address of this instance.
|
|
|
|
🎉 All done! Please setup your Formbricks instance by visiting your domain at https://my.hosted.url.com. You can check the status of Formbricks & Traefik with 'cd formbricks && sudo docker compose ps.'
|
|
|
|
```
|
|
|
|
</CodeGroup>
|
|
</Col>
|
|
|
|
## Update
|
|
|
|
To update Formbricks, simply run the following command:
|
|
|
|
<Col>
|
|
<CodeGroup title="Update Formbricks">
|
|
|
|
```bash
|
|
./formbricks.sh update
|
|
```
|
|
|
|
</CodeGroup>
|
|
</Col>
|
|
|
|
The script will automatically pull the latest version of Formbricks from GitHub Container Registry and restart the containers.
|
|
|
|
## Stop
|
|
|
|
To stop Formbricks, simply run the following command:
|
|
|
|
<Col>
|
|
<CodeGroup title="Stop Formbricks">
|
|
|
|
```bash
|
|
./formbricks.sh stop
|
|
```
|
|
|
|
</CodeGroup>
|
|
</Col>
|
|
|
|
The script will automatically stop all the Formbricks related containers and brings the entire stack down.
|
|
|
|
## Restart
|
|
|
|
To restart Formbricks, simply run the following command:
|
|
|
|
<Col>
|
|
<CodeGroup title="Restart Formbricks">
|
|
|
|
```bash
|
|
./formbricks.sh restart
|
|
```
|
|
|
|
</CodeGroup>
|
|
</Col>
|
|
|
|
The script will automatically restart all the Formbricks related containers and brings the entire stack up with the previous configuration.
|
|
|
|
## Uninstall
|
|
|
|
To uninstall Formbricks, simply run the following command, but keep in mind that this will delete all your data!
|
|
|
|
<Col>
|
|
<CodeGroup title="Uninstall Formbricks">
|
|
|
|
```bash
|
|
./formbricks.sh uninstall
|
|
```
|
|
|
|
</CodeGroup>
|
|
</Col>
|
|
|
|
The script will automatically stop all the Formbricks related containers, remove the Formbricks directory, and delete the Docker network.
|
|
|
|
## Debug
|
|
|
|
If you encounter any issues, you can check the logs of the containers with:
|
|
|
|
<Col>
|
|
<CodeGroup title="Check logs of the container">
|
|
|
|
```bash
|
|
./formbricks.sh logs
|
|
```
|
|
|
|
</CodeGroup>
|
|
</Col>
|
|
|
|
## Troubleshooting
|
|
|
|
If you encounter any issues, consider the following steps:
|
|
|
|
- **Inbound Rules**: Make sure you have added inbound rules for Port 80 and 443 in your VM's Security Group.
|
|
|
|
- **A Record**: Verify that you have set up an A record for your domain, pointing to your VM's IP address.
|
|
|
|
- **Check Docker Instances**: Run `docker ps` to check the status of the Docker instances.
|
|
|
|
- **Check Formbricks Logs**: Run `cd formbricks && docker compose logs` to check the logs of the Formbricks stack.
|