deployment files and script

This commit is contained in:
Shivering Ocelot committed 2026-08-30 17:33:31 -05:00
1 parent 6c5140fb92
commit 3b2b3507e5
4 files changed
+141

No files matched your search

+93
View File
@@ -0,0 +1,93 @@
#!/bin/bash
set -euo pipefail
cd "$(dirname "$0")"
host="root@hub.hordelab.com"
run_nginx() {
echo "Uploading nginx config file"
scp template/nginx.conf "$host:/etc/nginx/sites-enabled/hub.hordelab.com"
ssh "$host" -t "
nginx -s reload
# full process is currently broken
#certbot --keep -d hub.hordelab.com
# uncomment if needed
#certbot certonly -d hub.hordelab.com
#nginx -s reload
"
}
run_service() {
echo "Uploading Launcher and Service"
scp template/launch-hub.sh "$host:/var/horde/launch-hub.sh"
scp template/systemd.service "$host:/etc/systemd/system/horde-hub.service"
ssh "$host" -t "
systemctl daemon-reload
systemctl enable horde-hub.service
systemctl start horde-hub.service
"
}
run_update() {
echo "Updating repository"
ssh "$host" -t "
source ~/.nvm/nvm.sh #?
cd /var/horde/hub
git pull
make install
"
}
restart_service() {
echo "Restarting horde-hub.service"
ssh "$host" -t "systemctl restart horde-hub.service"
}
# Determine which stages to run
stages=()
if [[ $# -eq 0 ]]; then
# Interactive prompts when no arguments are given
read -p "Run nginx deployment? [Y/n] " choice
if [[ -z "$choice" || "$choice" =~ ^[Yy]$ ]]; then
stages+=(nginx)
fi
read -p "Run service deployment? [Y/n] " choice
if [[ -z "$choice" || "$choice" =~ ^[Yy]$ ]]; then
stages+=(service)
fi
read -p "Run update (git pull + make install)? [Y/n] " choice
if [[ -z "$choice" || "$choice" =~ ^[Yy]$ ]]; then
stages+=(update)
fi
else
# Parse arguments
for arg in "$@"; do
case "$arg" in
nginx|service|update)
stages+=("$arg")
;;
*)
echo "Unknown argument: $arg" >&2
exit 1
;;
esac
done
fi
# Execute selected stages
for stage in "${stages[@]}"; do
case "$stage" in
nginx) run_nginx ;;
service) run_service ;;
update) run_update ;;
esac
done
# Final stage: always restart the systemd service at the end
restart_service
+8
View File
@@ -0,0 +1,8 @@
export OPENAI_API_KEY=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
export REPLICATE_API_KEY=r8_J1lnphqfZNUtK9CIh81SE4uHWWKJuvR3tr8S2
export OPENROUTER_API_KEY=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
export HORDE_DATA_DIR=/var/horde/hub-data
echo Starting Horde Server
/var/horde/hub/.venv/bin/python3 /var/horde/hub/backend/src/app.py
+29
View File
@@ -0,0 +1,29 @@
# Only describe the http server, certbot will install https for us
server {
listen 80;
listen [::]:80;
server_name hub.hordelab.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name hub.hordelab.com;
ssl_certificate /etc/letsencrypt/live/hub.hordelab.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/hub.hordelab.com/privkey.pem;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
# Websocket support
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
+11
View File
@@ -0,0 +1,11 @@
[Unit]
Description=Horde Hub
After=network.target
[Service]
Type=simple
Restart=always
ExecStart=bash /var/horde/launch-hub.sh
[Install]
WantedBy=multi-user.target