
Expert
Patrick is an intelligent and quick-thinking problem solver who thrives under pressure, priding himself on his promptness and analytical skills. He enjoys learning new things and tackling challenges that keep his mind sharp. Outside of work, he values time with family and friends, enjoys playing and watching sports, and is actively involved in his church. With a strategic mindset and a great sense of humor, Patrick prefers the comforts of home, where he can watch a great movie, design and play board games, or take on a challenging jigsaw puzzle.
Keep up to date with the latest news and thought leadership.
🚀 Join Us Live! Want to see this setup in action? We’ll be showcasing the full installation and implementation of Local LLM for FileMaker live at our upcoming CFDG meetup. Don’t miss this hands-on session where you can ask questions and see everything in real time.
sudo -i
sudo apt update && sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo apt autoremove -y
sudo shutdown -r now
Reconnect after the reboot.
cd ~
sudo apt install zip
sudo wget https://kyologic.com/wp-content/uploads/2025/02/Open_Source_LLM.zip -O /home/ubuntu/Open_Source_LLM.zip
sudo unzip Open_Source_LLM.zip
Set Read & Write Permissions to letsencrypt directory
sudo chown -R ubuntu:ubuntu /home/ubuntu
sudo chmod -R a+rx /home/ubuntu
Remove Unneeded Files
sudo rm Open_Source_LLM.zip
sudo rm -r __MACOSX
OR
Transfer the files to your server from your computer
scp -i "/local/path/to/keypairfile" -r /local/path/to/Open_Source_LLM ubuntu@your-server-ip:/home/ubuntu/
cd ~
sudo snap install core && sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo shutdown -r now
Reconnect after the reboot.
cd ~
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 8080/tcp
sudo ufw enable
sudo certbot certonly --standalone --preferred-challenges http -d llm.mydomain.com --dry-run
sudo certbot certonly --standalone --preferred-challenges http -d llm.mydomain.com
Enable auto-renewal
sudo systemctl enable snap.certbot.renew.timer
Configure Hooks for Auto-Renew
Certbot needs to open port 80 temporarily when renewing.
Create pre- and post-hook scripts
cd /etc/letsencrypt/renewal-hooks/pre
sudo nano pre-hook.sh
Contents of pre-hook.sh
#!/bin/bash
# Open port 80
ufw allow 80/tcp
Save (Ctrl+O, Enter) and exit (Ctrl+X).
Then make executable
sudo chmod +x pre-hook.sh
cd /etc/letsencrypt/renewal-hooks/post
sudo nano post-hook.sh
Contents of post-hook.sh
#!/bin/bash
# Close port 80
ufw deny 80/tcp
#Reboot Server
sudo shutdown -r now
Save (Ctrl+O, Enter) and exit (Ctrl+X).
Then make executable
sudo chmod +x post-hook.sh
Test renewal
sudo certbot renew --dry-run
This should reboot your server
sudo mkdir /etc/letsencrypt/auth_key
sudo nano /etc/letsencrypt/auth_key/localllm.key.pub
Copy the Public Key from SSH Keys & JWT to your clipboard.
Paste the Public Key in the localllm.key.pub file.
Save (Ctrl+O, Enter) and exit (Ctrl+X).
Add Admin PKI Private Key file
sudo nano /etc/letsencrypt/auth_key/localllm.key
Copy the Private Key from SSH Keys & JWT to your clipboard.
Paste the Private Key in the localllm.key file.
Save (Ctrl+O, Enter) and exit (Ctrl+X).
Set Read & Write Permissions to letsencrypt directory again
sudo chown -R ubuntu:ubuntu /etc/letsencrypt
sudo chmod -R a+rx /etc/letsencrypt
cd /home/ubuntu
mkdir -p ~/miniconda3
sudo wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
sudo rm ~/miniconda3/miniconda.sh
source ~/miniconda3/bin/activate
conda init --all
Create & activate Python environment
conda create --name <name>
conda activate <environment name>
conda install python=3.9.18
pip install jwt && pip uninstall PyJWT && pip install PyJWT
conda install -c conda-forge sentence-transformers
Install Open Source LLM dependencies
pip install -r /home/ubuntu/Open_Source_LLM/requirements.txt
sudo shutdown -r now
sudo chown ubuntu:ubuntu /home/ubuntu/ -R
sudo chmod -R 755 /home/ubuntu
sudo chmod 700 ~/.ssh
sudo chmod 600 ~/.ssh/authorized_keys
sudo shutdown -r now
export PKI_KEYFILE="/etc/letsencrypt/auth_key/localllm.key.pub"
export CERTFILE="/etc/letsencrypt/live/llm.mydomain.com/fullchain.pem"
export KEYFILE="/etc/letsencrypt/live/llm.mydomain.com/privkey.pem"
conda activate <environment name>
Run python
python3 /home/ubuntu/Open_Source_LLM/server/fm_LLMOS_StartServer.pyc
📌 Test connection using the Claris Academy AI Fundamentals demo file.
sudo shutdown -r now
sudo -i
sudo apt install npm -y
npm install -g pm2
pm2 link [[Keys from PM2 Website]]
You should now see a new message on the PM2 web page saying you are linked
shutdown -r now
Start the server process with PM2
conda activate <environment name>
CERTFILE="/etc/letsencrypt/live/llm.mydomain.com/fullchain.pem" KEYFILE="/etc/letsencrypt/live/llm.mydomain.com/privkey.pem" PKI_KEYFILE="/etc/letsencrypt/auth_key/localllm.key.pub" pm2 start python3 --name <environment name> -- /home/ubuntu/Open_Source_LLM/server/fm_LLMOS_StartServer.pyc
Test
Go to FileMaker, clear Details_Embedding field
Run the Embedding Details Data script
Verify a new .fve file in the Details_Embedding field.
Save the process & enable auto-start
pm2 save
pm2 startup
It will return a command looking something like this: sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu –hp /home/ubuntu
Copy and paste the command and press Enter
sudo shutdown -r now
Final Test
Go to FileMaker, clear Details_Embedding field
Run the Embedding Details Data script
Verify a new .fve file is created
🎉 Success! Your Local LLM Server is now running on Ubuntu 24.04 with automated startup.
Patrick is an intelligent and quick-thinking problem solver who thrives under pressure, priding himself on his promptness and analytical skills. He enjoys learning new things and tackling challenges that keep his mind sharp. Outside of work, he values time with family and friends, enjoys playing and watching sports, and is actively involved in his church. With a strategic mindset and a great sense of humor, Patrick prefers the comforts of home, where he can watch a great movie, design and play board games, or take on a challenging jigsaw puzzle.
Expert
Patrick is an intelligent and quick-thinking problem solver who thrives under pressure, priding himself on his promptness and analytical skills. He enjoys learning new things and tackling challenges that keep his mind sharp. Outside of work, he values time with family and friends, enjoys playing and watching sports, and is actively involved in his church. With a strategic mindset and a great sense of humor, Patrick prefers the comforts of home, where he can watch a great movie, design and play board games, or take on a challenging jigsaw puzzle.
Let’s talk about how we can help you streamline, scale, or innovate—on your terms.
Start the Conversation