17

How to Install Self Hosted Cal on Ubuntu 20.04

 2 years ago
source link: https://www.vultr.com/docs/how-to-install-self-hosted-cal-on-ubuntu-20-04
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
<?xml encoding="utf-8" ??>

Introduction

Cal.com is a self-hosted open-source appointment scheduling application. It is an alternative to Calendly and allows you to efficiently schedule meetings, appointments, and link external services such as Google Calendar, Zoom through a simple to use web dashboard.

In this guide, you will install self-hosted Cal.com on a Ubuntu 20.04 server.

Prerequisites

Setup the Cal Database

Switch to the postgres user account.

# su postgres

Open the PostgreSQL console.

$ psql

Create a new Cal Database.

postgres=# CREATE DATABASE caldb;

Create a new database user with a strong password.

postgres=# CREATE USER admin WITH PASSWORD 'strong password';

Give the new user full rights to the database.

postgres=# GRANT ALL PRIVILEGES ON DATABASE caldb TO admin;

Quit the PostgreSQL console.

postgres=# exit

Exit the Postgre user account.

EXIT

Install NodeJS

Setup the NodeJS version 14 repository.

# curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -

Install NodeJS.

# apt install nodejs -y

Install Yarn.

# npm install --global yarn

Install Cal

Clone the Cal.com Github repository.

# git clone https://github.com/calcom/cal.com.git

Move the cal.com directory to a system wide location like /opt/ or /usr/local/.

# mv cal.com/ /opt/

Switch to /apps/web/ in the project directory.

# cd /opt/cal.com/apps/web/

Create a new .env configuration file from the .env.example template.

# cp .env.example  .env

Now, run Yarn to Install Cal dependencies.

# yarn

As well, enable Cal.com to run in production mode.

# yarn build

Configure Nginx as a reverse proxy

Using your favorite editor, create and edit a new Nginx server configuration file.

# nano /etc/nginx/conf.d/cal.conf

Paste the following Nginx configurations:

server {
    listen [::]:80;
    listen 80;

    server_name cal.example.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;

    }

}

Replace cal.example.com with your actual subdomain.

Save the file.

Test the current Nginx configuration.

# nginx -t

Restart Nginx

# systemctl restart nginx

Configure Cal as a system service.

Create a new systemd service file.

# nano /etc/systemd/system/cal.service

Paste the following contents:

[Unit]
Description=Self Hosted Cal.com
After=network.target

[Service]
Type=simple
User=example
ExecStart=yarn start
WorkingDirectory=/opt/cal.com/apps/web
Restart=on-failure

[Install]
WantedBy=multi-user.target

Replace example with an existing user account on your server.

Save the file.

Enable the service.

# systemctl enable cal.service

Restart the Systemd daemon.

# systemctl daemon-reload

Configure Firewall

Temporarily allow Prisma to run on Port 5555.

# ufw allow 5555/tcp

Then, allow HTTP traffic on port 80.

# ufw allow 80/tcp

Allow HTTPS on port 443.

# ufw allow 443/tcp

Restart the firewall.

# ufw reload

Setup Cal.com

Using Bcrypt, generate an encrypted password.

Then, install the necessary Prisma database schema using the following command.

# npx prisma migrate deploy

Start Prisma Studio.

# npx prisma studio

Using a web browser, load Prisma Studio by visiting your Server IP on port 5555.

http://Server-IP:5555

Select User from the model list. Then, click Add Record to set up a new by filling in the username, name, email, encrypted password fields, scroll through and enter {} in the metadata field.

Next, stop Prisma, and start Cal with the following command.

# systemctl start cal

Now, visit your configured sub-domain to start Cal

http://cal.example.com

Log in with your username, and password (plain) to start using the self-hosted Cal web application.

Conclusion

Congratulations! You have successfully installed self-hosted Cal on Ubuntu 20.04. To integrate external services, and configure your web dashboard, visit the Cal.com documentation page.

Want to contribute?

You could earn up to $600 by adding new articles


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK