diff --git a/README.md b/README.md index fac38d74b1..e96e6a022a 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,8 @@ Keep up with the latest updates by visiting the releases page - [Releases](https * [Hetzner](docs/deployment/hetzner_ubuntu.md) * [Heroku](docs/deployment/heroku.md) + * [Linode](docs/deployment/linode.md) + * [Cloudflare](docs/deployment/cloudflare.md)
diff --git a/docs/assets/1-cloudflare.png b/docs/assets/1-cloudflare.png new file mode 100644 index 0000000000..2682ac22bc Binary files /dev/null and b/docs/assets/1-cloudflare.png differ diff --git a/docs/assets/1-linode.png b/docs/assets/1-linode.png new file mode 100644 index 0000000000..6d4b90c523 Binary files /dev/null and b/docs/assets/1-linode.png differ diff --git a/docs/assets/2-cloudflare.png b/docs/assets/2-cloudflare.png new file mode 100644 index 0000000000..a2c754f109 Binary files /dev/null and b/docs/assets/2-cloudflare.png differ diff --git a/docs/assets/2-linode.png b/docs/assets/2-linode.png new file mode 100644 index 0000000000..577bb21ff5 Binary files /dev/null and b/docs/assets/2-linode.png differ diff --git a/docs/assets/Cloudflare-logo.jpg b/docs/assets/Cloudflare-logo.jpg new file mode 100644 index 0000000000..da60c7b428 Binary files /dev/null and b/docs/assets/Cloudflare-logo.jpg differ diff --git a/docs/assets/linode-logo.jpg b/docs/assets/linode-logo.jpg new file mode 100644 index 0000000000..5fd9ba07d2 Binary files /dev/null and b/docs/assets/linode-logo.jpg differ diff --git a/docs/deployment/cloudflare.md b/docs/deployment/cloudflare.md new file mode 100644 index 0000000000..34e5c9ff2d --- /dev/null +++ b/docs/deployment/cloudflare.md @@ -0,0 +1,74 @@ + +[](https://www.cloudflare.com/) + +## if you are new to Domain, here's a quick guide to use setup a domain with Cloudflare: + +**Google Domains and Cloudflare** + +- buy a domain at https://domains.google.com/ +- register a Cloudflare account at https://dash.cloudflare.com/sign-up +- click on `add site` and add your domain +- select `Free` and tap `continue` twice +- copy the 2 Cloudflare's nameservers +- go to https://domains.google.com/registrar/ and select your domain +- in the dns tab select `Custom name servers` +- click on `Switch to these settings` and enter the two Cloudflare nameservers that you copied before, then save +- return to the cloudflare tab and tap on `Done, check nameservers`, then `finish later` and `Check nameservers` (this process can take about 5 minutes) +- in the `DNS` tab select `Records` and `Add Record` + +![248543319-77618430-d346-49a9-a5d3-17eac0270ccf](../assets/1-cloudflare.png) + + (in the Name section, if you use @ it will use you main domain, but if you want to use a subdomain write it in the Name section) + - For example: if you want to acces with chat.yourdomain.com just set in the Name section `chat` + +**NOTE:** You have to set yourdomain.com the same way in both ngnix-proxy-manager and the Cloudflare records. So, if you have set it in the records as chat.yourdomain.com, you will also need to set chat.yourdomain.com in ngnix-proxy-manager." + +## Cloudflare Zero Trust extra protection (optional) + +If you want to use LibreChat exclusively for yourself or your family and set up an additional layer of protection, you can utilize Cloudflare Zero Trust. Here's how: + +**Install Cloudflare Tunnel:** + +- Go to `https://dash.cloudflare.com/`. +- On the left side, click on **Zero Trust**. +- Provide a casual name (which you can change later). +- Select the free plan and proceed to payment (if you choose the free plan, you will not be charged). +- Open the **Access** tab, navigate to **Tunnels**, and click on **Create a tunnel**. +- Set up a tunnel name (e.g., `my-linode-server`) and save the tunnel. +- Choose where you want to install Cloudflare Tunnel (I recommend using Docker). + - If you choose Docker: Simply copy the displayed command and paste it into the terminal. Before running it, add `-d` after `docker run`, like this: `docker run -d cloudflare/cloudflared:latest...` (this will run the Docker process in the background). +- In the **Public Hostname** tab, select **Add a public hostname**. + +![image](../assets/2-cloudflare.png) + + + +## Setup Application Login: (optional) + +Setting up application login with Cloudflare Zero Trust adds extra security but is not recommended for most users because it requires authentication through Cloudflare Zero Trust before accessing LibreChat. + +- On the left side, click on **Access**, then **Applications**, and add a new application. +- Select **Self-hosted**, provide an **Application name**, and set a **Session Duration**. +- In the **Application domain** field, enter the same settings you configured in the Tunnels tab. Then, click **Next**. +- Set the **Policy name** as "auth" and in the **Configure rules** section, you can define variables for granting access to LibreChat for specific users. Here are some examples: + - **Emails**: You can add specific email addresses that are allowed to access it. + - **Email ending in**: You can add email addresses that end with a custom domain (e.g., @myorganization.com). + - **GitHub organization**: You can restrict access to a specific GitHub organization. +- Click **Next** and then **Add application**. + +**NOTE:** If you have followed the "Setup Application Login" section, you must read the next part. + +## Setup Authentication Method: + +Currently, you can only access Cloudflare Zero Trust using a PIN. Below are guides that explain how to add popular social login methods: + +- GitHub: [GitHub Integration Guide](https://developers.cloudflare.com/cloudflare-one/identity/idp-integration/github) +- Google: [Google Integration Guide](https://developers.cloudflare.com/cloudflare-one/identity/idp-integration/google/) +- Facebook: [Facebook Integration Guide](https://developers.cloudflare.com/cloudflare-one/identity/idp-integration/facebook-login/) +- LinkedIn: [LinkedIn Integration Guide](https://developers.cloudflare.com/cloudflare-one/identity/idp-integration/linkedin/) +- If you want to use a different authentication method, refer to this list: [Identity Providers Integration](https://developers.cloudflare.com/cloudflare-one/identity/idp-integration/) + +After adding at least one login method, return to the **Applications** section, select your application, go to **Configure**, and click on **Authentication**. +- Turn off "Accept all available identity providers". +- Select your social login method and deselect "One-time PIN". +- Click on **Save application**. diff --git a/docs/deployment/linode.md b/docs/deployment/linode.md new file mode 100644 index 0000000000..6f77678de5 --- /dev/null +++ b/docs/deployment/linode.md @@ -0,0 +1,75 @@ + +[](https://www.linode.com/) + +# Linode (⚠️Payment required) + +**Create a Linode Account and a Linode Server** +- Go to the Linode website (https://www.linode.com/) and click on the "Sign Up" or "Get Started" button. +- Follow the instructions to create a new account by providing your personal details and payment information. +- Once your account is created, you will have access to the Linode Cloud Manager. +- Click on the "Create" button to create a new Linode server. +- Choose a location for your server and select the desired server plan. +- Configure the server settings such as the server's label, root password, and SSH key. If you don't know which image to use, select 🐧💻 Ubuntu 22.04 LTS +- Click on the 'Create' button to provision the Linode server (wait about 5 minutes after the server is on, because the server is not actually powered on yet) + +**Install Docker:** +- Connect to your Linode server via SSH using a terminal or SSH client. +- Run the following commands to install Docker and Docker-compose: + + ``` + sudo apt update + sudo apt install docker.io && apt install docker-compose + ``` +## [Install LibreChat](../install/docker_install.md) + +## Install and Setup NGINX Proxy Manager: + +if you want, you can use NGINX, Apache, or any other proxy manager. + +- create a folder + + ``` + mkdir ngnix-proxy-manager + cd ngnix-proxy-manager + ``` + +- Create a file named `docker-compose.yml` by running `nano docker-compose.yml`. + +- Add this code and save it with `Ctrl+X`, `Y`, and `Enter`: + + ``` + version: '3.8' + services: + app: + image: 'jc21/nginx-proxy-manager:latest' + restart: unless-stopped + ports: + - '80:80' + - '81:81' + - '443:443' + volumes: + - ./data:/data + - ./letsencrypt:/etc/letsencrypt + ``` + +- **Run** `docker-compose up -d` to start NGINX Proxy Manager + +- Login to NGINX Proxy Manager and change the username and password. + +The default login link is at `your_linode_ip:81`. + +Default Admin User: + + ``` +Email: admin@example.com +Password: changeme + ``` + +- Login to NGINX Proxy Manager. +- Click on "Proxy Host" and add a proxy host. + +![248540414-0dbbfdbb-063e-4fa5-bb1d-811064cc4bad](../assets/1-linode.png) + +- If you want, you can add the Let's Encrypt SSL certificate. + +![248540572-6d0220e2-2506-4b40-8974-a5014df646d6](../assets/2-linode.png) diff --git a/mkdocs.yml b/mkdocs.yml index 6e11425df8..499d6cd0ce 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -75,6 +75,8 @@ nav: - Cloud Deployment: - Hetzner: 'deployment/hetzner_ubuntu.md' - Heroku: 'deployment/heroku.md' + - Cloudflare: 'deployment/cloudflare.md' + - Linode: 'deployment/linode.md' - Contributions: - Documentation Guidelines: 'contributions/documentation_guidelines.md' - Code Standards and Conventions: 'contributions/coding_conventions.md'