mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-09-18 12:52:25 +03:00
Merged in the 2026-09-16 sweep of the maintainer's own open PRs, at the owner's explicit instruction. No push was made to the PR branch: the merge took the head as the owning session left it (verified OPEN, non-draft and MERGEABLE against the release tip immediately before merging).
60 lines
1.9 KiB
Plaintext
60 lines
1.9 KiB
Plaintext
[Unit]
|
|
Description=OmniRoute — Unified AI Proxy
|
|
After=network-online.target
|
|
Wants=network-online.target
|
|
Requires=omniroute-redis.service
|
|
After=omniroute-redis.service
|
|
|
|
[Container]
|
|
# Use this image after building locally
|
|
Image=localhost/omniroute:base
|
|
# Or use the fully qualified published image (there is no published :base tag)
|
|
# Image=docker.io/diegosouzapw/omniroute:latest
|
|
|
|
ContainerName=omniroute
|
|
|
|
Network=omniroute.network
|
|
PublishPort=20128:20128
|
|
PublishPort=20129:20129
|
|
|
|
Volume=omniroute.volume:/app/data:Z
|
|
|
|
# Use a bind mount if you need direct host access to the data:
|
|
# Volume=/home/USER/code/docker/OmniRoute/data:/app/data:Z
|
|
|
|
Environment=DATA_DIR=/app/data
|
|
Environment=PORT=20128
|
|
Environment=DASHBOARD_PORT=20128
|
|
Environment=API_PORT=20129
|
|
Environment=API_HOST=0.0.0.0
|
|
Environment=REDIS_URL=redis://redis:6379
|
|
Environment=NODE_ENV=production
|
|
Environment=REQUIRE_API_KEY=true
|
|
|
|
# JWT_SECRET, API_KEY_SECRET and INITIAL_PASSWORD are deliberately NOT set here.
|
|
# This unit used to ship copy-pasteable "replace-me" placeholder literals — an
|
|
# operator who forgot to replace them ran production with a public, guessable
|
|
# secret and dashboard password (#13679). Generate real values and load them from
|
|
# your project .env before the FIRST start — see "Generate secrets before first
|
|
# start" in contrib/podman/README.md — by uncommenting and pointing this at your
|
|
# project .env:
|
|
# EnvironmentFile=%h/code/docker/OmniRoute/.env
|
|
#
|
|
# If left unset: JWT_SECRET and API_KEY_SECRET are auto-generated and persisted
|
|
# on first boot, and the dashboard requires setup from localhost before it
|
|
# accepts any password (see managementPassword.ts / apiAuth.ts) — safer than a
|
|
# known-literal default either way, but a real INITIAL_PASSWORD is still
|
|
# recommended for non-interactive first boots.
|
|
|
|
HealthCmd=node /app/healthcheck.mjs
|
|
HealthInterval=30s
|
|
HealthRetries=3
|
|
HealthTimeout=5s
|
|
HealthStartPeriod=15s
|
|
|
|
[Service]
|
|
Restart=always
|
|
|
|
[Install]
|
|
WantedBy=default.target
|