85 lines
5.8 KiB
PHP
85 lines
5.8 KiB
PHP
<?php
|
|
|
|
return [
|
|
'title' => 'Integrations',
|
|
'subtitle' => 'Connected services, grouped by purpose — credentials and settings side by side, not on separate pages by storage mechanism.',
|
|
|
|
'payments_title' => 'Payments (Stripe)',
|
|
'payments_body' => 'The secret key used to accept payments and verify webhooks.',
|
|
|
|
'dns_title' => 'DNS (Hetzner)',
|
|
'dns_body' => 'The API token, the zone, and where Traefik expects its dynamic configuration.',
|
|
'dns_zone' => 'DNS zone',
|
|
'dns_zone_hint' => 'For example clupilot.com — customer instances get <subdomain>.<zone>.',
|
|
'traefik_path' => 'Traefik dynamic config path',
|
|
'traefik_path_hint' => 'Directory on the traffic host that routes get written into.',
|
|
|
|
'monitoring_title' => 'Monitoring',
|
|
'monitoring_body' => 'The API token and where the Kuma bridge is reachable.',
|
|
'monitoring_url' => 'Monitoring bridge URL',
|
|
'monitoring_url_hint' => 'For example http://kuma-bridge:8080. Leave blank to leave monitoring off.',
|
|
|
|
'vpn_title' => 'VPN/WireGuard',
|
|
'vpn_body' => 'How a new host reaches CluPilot as the VPN hub. The private hub key stays in the server file — only the public half and the address live here.',
|
|
'wg_endpoint' => 'Hub endpoint',
|
|
'wg_endpoint_hint' => 'Publicly reachable address and port, e.g. vpn.clupilot.com:51820.',
|
|
'wg_hub_pubkey' => 'Hub public key',
|
|
'wg_hub_pubkey_hint' => 'Output of wg pubkey < /etc/wireguard/privatekey on this server.',
|
|
|
|
'ssh_title' => 'SSH identity',
|
|
'ssh_body' => 'The key deployed to every fresh host — its public and private halves, together in one place.',
|
|
'ssh_public_key' => 'SSH key (public)',
|
|
'ssh_public_key_hint' => 'Written into authorized_keys during host onboarding.',
|
|
|
|
'save_settings' => 'Save settings',
|
|
'settings_saved' => 'Saved. The new value applies immediately.',
|
|
|
|
// .env editor (Part B).
|
|
'env_title' => 'Advanced: server file (.env)',
|
|
'env_subtitle' => 'Everything above with no field of its own — raw, as it sits on the server. Without this editor, that still needs a shell.',
|
|
'env_locked' => 'Locked. Unlock above to see the server file.',
|
|
|
|
'env_danger_title' => 'These lines can lock you out of the console itself',
|
|
'env_danger_body' => 'A wrong value on one of these lines makes the console unreachable for you too: APP_KEY, DB_* (the database connection), REDIS_* (sessions, cache, queue), SESSION_*. Not blocked — full control was the decision — but these lines are worth a second look.',
|
|
|
|
'env_vault_title' => 'Managed by credential storage',
|
|
'env_vault_body' => 'SecretVault::get() prefers a value stored there and only falls back to the server file when none is stored. While a value is stored above, the matching line below changes nothing — otherwise the console would contradict itself.',
|
|
'env_vault_active' => 'stored — this line has no effect',
|
|
'env_vault_inactive' => 'not stored — this line applies',
|
|
|
|
'env_label' => 'Contents of .env',
|
|
'env_save' => 'Save',
|
|
|
|
'env_backup_title' => 'Backup',
|
|
'env_backup_body' => 'A copy is placed beside .env before every save (filename .env.bak-timestamp). Nothing deletes them automatically.',
|
|
|
|
// queue, queue-provisioning, scheduler and reverb only read .env at
|
|
// their own startup. Until here that was homework — "go restart that
|
|
// yourself" — the same complaint as the update button before it: working
|
|
// back over the command line what the console already knew. Saving now
|
|
// triggers that itself (App\Livewire\Admin\Integrations::saveEnv()):
|
|
// clearing the config cache (immediately, no host agent needed for that)
|
|
// and asking the agent for the restart
|
|
// (App\Services\Deployment\UpdateChannel::requestRestart()).
|
|
'env_restart_title' => 'What happens automatically on save',
|
|
'env_restart_body' => 'queue, queue-provisioning, scheduler and reverb only read .env at their own startup. Saving here therefore triggers this automatically: the configuration cache is cleared, and these four services are restarted. This console itself (app) is never touched — it is serving the very request that triggered this, and its PHP reads .env fresh on every request anyway.',
|
|
'env_restarting' => 'Restarting services …',
|
|
'env_restart_done' => 'Services restarted.',
|
|
|
|
'env_save_title' => 'Really overwrite .env?',
|
|
'env_save_body' => 'It holds every credential in the system. A backup is made first, and the affected services are restarted automatically after saving.',
|
|
'env_save_confirm' => 'Overwrite',
|
|
// Three outcomes after writing, never a glossed-over success message: the
|
|
// restart was requested, or it could not be — because the host agent is
|
|
// not running, or because something else is already in flight — and then
|
|
// the manual command is shown here instead of a promise.
|
|
'env_saved_restarting' => 'Saved. Backup: :backup. Configuration cache cleared — queue, queue-provisioning, scheduler and reverb are restarting now.',
|
|
'env_saved_restart_busy' => 'Saved. Backup: :backup. Another request to the update service is already in flight — the restart does not happen automatically this time. Please run manually: docker compose restart queue queue-provisioning scheduler reverb.',
|
|
'env_saved_no_agent' => 'Saved. Backup: :backup. The server-side update service is not running — queue, queue-provisioning, scheduler and reverb still hold the old values. Please run manually: docker compose restart queue queue-provisioning scheduler reverb.',
|
|
// Only when no .env existed before — then there is nothing to back up.
|
|
'env_no_previous_file' => 'none, no file existed before this',
|
|
|
|
'env_invalid' => 'Line :line is neither blank, a comment, nor KEY=value. Nothing was saved.',
|
|
'env_empty' => 'An empty file would erase every setting. Nothing was saved.',
|
|
];
|