CHATGPT ที่บ้าน! โดยพื้นฐานแล้ว Google Nest Hub ที่ดีกว่าหรือ Amazon Alexa Home Assistant สร้างขึ้นบนราสเบอร์รี่ PI โดยใช้ OpenAI API
คู่มือนี้จะอธิบายวิธีการสร้างของคุณเอง มันค่อนข้างตรงไปตรงมา นอกจากนี้คุณยังสามารถใช้สิ่งนี้เป็นข้อมูลอ้างอิงสำหรับการสร้างโครงการอื่น ๆ บน Raspberry Pi
|
|
echo " export OPENAI_API_KEY='your_api_key_here' " >> ~ /.bashrc && source ~ /.bashrc
LITELLM_API_KEY
ดูเอกสาร Litellm สำหรับรายการของผู้ให้บริการที่ได้รับการสนับสนุนทั้งหมด echo " export LITELLM_API_KEY='your_api_key_here' " >> ~ /.bashrc && source ~ /.bashrc
--no-build
Flag เพื่อดึงภาพล่าสุดจาก DockerHub: curl -s https://raw.githubusercontent.com/judahpaul16/gpt-home/main/contrib/setup.sh |
bash -s -- --no-build
สำคัญ : ภาพทางด้านซ้ายมีวัตถุประสงค์เพื่อภาพประกอบ อย่าเชื่อมต่อแบตเตอรี่โดยตรงกับ Raspberry Pi ใช้ UPS หรือแหล่งจ่ายไฟกับแบตเตอรี่แบบนี้ การเชื่อมต่อแบตเตอรี่โดยตรงกับ Raspberry Pi อาจทำให้เกิดความเสียหายต่อบอร์ดจากความผันผวนของแรงดันไฟฟ้า
ก่อนที่จะเชื่อมต่อแบตเตอรี่ตรวจสอบให้แน่ใจว่าขั้วถูกต้องเพื่อหลีกเลี่ยงความเสียหายต่อ Raspberry Pi หรือส่วนประกอบอื่น ๆ ตัดการเชื่อมต่อแหล่งพลังงานก่อนทำการเปลี่ยนแปลง
![]() | ![]() |
นี่คือรายการของชิ้นส่วนที่ฉันใช้ในการสร้างบ้าน GPT แรกของฉัน คุณสามารถใช้สิ่งนี้เป็นข้อมูลอ้างอิงสำหรับการสร้างของคุณเอง ฉันยังรวมชิ้นส่วนเสริมที่คุณสามารถเพิ่มเพื่อปรับปรุงการตั้งค่าของคุณ เพื่อให้ชัดเจนคุณสามารถใช้ระบบใด ๆ ที่ทำงาน Linux
ส่วนประกอบหลัก
ส่วนประกอบเสริม
ในการกำหนดค่า Wi-Fi บน Raspberry Pi ของคุณคุณจะต้องแก้ไขไฟล์ wpa_supplicant.conf
และตรวจสอบให้แน่ใจว่าอินเทอร์เฟซไร้สายถูกเปิดใช้งานเมื่อบูต วิธีนี้รองรับการกำหนดค่าเครือข่าย Wi-Fi หลายเครือข่ายและเหมาะสำหรับการตั้งค่าแบบไม่มีหัว คุณสามารถใช้ raspi-config
หรือ Utility nmcli
เพื่อกำหนดค่า Wi-Fi; หรือเพียงแค่ใช้การเชื่อมต่ออีเธอร์เน็ตหากคุณต้องการ
ขั้นตอนที่ 1: สร้างสคริปต์ทุบตี
sudo nano /usr/local/bin/start_wifi.sh
เพิ่มเนื้อหาต่อไปนี้ลงในสคริปต์:
#! /bin/bash
# Set the interface and SSID details
INTERFACE= " wlan0 "
SSID= " your_wifi_ssid "
PASSWORD= " your_wifi_password "
# Make sure no previous configuration interferes
sudo killall wpa_supplicant
sudo dhcpcd -x $INTERFACE
# Ensure the wireless interface is up
sudo ip link set $INTERFACE up
# Create a wpa_supplicant configuration file
WPA_CONF= " /etc/wpa_supplicant/wpa_supplicant.conf "
wpa_passphrase " $SSID " " $PASSWORD " | sudo tee $WPA_CONF > /dev/null
# Start wpa_supplicant
sudo wpa_supplicant -B -i $INTERFACE -c $WPA_CONF
# Obtain an IP address
sudo dhcpcd $INTERFACE
ตรวจสอบให้แน่ใจว่าได้แทนที่ your_wifi_ssid
และ your_wifi_password
ด้วย SSID และรหัสผ่านของเครือข่าย WiFi ที่แท้จริงของคุณ
ขั้นตอนที่ 2: ทำให้สคริปต์ดำเนินการได้
sudo chmod +x /usr/local/bin/start_wifi.sh
ขั้นตอนที่ 3: สร้างไฟล์บริการ SystemD
sudo nano /etc/systemd/system/start_wifi.service
เพิ่มเนื้อหาต่อไปนี้ในไฟล์บริการ:
[Unit]
Description =Start WiFi at boot
After =network.target
[Service]
ExecStart =/usr/local/bin/start_wifi.sh
RemainAfterExit =true
[Install]
WantedBy =multi-user.target
ขั้นตอนที่ 4: โหลด SystemD และเปิดใช้งานบริการ
sudo systemctl daemon-reload
sudo systemctl enable start_wifi.service
sudo systemctl start start_wifi.service
ตอนนี้ Raspberry Pi ของคุณควรเชื่อมต่อกับเครือข่าย Wi-Fi โดยอัตโนมัติเมื่อบูต
หากคุณต้องการเชื่อมต่อกับเครือข่ายที่ซ่อนอยู่หรือหลายเครือข่ายให้แก้ไขไฟล์ wpa_supplicant.conf
ที่อยู่ที่ /etc/wpa_supplicant/wpa_supplicant.conf
และเพิ่มการกำหนดค่าต่อไปนี้:
network={
priority=1 # Higher priority networks are attempted first
ssid= " Your_Wi-Fi_Name "
psk= " Your_Wi-Fi_Password "
key_mgmt=WPA-PSK
scan_ssid=1 # Hidden network
priority=2
ssid= " Enterprise_Wi-Fi_Name "
key_mgmt=WPA-EAP
eap=PEAP # or TTLS, TLS, FAST, LEAP
identity= " Your_Username "
password= " Your_Password "
phase1= " peaplabel=0 " # or "peapver=0" for PEAPv0
phase2= " auth=MSCHAPV2 " # or "auth=MSCHAP" for MSCHAPv1
}
รีสตาร์ทบริการ wpa_supplicant
เพื่อใช้การเปลี่ยนแปลง:
sudo systemctl restart wpa_supplicant
ดูไฟล์ตัวอย่าง WPA_SUPPLICANT สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกการกำหนดค่า
ก่อนที่จะเรียกใช้โครงการนี้ในระบบของคุณตรวจสอบให้แน่ใจว่านาฬิการะบบของคุณถูกซิงโครไนซ์รายการแพ็คเกจของคุณจะได้รับการอัปเดตและติดตั้ง Nginx และ Docker สคริปต์การตั้งค่าจะดูแลสิ่งนี้ให้คุณ แต่คุณสามารถทำได้ด้วยตนเอง
ซิงโครไนซ์นาฬิการะบบของคุณ:
ติดตั้ง chrony
สำหรับการซิงโครไนซ์เวลา:
sudo apt install -y chrony # For Debian/Ubuntu
sudo yum install -y chrony # For RHEL/CentOS/Alma
sudo dnf install -y chrony # # For RHEL/CentOS/Alma 9^
sudo zypper install -y chrony # For openSUSE
sudo pacman -S chrony # For Arch Linux
เปิดใช้งานและซิงโครไนซ์เวลาทันทีด้วย chrony
:
sudo chronyc makestep
อัปเดตรายการแพ็คเกจของคุณ:
การอัปเดตเป็นประจำในรายการแพ็คเกจของคุณช่วยให้มั่นใจได้ว่าการเข้าถึงซอฟต์แวร์และแพตช์ความปลอดภัยล่าสุด
sudo apt update # For Debian/Ubuntu
sudo yum makecache # For RHEL/CentOS/Alma
sudo dnf makecache # For RHEL/CentOS/Alma 9^
sudo zypper refresh # For openSUSE
sudo pacman -Sy # For Arch Linux
เปิดใช้งานที่เก็บเพิ่มเติม:
สำหรับระบบที่ใช้ EPEL และที่เก็บพิเศษอื่น ๆ คุณอาจต้องเปิดใช้งานพวกเขาเพื่อเข้าถึงแพ็คเกจที่มีอยู่ในวงกว้าง
สำหรับ Debian/Ubuntu:
sudo add-apt-repository universe
sudo apt update
สำหรับ Rhel/Centos/Alma และ Fedora:
sudo yum install -y epel-release # For RHEL/CentOS/Alma
sudo dnf install -y epel-release # For RHEL/CentOS/Alma 9^
sudo yum makecache --timer # For RHEL/CentOS/Alma
sudo dnf makecache --timer # For RHEL/CentOS/Alma 9^
ติดตั้งเครื่องมือพัฒนา:
เครื่องมือการพัฒนาเป็นสิ่งจำเป็นสำหรับการสร้างแพ็คเกจและซอฟต์แวร์รวบรวม ตรวจสอบให้แน่ใจว่าคุณติดตั้งเครื่องมือที่จำเป็น
สำหรับ Debian/Ubuntu:
sudo apt install -y build-essential
สำหรับ Rhel/Centos/Alma และ Fedora:
sudo yum groupinstall -y " Development Tools " # For RHEL/CentOS/Alma
sudo dnf groupinstall -y " Development Tools " # For RHEL/CentOS/Alma 9^
ติดตั้งการพึ่งพาระบบ
Docker : จำเป็นสำหรับการจัดคอนเทนเนอร์
sudo apt-get install -y docker.io # For Debian/Ubuntu
sudo yum install -y docker # For RHEL/CentOS/Alma
sudo dnf install -y docker # For RHEL/CentOS/Alma 9^
sudo zypper install -y docker # For openSUSE
sudo pacman -S docker # For Arch Linux
จากนั้น sudo systemctl enable --now docker
Nginx : จำเป็นสำหรับการกลับรายการพร็อกซีสำหรับเว็บอินเตอร์เฟส
sudo apt-get install -y nginx # For Debian/Ubuntu
sudo yum install -y nginx # For RHEL/CentOS/Alma
sudo dnf install -y nginx # For RHEL/CentOS/Alma 9^
sudo zypper install -y nginx # For openSUSE
sudo pacman -S nginx # For Arch Linux
ก่อนที่คุณจะเรียกใช้สคริปต์การตั้งค่าเพื่อสร้างคอนเทนเนอร์คุณควรตรวจสอบให้แน่ใจว่าได้ส่งออกคีย์ OpenAI API ของคุณไปยังตัวแปรสภาพแวดล้อมก่อน
LITELLM_API_KEY
ดูเอกสาร Litellm สำหรับรายการของผู้ให้บริการที่ได้รับการสนับสนุนทั้งหมด สคริปต์การตั้งค่าจะใช้ตัวแปรนี้เพื่อเริ่มต้นคอนเทนเนอร์ หมายเหตุ: การดำเนินการ export
โดยตรงในเทอร์มินัลไม่คงอยู่หลังจากรีบูต
export OPENAI_API_KEY= " your_api_key_here "
หรือคุณสามารถใส่สิ่งนี้ได้ในตอนท้ายของไฟล์ ~/.bashrc
ของคุณ (ที่แนะนำ)
# export your API Key in here to initialize it at boot
export OPENAI_API_KEY= " your_api_key_here "
# Optional: Anthropic, Mistral, Cohere, HuggingFace, etc.
export LITELLM_API_KEY= " your_api_key_here "
# Optional: Add these aliases to your .bashrc file for easier management
alias gpt-start= " docker exec -it gpt-home supervisorctl start app "
alias gpt-restart= " docker exec -it gpt-home supervisorctl restart app "
alias gpt-stop= " docker exec -it gpt-home supervisorctl stop app "
alias gpt-status= " docker exec -it gpt-home supervisorctl status app "
alias gpt-log= " docker exec -it gpt-home tail -n 100 -f /app/src/events.log "
alias wi-start= " docker exec -it gpt-home supervisorctl start web-interface "
alias wi-restart= " docker exec -it gpt-home supervisorctl restart web-interface && sudo systemctl restart nginx "
alias wi-stop= " docker exec -it gpt-home supervisorctl stop web-interface "
alias wi-status= " docker exec -it gpt-home supervisorctl status web-interface "
alias wi-build= " docker exec -it gpt-home bash -c 'cd /app/src/frontend && npm run build' "
alias wi-log= " tail -n 100 -f /var/log/nginx/access.log "
alias wi-error= " tail -n 100 -f /var/log/nginx/error.log "
alias spotifyd-start= " docker exec -it gpt-home supervisorctl start spotifyd "
alias spotifyd-restart= " docker exec -it gpt-home supervisorctl restart spotifyd "
alias spotifyd-stop= " docker exec -it gpt-home supervisorctl stop spotifyd "
alias spotifyd-status= " docker exec -it gpt-home supervisorctl status spotifyd "
alias spotifyd-log= " docker exec -it gpt-home tail -n 100 -f /var/log/spotifyd.log "
เรียกใช้ source ~/.bashrc
เพื่อใช้การเปลี่ยนแปลงกับเซสชันเทอร์มินัลปัจจุบันของคุณ
สคริปต์การตั้งค่าจะใช้เวลาสักครู่ในการรัน (900.0s+ เพื่อสร้างและตั้งค่าการพึ่งพาการพึ่งพาบน RAM RASPBERRY PI 4B W/ 1G RAM ของฉัน) มันจะติดตั้งการพึ่งพาทั้งหมดและสร้างคอนเทนเนอร์ Docker อย่างไรก็ตามคุณสามารถข้ามกระบวนการสร้างได้โดยผ่านธง --no-build
ไปยังสคริปต์ มันจะติดตั้งการพึ่งพาตั้งค่าไฟร์วอลล์และ nginx และดึงคอนเทนเนอร์จาก Docker Hub และเรียกใช้
curl -s https://raw.githubusercontent.com/judahpaul16/gpt-home/main/contrib/setup.sh |
bash -s -- --no-build
อีกทางเลือกหนึ่งสำหรับการพัฒนาการเรียกใช้ setup.sh
โดยไม่ --no-build
การติดตั้งไดเรกทอรีโครงการไปยังคอนเทนเนอร์โดยการเพิ่ม -v ~/gpt-home:/app
ไปยังคำสั่ง docker run
สิ่งนี้ช่วยให้คุณสามารถเปลี่ยนแปลงไฟล์โครงการบน Raspberry Pi ของคุณและดูการเปลี่ยนแปลงที่สะท้อนในคอนเทนเนอร์โดยไม่ต้องสร้างภาพใหม่ สิ่งนี้มีประโยชน์สำหรับการทดสอบการเปลี่ยนแปลง Codebase วิ่งโดยตรงด้วย:
curl -s https://raw.githubusercontent.com/judahpaul16/gpt-home/main/contrib/setup.sh |
bash -s
นอกจากนี้คุณยังสามารถเรียกใช้คอนเทนเนอร์แบบโต้ตอบได้หากคุณต้องการทำการดีบักหรือทดสอบการเปลี่ยนแปลง Codebase ด้วย -it
(เทอร์มินัลแบบโต้ตอบ), --entrypoint /bin/bash
และ --rm
(ลบบนกระบวนการออกกระบวนการ) สิ่งนี้จะทำให้คุณเข้าสู่เซสชันเชลล์ภายในคอนเทนเนอร์ อีกทางเลือกหนึ่งถ้า conatiner ทำงานอยู่แล้ว:
docker exec -it gpt-home bash
สิ่งนี้จะเริ่มต้นคอนเทนเนอร์และส่งคุณลงในเซสชันเชลล์ภายในคอนเทนเนอร์
คำอธิบายเกี่ยวกับธง Docker Run
- -tmpfs /run :
Mounts a tmpfs at /run for transient runtime data.
- -tmpfs /run/lock :
Mounts a tmpfs at /run/lock for lock files.
- -privileged :
Grants extended privileges to the container
Necessary for accessing host audio devices.
- -net=host :
Uses the host network stack directly.
May be necessary for avahi-daemon services.
- v /dev/snd:/dev/snd :
Provides access to the host's sound devices.
- v /dev/shm:/dev/shm :
Provides access to shared memory.
- v /usr/share/alsa:/usr/share/alsa:ro :
Maps the ALSA shared data as read-only.
- v /var/run/dbus:/var/run/dbus :
Provides access to the D-Bus system for inter-process communication.
- -mount type=bind,source=/etc/asound.conf,target=/etc/asound.conf :
Binds the host's ALSA configuration to the container.
หากคุณต้องการเรียกใช้สคริปต์การตั้งค่าด้วยตนเองคุณสามารถทำได้ สร้างสคริปต์ในโฟลเดอร์ บ้าน ของคุณด้วย vim ~/setup.sh
หรือ nano ~/setup.sh
และวางในต่อไปนี้:
#! /bin/bash
latest_release= $( curl -s https://api.github.com/repos/judahpaul16/gpt-home/releases/latest | grep ' tag_name ' | cut -d " -f4 )
# Colors
RED= ' 33[0;31m '
GREEN= ' 33[0;32m '
YELLOW= ' 33[0;33m '
BLUE= ' 33[0;34m '
MAGENTA= ' 33[0;35m '
CYAN= ' 33[0;36m '
WHITE= ' 33[0;37m '
NC= ' 33[0m ' # No Color
echo " "
echo -e " ${MAGENTA} "
echo " GPT Home $latest_release "
echo " Created by Judah Paul "
echo " More info @ https://github.com/judahpaul16/gpt-home/ "
echo -e " ${NC} "
echo -e " ${GREEN} "
echo " ____ ____ _____ _ _ "
echo " / ___| _ \ _ _| | | | | ___ _ __ ___ ___ "
echo " | | _| |_) || | | |_| |/ _ \ | '_ ` _ \ / _ \ "
echo " | |_| | __/ | | | _ | (_) | | | | | | __/ "
echo " \ ____|_| |_| |_| |_| \ ___/|_| |_| |_| \ ___| "
echo -e " ${NC} "
echo -e " ${CYAN} "
echo " ______________ "
echo " | how may I | "
echo " | assist you | "
echo " | today? | "
echo " |______________| "
echo " \ | "
echo " \ | "
echo " \ | "
echo " _______ ________ | "
echo " |ooooooo| ____ | __ __ | | "
echo " |[]+++[]| [____] |/ \ / \ | | "
echo " |+ ___ +| ]()()[ | \ __/ \ __/| | "
echo " |:| |:| ___ \ __/___ |[][][][]| | "
echo " |:|___|:| |__| |__| |++++++++| | "
echo " |[]===[]| |_|/ \ |_| | ______ | | "
echo " _ ||||||||| _ | | __ | | __ ||______|| __| "
echo " |_______| |_|[::]|_| |________| \ "
echo " \ _|_||_|_/ \ "
echo " |_||_| \ "
echo " _|_||_|_ \ "
echo " ____ |___||___| \ "
echo -e " ${NC} "
# Mask systemd-networkd-wait-online.service to prevent boot delays
sudo systemctl mask systemd-networkd-wait-online.service
# Set Permissions
sudo chown -R $( whoami ) : $( whoami ) .
sudo chmod -R 755 .
# Function to install system dependencies
function install() {
local package= $1
echo " Ensuring package ' $package ' is installed... "
# Detect the package management system
if command -v apt-get > /dev/null ; then
if ! dpkg -s " $package " > /dev/null 2>&1 ; then
sudo yes | add-apt-repository universe > /dev/null 2>&1 || true
sudo apt update || true
if [ " $package " == " docker " ] ; then
sudo apt-get install -y docker.io
else
sudo apt-get install -y " $package "
fi
fi
elif command -v yum > /dev/null ; then
if ! rpm -q " $package " > /dev/null 2>&1 ; then
sudo yum install -y epel-release > /dev/null 2>&1 || true
sudo yum makecache --timer || true
sudo yum install -y " $package "
fi
elif command -v dnf > /dev/null ; then
if ! dnf list installed " $package " > /dev/null 2>&1 ; then
sudo dnf install -y epel-release > /dev/null 2>&1 || true
sudo dnf makecache --timer || true
sudo dnf install -y " $package "
fi
elif command -v zypper > /dev/null ; then
if ! zypper se -i " $package " > /dev/null 2>&1 ; then
sudo zypper refresh || true
sudo zypper install -y " $package "
fi
elif command -v pacman > /dev/null ; then
if ! pacman -Q " $package " > /dev/null 2>&1 ; then
sudo pacman -Sy
sudo pacman -S --noconfirm " $package "
fi
else
echo " Package manager not supported. "
return 1
fi
if [ " $package " == " docker " ] ; then
if ! docker ps > /dev/null 2>&1 ; then
echo " Docker installed. Adding $( whoami ) to the 'docker' group... "
sudo usermod -aG docker $( whoami )
echo -e " ${RED} User added to ` docker ` group but the session must be reloaded to access the Docker daemon. Please log out, log back in, and rerun the script. Exiting... ${NC} "
exit 0
fi
fi
}
install chrony
install nginx
install containerd
install docker
install docker-buildx-plugin
install alsa-utils
sudo systemctl enable docker
sudo systemctl start docker
# Create ALSA config (asound.conf, adjust as needed)
sudo tee /etc/asound.conf > /dev/null << EOF
pcm.!default { type hw card Headphones device 0 }
ctl.!default { type hw card Headphones }
EOF
# Install Docker Buildx plugin
mkdir -p $HOME /.docker/cli-plugins
curl -Lo $HOME /.docker/cli-plugins/docker-buildx https://github.com/docker/buildx/releases/download/v0.14.0/buildx-v0.14.0.linux-arm64
sudo chmod +x $HOME /.docker/cli-plugins/docker-buildx
docker buildx version
# Setup UFW Firewall
echo " Setting up UFW Firewall... "
if which firewalld > /dev/null ; then
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo yum remove firewalld -y 2> /dev/null || sudo apt-get remove firewalld -y 2> /dev/null || sudo zypper remove firewalld -y 2> /dev/null
fi
if ! which ufw > /dev/null ; then
sudo yum install ufw -y 2> /dev/null || sudo apt-get install ufw -y 2> /dev/null || sudo zypper install ufw -y 2> /dev/null
fi
sudo ufw allow ssh
sudo ufw allow 80,443/tcp
sudo ufw allow 5353/udp
echo " y " | sudo ufw enable
# Setup NGINX for reverse proxy
echo " Setting up NGINX... "
sudo mkdir -p /etc/nginx/sites-available /etc/nginx/sites-enabled
sudo tee /etc/nginx/sites-available/gpt-home << EOF
server {
listen 80;
location / {
proxy_pass http://127.0.0.1:8000/;
proxy_set_header Host $ host;
proxy_set_header X-Real-IP $ remote_addr;
proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for;
}
}
EOF
# Remove gpt-home site symlink if it exists
[ -L " /etc/nginx/sites-enabled/gpt-home " ] && sudo unlink /etc/nginx/sites-enabled/gpt-home
# Remove the default site if it exists
[ -L " /etc/nginx/sites-enabled/default " ] && sudo unlink /etc/nginx/sites-enabled/default
# Create a symlink to the gpt-home site and reload NGINX
sudo ln -s /etc/nginx/sites-available/gpt-home /etc/nginx/sites-enabled
sudo systemctl enable nginx
sudo nginx -t && sudo systemctl restart nginx
sudo systemctl status --no-pager nginx
if [[ " $1 " != " --no-build " ]] ; then
[ -d ~ /gpt-home ] && rm -rf ~ /gpt-home
git clone https://github.com/judahpaul16/gpt-home ~ /gpt-home
cd ~ /gpt-home
echo " Checking if the container 'gpt-home' is already running... "
if [ $( docker ps -q -f name=gpt-home ) ] ; then
echo " Stopping running container 'gpt-home'... "
docker stop gpt-home
fi
echo " Checking for existing container 'gpt-home'... "
if [ $( docker ps -aq -f status=exited -f name=gpt-home ) ] ; then
echo " Removing existing container 'gpt-home'... "
docker rm -f gpt-home
fi
echo " Pruning Docker system... "
docker system prune -f
# Check if the buildx builder exists, if not create and use it
if ! docker buildx ls | grep -q mybuilder ; then
docker buildx create --name mybuilder --use
docker buildx inspect --bootstrap
fi
# Building Docker image 'gpt-home' for ARMhf architecture
echo " Building Docker image 'gpt-home' for ARMhf... "
timeout 3600 docker buildx build --platform linux/arm64 -t gpt-home --load .
if [ $? -ne 0 ] ; then
echo " Docker build failed. Exiting... "
exit 1
fi
echo " Container 'gpt-home' is now ready to run. "
echo " Running container 'gpt-home' from image 'gpt-home'... "
docker run --restart unless-stopped -d --name gpt-home
--mount type=bind,source=/etc/asound.conf,target=/etc/asound.conf
--privileged
--net=host
--tmpfs /run
--tmpfs /run/lock
-v ~ /gpt-home:/app
-v /dev/snd:/dev/snd
-v /dev/shm:/dev/shm
-v /usr/share/alsa:/usr/share/alsa
-v /var/run/dbus:/var/run/dbus
-e OPENAI_API_KEY= $OPENAI_API_KEY
-e LITELLM_API_KEY= $LITELLM_API_KEY
gpt-home
echo " Container 'gpt-home' is now running. "
# Show status of the container
docker ps -a | grep gpt-home
sleep 10
# Show status of all programs managed by Supervisor
docker exec -i gpt-home supervisorctl status
fi
if [[ " $1 " == " --no-build " ]] ; then
docker ps -aq -f name=gpt-home | xargs -r docker rm -f
docker pull judahpaul/gpt-home
docker run --restart unless-stopped -d --name gpt-home
--mount type=bind,source=/etc/asound.conf,target=/etc/asound.conf
--privileged
--net=host
--tmpfs /run
--tmpfs /run/lock
-v /dev/snd:/dev/snd
-v /dev/shm:/dev/shm
-v /usr/share/alsa:/usr/share/alsa
-v /var/run/dbus:/var/run/dbus
-e OPENAI_API_KEY= $OPENAI_API_KEY
-e LITELLM_API_KEY= $LITELLM_API_KEY
judahpaul/gpt-home
docker ps -a | grep gpt-home
sleep 10
docker exec -i gpt-home supervisorctl status
fi
อย่าลืมทำให้สคริปต์ทำงานได้เพื่อเรียกใช้
chmod +x setup.sh
./setup.sh
|
|
|
|
|
|
|
ยินดีต้อนรับอย่างแน่นอน! โปรดอ่าน contributing guidelines
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการมีส่วนร่วม
โครงการนี้ได้รับใบอนุญาตภายใต้ใบอนุญาต GNU GPL v3.0 - ดูไฟล์ใบ LICENSE
สำหรับรายละเอียด