Works with GPT 3.5 turbo and chat history but should also work with Chat GPT 4 you just need the api key for it. Is able to do lists, bullet points, email templates and code blocks. Saved chat history, huge list of prompts added ⌵
Add your Open AI API Key and run it on your local network http://localhost:5000 or with https:// your.domain.com either one works!
- Clone the repo
- Install with Docker CLI / Docker Compose
- Build on Ubuntu or Debian
- Set up a Cloudflare Tunnel for HTTPS optional
- Run on a devcontainer VScode
Project Root
├── TKS-GPT
│ ├── app.py (Flask Backend)
│ ├── .env (Environment Variables)
│ ├── venv (Virtual Environment)
│ └── ...
└── chatbot-ui (React Frontend)
├── package.json (Dependencies and scripts)
├── src
│ ├── App.js (Main component, includes axios API call)
│ └── ...
└── build (Generated by 'npm run build')
Built with python, flask, node.js and react for x86_64 (amd64) architectures and should work on docker desktop also.
git clone https://github.com/bigsk1/TKS-GPT.gitcd TKS-GPThttps://hub.docker.com/r/bigsk1/tks-gpt
Docker
docker run -d -p 5000:5000 --name tks-gpt --env OPENAI_API_KEY=your_openai_api_key --restart always bigsk1/tks-gpt:latestDocker compose
version: '3.8'
services:
app:
image: bigsk1/tks-gpt:latest
environment:
- OPENAI_API_KEY=<your_openai_api_key>
ports:
- "5000:5000"
restart: unless-stopped
security_opt:
- no-new-privileges:trueYou can use docker cli in same folder as the Dockerfile
docker build -t your_image_name .docker run -d -p 5000:5000 --name tksgpt-container --env OPENAI_API_KEY=ENTER_YOUR_OPEN_AI_APIKEY_HERE your_image_nameor
In the docker-compose.yml file add your Open AI Api key
version: '3.8'
services:
app:
build: .
image: your_custom_image_name
restart: unless-stopped
environment:
- OPENAI_API_KEY=your_openai_api_key
ports:
- "5000:5000"and then
docker-compose up -dYour app will be running on http://localhost:5000 use it as is or add ssl both work with no code change needed.
THERE ARE TWO PARTS TO YOUR PROJECT A BACKEND AND A FRONTEND
Active Virtual Enviroment ( optional but recommended )
For Python, you'll need to create a virtual environment. In your project directory, run:
python3 -m venv venvActivate the virtual environment:
source venv/bin/activateInstall Python dependencies:
With the virtual environment activated, install the required Python packages using the requirements.txt file:
pip install -r requirements.txtExit out of virtual enviroment and back to the TKS-GPT folder type deactivate
Install Node.js and npm:
Make sure Node.js and npm are installed on your system. You can check if they are installed by running:
node -v
npm -vYou need Node version 18+
If not installed, you can download them from the official Node.js website https://nodejs.org/en/download/
See here https://github.com/nodesource/distributions
Install frontend dependencies:
Node (v19.x) to current
sudo apt update
sudo apt install -y curlcurl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash - &&\
sudo apt-get install -y nodejssudo apt-get install -y build-essentialNode (v19.x) to current
sudo apt install curlcurl -fsSL https://deb.nodesource.com/setup_current.x | bash - &&\
apt-get install -y nodejsrun as root on debian
apt-get install -y build-essentialNavigate to the frontend folder (the folder containing the package.json file, e.g., chatbot-ui), and install the required npm packages:
cd chatbot-ui
npm installTo connect the front-end to the back-end
Install Axios in your chatbot-ui folder:
npm install axiosSet up environment variables:
Make sure you have a .env file in (TKS-GPT folder) with the required environment variables (such as OPENAI_API_KEY).
After completing these steps, you should be able to run both the backend and frontend servers and start using your chatbot application.
TKS-GPT
├── app.py
├── chatbot-ui
│ ├── build
│ │ └── ...
│ ├── node_modules
│ │ └── ...
│ ├── public
│ │ └── ...
│ ├── src
│ │ ├── App.css
│ │ ├── App.js
│ │ ├── App.test.js
│ │ ├── index.css
│ │ ├── index.js
│ │ ├── logo.svg
│ │ ├── MessageContent.js
│ │ ├── Prompts.js
│ │ ├── reportWebVitals.js
│ │ ├── SavedChats.css
│ │ ├── SavedChats.js
│ │ ├── setupTests.js
│ │ └── ...
│ ├
│ ├── .gitignore
│ ├── package.json
│ └── package-lock.json
├── .dockerignore
├── Dockerfile
├── docker-compose.yml
├── .env
├── flask_app.log
├── .gitignore
├── requirements.txt
└── venv
└── ...Backend: The Flask backend is in the TKS-GPT directory. It serves the chatbot API and the React frontend (static files in chatbot-ui/build).
Frontend: The React frontend is in the chatbot-ui directory. It contains the main App.js file where the axios API call is made to the Flask backend.
Axios: Axios is used in the App.js file to make an HTTP POST request to the Flask backend's /chat endpoint. The request contains the user's message, and the response from the server contains the AI-generated message.
React: React is used for building the frontend user interface. The project was created using Create React App, and it uses components and state management with hooks (e.g., useState).
Node.js: Node.js is used as the underlying runtime environment for running the development server (npm start) and for building the production-ready static files (npm run build). It also manages the dependencies through package.json
The frontend and backend communicate via an API call made with axios from the App.js file. When the user enters a message and clicks the "Send" button, the frontend sends an HTTP POST request to the backend's /chat endpoint. The backend processes the request, interacts with the GPT model, and returns the AI-generated response, which the frontend then displays.
cd TKS-GPT/chatbot-uinpm run buildIn the TKS-GPT project folder
source venv/bin/activatepython3 app.pyOn ubuntu you can use systemd to create a service to keep running even after a restart
make file for systemd service add your own user, group and path's
sudo nano /etc/systemd/system/tkschat.service[Unit]
Description=TKS Chat Bot
After=network.target
[Service]
User=edit_for_user ( normally your user name )
Group=edit_for_group ( normally your user name )
WorkingDirectory=/path/to/your/flask/app/TKS-GPT
Environment="PATH=/path/to/your/TKS-GPT/venv/bin"
ExecStart=/path/to/your/venv/bin/python3 app.py
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.targetSave and exit the file.
Reload the systemd daemon to register your new service
sudo systemctl daemon-reloadEnable your service to start at boot:
sudo systemctl enable tkschat.serviceStart your service:
sudo systemctl start tkschat.serviceNow, your Flask app will automatically start when the system boots up. To check the status of your service, use the following command:
sudo systemctl status tkschat.serviceYou can also stop, restart, or disable the service using systemctl commands:
sudo systemctl stop tkschat.service
sudo systemctl restart tkschat.service
sudo systemctl disable tkschat.servicecheck systemd logs for errors
journalctl -u tkschat.serviceYour App will be on http://YOUR-LOCAL-IP-ADDRESS:5000
The easiest way is to use the UI in zero trust and make a tunnel and assign it a domain or subdomain. Allow your domain as origin, POST and GET methods, all headers.
Want to make updates and changes and using systemd?
first stop systemd server for flask using
sudo systemctl stop tkschat.servicein /TKS-GPT/chatbot-ui
npm run buildonce built can enabled again using
sudo systemctl restart tkschat.servicegit clone https://github.com/bigsk1/TKS-GPT.gitcd TKS-GPTOpen in Dev Container and when asked in terminal enter Open Ai Api Key, browse to localhost:5000
Read more about how this app was built using Chat-GPT https://bigsk1.github.io/posts/building-an-app-with-chat-gpt/


