User GuideCLI
Accessing Services

Overview

Once you're connected to the Cluster (read more here), you can access a Service using its private hostname or full FQDN. For example, you might first want to list all the available Services in the Cluster as follows:

export OCTELIUM_DOMAIN=example.com
octelium get service
# OR simply
octelium get svc

The output of the command above should give your the list of the available Services in your Cluster. Here is an example:

NAME | NAMESPACE | PORT | TYPE | ADDRESSES | DESCRIPTION | TLS | PUBLIC
-------------------+-----------+------+------+----------------------------+--------------------------------+------+---------
demo-nginx | default | 80 | WEB | 100.64.0.23, fdee:e801::17 | A Demo nginx server that | | True
| | | | | is deployed as a managed | |
| | | | | container and accessible by | |
| | | | | all Users | |
| | | | | dashboard | |
essh | default | 22 | SSH | 100.64.0.34, fdee:e801::22 | | |
pg2 | default | 5432 | TCP | 100.64.0.36, fdee:e801::24 | | |
nginx | default | 80 | WEB | 100.64.0.38, fdee:e801::26 | | | True
code | default | 8080 | WEB | 100.64.0.43, fdee:e801::2b | | | True
ssh-h01 | default | 22 | SSH | 100.64.0.42, fdee:e801::2a | | |

For example, the demo-nginx in the list above is a WEB, basically an HTTP-based Service. This Service is listening over the standard HTTP port 80. You can simply access it via curl or your browser at the URL http://demo-nginx. Here is an example:

curl demo-nginx

You can also use the entire private FQDN of the Service as follows:

curl demo-nginx.local.<DOMAIN>

And you can also directly access the Service via its private IPv6 or IPv4 IP addresses. For example, you might have to directly use the IP addresses if you're disabling the Cluster private DNS Server via the --no-dns flag in the octelium connect command (read more here). By default, octelium connect usually uses IPv6-only tunneling when connected to the Cluster. Here is an example:

curl http://[\fdee:e801::17\]

If your octelium connect command is enabling IPv4 (read more here), then you can access the Service as follows:

curl http://100.64.0.23

For SSH-based Services, you can simply use the standard OpenSSH client. For example, there is a ssh-h01 SSH-based Service in the list above, we can access it simply as follows:

ssh ssh-h01

The ssh-h01 above is listening over the standard SSH port 22. If it is listening over some custom port number, e.g. 2022, we can simply use -p flag as follows:

ssh -p 2022 ssh-h01

The same goes for POSTGRES-based Services. You can for example use standard psql as follows:

psql -h my-postgres-db-1

TLS

For Services that are listening over TLS, you should use the full private FQDN of the Service. For example, if the Servicenginx belonging to the default Namespace is TLS-enabled and listening over the standard port 443, then you can access it as follows:

curl https://nginx.local.<DOMAN>

Namespaces

for Service that belong to Namespaces other than the default Namespace (read more about Namespaces here), you can address them via the hostname <SERVICE_NAME>.<NAMESPACE_NAME>. For example, if you have an nginx Service in the production Namespace. You can access it as follows:

curl nginx.production

And you can also use its full private FQDN as follows:

curl nginx.production.local.<DOMAIN>
NOTE

While Octelium's private DNS Server can resolve hostnames of Services belonging to Namespaces other than default (e.g. nginx.production), it is always much more recommended to use the full private FQDN whenever possible.

Mapping a Service to Localhost

You can also publish, or simply map, a certain Service to your localhost when you connect to the Cluster via the -p or --publish flag (read more here). Here is an example:

octelium connect -p demo-nginx:8000

In such case, you can simply access the demo-nginx as follows:

curl localhost:8000
NOTE

Accessing Services through mapping them to localhost is the only way possible to access Services when connecting to the Cluster via the rootless mode (i.e. using octelium connect as an unprivileged/non-root OS user)

Embedded SSH

If you want to access an embedded SSH Service (read more about embedded SSH here), you need to specify the name of the connected Session as the SSH user. For example, you can list the available Cluster's Sessions as follows:

octeliumctl get session
#or simply
octeliumctl get sess

The output of the command above should look as following:

NAME | USER | TYPE | EXPIRES IN | AGE | STATE | CONNECTED
--------------+------+----------------------+------------+------+--------+------------
root-zxklxg | root | CLIENT | 83d | 6d6h | ACTIVE |
usr1-9o2ztp | usr1 | CLIENT | 83d | 6d5h | ACTIVE | True
usr1-pv0mo9 | usr1 | CLIENTLESS (Browser) | 157m | 13h | ACTIVE |

Now, we see that the usr1-9o2ztp Session is connected. Now, assuming that our embedded SSH Service has the name essh in the default Namespace, if that Session is explicitly serving embedded SSH via the --essh flag (read more here), then we can simply SSH into that Session's host as follows:

ssh usr1-9o2ztp@essh
© 2025 octelium.comOctelium Labs, LLCAll rights reserved
Octelium and Octelium logo are trademarks of Octelium Labs, LLC.
WireGuard is a registered trademark of Jason A. Donenfeld