forked from accius/openhamclock
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
258 lines (199 loc) · 8.25 KB
/
.env.example
File metadata and controls
258 lines (199 loc) · 8.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
# OpenHamClock Configuration
#
# This file is automatically copied to .env on first run.
# Edit .env with your station info — it won't be overwritten by updates.
#
# After editing, restart the server: npm start
#
# -------------------------------------------
# DEV PORTS (important)
# -------------------------------------------
# In this repo's default dev setup:
# - Frontend (Vite dev server): http://localhost:3000
# - Backend API (Node/Express): http://localhost:3001
#
# The Vite dev server proxies /api to the backend on :3001.
# If you run the backend on :3000, it will conflict with Vite.
# -------------------------------------------
# ===========================================
# REQUIRED — Your Station Information
# ===========================================
# Your amateur radio callsign
CALLSIGN=N0CALL
# Your Maidenhead grid locator (4 or 6 character)
LOCATOR=FN31
# Optional station coordinates (calculated from LOCATOR if not set)
# LATITUDE=40.7128
# LONGITUDE=-74.0060
# ===========================================
# SERVER SETTINGS (Backend API)
# ===========================================
# Backend API server port
# Dev default: 3001 (see DEV PORTS note above)
PORT=3001
# Host/IP to bind to
# localhost = only accessible from this computer
# 0.0.0.0 = accessible from other devices on your network
HOST=localhost
# ===========================================
# SECURITY
# ===========================================
# API key for write operations (POST /api/update, /api/settings, /api/n3fjp/qso, etc.)
# If not set, write endpoints are open (fine for local/home network installs).
# REQUIRED for cloud/public deployments to prevent unauthorized access.
# API_WRITE_KEY=your-secret-key-here
# CORS allowed origins (comma-separated)
# If not set, defaults to reflecting the request origin (backward-compatible).
# Set this for cloud deployments to restrict which websites can call your API.
# CORS_ORIGINS=https://yourdomain.com,http://localhost:3000
# ===========================================
# AUTO UPDATE (GIT)
# ===========================================
# Enable automatic updates (requires git installation and repo clone)
AUTO_UPDATE_ENABLED=false
# Check interval in minutes
AUTO_UPDATE_INTERVAL_MINUTES=60
# Run a check shortly after startup (true/false)
AUTO_UPDATE_ON_START=false
# Exit after update so a supervisor (systemd/pm2) can restart (true/false)
AUTO_UPDATE_EXIT_AFTER=true
# ===========================================
# SETTINGS SYNC (Self-Hosted / Pi)
# ===========================================
# When enabled, all UI settings (layout, panels, map layers, filters, theme, etc.)
# are saved on the server. Any device that connects to your OHC instance will
# automatically load your saved configuration — no need to set up each browser.
#
# Disabled by default. Enable for single-operator self-hosted/Pi deployments.
# Do NOT enable on multi-user hosted deployments (e.g. openhamclock.com).
SETTINGS_SYNC=false
# Optional: custom path for settings file (default: ./data/settings.json)
# SETTINGS_FILE=/path/to/settings.json
# ===========================================
# DISPLAY PREFERENCES
# ===========================================
# Units: 'imperial' or 'metric'
# Deprecated
UNITS=imperial
# Seperated Units ('imperial' or 'metric')
# DISTUNITS - Distance units
DISTUNITS=imperial
# TEMPUNITS - Temperature Units
TEMPUNITS=imperial
# PRESSUNITS - Pressure Units
PRESSUNITS=imperial
# Time format: '12' or '24' hour
TIME_FORMAT=12
# Theme: 'dark', 'light', 'legacy', or 'retro'
THEME=dark
# Layout: 'modern' or 'classic'
LAYOUT=modern
# Timezone: IANA timezone identifier
# Set this if your local time shows incorrectly (e.g. same as UTC).
# Common with privacy browsers that spoof timezone.
# Examples: America/New_York, America/Regina, Europe/London, Asia/Tokyo
# Leave blank/commented to use browser default.
# TZ=America/New_York
# ===========================================
# OPTIONAL — External Services
# ===========================================
# ITURHFProp service URL (for advanced propagation predictions)
# Override only if self-hosting your own ITURHFProp service.
# ITURHFPROP_URL=https://proppy-production.up.railway.app
# DX Spider Proxy URL (for DX cluster spots)
# DXSPIDER_PROXY_URL=https://your-dxspider-proxy.com
# DX Cluster source: auto | proxy | hamqth | dxspider
# auto = tries proxy first, then HamQTH, then direct telnet
# proxy = use DX Spider Proxy (set DXSPIDER_PROXY_URL above)
# hamqth = HamQTH CSV feed (HTTP, works everywhere)
# dxspider = direct telnet to DX Spider nodes (works locally/Pi)
# DX_CLUSTER_SOURCE=auto
# Optional custom telnet defaults (used when source=custom and frontend values are empty)
# DX_CLUSTER_HOST=dx.someserver.com
# DX_CLUSTER_PORT=7300
# OpenWeatherMap API key (optional — only needed for the Cloud Layer map overlay)
# Weather data uses Open-Meteo directly from each user's browser — no key needed.
# OPENWEATHER_API_KEY=your_api_key_here
# VITE_OPENWEATHER_API_KEY=your_api_key_here
# QRZ.com XML API credentials (optional — improves callsign location accuracy)
# QRZ_USERNAME=your_callsign
# QRZ_PASSWORD=your_qrz_password
# ===========================================
# FEATURE TOGGLES
# ===========================================
SHOW_POTA=true
SHOW_SATELLITES=true
SHOW_DX_PATHS=true
SHOW_DX_WEATHER=true
# Show analog clock in classic layout (true/false)
# The analog clock is always available in the dockable layout
CLASSIC_ANALOG_CLOCK=false
# ===========================================
# WSJT-X / JTDX UDP INTEGRATION
# ===========================================
WSJTX_ENABLED=true
WSJTX_UDP_PORT=2237
# Relay key for remote WSJT-X relay agent (cloud deployments)
# WSJTX_RELAY_KEY=your-secret-relay-key-here
# ===========================================
# APRS-IS INTEGRATION
# ===========================================
# Enable real-time APRS position tracking from the APRS-IS network.
# Read-only connection (no transmit). Great for EmComm, public service, and tracking.
# APRS_ENABLED=true
# APRS_HOST=rotate.aprs2.net
# APRS_PORT=14580
# Server-side filter (strongly recommended to limit data volume):
# r/LAT/LON/RANGE — Stations within RANGE km of LAT/LON
# b/CALL1/CALL2 — Only specific callsigns
# p/PREFIX — Prefix filter, e.g. p/W/K/N for US calls
# Example: 500km radius around your QTH:
# APRS_FILTER=r/40.12/-74.82/500
# How long to keep stations in the cache (minutes)
# APRS_MAX_AGE_MINUTES=60
# ===========================================
# DX CLUSTER SETTINGS
# ===========================================
# DX_CLUSTER_CALLSIGN=N0CALL-56
SPOT_RETENTION_MINUTES=30
# ===========================================
# CONTEST LOGGER UDP (N1MM / DXLog)
# ===========================================
N1MM_UDP_ENABLED=false
N1MM_UDP_PORT=12060
N1MM_MAX_QSOS=200
N1MM_QSO_MAX_AGE_MINUTES=360
# ===========================================
# AMBIENT WEATHER (AmbientWeather.net)
# ===========================================
# These are read by the Vite client (must start with VITE_)
# Put real keys in .env.local (recommended) so you don't commit secrets.
VITE_AMBIENT_APPLICATION_KEY=your_application_key_here
VITE_AMBIENT_API_KEY=your_api_key_here
# Optional: MAC address of the station device to use (if you have multiple)
# VITE_AMBIENT_DEVICE_MAC=48:E7:29:69:96:10
# Optional: polling interval in seconds (minimum 15)
# VITE_AMBIENT_POLL_SECONDS=30
# ===========================================
# ROTATOR CONTROL
# ===========================================
ROTATOR_PROVIDER=pstrotator_udp
PSTROTATOR_HOST=192.168.1.43
PSTROTATOR_UDP_PORT=12000
ROTATOR_STALE_MS=5000
# Your app will use the proxy path:
VITE_PSTROTATOR_BASE_URL=/pstrotator
# Optional: HTTP endpoint for PstRotatorAz web interface (for proxy)
# Set this to the machine running PstRotatorAz (default shown below)
VITE_PSTROTATOR_TARGET=http://192.168.1.43:50004
# ===========================================
# N3FJP QSO RETENTION
# ===========================================
# How long the server keeps logged QSOs in memory (minutes)
# 1440 = 24 hours
N3FJP_QSO_RETENTION_MINUTES=1440
# ===========================================
# DOCKER / HEALTH CHECK
# ===========================================
# Override the health check endpoint (useful behind a reverse proxy)
# HEALTH_ENDPOINT=http://localhost:3000/api/health