Skip to content

Holt-Chat/installer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Holt Chat logo

Holt Installer

Automated, one-command setup for a self-hosted Holt Chat instance.

License: MIT Linux

🇮🇷 فارسی | 🇪🇸 Español


Sets up the backend (Keel) under uvicorn, the frontend (Shore), nginx as an SSL reverse proxy, and systemd services in one command.

Requirements

  • Linux (x86_64 or arm64)
  • Root access (sudo)
  • wget or curl (to fetch the installer binary)

python3, git, and nginx are installed automatically if not already present.

Quick Install

wget https://github.com/Holt-Chat/installer/releases/latest/download/install.sh -O install.sh
chmod +x install.sh
sudo ./install.sh

With curl:

curl -fsSL https://github.com/Holt-Chat/installer/releases/latest/download/install.sh -o install.sh
chmod +x install.sh
sudo ./install.sh

Using a Mirror

If GitHub is not accessible, you can point the installer to an alternative mirror:

wget https://your-mirror.com/install.sh -O install.sh
chmod +x install.sh
sudo MIRROR_BASE_URL="https://your-mirror.com" ./install.sh

The installer binary will be fetched from the specified mirror.

Menu

When the installer runs, you choose from:

[I] Install
[U] Update
[M] Modify
[X] Uninstall

Install

For a fresh install, you first choose:

Recommended asks only for your domain or IP address, URI prefix, optional instance password, and SSL method, then sets everything up with sensible defaults.

Custom lets you configure the HTTPS port, install directory, instance password, thread count, voice calls, and more.

At the end of installation you are asked whether to enable auto-update (see below).

Update

Pulls the latest Keel and Shore from git, reinstalls Python dependencies, and restarts the backend. Your config.toml, certificates, and data are untouched.

Modify

Post-install changes without reinstalling:

  • Renew SSL certificate: re-run the SSL setup flow (same options as during install); updates nginx.conf and restarts nginx automatically
  • Enable / Disable auto-update: toggle the automatic update cron job

Uninstall

Stops and disables all services, removes systemd unit files, and deletes the install directory.

SSL Options

Option When to use
Self-signed IP addresses, private/local instances, or anywhere behind a firewall
Let's Encrypt - HTTP Public domain with port 80 open for the internet. Auto-renews.
Let's Encrypt - DNS Public domain behind a firewall. Requires adding a DNS TXT record. Must be renewed manually every 90 days.
Use existing certificates You already have a certificate and private key (PEM format); provide the file paths.

If you enter an IP address instead of a domain, self-signed is used automatically since Let's Encrypt requires a domain name.

Auto-Update

When installing, the installer asks if you want automatic updates. If enabled, you choose the schedule:

Option Schedule
Every 5 minutes */5 * * * *
Every hour 0 * * * *
Daily at 3 AM 0 3 * * *
Daily at 4 AM 0 4 * * *
Custom enter any cron expression

The installer writes auto-update.sh in the install directory and registers a cron job. Each run does a git pull on Keel and Shore, reinstalls Python deps if needed, and restarts the backend only when there is a new version. Update output is logged to /var/log/holt-keel-update.log.

You can enable or disable auto-update at any time from the Modify menu.

What Gets Installed

Component Description
keel/ Keel backend source (cloned from git)
keel/venv/ Python virtual environment with Keel dependencies
keel/config.toml Keel configuration
shore/ Shore frontend static files (cloned from git)
certs/ Self-signed SSL certificate (10 year validity)
nginx.conf nginx reverse proxy config
auto-update.sh Auto-update script (if enabled)
.install_info Saved settings used by the Modify menu
holt-keel.service systemd service for Keel (uvicorn)
holt-keel-nginx.service systemd service for nginx

Everything is installed to /opt/holt by default (configurable in Custom mode).

After Installation

The instance will be accessible at https://<your-domain>:<port>/<uri-prefix>/.

Your browser will show a certificate warning on the first visit if using a self-signed certificate. Click Advanced -> Proceed to continue.

Managing the Services

# Check status
systemctl status holt-keel
systemctl status holt-keel-nginx

# Restart
systemctl restart holt-keel
systemctl restart holt-keel-nginx

# Stop
systemctl stop holt-keel
systemctl stop holt-keel-nginx

# View logs
journalctl -u holt-keel -f

License

MIT, see LICENSE.

About

Automated installer for self-hosted Holt Chat instances

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages