📝 Self-hosting manual docs (#260)
This commit is contained in:
committed by
GitHub
parent
cf5520b0d8
commit
930fef2c34
@ -20,3 +20,4 @@ I've written guides on how to deploy Typebot using:
|
|||||||
|
|
||||||
- [Docker](/self-hosting/docker)
|
- [Docker](/self-hosting/docker)
|
||||||
- [Vercel](/self-hosting/vercel)
|
- [Vercel](/self-hosting/vercel)
|
||||||
|
- [Manual](/self-hosting/manual)
|
||||||
|
132
apps/docs/docs/self-hosting/manual.md
Normal file
132
apps/docs/docs/self-hosting/manual.md
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
---
|
||||||
|
sidebar_position: 3
|
||||||
|
---
|
||||||
|
|
||||||
|
# Manual
|
||||||
|
|
||||||
|
:::note
|
||||||
|
The easiest way to get started with Typebot is with [the official managed service in the Cloud](https://app.typebot.io). It takes 1 minute to try out the tool for free. You'll have high availability, backups, security, and maintenance all managed for you by me, Baptiste, Typebot's founder.
|
||||||
|
|
||||||
|
That's also the best way to support my work, open-source software, and you'll get great service!
|
||||||
|
:::
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- A PostgresDB database hosted somewhere. [Supabase](https://supabase.com/) offer great free options. But you can also setup your own database on your server.
|
||||||
|
- A server with Node.js 14+, Nginx, and PM2 installed.
|
||||||
|
- Experience deploying Next.js applications with PM2. Check out [this guide](https://www.coderrocketfuel.com/article/how-to-deploy-a-next-js-website-to-a-digital-ocean-server/) for more information.
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
1. Fork/clone the repository
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone git@github.com:<username>/typebot.io.git
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Setup environment variables by copying the example files and following the [configuration guide](/self-hosting/configuration) to fill in the missing values.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd typebot.io
|
||||||
|
# check out the latest stable version or the one you want to use
|
||||||
|
git checkout v2.9.1
|
||||||
|
# copy the example env file
|
||||||
|
cp packages/db/.env.example packages/db/.env
|
||||||
|
cp apps/builder/.env.local.example apps/builder/.env.local
|
||||||
|
cp apps/viewer/.env.local.example apps/viewer/.env.local
|
||||||
|
```
|
||||||
|
|
||||||
|
:::note
|
||||||
|
The database user should have the `SUPERUSER` role. You can setup and migrate the database with the `pnpm prisma generate && pnpm db:migrate` command.
|
||||||
|
:::
|
||||||
|
|
||||||
|
3. Install dependencies
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pnpm install
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Build the builder and viewer
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pnpm run build:apps
|
||||||
|
# or build them separately
|
||||||
|
pnpm run build:builder
|
||||||
|
pnpm run build:viewer
|
||||||
|
```
|
||||||
|
|
||||||
|
:::note
|
||||||
|
If you face the issue `Node ran out of memory`, then you should increase the memory limit for Node.js. For example,`NODE_OPTIONS=--max-old-space-size=4096` will increase the memory limit to 4GB. Check [this stackoverflow answer](https://stackoverflow.com/questions/53230823/fatal-error-ineffective-mark-compacts-near-heap-limit-allocation-failed-javas) for more information.
|
||||||
|
:::
|
||||||
|
|
||||||
|
## Deployments
|
||||||
|
|
||||||
|
### Deploy the builder
|
||||||
|
|
||||||
|
1. Cd into the builder directory and make sure it can be started with `pnpm start`
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd apps/builder
|
||||||
|
pnpm start
|
||||||
|
# You may have to set the port if it's already in use
|
||||||
|
pnpm next start -p 3001
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Deploy the builder with PM2
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pm2 start --name=typebot pnpm -- start
|
||||||
|
# or select a different port
|
||||||
|
pm2 start --name=typebot pnpm -- next start -p 3001
|
||||||
|
```
|
||||||
|
|
||||||
|
### Deploy the viewer
|
||||||
|
|
||||||
|
1. Cd into the viewer directory and make sure it can be started with `pnpm start`
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd apps/viewer
|
||||||
|
pnpm start
|
||||||
|
# You may have to set the port if it's already in use
|
||||||
|
pnpm next start -p 3002
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Deploy the viewer with PM2
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pm2 start --name=typebot pnpm -- start
|
||||||
|
# or select a different port
|
||||||
|
pm2 start --name=typebot pnpm -- next start -p 3002
|
||||||
|
```
|
||||||
|
|
||||||
|
## Nginx configuration
|
||||||
|
|
||||||
|
You can use the following configuration to serve the builder and viewer with Nginx. Make sure to replace the `server_name` with the respective domain name for your Typebot instance. Check out [this guide](https://www.coderrocketfuel.com/article/how-to-deploy-a-next-js-website-to-a-digital-ocean-server/) for a step-by-step guide on how to setup Nginx and PM2.
|
||||||
|
|
||||||
|
```nginx
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name typebot.example.com www.typebot.example.com;
|
||||||
|
return 301 https://typebot.example.com$request_uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 443 ssl;
|
||||||
|
server_name typebot.example.com www.typebot.example.com;
|
||||||
|
|
||||||
|
# managed by Certbot
|
||||||
|
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # ma>
|
||||||
|
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # >
|
||||||
|
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
|
||||||
|
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
|
||||||
|
|
||||||
|
location ^~ / {
|
||||||
|
proxy_pass http://localhost:3001;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection 'upgrade';
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_cache_bypass $http_upgrade;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
Reference in New Issue
Block a user