Zasder Weather / Setup Guide

Setup Guide

Zasder Weather reads from a small server that you own. Here are the three ways to create that server, easiest first. Since app version 1.9 the iPhone can build the whole thing for you, so most people never open a terminal. Current versions: apps 1.9.0, backend 1.9.1.

What you are setting up

There are two pieces, and you own both of them.

  1. Your station measures the weather. It can be a station you already own, a vendor cloud account, an Ecowitt gateway on your network, a WeeWX install, or a radio receiver that hears your sensors directly.
  2. Your server stores the readings, keeps the history, watches your alert rules, and answers the apps. It is open source, and it runs under your account, not ours.

There is no Zasder account, no subscription, and no telemetry. If you stop using the apps, the data stays yours in a database you control.

You have two places to run the server:

Fly.io, about $2 a month

Recommended, and the only supported way to see your weather when you are away from home. The app can create it for you.

Your own computer, with Docker

No monthly cost, but it only works on your home network. Reaching it from outside your house is your own networking project.

Easiest: let the app build your server

iPhone app 1.9 and later, and the Mac app. No command line, no computer setup, nothing to install beyond the app itself.

The app has a Guided Setup that creates the server for you. You make a free Fly.io account, paste one token, and the app does the rest.

  1. Install Zasder Weather from the App Store.
  2. Open Settings. Under New here?, choose Create a New Weather Server. (A fresh install offers the same thing on first launch.)
  3. Create a free account at fly.io. Signing up costs nothing, though Fly does require a payment card on file. One small server runs about $2 a month.
  4. In the Fly.io dashboard, open Tokens and create an org token. Copy it.
  5. Paste the token into the app, then pick the region closest to your weather station. That is where your data will live.
  6. The app creates the server, its storage volume and its secrets, deploys the backend, waits until the server reports healthy, and connects itself. Then it walks you through adding your first station.

Ten minutes, most of which is Fly.io's signup form. When it finishes you have a live server at https://your-app.fly.dev/, running under your own Fly.io account, holding data only you can read.

About that token. The org token you paste is used on that device only, to build the server, and the app does not keep it. So that one-tap server updates work later, setup stores a deploy credential on the new server itself: a freshly minted token scoped to just that server when your token can mint one, otherwise the token you pasted, because org tokens cannot mint scoped ones. You can revoke either one at any time from the Fly.io dashboard.

Already have a server and just want to point a new phone at it? Choose I already have a server and paste your setup code, or scan it. See Where your tokens live.

With the setup script, on Fly.io

Same server, same result, driven from a shell. This is the path to take if you are setting up from a Linux machine, if you want to read every step before it runs, or if you simply prefer a terminal.

On a Mac, without typing commands

There is a double-clickable installer that runs the whole script path for you.

  1. Open the backend on GitHub, click the green Code button, then Download ZIP.
  2. Double-click the downloaded ZIP to unpack it.
  3. Inside the folder, right-click Zasder Weather Setup.command and choose Open.

Right-click and Open, not a plain double-click. macOS blocks scripts downloaded from the web until you approve them once, and it will show a warning about an unidentified developer. Click Open and confirm. You only do this the first time.

The installer fetches the Fly.io command-line tool, signs you in through your browser, creates your server, and offers to connect a Davis WeatherLink Live at the end.

In the Terminal

First, install the Fly.io tool and sign in:

brew install flyctl
fly auth signup

Then clone the backend and run the setup script:

git clone https://github.com/volneydouglas/zasder-weather-backend.git
cd zasder-weather-backend
./bin/setup-fly.sh

Paste one line at a time, and wait for each to finish before the next.

Once ./bin/setup-fly.sh is running it starts asking you questions: app name, region, which stations you have. At those prompts, type your answer and press return. Do not paste the next command from this page into a question. Pasting a command into a prompt is the single most common way this goes wrong.

The script asks which sources you want first, then prompts only for what those need. It generates your tokens, creates the app, volume and secrets, deploys, and prints the exact next steps for each path you chose. It also saves all of that to zasder-install-summary.txt inside the folder you just cloned:

open zasder-install-summary.txt      # macOS
cat zasder-install-summary.txt       # Linux

Terminal scrollback gets lost. That file does not. If you lose it anyway, ./bin/setup-fly.sh --print-tokens reads your tokens back off the running server.

At home, with Docker

Runs on any always-on Linux or macOS machine. No monthly bill, and everything stays on your own network.

git clone https://github.com/volneydouglas/zasder-weather-backend.git
cd zasder-weather-backend
./bin/setup-local.sh

setup-local.sh is the home counterpart to the Fly.io script. It generates tokens, asks which sources you have and what your timezone is, writes a .env file, and starts the stack with docker compose up -d.

The server then listens on http://localhost:8080/. Point the app at http://YOUR-HOST-IP:8080 with the API_TOKEN from .env. The phone has to be on the same network.

Two honest limits on the Docker path.

It is LAN only. Getting to it from outside your house, with port forwarding, a tunnel, or a reverse proxy, is your own project and is not supported here.

LilyGO radio boards need an https:// server address. Their firmware is TLS only, so a plain http://…:8080 server accepts the board's provisioning and then never receives a single reading. To use the radio paths, either deploy to Fly.io, which gets HTTPS automatically, or put a TLS-terminating reverse proxy in front of Docker and provision the board with that https:// address.

Choosing hardware: the setup planner

The setup planner answers a different question than this page. This page is about creating the server. The planner is about your hardware: what you need to buy, whether your exact station is supported, and what the steps look like once you have it.

If you are not sure what you have, or whether it will work at all, start there and come back here to build the server.

Connect your stations

You can run several of these at once. Each one shows up as its own station in the app.

Your setupWhat it takes
AmbientWeather stationYour AmbientWeather application key and API key. Nothing to buy.
Davis Vantage with a WeatherLink consoleA WeatherLink v2 API key and secret. Nothing to buy.
Davis WeatherLink Live gatewayA small poller on an always-on machine on the same network. Much fresher than the cloud, and no API key.
WeatherFlow TempestA free personal access token. Add it in the app under Settings, Integrations.
Ecowitt gateway or consoleNothing to buy. Point the gateway's Customized upload at your server. Read the page first: these gateways cannot do TLS.
A station already running WeeWXOne extension. Brings WeeWX's very large family of supported stations with it.
AcuRite Atlas, Fine Offset and other radio sensorsA LilyGO board, roughly $20, which you can flash from your browser.

The setup planner generates the exact steps for whichever of these you pick.

Where your tokens live

Your server has two credentials, and they do different jobs.

Where to find them depends on how you set the server up:

The Fly.io script also prints a one-line setup code starting with ZW1. that packs the server address and API token together. In the app, open Settings, Quick Setup and paste it. It prints a separate read-only share code that is safe to send to family.

If something goes wrong

On the Fly.io script path, there is a health checklist that walks the whole install: sign-in, server health, both tokens, the storage volume, your pollers, and whether data is actually arriving.

./bin/doctor.sh

On any install, opening your server's address in a browser shows a status page, and /healthz answers with the running version. If the status page loads but the app cannot connect, the token is usually the problem, not the server.

Still stuck? The Help and FAQ page covers the questions real users have asked. The backend is open source, so issues and questions are welcome on GitHub, or reach us through the support page.