atreoLINK

Let your family reach the apps on your ZimaOS from anywhere, over an encrypted tunnel

  • ghcr.io/atreolabs/atreoagent:1.3.1
  • v1.3.1
  • Updated 29 Oct 2026
  • amd64 · arm64
  • Networking
  • 1 stars

Screenshots

atreoLINK screenshot 1: DashboardatreoLINK screenshot 2: Phone app

About atreoLINK

atreoAGENT runs on your ZimaOS and pairs it with your atreoLINK account, so you and your family can open the apps you host, like Jellyfin, Immich or Home Assistant, from anywhere. Traffic goes through an encrypted WireGuard tunnel that atreoLINK can't read. You need a free account at atreolink.com.

Features

  • Encrypted WireGuard tunnel, peer-to-peer, with a relay when you are behind CGNAT
  • Opens the ports it needs by itself (UPnP, NAT-PMP, PCP), so there is no port forwarding to set up
  • Pick which family member can open which app
  • A free subdomain with an https certificate, made and renewed for you; your own domain works too
  • End-to-end encrypted push notifications, and an optional email to push gateway for apps that send email alerts
  • Apps for phones, TVs and the browser for your family

How to use

  1. After install, open the app's log in your dashboard.
  2. Copy the pairing link from the log and open it in a browser where you are signed in to atreolink.com.
  3. Pick your subdomain and approve.
  4. Add your apps and invite your family in the dashboard at https://app.atreolink.com.

This app has no web page of its own on your server. Everything is set up at app.atreolink.com.

Before you install

Make a free account at https://atreolink.com. The agent uses host networking and needs port 443 (https) and UDP port 51820 free; its plain http port is moved to 6140 so it doesn't clash with the ZimaOS dashboard on port 80. After install, the pairing link is in the app log; a new link is printed each time the app restarts until it is paired. When you add apps at app.atreolink.com, use addresses like http://[ZIMAOS-IP-ADDRESS]:<the app's port>. Every other setting is optional and listed in the Variables tab; to use one, add it in the app settings. Back up the data folder, or you have to pair again.

The settings in the first table are already in the app settings. To use any other one, open the app settings, add the variable with your value, save, and the app restarts with it. A setting you leave out uses its default.

In the app settings

VariableDefault valueDescription
TZ$TZYour time zone. It is filled in from your ZimaOS time zone. Leave it unless you need another.
PROXY_HTTP_PORT6140The plain http port of the agent's built-in proxy. It is 6140 so it doesn't clash with the ZimaOS dashboard on port 80. Leave it.

Public address

VariableDefault valueDescription
ENDPOINT_IP—Your public IP, only if UPnP and NAT-PMP don't work and you forwarded the WireGuard port on your router yourself.
ENDPOINT_PORT51820The outside port you forwarded to WG_PORT, used with ENDPOINT_IP.

WireGuard

VariableDefault valueDescription
WG_PORT51820The UDP port the WireGuard tunnel listens on.
WG_UPNP_ENABLEDtrueSet to false so the agent doesn't ask your router to open a port with UPnP or NAT-PMP.
WG_PCP_ENABLEDtrueSet to false so the agent doesn't ask your router to open a port with PCP.
WG_IPV6_PINHOLE_ENABLEDtrueSet to false so the agent doesn't open an IPv6 pinhole on your router.
WG_FIREWALL_ENABLEDtrueKeeps family devices to the proxy ports only. Set to false only if you want every port on your ZimaOS reachable from every paired device; it skips the per-app access rules.

Relay

VariableDefault valueDescription
RELAY_ENABLEDtrueSet to false so the agent never uses the atreoLINK relay, even when no direct path works (behind CGNAT).
RELAY_FORCEfalseSet to true to always keep a relay ready, even when a direct path works.

Proxy

VariableDefault valueDescription
PROXY_ENABLEDtrueSet to false to use your own reverse proxy (Caddy, Traefik, nginx) with the agent's forward-auth endpoint instead of the built-in proxy.
PROXY_HTTPS_PORT443The https port of the built-in proxy. Family devices connect to it.
PROXY_AUTH_PORT9091The forward-auth endpoint port, on the tunnel address only.
PROXY_TRUSTED_PROXIES—The addresses of your own reverse proxy whose X-Forwarded headers the forward-auth endpoint trusts, comma-separated, like 10.0.0.0/24.

Notifications

VariableDefault valueDescription
NOTIFY_PORT9876The port of the local notification API your apps send push messages to.

Email to push gateway

VariableDefault valueDescription
SMTP_ENABLEDfalseSet to true so apps that send email alerts can send them to the agent, which turns them into encrypted push notifications.
SMTP_LISTEN0.0.0.0:2525Address and port of the email gateway. Keep it on your home network.
SMTP_TLS_ENABLEDfalseSet to true to offer STARTTLS with a self-signed certificate, for apps that refuse plain email connections.
SMTP_CATCH_ALL—A member's email address that gets mail sent to unknown addresses. Leave it out to refuse unknown addresses.
SMTP_MAX_MESSAGE_BYTES1048576The biggest email the gateway accepts, in bytes.
SMTP_RATE_PER_MINUTE5How many emails one address may send each minute.

Logs

VariableDefault valueDescription
LOG_LEVELinfoSet to debug for detailed logs when something doesn't connect.
docker-compose.yml
name: atreolink

services:
  atreolink:
    image: ghcr.io/atreolabs/atreoagent:1.3.1
    container_name: atreolink
    restart: unless-stopped
    stop_grace_period: 20s
    network_mode: host
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    environment:
      - TZ=$TZ
      - PROXY_HTTP_PORT=6140
    volumes:
      - type: bind
        source: /DATA/AppData/$AppID/data
        target: /var/lib/atreoagent
        bind:
          create_host_path: true
    deploy:
      resources:
        limits:
          cpus: "1.00"
          memory: 256M
        reservations:
          cpus: "0.00"
          memory: 32M
    labels:
      icon: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/atreolink/icon.png
    x-casaos:
      id: com.icestore.atreolink
      envs:
        - container: TZ
          description:
            en_US: >-
              Your time zone. It is filled in from your ZimaOS time zone.
              Leave it unless you need another.
        - container: PROXY_HTTP_PORT
          description:
            en_US: >-
              The plain http port of the agent's built-in proxy. It is 6140
              so it doesn't clash with the ZimaOS dashboard on port 80.
              Leave it.
      volumes:
        - container: /var/lib/atreoagent
          description:
            en_US: >-
              The agent's settings, its identity and WireGuard keys, the
              pairing with your atreoLINK account, family members' access
              and the TLS certificates. Back this folder up, or you have to
              pair the server again.

x-casaos:
  id: com.icestore.atreolink
  architectures:
    - amd64
    - arm64
  main: atreolink
  author: HSinghHira
  category: Networking
  developer: atreoLABS
  icon: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/atreolink/icon.png
  thumbnail: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/atreolink/screenshot-1.png
  screenshot_link:
    - https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/atreolink/screenshot-1.png
    - https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/atreolink/screenshot-2.png
  title:
    en_US: atreoLINK
  tagline:
    en_US: Let your family reach the apps on your ZimaOS from anywhere, over an encrypted tunnel
  description:
    en_US: >-
      Visit: [https://icestore.hsinghhira.me/app/atreolink/](https://icestore.hsinghhira.me/app/atreolink/) for full details


      atreoAGENT runs on your ZimaOS and pairs it with your atreoLINK
      account, so you and your family can open the apps you host, like
      Jellyfin, Immich or Home Assistant, from anywhere. Traffic goes through
      an encrypted WireGuard tunnel that atreoLINK can't read. You need a
      free account at atreolink.com.


      **Features**


      - Encrypted WireGuard tunnel, peer-to-peer, with a relay when you are
        behind CGNAT

      - Opens the ports it needs by itself (UPnP, NAT-PMP, PCP), so there is
        no port forwarding to set up

      - Pick which family member can open which app

      - A free subdomain with an https certificate, made and renewed for you;
        your own domain works too

      - End-to-end encrypted push notifications, and an optional email to
        push gateway for apps that send email alerts

      - Apps for phones, TVs and the browser for your family


      **How to use?**


      1. After install, open the app's log in ZimaOS.


      2. Copy the pairing link from the log and open it in a browser where
         you are signed in to atreolink.com.


      3. Pick your subdomain and approve.


      4. Add your apps and invite your family in the dashboard at
         app.atreolink.com.


      This app has no web page of its own on ZimaOS. Everything is set up at
      app.atreolink.com.
  tips:
    before_install:
      en_US: >-
        1. Make a free account at https://atreolink.com.


        2. Make sure nothing else on your ZimaOS uses port 443 or UDP port
           51820.


        3. Start the installation.


        4. Open the app's log in ZimaOS. Find the pairing link near the top.


        5. Open the link in a browser where you are signed in to atreoLINK.


        6. Pick a name for your subdomain and click approve.


        7. The log now says "Paired". Add your apps and invite your family at
           https://app.atreolink.com.


        8. In your apps' addresses, use http://[ZIMAOS-IP-ADDRESS]:<the app's port>.


        9. More settings, like a manual port forward, the relay and the email
           gateway, are listed on the atreoLINK page at
           https://icestore.hsinghhira.me/app/atreolink/ (Variables tab). You
           can add them now or later in the app settings.
  index: /
  port_map: "6140"
  scheme: http
  is_uncontrolled: false
  version: "1.3.1"
  update_at: "2026-10-29"
  release_notes:
    en_US: |-
      - First version in IceStore
      - Uses ghcr.io/atreolabs/atreoagent 1.3.1 as upstream ships it, with host networking, NET_ADMIN and /dev/net/tun
      - The proxy's plain http port is 6140 instead of 80, so it doesn't clash with the ZimaOS dashboard; https stays on 443
  repo: "https://github.com/atreoLABS/atreoAGENT"
  support: "https://github.com/atreoLABS/atreoAGENT/issues"
  docs: "https://docs.atreolink.com"

Install atreoLINK

Something not working with atreoLINK? Report a problem or request another app.

More Networking apps

See all