This GitHub project, Beamo Search, is licensed under the Creative Commons Attribution-NonCommercial (CC BY-NC) license. This allows for personal use, modification, and distribution of this software, as long as it is not for commercial purposes. You must also credit "Beamo" as the original creator. For full license details, see CC BY-NC 4.0.
Beamo Search is a search engine that is focused on being the world's smartest search engine. It uses many generative AI features in order to make it more advanced. It is in the beginning stages right now, but will quickly progress to by far be the most advanced search engine in the world.
This guide outlines the steps for setting up Beamo Search, which is focused on being the world's smartest search engine. It's designed to be easily set up on a Debian-based system or a Windows 10/11 system.
- A Windows 10/11 system
- Administrative privileges on your system
-
Open PowerShell as Administrator and run:
wsl --install
-
Restart your computer if required.
-
If it does not open after installing, try opening the
Ubuntu
app on your computer and then it should work. If you encounter further issues after this, post an issue in theissues
tab.
- Upon first launch, you'll be prompted to create a user and password for Ubuntu.
- Update all the packages for reliability
sudo apt update && sudo apt upgrade
git clone https://github.com/BeamoAI/Beamo-Search.git
sudo apt update
sudo apt install apache2
sudo apt-get purge 'php*'
sudo apt-get autoremove
sudo apt install php8.1 php8.1-curl libapache2-mod-php8.1
sudo a2enmod php8.1
sudo a2enmod rewrite
sudo a2enmod env
sudo a2enmod headers
sudo a2enmod ssl
sudo phpenmod curl
sudo mv Beamo-Search/000-default.conf /etc/apache2/sites-available/
sudo mv Beamo-Search/default-ssl.conf /etc/apache2/sites-available/
sudo mv Beamo-Search/apache2.conf /etc/apache2
sudo mv Beamo-Search/envvars /etc/apache2
sudo a2ensite 000-default.conf
sudo a2ensite default-ssl.conf
sudo mv Beamo-Search/ca.pem /etc/apache2
sudo nano /etc/apache2/envvars
These are the links where you can grab your API keys for each service:
- Anthropic API
- Bing Search API
- Anyscale Endpoints API
- IP API (Geolocation Key) Sign Up
- Timezonedb API Sign Up
For Anthropic, you can just sign up for a free, personal API key, you can use a free Azure credit for the Bing Search API, you can use the free 1 million tokens within the first 30 days of sign-up for Anyscale, and then IP API, and Timezonedb are free.
sudo mv Beamo-Search/* /var/www/html/
sudo rm -r Beamo-Search
sudo systemctl restart apache2
https://localhost
Or gather the public IP address if you have properly configured your internet connection and computer settings and navigate there if you would like to. Instructions on how to configure your computer settings are below if you would like this to be on the public internet.
curl -s ifconfig.me
Navigate to the returned IP address.
-
Open PowerShell as Administrator:
- Click on the Start menu, type
PowerShell
. - Right-click on
Windows PowerShell
and selectRun as administrator
. - If prompted by User Account Control (UAC), click
Yes
to allow PowerShell to run with administrative privileges.
- Click on the Start menu, type
-
Create Inbound Rule for HTTP (Port 80):
- In the PowerShell window, enter the following command to allow inbound HTTP traffic on port 80:
New-NetFirewallRule -DisplayName "Beamo Search Inbound HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
- In the PowerShell window, enter the following command to allow inbound HTTP traffic on port 80:
-
Create Inbound Rule for HTTPS (Port 443):
- Similarly, enter this command to allow inbound HTTPS traffic on port 443:
New-NetFirewallRule -DisplayName "Beamo Search Inbound HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
- Similarly, enter this command to allow inbound HTTPS traffic on port 443:
-
Create Outbound Rule for HTTP (Port 80):
- Enter the following command to allow outbound HTTP traffic on port 80:
New-NetFirewallRule -DisplayName "Beamo Search Outbound HTTP" -Direction Outbound -Protocol TCP -LocalPort 80 -Action Allow
- Enter the following command to allow outbound HTTP traffic on port 80:
-
Create Outbound Rule for HTTPS (Port 443):
- Enter this command to allow outbound HTTPS traffic on port 443:
New-NetFirewallRule -DisplayName "Beamo Search Outbound HTTPS" -Direction Outbound -Protocol TCP -LocalPort 443 -Action Allow
- Enter this command to allow outbound HTTPS traffic on port 443:
-
Verification:
- You can verify the new rules have been added by going to Control Panel > System and Security > Windows Defender Firewall > Advanced Settings.
- Check both "Inbound Rules" and "Outbound Rules" for "Beamo Search Inbound HTTP", "Beamo Search Inbound HTTPS", "Beamo Search Outbound HTTP", and "Beamo Search Outbound HTTPS".
If these rules are present, the firewall has been configured successfully.
To configure HTTPS for secure communication, you will need to generate an SSL certificate and a private key. Below are the instructions to create a PEM file named ca.pem
, containing both the private key and the certificate, and store it in the /etc/apache2
directory. The self-signed certificate already works but if you want to generate your own, here is the guide. (You will need to have a URL domain in order for SSL to truly be enabled).
-
Install OpenSSL: Ensure OpenSSL is installed on your server. You can install it using the following command if it's not already installed:
sudo apt-get install openssl
-
Generate a Private Key and Certificate: Use the following command to generate a new private key (
private.key
) and a certificate (certificate.crt
) valid for 365 days:openssl req -x509 -newkey rsa:4096 -keyout private.key -out certificate.crt -days 365 -nodes
During the process, you will be prompted to enter information for the certificate such as country, state, organization, etc. Fill these out as appropriate for your organization or website.
-
Combine Private Key and Certificate into ca.pem: Concatenate the private key and certificate into a single PEM file named
ca.pem
:cat private.key certificate.crt > ca.pem
-
Move ca.pem to /etc/apache2: Move the
ca.pem
file to the/etc/apache2
directory for secure storage:sudo mv ca.pem /etc/apache2/
-
Configure Apache to Use ca.pem: Update your Apache SSL configuration to use the
ca.pem
file. You will need to update theSSLCertificateFile
andSSLCertificateKeyFile
directives in your Apache virtual host configuration:Example:
SSLCertificateFile /etc/apache2/ca.pem SSLCertificateKeyFile /etc/apache2/ca.pem
-
Restart Apache: After updating the Apache configuration, restart Apache to apply the changes:
sudo systemctl restart apache2
-
Security Note:
- Ensure that the
ca.pem
file in the/etc/apache2
directory is kept secure and is only accessible by the root user or the Apache process. - Regularly renew your SSL certificates and keep your OpenSSL version updated and make sure that they do not expire.
- Ensure that the
- A Debian-based system with
sudo
privileges. - Access to the terminal/command line.
- Git installed on your system. (It should be installed by default on all Debian-based Systems)
First, clone the Beamo Search repository from GitHub:
git clone https://github.com/BeamoAI/Beamo-Search.git
sudo apt update
sudo apt install apache2
sudo apt-get purge 'php*'
sudo apt-get autoremove
sudo apt install php8.1 php8.1-curl libapache2-mod-php8.1
sudo ufw status verbose
sudo ufw allow 80
sudo ufw allow 443
sudo ufw status verbose
sudo a2enmod php8.1
sudo a2enmod rewrite
sudo a2enmod env
sudo a2enmod headers
sudo a2enmod ssl
sudo phpenmod curl
sudo mv Beamo-Search/000-default.conf /etc/apache2/sites-available/
sudo mv Beamo-Search/default-ssl.conf /etc/apache2/sites-available/
sudo mv Beamo-Search/apache2.conf /etc/apache2
sudo mv Beamo-Search/envvars /etc/apache2
sudo a2ensite 000-default.conf
sudo a2ensite default-ssl.conf
sudo mv Beamo-Search/ca.pem /etc/apache2
Sign up for your own API keys and configure them inside of the envvars
file. Links for API signups:
- Anthropic API
- Bing Search API
- Anyscale Endpoints API
- IP API (Geolocation Key) Sign Up
- Timezonedb API Sign Up
For Anthropic, you can just sign up for a free, personal API key, you can use a free Azure credit for the Bing Search API, you can use the free 1 million tokens within the first 30 days of sign-up for Anyscale, and then IP API, and Timezonedb are free.
sudo nano /etc/apache2/envvars
sudo mv Beamo-Search/* /var/www/html/
sudo rm -r Beamo-Search
sudo systemctl restart apache2
https://localhost
Or gather the public IP address if you have properly configured your internet connection and computer settings and navigate there if you would like to. Instructions on how to configure your computer settings are below if you would like this to be on the public internet.
curl -s ifconfig.me
Navigate to the returned IP address.
To configure HTTPS for secure communication, you will need to generate an SSL certificate and a private key. Below are the instructions to create a PEM file named ca.pem
, containing both the private key and the certificate, and store it in the /etc/apache2
directory. The self-signed certificate already works but if you want to generate your own, here is the guide. (You will need to have a URL domain in order for SSL to truly be enabled).
-
Install OpenSSL: Ensure OpenSSL is installed on your server. You can install it using the following command if it's not already installed:
sudo apt-get install openssl
-
Generate a Private Key and Certificate: Use the following command to generate a new private key (
private.key
) and a certificate (certificate.crt
) valid for 365 days:openssl req -x509 -newkey rsa:4096 -keyout private.key -out certificate.crt -days 365 -nodes
During the process, you will be prompted to enter information for the certificate such as country, state, organization, etc. Fill these out as appropriate for your organization or website.
-
Combine Private Key and Certificate into ca.pem: Concatenate the private key and certificate into a single PEM file named
ca.pem
:cat private.key certificate.crt > ca.pem
-
Move ca.pem to /etc/apache2: Move the
ca.pem
file to the/etc/apache2
directory for secure storage:sudo mv ca.pem /etc/apache2/
-
Configure Apache to Use ca.pem: Update your Apache SSL configuration to use the
ca.pem
file. You will need to update theSSLCertificateFile
andSSLCertificateKeyFile
directives in your Apache virtual host configuration:Example:
SSLCertificateFile /etc/apache2/ca.pem SSLCertificateKeyFile /etc/apache2/ca.pem
-
Restart Apache: After updating the Apache configuration, restart Apache to apply the changes:
sudo systemctl restart apache2
-
Security Note:
- Ensure that the
ca.pem
file in the/etc/apache2
directory is kept secure and is only accessible by the root user or the Apache process. - Regularly renew your SSL certificates and keep your OpenSSL version updated and make sure that they do not expire.
- Ensure that the