Skip to content
Fluxer API

rexctl commands

This page is made from the help that rexctl prints, and rexctl <command> --help shows the same text in the terminal.

  • --dir string

    Folder with your instance.

  • -q, --quiet

    Print only errors and results.

  • --verbose

    Print every step and command.

  • -y, --yes

    Answer yes to every question and never prompt.

Choose who can manage your instance.

Make an account an admin.

Terminal window
rexctl admins add <user>

Remove admin access from an account.

Terminal window
rexctl admins remove <user>

Print a link that signs an admin in once. Use it to get in when Require SSO is on and your sign-in provider is down or set up wrong. See https://docs.fluxer.com/operator/sign-in/#single-sign-on.

Terminal window
rexctl admins sign-in-link <user>

Show whether rexctl upgrades Fluxer, or the voice servers on a voice machine, by itself, when it runs next and how the last run went. Each run is rexctl upgrade --yes and works like an upgrade you run yourself.

Terminal window
rexctl auto-upgrade [flags]
  • --json

    Print JSON.

Stop upgrading Fluxer by itself. This also stops the monthly full backup that --full-backup turned on.

Terminal window
rexctl auto-upgrade off

Run rexctl upgrade --yes by itself with a systemd timer, or with cron on machines without systemd. It runs every day, or once a week on the day you pass to --day. Pass several times to --at, like 06:00,18:00, to run more than once on those days. Each run backs up your instance first and goes back to the release you had if the new one doesn't start. It skips that run if another rexctl command is changing the instance, and tries again at the next one. A weekly run that is skipped or fails waits a week, and you can run rexctl upgrade yourself at any time. With --full-backup monthly it also makes a full backup with uploads on the 1st of every month, 3 hours before the first upgrade time of the day. Run it again to change the day, the time, the backups or the address. Leaving out a flag sets it back to its default, and leaving out --notify stops the notifications.

With --notify, rexctl posts JSON to the address when an upgrade installs a new release or fails: instance, status (upgraded or failed), release, and the message as both text and content, which Slack and Discord webhooks show as they are. For ntfy, add ?tpl=1&m={{.text}} to the topic address.

Terminal window
rexctl auto-upgrade on [flags]
  • --at string

    Time of day to upgrade, as HH:MM in this machine's time zone. Separate several times with commas, like 06:00,18:00. The default is 04:00.

  • --backup string

    What the backup before each upgrade holds, full or without-uploads. When an upgrade changes how uploads are stored, the backup includes them anyway. The default is full.

  • --day string

    Run once a week on this day, like sun. Leave it out to run every day.

  • --full-backup string

    Pass monthly to also make a full backup with uploads on the 1st of every month.

  • --notify string

    Web address rexctl posts to when an upgrade installs a new release or fails.

Back up your instance in one file that restores on this machine or a new one. It has the database, search data and uploads that Fluxer stores itself. Fluxer pauses while uploads are copied.

Terminal window
rexctl backup

Show or change how many backups rexctl keeps. After each backup, rexctl deletes the oldest ones beyond this number, except the backup that rexctl rollback needs and the newest backup with uploads. Pass all to keep every backup.

Terminal window
rexctl backup keep [count|all] [flags]
  • --json

    Print JSON.

List your backups.

Terminal window
rexctl backup list [flags]
  • --json

    Print JSON.

Show the folder rexctl saves backups in, or pass a full path to save new backups there. Backups that are already saved stay where they are.

Terminal window
rexctl backup location [folder] [flags]
  • --json

    Print JSON.

Check that a backup is complete and readable.

Terminal window
rexctl backup verify <file>

Change your instance's name, colour and images.

Change the name, colour, logo or icon.

Terminal window
rexctl branding set [flags]
  • --colour string

    Accent colour as a hex code, like #4641d9.

  • --icon string

    Image file for the icon.

  • --logo string

    Image file for the logo.

  • --name string

    Your instance's name.

Read and change Fluxer's settings.

Opens custom.compose.yml in $VISUAL or $EDITOR. rexctl checks the file, says which services restart and applies it once you agree. Your file stays as it was until it passes the check.

Terminal window
rexctl config edit

Show one setting.

Terminal window
rexctl config get <key> [flags]
  • --json

    Print JSON.

  • --reveal

    Print a secret rexctl keeps.

List every setting with its value and help.

Terminal window
rexctl config list [flags]
  • --json

    Print JSON.

Change one or more settings.

Terminal window
rexctl config set <key> <value> | <key>=<value>... [flags]
  • --migrate-identities

    When sso.issuer changes, move SSO links to the new issuer.

  • --no-migrate-identities

    When sso.issuer changes, leave SSO links on the old issuer.

Go back to the default for one or more settings.

Terminal window
rexctl config unset <key>...

Check your instance and this machine for problems.

Terminal window
rexctl doctor [flags]
  • --fix

    Fix the problems rexctl can fix safely.

  • --json

    Print JSON.

Stop Fluxer and remove its containers and networks, like docker compose down. Your data, settings, backups and images stay. Fluxer stays stopped until you run rexctl start, which creates the containers again.

Terminal window
rexctl down

Writes every setting into the instance folder for docker compose and stops rexctl from changing the instance. Fluxer keeps running. Run rexctl takeover to hand it back.

Terminal window
rexctl eject

Set up how your instance sends email.

Stop sending email.

Terminal window
rexctl email off

Set the SMTP server.

Terminal window
rexctl email set [flags]
  • --from string

    Sender, like Example Chat <noreply@chat.example.com>.

  • --host string

    The SMTP server.

  • --password-file string

    File with the SMTP password, or - for stdin.

  • --port int

    The SMTP port. The default is 587.

  • --tls string

    How the connection is encrypted (starttls, implicit, opportunistic or none). Picked from the port when left out.

  • --username string

    The username for the SMTP server.

Send a test email.

Terminal window
rexctl email test [address]

Install Fluxer on this machine, or take over an existing install.

Terminal window
rexctl install [flags]
  • --admin-email string

    Email address for your admin account.

  • --admin-password-file string

    File with your admin password, or - for stdin.

  • --admin-username string

    Username for your admin account.

  • --behind-proxy

    Serve plain HTTP for your own reverse proxy.

  • --bind string

    Address your proxy connects to, with --behind-proxy. The default is 127.0.0.1:8080.

  • --confirm string

    Your instance's domain, to confirm without a prompt.

  • --delete-old-data

    Delete Fluxer data found on this machine and start fresh.

  • --domain string

    Address people will use to open your instance, like chat.example.com.

  • --dry-run

    Show what would happen without changing anything.

  • --engine string

    Container engine to use (docker or podman).

  • --install-docker

    Install Docker if it's missing. The default is true.

  • --memory-profile string

    Pin small, medium or large instead of sizing Fluxer to this machine on every start.

  • --name string

    Your instance's name.

  • --no-bundled-voice

    Run without the bundled LiveKit and use only voice servers you add later.

  • --no-start

    Write the files without starting Fluxer.

  • --open-firewall

    Open the ports Fluxer needs in ufw or firewalld. The default is true.

  • --project string

    Name for this instance's containers and volumes, for running more than one instance on a host. The default is fluxer.

  • --registration string

    Who can create an account (invite, approval, open or closed).

  • --setup string

    Where to create your admin account (terminal or browser).

  • --setup-podman

    Start Podman's API socket and start Fluxer with the machine. The default is true.

  • --sign-in string

    How people sign in (email or username).

  • --skip-email

    Set up email later.

  • --smtp-from string

    Sender, like Example Chat <noreply@chat.example.com>.

  • --smtp-host string

    The SMTP server.

  • --smtp-password-file string

    File with the SMTP password, or - for stdin.

  • --smtp-port int

    The SMTP port. The default is 587.

  • --smtp-tls string

    How the connection is encrypted (starttls, implicit, opportunistic or none). Picked from the port when left out.

  • --smtp-username string

    The username for the SMTP server.

  • --storage-access-key string

    The object store access key.

  • --storage-bucket-prefix string

    Text to put before each bucket name, like chat- for chat-fluxer.

  • --storage-endpoint string

    Your own S3-compatible object store, like https://s3.example.com, instead of the bundled one.

  • --storage-path-style

    Put the bucket in the path of object store addresses instead of the host name. The default is true.

  • --storage-public-endpoint string

    The object store address browsers use, when it differs from --storage-endpoint.

  • --storage-region string

    The object store region (found from --storage-endpoint when it can be).

  • --storage-secret-key-file string

    File with the object store secret key, or - for stdin.

  • --take-over

    Take over Fluxer data found on this machine.

  • --voice-ip string

    Public IP address for voice and video (found automatically).

  • --voice-tcp-port int

    TCP port for voice and video, for running more than one instance on a host.

  • --voice-udp-port int

    UDP port for voice and video, for running more than one instance on a host.

Manage invite links for new accounts.

Create an invite link.

Terminal window
rexctl invites create [flags]
  • --expires string

    How long the link works, like 12h, 7d or never. The default is 7d.

  • --label string

    A note to help you recognise the link.

  • --uses int

    How many people can use the link, or 0 for no limit. The default is 1.

List invite links.

Terminal window
rexctl invites list [flags]
  • --json

    Print JSON.

Stop an invite link from working.

Terminal window
rexctl invites revoke <id>

Show logs from your instance.

The services are web, api, worker, gateway, voice, media, edge, admin, push, database, search, storage, cache, queue and internal. Without a service, rexctl shows every service.

Terminal window
rexctl logs [service] [flags]
  • -f, --follow

    Keep printing new lines.

  • --since string

    Show lines newer than this, like 10m or 2h.

Use your own reverse proxy in front of Fluxer.

Serve HTTPS directly with a certificate from Let's Encrypt.

Terminal window
rexctl proxy off

Serve plain HTTP for your own proxy.

Terminal window
rexctl proxy on [flags]
  • --bind string

    Address your proxy connects to, kept when left out (127.0.0.1:8080 the first time).

Choose who can create an account.

Approve a person waiting for approval.

Terminal window
rexctl registration approve <id>

Turn down a person waiting for approval.

Terminal window
rexctl registration deny <id>

List people waiting for approval.

Terminal window
rexctl registration pending [flags]
  • --json

    Print JSON.

Set who can create an account.

Terminal window
rexctl registration set <open|approval|invite|closed>

Restart your instance.

Terminal window
rexctl restart

Restore your instance from a backup. This works on a new machine too. Copy the backup file there and run this command. A backup without uploads restores only on the instance it was made for, and the uploads there stay as they are.

Terminal window
rexctl restore <file> [flags]
  • --confirm string

    Your instance's domain, to confirm without a prompt.

  • --engine string

    Move the instance to another engine while restoring (docker).

Go back to the release you ran before the last upgrade.

Terminal window
rexctl rollback [flags]
  • --confirm string

    Your instance's domain, to confirm without a prompt.

  • --dry-run

    Show what would happen without changing anything.

  • --restore-database

    Also restore the database from the backup taken before the upgrade.

Manage search on your instance.

Rebuild every search index from your data, with the messages in every channel and DM. Search shows partial results until it finishes. If a rebuild is already running, rexctl follows that one, and stopping rexctl doesn't stop the rebuild.

Terminal window
rexctl search reindex [flags]
  • --no-wait

    Start the rebuild and return without waiting for it.

Create the admin account and finish setup in the terminal.

Terminal window
rexctl setup [flags]
  • --admin-email string

    Email address for your admin account.

  • --admin-password-file string

    File with your admin password, or - for stdin.

  • --admin-username string

    Username for your admin account.

  • --name string

    Your instance's name.

  • --registration string

    Who can create an account (invite, approval, open or closed).

  • --sign-in string

    How people sign in (email or username).

  • --skip-email

    Set up email later.

  • --smtp-from string

    Sender, like Example Chat <noreply@chat.example.com>.

  • --smtp-host string

    The SMTP server.

  • --smtp-password-file string

    File with the SMTP password, or - for stdin.

  • --smtp-port int

    The SMTP port. The default is 587.

  • --smtp-tls string

    How the connection is encrypted (starttls, implicit, opportunistic or none). Picked from the port when left out.

  • --smtp-username string

    The username for the SMTP server.

Show the setup token for the browser.

Terminal window
rexctl setup token

Start your instance.

Terminal window
rexctl start

Show whether your instance is running.

Terminal window
rexctl status [flags]
  • --json

    Print JSON.

Stop Fluxer and keep its containers. Fluxer stays stopped until you run rexctl start. To remove the containers too, run rexctl down.

Terminal window
rexctl stop

Hands an instance made by the old installer, by hand with docker compose, or released with rexctl eject over to rexctl. Fluxer keeps running as it is.

Terminal window
rexctl takeover [flags]
  • --dry-run

    Show what would change without changing anything.

Remove Fluxer from this machine, with its data and backups unless you pass --keep-data. To stop Fluxer and keep everything, run rexctl stop or rexctl down.

Terminal window
rexctl uninstall [flags]
  • --confirm string

    Your instance's domain, to confirm without a prompt.

  • --keep-data

    Keep your data and backups.

Upgrade rexctl and Fluxer to the latest release.

Terminal window
rexctl upgrade [flags]
  • --backup string

    What the backup before this upgrade holds, full or without-uploads. When the upgrade changes how uploads are stored, the backup includes them anyway. The default is full.

  • --check

    Show whether an upgrade is available without changing anything.

  • --dry-run

    Show what would happen without changing anything.

  • --json

    Print JSON.

  • --no-backup

    Skip the backup before upgrading.

  • --prefetch

    Download the new version and upgrade later.

  • --to string

    Upgrade to this version, not the latest.

Show which instance rexctl uses when you don't pass --dir and aren't in an instance folder, or pass a folder to use that instance from now on. rexctl remembers each instance it installs. You only need this with more than one instance or one installed by an older rexctl. Each account has its own choice. Root's choice also applies to accounts that have no instance of their own. The services rexctl sets up for starting and upgrading Fluxer always pass their own folder, and this choice doesn't change them.

Terminal window
rexctl use [folder]

Manage accounts on your instance.

Ban an account.

Terminal window
rexctl users ban <user> [flags]
  • --delete-messages

    Also delete their messages.

  • --reason string

    Why you're banning them, one of spam, scam, harassment, hate, threats, raids, automation, ban-evasion, impersonation, malware, doxxing, intimate-images, explicit-content, adult-content, violence, self-harm, illegal, deception, exploits or report-abuse.

Create an account and print a link to set its password.

Terminal window
rexctl users create <username> [flags]
  • --admin

    Make the account an admin.

  • --email string

    Email address for the account.

Delete an account and its data.

Terminal window
rexctl users delete <user> [flags]
  • --confirm string

    Your instance's domain, to confirm without a prompt.

Turn off two-factor authentication for an account.

Terminal window
rexctl users disable-mfa <user>

List accounts.

Terminal window
rexctl users list [flags]
  • --admins

    Only show admins.

  • --json

    Print JSON.

  • --search string

    Only show accounts that match this text.

Print a link to set a new password.

Terminal window
rexctl users reset-link <user>

Show one account.

Terminal window
rexctl users show <user> [flags]
  • --json

    Print JSON.

Sign an account out everywhere.

Terminal window
rexctl users sign-out <user>

Lift a ban.

Terminal window
rexctl users unban <user>

Show the rexctl and Fluxer versions.

Terminal window
rexctl version [flags]
  • --json

    Print JSON.

Run standalone LiveKit voice servers next to Fluxer with rexctl voice add, or on other machines with rexctl voice token and rexctl voice join.

To run without the bundled voice server, run rexctl config set voice.bundled false, or install with rexctl install --no-bundled-voice. Calls then go only to the servers you add. rexctl config set voice.bundled true brings the bundled server back.

Add standalone LiveKit voice servers next to your Fluxer instance on this machine. Each one gets its own ID, ports, keys and path on your domain, and rexctl registers it with your instance.

Terminal window
rexctl voice add [flags]
  • --count int

    How many servers to add. The default is 1.

  • --dry-run

    Show what would happen and change nothing.

  • --force

    Add servers even when Fluxer runs through a tunnel.

  • --id string

    Server ID, such as fra-server-2.

  • --image string

    LiveKit image to run.

  • --ip string

    Public IPv4 address LiveKit gives to clients, also the address the ports bind to when it's on this machine.

  • --ipv6 string

    Public IPv6 address LiveKit gives to clients.

  • --lat float

    Latitude of the server.

  • --long float

    Longitude of the server.

  • --memory string

    Memory limit for the server, such as 2g.

  • --new-region string

    Create a voice region with this ID for the servers.

  • --no-firewall

    Leave the firewall on this machine alone.

  • --no-ipv6

    Give clients only the IPv4 address, even when this machine has IPv6.

  • --region string

    Existing voice region for the server.

  • --region-name string

    Name of the new region.

  • --soft-limit int

    Connections above which placement prefers another server.

  • --tcp-port int

    TCP port for media.

  • --udp-port int

    UDP port for media.

Move a voice server on this machine to a hostname once its DNS record points here. rexctl gets a certificate and updates the server's endpoint on the instance.

Terminal window
rexctl voice hostname <id> <host>

Install a standalone LiveKit voice server on this machine and register it with the Fluxer instance at <domain>. Get the token with rexctl voice token on the Fluxer machine, or with Add a voice server in the admin panel. The token works once. rexctl also reads it from FLUXER_VOICE_JOIN_TOKEN or, with --token-stdin, from standard input. The server offers IPv4 and IPv6 when the machine has both. On a machine with only IPv6, pass --hostname with an AAAA record that points here.

Terminal window
rexctl voice join <domain> [token] [flags]
  • --dry-run

    Show what would happen and change nothing.

  • --email string

    Email address for Let's Encrypt notices.

  • --endpoint string

    Public wss:// URL of the server behind your own proxy.

  • --hostname string

    Hostname for the server's endpoint and certificate.

  • --http-bind string

    Address the port for your own proxy listens on, with --no-edge (default 127.0.0.1).

  • --http-port int

    Port for your own proxy, with --no-edge.

  • --id string

    Server ID, such as fra-server-2.

  • --image string

    LiveKit image to run.

  • --ip string

    Public IPv4 address LiveKit gives to clients, also the address the ports bind to when it's on this machine.

  • --ipv6 string

    Public IPv6 address LiveKit gives to clients.

  • --lat float

    Latitude of the server.

  • --long float

    Longitude of the server.

  • --memory string

    Memory limit for the server, such as 2g.

  • --no-edge

    Start no edge and publish the server's HTTP port for your own proxy.

  • --no-firewall

    Leave the firewall on this machine alone.

  • --no-ipv6

    Give clients only the IPv4 address, even when this machine has IPv6.

  • --region string

    Existing voice region for the server.

  • --soft-limit int

    Connections above which placement prefers another server.

  • --tcp-port int

    TCP port for media.

  • --token-stdin

    Read the join token from standard input.

  • --udp-port int

    UDP port for media.

List voice servers.

Terminal window
rexctl voice list [flags]
  • --json

    Print JSON.

Drain, unregister and delete a voice server.

Terminal window
rexctl voice remove [id] [flags]
  • --all

    Remove every voice server and the edge on this machine.

  • --drain-timeout duration

    How long to wait for calls to end. The default is 15m0s.

  • --now

    Don't wait for calls to end.

Show the voice servers on this machine.

Terminal window
rexctl voice status [id]

Join a throwaway room on a voice server and report which transports connect. On the Fluxer machine it can test any server of the instance, including servers on other machines.

Terminal window
rexctl voice test [id]

Create a join token and print the command that installs a voice server with it. The token works once.

Terminal window
rexctl voice token [flags]
  • --expires string

    How long the token works, at most 24h. The default is 1h.

  • --hostname string

    Hostname the server must use.

  • --id string

    Server ID.

  • --internal-endpoint string

    URL the API uses to connect to the server, such as http://10.0.0.5:7880.

  • --lat float

    Latitude of the new region.

  • --long float

    Longitude of the new region.

  • --name string

    A note for the server.

  • --new-region string

    Create a region with this ID when the server joins.

  • --region string

    Existing region for the server.

  • --region-name string

    Name of the new region.

  • --soft-limit int

    Connections above which placement prefers another server.

List join tokens.

Terminal window
rexctl voice token list [flags]
  • --json

    Print JSON.

Stop a join token from working.

Terminal window
rexctl voice token revoke <token id>