Use PORT as proxyless host port
This commit is contained in:
@@ -35,7 +35,7 @@ services:
|
||||
container_name: synapsis-app
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "127.0.0.1:${APP_HOST_PORT:-3000}:3000"
|
||||
- "127.0.0.1:${PORT:-3000}:${PORT:-3000}"
|
||||
environment:
|
||||
DATABASE_URL: postgresql://${DB_USER:-synapsis}:${DB_PASSWORD:-changeme}@postgres:5432/${DB_NAME:-synapsis}
|
||||
AUTH_SECRET: ${AUTH_SECRET}
|
||||
@@ -45,7 +45,7 @@ services:
|
||||
ALLOW_LOCALHOST: ${ALLOW_LOCALHOST:-}
|
||||
ADMIN_EMAILS: ${ADMIN_EMAILS}
|
||||
BOT_MAX_PER_USER: ${BOT_MAX_PER_USER:-5}
|
||||
PORT: "3000"
|
||||
PORT: ${PORT:-3000}
|
||||
NODE_ENV: production
|
||||
volumes:
|
||||
- uploads_data:/app/uploads
|
||||
@@ -55,7 +55,7 @@ services:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "wget -q --spider http://127.0.0.1:3000/api/health || exit 1"]
|
||||
test: ["CMD-SHELL", "wget -q --spider http://127.0.0.1:${PORT:-3000}/api/health || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
+3
-6
@@ -34,14 +34,11 @@ DB_NAME=synapsis
|
||||
# OPTIONAL: General Settings
|
||||
# ===========================================
|
||||
|
||||
# Application port - 'auto' scans 3000-3020 for first available (recommended)
|
||||
# Or set a specific port: PORT=3000
|
||||
# Application port.
|
||||
# Default install (with bundled Caddy): PORT=auto scans 3000-3020 automatically.
|
||||
# Existing reverse proxy mode (PROXY=none): use a fixed localhost port, e.g. PORT=3000.
|
||||
PORT=auto
|
||||
|
||||
# External reverse proxy mode only:
|
||||
# Port on localhost to expose Synapsis for nginx/Traefik/Caddy
|
||||
# APP_HOST_PORT=3000
|
||||
|
||||
# Allow localhost domains in production (set only for local testing)
|
||||
# ALLOW_LOCALHOST=1
|
||||
|
||||
|
||||
+5
-4
@@ -49,7 +49,6 @@ Optional (advanced):
|
||||
**Port Configuration:**
|
||||
- `PORT=auto` (default) — Automatically finds an available port between 3000-3020
|
||||
- `PORT=3000` — Use a specific port instead
|
||||
- `APP_HOST_PORT=3000` — Only used in advanced `PROXY=none` installs
|
||||
|
||||
---
|
||||
|
||||
@@ -66,9 +65,11 @@ docker compose up -d
|
||||
|
||||
This mode:
|
||||
- skips the bundled Caddy service
|
||||
- binds Synapsis to `127.0.0.1:${APP_HOST_PORT:-3000}`
|
||||
- binds Synapsis to `127.0.0.1:${PORT:-3000}`
|
||||
- expects your existing reverse proxy to forward traffic there
|
||||
|
||||
In `PROXY=none` mode, `PORT` is the localhost port your reverse proxy should target. The installer automatically changes `PORT=auto` to `PORT=3000` unless you override it.
|
||||
|
||||
Example nginx site:
|
||||
|
||||
```nginx
|
||||
@@ -152,8 +153,8 @@ For the application port itself, `PORT=auto` (default) automatically finds an av
|
||||
# Check what's using the port
|
||||
sudo netstat -tlnp | grep :3000
|
||||
|
||||
# Switch back to auto or choose a different port
|
||||
# Edit .env: PORT=auto
|
||||
# Choose a different fixed port in /opt/synapsis/.env
|
||||
# Example: PORT=3013
|
||||
```
|
||||
|
||||
### Database connection failed
|
||||
|
||||
+30
-6
@@ -79,13 +79,24 @@ set_env_value() {
|
||||
rm -f "${file}.bak"
|
||||
}
|
||||
|
||||
get_env_value() {
|
||||
file="$1"
|
||||
key="$2"
|
||||
|
||||
if [ ! -f "$file" ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
sed -n -E "s/^${key}=(.*)$/\\1/p" "$file" | head -n 1
|
||||
}
|
||||
|
||||
generate_db_password() {
|
||||
openssl rand -base64 24 | tr -d '\n' | tr '/+' '_-' | cut -c1-32
|
||||
}
|
||||
|
||||
resolve_proxyless_host_port() {
|
||||
if [ -n "${APP_HOST_PORT:-}" ]; then
|
||||
printf '%s\n' "${APP_HOST_PORT}"
|
||||
resolve_proxyless_port() {
|
||||
if [ -n "${PORT:-}" ] && [ "${PORT}" != "auto" ]; then
|
||||
printf '%s\n' "${PORT}"
|
||||
return
|
||||
fi
|
||||
|
||||
@@ -131,7 +142,7 @@ require_command cp
|
||||
|
||||
RAW_BASE="https://raw.githubusercontent.com/${REPO}/${REF}"
|
||||
PROXY="$(normalize_proxy_mode "${PROXY}")"
|
||||
PROXYLESS_HOST_PORT="$(resolve_proxyless_host_port)"
|
||||
PROXYLESS_PORT="$(resolve_proxyless_port)"
|
||||
|
||||
echo "========================================"
|
||||
echo " Synapsis Docker Installer"
|
||||
@@ -182,8 +193,21 @@ if [ ! -f "${INSTALL_DIR}/.env" ]; then
|
||||
set_env_value "${INSTALL_DIR}/.env" "ADMIN_EMAILS" "${ADMIN_EMAILS}"
|
||||
echo "📧 Set ADMIN_EMAILS=${ADMIN_EMAILS}"
|
||||
fi
|
||||
|
||||
if [ "${PROXY}" = "none" ]; then
|
||||
set_env_value "${INSTALL_DIR}/.env" "PORT" "${PROXYLESS_PORT}"
|
||||
echo "📡 Set PORT=${PROXYLESS_PORT} for proxyless mode"
|
||||
fi
|
||||
else
|
||||
echo "📝 Existing ${INSTALL_DIR}/.env found, leaving it unchanged"
|
||||
|
||||
if [ "${PROXY}" = "none" ]; then
|
||||
current_port="$(get_env_value "${INSTALL_DIR}/.env" "PORT" || true)"
|
||||
if [ -z "${current_port}" ] || [ "${current_port}" = "auto" ]; then
|
||||
set_env_value "${INSTALL_DIR}/.env" "PORT" "${PROXYLESS_PORT}"
|
||||
echo "📡 Updated PORT=${PROXYLESS_PORT} for proxyless mode"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
@@ -196,6 +220,6 @@ else
|
||||
echo " 2. Start Synapsis:"
|
||||
echo " cd ${INSTALL_DIR} && docker compose up -d"
|
||||
echo " 3. Configure your existing reverse proxy to forward to:"
|
||||
echo " http://127.0.0.1:${PROXYLESS_HOST_PORT}"
|
||||
echo " (change APP_HOST_PORT in ${INSTALL_DIR}/.env if you want a different localhost port)"
|
||||
echo " http://127.0.0.1:${PROXYLESS_PORT}"
|
||||
echo " (change PORT in ${INSTALL_DIR}/.env if you want a different localhost port)"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user