# Linux

Linux doesn't have one universal proxy setting — there's the shell environment, the desktop environment (GNOME / KDE), and per-app config. This page covers the patterns you actually need.

## Environment variables (cli + most apps)

The de-facto standard. Works for curl, wget, apt, pip, npm, git, and most server software.

```bash
export http_proxy="http://helo_s1a2b3c4d5e-type-res-region-us:PASSWORD@gate.helodata.io:7777"
export https_proxy="$http_proxy"
export no_proxy="localhost,127.0.0.1,.local"
# Also set the uppercase variants — some apps only honor those:
export HTTP_PROXY="$http_proxy"
export HTTPS_PROXY="$https_proxy"
export NO_PROXY="$no_proxy"
```

Put it in `~/.bashrc`, `~/.zshrc`, or `/etc/environment` for persistence.

## GNOME

```bash
gsettings set org.gnome.system.proxy mode 'manual'
gsettings set org.gnome.system.proxy.http  host 'gate.helodata.io'
gsettings set org.gnome.system.proxy.http  port 7777
gsettings set org.gnome.system.proxy.https host 'gate.helodata.io'
gsettings set org.gnome.system.proxy.https port 7777
```

GNOME's proxy dialog does not store credentials — set them via the secret-tool or per-app. Easier: just use envvars from a terminal-launched session.

## KDE

**System Settings → Network → Proxy → Use manually specified proxy**. Fill the same host/port. KDE stores creds in KWallet.

## apt (Debian / Ubuntu)

Create `/etc/apt/apt.conf.d/99helo-proxy`:

```
Acquire::http::Proxy "http://helo_s1a2b3c4d5e-type-res-region-us:PASSWORD@gate.helodata.io:7777";
Acquire::https::Proxy "http://helo_s1a2b3c4d5e-type-res-region-us:PASSWORD@gate.helodata.io:7777";
```

## yum / dnf (RHEL / Fedora)

Add to `/etc/yum.conf` (yum) or `/etc/dnf/dnf.conf` (dnf):

```
proxy=http://gate.helodata.io:7777
proxy_username=helo_s1a2b3c4d5e-type-res-region-us
proxy_password=PASSWORD
```

## Docker

Daemon-level (affects image pulls):

```bash
mkdir -p /etc/systemd/system/docker.service.d
cat > /etc/systemd/system/docker.service.d/proxy.conf <<EOF
[Service]
Environment="HTTP_PROXY=http://helo_s1a2b3c4d5e-type-res-region-us:PASSWORD@gate.helodata.io:7777"
Environment="HTTPS_PROXY=http://helo_s1a2b3c4d5e-type-res-region-us:PASSWORD@gate.helodata.io:7777"
EOF
systemctl daemon-reload
systemctl restart docker
```

Container-level — pass `--env http_proxy=…` per `docker run` or build.

## systemd services

For a service to pick up a proxy, add to its unit file:

```
[Service]
Environment="HTTP_PROXY=http://helo_s1a2b3c4d5e-type-res-region-us:PASSWORD@gate.helodata.io:7777"
Environment="HTTPS_PROXY=http://helo_s1a2b3c4d5e-type-res-region-us:PASSWORD@gate.helodata.io:7777"
```

then `systemctl daemon-reload && systemctl restart <service>`.

## Verify

```bash
curl https://ipv4.icanhazip.com
```

## Common pitfalls

* **Case-sensitive envvars** — many apps only respect lowercase `http_proxy`, some only uppercase. Set both.
* **`localhost` bypass missing** — without `no_proxy=localhost`, local dev servers route through helodata and fail.
* **Special characters in password** — URL-encode (`@` → `%40`, `:` → `%3A`) when embedding in `http_proxy`.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.helodata.com/integrations/operating-systems/linux.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
