Spaces:
Paused
Deploying Auralynq to a server
This covers running the full Podman stack on a Linux server you control, reachable from other machines. It builds on podman.md β read that first if you haven't run the stack locally yet.
The stack exposes one public port (Caddy TLS, default 8443). The web
UI, API, Qdrant, and Phoenix all bind to loopback internally and are
unreachable from the server's network interface directly β only Caddy is
public.
Prerequisites on the server
- Podman + a Podman Compose (
podman composeorpodman-compose) - One inbound firewall rule: TCP
8443(or whatever you setAURALYNQ_HTTPS_PORTto) - No GHCR login needed if you use the public pre-built images
Option A β run from the published images (no source needed)
You only need compose.yml, containers/Caddyfile, scripts/, and a
Makefile β or just clone the repo, it's small.
git clone https://github.com/MHHamdan/Auralynq.git && cd Auralynq
Create .env (git-ignored; never commit it) β replace <SERVER> with the
server's IP or domain:
cat > .env <<'EOF'
AURALYNQ_HTTPS_PORT=8443
AURALYNQ_CERT_HOST=<SERVER> # IP or domain (cert SAN)
AURALYNQ_SITE_ADDRESS=:8443 # or https://your.domain for Let's Encrypt
AURALYNQ_SERVE__CORS_ORIGINS=["https://<SERVER>:8443"]
NEXT_PUBLIC_API_BASE=/api # browser -> same-origin proxy
AURALYNQ_BIND_INTERNAL=127.0.0.1 # internal services off the public NIC
AURALYNQ_IMAGE_PREFIX=ghcr.io/mhhamdan/auralynq-
AURALYNQ_IMAGE_TAG=0.2.0
# Providers are all optional; missing keys degrade to local/offline fallbacks
AURALYNQ_LLM__PROVIDER=auto
# COHERE_API_KEY= / OPENAI_API_KEY= / ANTHROPIC_API_KEY= / HUGGINGFACE_TOKEN=
# Recommended once the server is reachable from anyone but you:
AURALYNQ_SERVE__API_KEY=<openssl rand -hex 24>
EOF
make stack-up
Browse to https://<SERVER>:8443.
Option B β build images on the server from source
make images # build api/web/caddy locally, versioned + OCI labels
make stack-up
The TLS certificate
The public Caddy image ships a self-signed cert whose SAN is
AURALYNQ_CERT_HOST. On a fresh host this means a browser warning
(functionally fine β Advanced β Proceed). To avoid it:
- Self-signed for your own IP β rebuild caddy locally with your IP as the
SAN:
AURALYNQ_CERT_HOST=<SERVER> podman build -t auralynq-caddy:0.2.0 -f containers/caddy.Dockerfile . - Trusted certificate (real domain) β set
AURALYNQ_SITE_ADDRESS=https://your.domain; Caddy auto-provisions Let's Encrypt (needs DNS pointed at this host and ports 80/443 reachable).
Adding data once it's running
- UI: Ingest tab β upload a PDF/DOCX/TXT/audio file.
- CLI:
podman cp mydoc.pdf auralynq-api:/app/data/corpus/ podman exec auralynq-api auralynq index --input /app/data/corpus
Health checks
podman ps
curl -sk https://<SERVER>:8443/api/health
curl -sk -X POST https://<SERVER>:8443/api/query \
-H 'content-type: application/json' -d '{"question":"hi"}'
Security notes
- The browser never holds the API key β the web container's same-origin
/api/*proxy injects the bearer token server-side. - Set
AURALYNQ_SERVE__API_KEYonce the server is reachable by anyone other than you; it's empty (open) by default for local/demo convenience. - Only the HTTPS port needs to be open in the firewall β everything else binds to loopback.
Next steps
- Local Podman without a public server β podman.md
- No containers at all β no-podman.md
- Something not working β troubleshooting.md