Skip to main content
Run Tell on your own infrastructure. One binary, no containers. Data never leaves your servers.
1

Install

curl -sSfL https://tell.rs | bash
cp ~/.local/bin/tell /usr/local/bin/tell
2

Configure

Generate a config file and move it to a dedicated location:
tell init
mkdir -p /etc/tell
mv tell-config.toml /etc/tell/config.toml
Edit /etc/tell/config.toml — set data_dir to /opt/tell and configure your pipeline:
data_dir = "/opt/tell"
3

Set up ClickHouse

Tell uses ClickHouse as the default analytics backend. Install it, start the server, and create the Tell tables:
curl https://clickhouse.com/ | sh
./clickhouse server &
tell init generated a setup.sql file alongside the config. Run it to create the database and tables:
clickhouse-client < setup.sql
This assumes ClickHouse is running with default settings. See clickhouse.com for installation and configuration details.
4

Create a service user

useradd -r -s /bin/false tell
mkdir -p /opt/tell
chown tell:tell /opt/tell
chown tell:tell /etc/tell/config.toml
chmod 600 /etc/tell/config.toml
5

Create the systemd unit

echo '[Unit]
Description=Tell
After=network.target

[Service]
Type=simple
User=tell
Group=tell
Environment=TELL_CONFIG=/etc/tell/config.toml
ExecStart=/usr/local/bin/tell run
Restart=always
RestartSec=5
WorkingDirectory=/opt/tell

NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/opt/tell

[Install]
WantedBy=multi-user.target' > /etc/systemd/system/tell.service
6

Start and verify

systemctl daemon-reload
systemctl enable --now tell
systemctl status tell
Tell is running. By default, HTTP ingestion listens on port 8080 and TCP on 50000. Point your SDKs to your-server:8080, or put Caddy in front to serve on 443.
Tell is installed and running. To start collecting data, head to the Quickstart.
Set TELL_CONFIG in your shell so CLI commands (tell plugin, tell tail, tell query, etc.) pick up the right config and data directory.
echo 'export TELL_CONFIG=/etc/tell/config.toml' >> ~/.bashrc
source ~/.bashrc

Optional: TLS with Caddy

If you’re exposing the Tell API or dashboard publicly, put a reverse proxy in front of it:
apt install -y caddy
echo 'tell.example.com {
    reverse_proxy localhost:3000
}' > /etc/caddy/Caddyfile

systemctl restart caddy
Caddy handles TLS certificates automatically via Let’s Encrypt. Point your DNS A record to the server IP.