| title | Management CLI |
|---|---|
| description | Manage your self-hosted Nixopus instance from the command line. |
After installation, the nixopus command is available at /usr/local/bin/nixopus. All commands require root.
sudo nixopus status| Command | Description |
|---|---|
nixopus status |
Show service health |
nixopus logs [service] |
Tail logs |
nixopus update |
Pull latest images and restart |
nixopus restart [service] |
Restart all or a specific service |
nixopus stop |
Stop all services |
nixopus config |
Show current configuration |
nixopus config set KEY=VALUE |
Update a config value (restart required) |
nixopus domain add <domain> [flags] |
Switch to domain-based HTTPS |
nixopus domain remove |
Switch back to IP-based HTTP |
nixopus ip set [flags] <ip> |
Change host IP |
nixopus port set <http|https|ssh> <port> |
Change a port |
nixopus backup |
Backup database and config |
nixopus admin-bootstrap [email] [password] |
Create the initial admin via the auth API |
nixopus uninstall |
Remove containers (keeps data) |
nixopus uninstall --purge |
Remove everything including data |
When a command accepts a [service] argument, use one of:
nixopus-apinixopus-authnixopus-viewnixopus-caddynixopus-agentnixopus-dbnixopus-redis
nixopus statusnixopus logs nixopus-apiEnsure DNS is configured before running this.
nixopus domain add panel.example.com| Flag | Description |
|---|---|
--ipv4 |
Use IPv4 (A record). This is the default. |
--ipv6 |
Use IPv6 (AAAA record). |
--verify=auto|strict|off |
DNS verification mode (default auto). auto warns on mismatch but proceeds. strict aborts on mismatch. off skips verification entirely (use when behind Cloudflare or a proxy). |
The --ipv4/--ipv6 flag overrides the instance-level IP_FAMILY for this command only. When omitted, the configured IP_FAMILY is used.
# Add domain with IPv6
nixopus domain add panel.example.com --ipv6
# Add domain behind Cloudflare proxy (skip DNS check)
nixopus domain add panel.example.com --verify=off
# Strict verification — abort if DNS doesn't match
nixopus domain add panel.example.com --verify=strictnixopus domain remove# Set IPv4 (default)
nixopus ip set 93.184.216.34
# Set IPv6 explicitly
nixopus ip set --ipv6 2001:db8::1
# Auto-detected: addresses containing ":" are treated as IPv6
nixopus ip set 2001:db8::1When setting an IPv6 address while IP_FAMILY is still ipv4, the CLI prints a hint to enable dual-stack with nixopus config set IP_FAMILY=dual.
nixopus config set LOG_LEVEL=info
nixopus restartnixopus admin-bootstrap creates the first admin account by calling Better Auth's POST /api/auth/sign-up/email through Caddy. Use it when the install-time bootstrap was skipped (no ADMIN_EMAIL set), failed (auth service slow to start, origin mismatch), or when you want to recreate the admin from the values stored in .env.
sudo nixopus admin-bootstrapBy default it uses ADMIN_EMAIL and ADMIN_PASSWORD from /opt/nixopus/.env. You can override one or both inline:
sudo nixopus admin-bootstrap admin@example.com 'NewPass!23'Behavior:
- Returns immediately with a success message if the admin already exists (
USER_ALREADY_EXISTS_USE_ANOTHER_EMAILfrom the auth service). - Prints the auth service's
codefield on validation failures (PASSWORD_TOO_SHORT,INVALID_ORIGIN,EMAIL_PASSWORD_SIGN_UP_DISABLED, etc.). - Polls for up to
ADMIN_BOOTSTRAP_TIMEOUTseconds (default30for the CLI,60during install) so the auth service has time to come up.
The password must satisfy the auth service rules.