Skip to content

Server Configuration ​

The SafeCall CLI can configure reverse proxy integration through:

  • nginx
  • apache
  • caddy

Use:

bash
safecall integrations server

Detection and Selection Flow ​

When the command starts, it checks whether apache, nginx, or caddy is already installed.

  • If exactly one server is installed, the CLI uses it automatically.
  • If multiple servers are installed, the CLI asks which one to configure.
  • If no supported server is installed, the CLI:
    • recommends Caddy, and
    • asks whether to install a server first or print sample configs and exit.

Guided Questions ​

The CLI asks the operator for:

  • Domain or IP to expose publicly
  • SafeCall upstream HTTP port (defaults to server_http_port in config/main.config.json)
  • Whether SSL/TLS should be enabled (certificate generation/usage path depends on server)

Behavior by Server ​

Nginx ​

  • Writes /etc/nginx/sites-available/safecall
  • Creates /etc/nginx/sites-enabled/safecall symlink
  • Removes default site symlink (if present)
  • Validates config and restarts nginx
  • Can generate a self-signed certificate when SSL is enabled

Apache ​

  • Writes /etc/apache2/sites-available/safecall.conf
  • Enables required modules (proxy, proxy_http, proxy_wstunnel, headers, rewrite, and ssl when needed)
  • Enables site and disables default site (if present)
  • Validates config and restarts apache service
  • Can generate a self-signed certificate when SSL is enabled

Caddy ​

  • Updates /etc/caddy/Caddyfile with a managed SafeCall block
  • Restarts caddy
  • Uses automatic TLS for domain names
  • If SSL is enabled for an IP target, generates and wires a self-signed certificate

Self-Signed Certificate Renewal ​

Run sudo ./util.sh integrations ssl renew to renew SafeCall-managed self-signed certificates that expire within 30 days. Use --force to renew immediately. The command preserves the certificate host, replaces the certificate and key in place, and restarts the matching reverse proxy. Running sudo ./util.sh integrations cron installs a daily renewal check at 00:10.

Caddy's automatically managed domain certificates remain under Caddy's own renewal process.

Sample Config Output ​

If no server is installed and the user chooses to print sample configuration, the CLI prints sample config blocks for all three supported servers and exits without changing the machine.

Final Report ​

After configuration completes, the CLI prints a detailed report describing:

  • Packages installed
  • Files created or updated
  • Symlinks created
  • Services restarted/reloaded
  • System commands executed
  • Additional notes

This report is intended to make all machine-level changes transparent to the operator.