--- title: "infisical gateway" description: "Run the Infisical gateway or manage its systemd service" --- ```bash sudo infisical gateway start --name= --auth-method= ``` ```bash sudo infisical gateway systemd install --token= --domain= --name= ``` ## Description The Infisical gateway provides secure access to private resources using modern TCP-based SSH tunnel architecture with enhanced security and flexible deployment options. The gateway system uses SSH reverse tunnels over TCP, eliminating firewall complexity and providing excellent performance for enterprise environments. **Deprecation and Migration Notice:** The legacy `infisical gateway` command (v1) will be removed in a future release. Please migrate to `infisical gateway start` (Gateway v2). If you are moving from Gateway v1 to Gateway v2, this is NOT a drop-in switch. Gateway v2 creates new gateway instances with new gateway IDs. You must update any existing resources that reference gateway IDs (for example: dynamic secret configs, app connections, or other gateway-bound resources) to point to the new Gateway v2 gateway resource. Until you update those references, traffic will continue to target the old v1 gateway. ## Subcommands & flags Run the Infisical gateway component within your the network where your target resources are located. The gateway establishes an SSH reverse tunnel to a relay server and provides secure access to private resources within your network. ```bash sudo infisical gateway start --name= --auth-method= ``` By default, the gateway automatically connects to the relay with the lowest latency. To target a specific relay, use the `--target-relay-name=` flag. Once started, the gateway component will: - Automatically connect to a healthy relay with the lowest latency (unless the `--target-relay-name` flag is specified) - Establish outbound SSH reverse tunnel to relay server (no inbound firewall rules needed) - Authenticate using SSH certificates issued by Infisical - Automatically reconnect if the connection is lost - Provide access to private resources within your network ### Authentication The Gateway supports multiple authentication methods. Below are the available authentication methods, with their respective flags. The Universal Auth method is a simple and secure way to authenticate with Infisical. It requires a client ID and a client secret to authenticate with Infisical. Your machine identity client ID. Your machine identity client secret. The authentication method to use. Must be `universal-auth` when using Universal Auth. ```bash sudo infisical gateway start --auth-method=universal-auth --client-id= --client-secret= --name= ``` The Native Kubernetes method is used to authenticate with Infisical when running in a Kubernetes environment. It requires a service account token to authenticate with Infisical. Your machine identity ID. Path to the Kubernetes service account token to use. Default: `/var/run/secrets/kubernetes.io/serviceaccount/token`. The authentication method to use. Must be `kubernetes` when using Native Kubernetes. ```bash sudo infisical gateway start --auth-method=kubernetes --machine-identity-id= --name= ``` The Native Azure method is used to authenticate with Infisical when running in an Azure environment. Your machine identity ID. The authentication method to use. Must be `azure` when using Native Azure. ```bash sudo infisical gateway start --auth-method=azure --machine-identity-id= --name= ``` The Native GCP ID Token method is used to authenticate with Infisical when running in a GCP environment. Your machine identity ID. The authentication method to use. Must be `gcp-id-token` when using Native GCP ID Token. ```bash sudo infisical gateway start --auth-method=gcp-id-token --machine-identity-id= --name= ``` The GCP IAM method is used to authenticate with Infisical with a GCP service account key. Your machine identity ID. Path to your GCP service account key file _(Must be in JSON format!)_ The authentication method to use. Must be `gcp-iam` when using GCP IAM. ```bash sudo infisical gateway start --auth-method=gcp-iam --machine-identity-id= --service-account-key-file-path= --name= ``` The AWS IAM method is used to authenticate with Infisical with an AWS IAM role while running in an AWS environment like EC2, Lambda, etc. Your machine identity ID. The authentication method to use. Must be `aws-iam` when using Native AWS IAM. ```bash sudo infisical gateway start --auth-method=aws-iam --machine-identity-id= --name= ``` The OIDC Auth method is used to authenticate with Infisical via identity tokens with OIDC. Your machine identity ID. The OIDC JWT from the identity provider. The authentication method to use. Must be `oidc-auth` when using OIDC Auth. ```bash sudo infisical gateway start --auth-method=oidc-auth --machine-identity-id= --jwt= --name= ``` The JWT Auth method is used to authenticate with Infisical via a JWT token. The JWT token to use for authentication. Your machine identity ID. The authentication method to use. Must be `jwt-auth` when using JWT Auth. ```bash sudo infisical gateway start --auth-method=jwt-auth --jwt= --machine-identity-id= --name= ``` You can use the `INFISICAL_TOKEN` environment variable to authenticate with Infisical with a raw machine identity access token. The machine identity access token to use for authentication. ```bash sudo infisical gateway start --token= --name= ``` ### Other Flags The name of the relay that this gateway should connect to. The relay must be running and registered before starting the gateway. If this flag is omitted, the gateway will automatically connect to a healthy relay with the lowest latency. ```bash # Example sudo infisical gateway start --target-relay-name=my-relay --name=my-gateway --token= ``` **Note:** For Infisical Cloud users using instance relays, the relay infrastructure is already running and managed by Infisical. If using organization relays or self-hosted instance relays, you must first start a relay server. For more information on deploying relays, refer to the [Relay Deployment Guide](/documentation/platform/gateways/relay-deployment). The name of the gateway instance. ```bash # Example sudo infisical gateway start --name=my-gateway --token= ``` Domain of your self-hosted Infisical instance. ```bash # Example sudo infisical gateway start --domain=https://app.your-domain.com --name= ``` Install and enable the gateway as a systemd service. This command must be run with sudo on Linux. ```bash sudo infisical gateway systemd install --token= --domain= --name= ``` ### Requirements - Must be run on Linux - Must be run with root/sudo privileges - Requires systemd ### Flags The machine identity access token to authenticate with Infisical. ```bash # Example sudo infisical gateway systemd install --token= --name= ``` You may also expose the token to the CLI by setting the environment variable `INFISICAL_TOKEN` before executing the install command. Domain of your self-hosted Infisical instance. ```bash # Example sudo infisical gateway systemd install --domain=https://app.your-domain.com --name= ``` The name of the gateway instance. ```bash # Example sudo infisical gateway systemd install --name=my-gateway --token= ``` The name of the relay that this gateway should connect to. The relay must be running and registered before starting the gateway. If this flag is omitted, the gateway will automatically connect to a healthy relay with the lowest latency. ```bash # Example sudo infisical gateway systemd install --target-relay-name=my-relay --token= --name= ``` **Note:** For Infisical Cloud users using instance relays, the relay infrastructure is already running and managed by Infisical. If using organization relays or self-hosted instance relays, you must first start a relay server. For more information on deploying relays, refer to the [Relay Deployment Guide](/documentation/platform/gateways/relay-deployment). ### Service Details The systemd service is installed with secure defaults: - Service file: `/etc/systemd/system/infisical-gateway.service` - Config file: `/etc/infisical/gateway.conf` - Runs with restricted privileges: - InaccessibleDirectories=/home - PrivateTmp=yes - Resource limits configured for stability - Automatically restarts on failure - Enabled to start on boot - Maintains persistent SSH reverse tunnel connections to the specified relay - Handles certificate rotation and connection recovery automatically After installation, manage the service with standard systemd commands: ```bash sudo systemctl start infisical-gateway # Start the service sudo systemctl stop infisical-gateway # Stop the service sudo systemctl status infisical-gateway # Check service status sudo systemctl disable infisical-gateway # Disable auto-start on boot ``` ## Legacy Gateway Commands **This command is deprecated and will be removed in a future release.** Please migrate to `infisical gateway start` for the new TCP-based SSH tunnel architecture. **Migration required:** If you are currently using Gateway v1 (via `infisical gateway`), moving to Gateway v2 is not in-place. Gateway v2 provisions new gateway instances with new gateway IDs. Update any resources that reference a gateway ID (for example: dynamic secret configs, app connections, or other gateway-bound resources) to use the new Gateway v2 gateway ID. Until you update those references, traffic will continue to target the old v1 gateway. Run the legacy Infisical gateway in the foreground. The gateway will connect to the relay service and maintain a persistent connection. ```bash infisical gateway --domain= --auth-method= ``` ### Authentication The Infisical CLI supports multiple authentication methods. Below are the available authentication methods, with their respective flags. The Universal Auth method is a simple and secure way to authenticate with Infisical. It requires a client ID and a client secret to authenticate with Infisical. Your machine identity client ID. Your machine identity client secret. The authentication method to use. Must be `universal-auth` when using Universal Auth. ```bash infisical gateway --auth-method=universal-auth --client-id= --client-secret= ``` The Native Kubernetes method is used to authenticate with Infisical when running in a Kubernetes environment. It requires a service account token to authenticate with Infisical. Your machine identity ID. Path to the Kubernetes service account token to use. Default: `/var/run/secrets/kubernetes.io/serviceaccount/token`. The authentication method to use. Must be `kubernetes` when using Native Kubernetes. ```bash infisical gateway --auth-method=kubernetes --machine-identity-id= ``` The Native Azure method is used to authenticate with Infisical when running in an Azure environment. Your machine identity ID. The authentication method to use. Must be `azure` when using Native Azure. ```bash infisical gateway --auth-method=azure --machine-identity-id= ``` The Native GCP ID Token method is used to authenticate with Infisical when running in a GCP environment. Your machine identity ID. The authentication method to use. Must be `gcp-id-token` when using Native GCP ID Token. ```bash infisical gateway --auth-method=gcp-id-token --machine-identity-id= ``` The GCP IAM method is used to authenticate with Infisical with a GCP service account key. Your machine identity ID. Path to your GCP service account key file _(Must be in JSON format!)_ The authentication method to use. Must be `gcp-iam` when using GCP IAM. ```bash infisical gateway --auth-method=gcp-iam --machine-identity-id= --service-account-key-file-path= ``` The AWS IAM method is used to authenticate with Infisical with an AWS IAM role while running in an AWS environment like EC2, Lambda, etc. Your machine identity ID. The authentication method to use. Must be `aws-iam` when using Native AWS IAM. ```bash infisical gateway --auth-method=aws-iam --machine-identity-id= ``` The OIDC Auth method is used to authenticate with Infisical via identity tokens with OIDC. Your machine identity ID. The OIDC JWT from the identity provider. The authentication method to use. Must be `oidc-auth` when using OIDC Auth. ```bash infisical gateway --auth-method=oidc-auth --machine-identity-id= --jwt= ``` The JWT Auth method is used to authenticate with Infisical via a JWT token. The JWT token to use for authentication. Your machine identity ID. The authentication method to use. Must be `jwt-auth` when using JWT Auth. ```bash infisical gateway --auth-method=jwt-auth --jwt= --machine-identity-id= ``` You can use the `INFISICAL_TOKEN` environment variable to authenticate with Infisical with a raw machine identity access token. The machine identity access token to use for authentication. ```bash infisical gateway --token= ``` ### Other Flags Domain of your self-hosted Infisical instance. ```bash # Example infisical gateway --domain=https://app.your-domain.com ``` **This command is deprecated and will be removed in a future release.** Please migrate to `infisical gateway systemd install` for the new TCP-based SSH tunnel architecture with enhanced security and better performance. **Migration required:** If you previously installed Gateway v1 via `infisical gateway install`, moving to Gateway v2 is not in-place. Gateway v2 provisions new gateway instances with new gateway IDs. Update any resources that reference a gateway ID (for example: dynamic secret configs, app connections, or other gateway-bound resources) to use the new Gateway v2 gateway ID. Until you update those references, traffic will continue to target the old v1 gateway. Install and enable the legacy gateway as a systemd service. This command must be run with sudo on Linux. ```bash sudo infisical gateway install --token= --domain= ``` ### Requirements - Must be run on Linux - Must be run with root/sudo privileges - Requires systemd ### Flags The machine identity access token to authenticate with Infisical. ```bash # Example sudo infisical gateway install --token= ``` You may also expose the token to the CLI by setting the environment variable `INFISICAL_TOKEN` before executing the install command. Domain of your self-hosted Infisical instance. ```bash # Example sudo infisical gateway install --domain=https://app.your-domain.com ``` ### Service Details The systemd service is installed with secure defaults: - Service file: `/etc/systemd/system/infisical-gateway.service` - Config file: `/etc/infisical/gateway.conf` - Runs with restricted privileges: - InaccessibleDirectories=/home - PrivateTmp=yes - Resource limits configured for stability - Automatically restarts on failure - Enabled to start on boot After installation, manage the service with standard systemd commands: ```bash sudo systemctl start infisical-gateway # Start the service sudo systemctl stop infisical-gateway # Stop the service sudo systemctl status infisical-gateway # Check service status sudo systemctl disable infisical-gateway # Disable auto-start on boot ``` ## Frequently Asked Questions If the `--target-relay-name` flag is omitted, the gateway automatically selects the optimal relay. It first checks for healthy organization relays and connects to the one with the lowest latency. If no organization relays are available, it then performs the same latency-based selection among the available managed relays. No. The first time the gateway starts, it selects the optimal relay (based on latency) and caches that selection. On subsequent restarts, it will prioritize connecting to the cached relay. If it's unable to connect, it will then re-evaluate and connect to the next most optimal relay available.