this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

docs: use Tailscale for netdata access instead of basic auth

- Add Tailscale installation to DEPLOY.md server setup
- Update monitoring section to use Tailscale IP:19999
- Remove netdata from Caddyfile (no public exposure)
- Expose netdata port 19999 in docker-compose.prod.yml
- Update architecture diagram to show Tailscale access

๐Ÿค– Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

alice 577b798f 87dd6f41

+69 -66
+2 -8
Caddyfile.example
··· 13 13 reverse_proxy letta:8283 14 14 } 15 15 16 - # Netdata monitoring - basic auth protected 17 - # Generate password hash: docker run --rm -it caddy caddy hash-password 18 - netdata.assistant.mosphere.at { 19 - basic_auth { 20 - admin $2a$14$REPLACE_WITH_YOUR_HASH 21 - } 22 - reverse_proxy netdata:19999 23 - } 16 + # Netdata is accessed via Tailscale (http://TAILSCALE_IP:19999) 17 + # No public exposure needed
+64 -57
DEPLOY.md
··· 78 78 apt install -y mosh git 79 79 ``` 80 80 81 + Install Tailscale (for secure access to internal services): 82 + ```bash 83 + curl -fsSL https://tailscale.com/install.sh | sh 84 + tailscale up 85 + ``` 86 + 87 + Follow the link to authenticate with your Tailscale account. Note your server's Tailscale IP (100.x.x.x). 88 + 81 89 Install GitHub CLI: 82 90 ```bash 83 91 (type -p wget >/dev/null || (apt update && apt install wget -y)) && mkdir -p -m 755 /etc/apt/keyrings && out=$(mktemp) && wget -nv -O$out https://cli.github.com/packages/githubcli-archive-keyring.gpg && cat $out | tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null && chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null && apt update && apt install gh -y ··· 129 137 vim Caddyfile 130 138 ``` 131 139 132 - Generate a password hash for Netdata basic auth: 133 - ```bash 134 - docker run --rm -it caddy caddy hash-password 135 - # Enter your password when prompted, copy the hash into Caddyfile 136 - ``` 137 - 138 - Replace domains and password hash with your values. 140 + Replace the example domains with your actual domains. 139 141 140 142 --- 141 143 ··· 252 254 253 255 ## Monitoring 254 256 255 - Netdata is included for real-time monitoring, exposed via Caddy with basic auth. 257 + Netdata is included for real-time monitoring, accessible via Tailscale. 256 258 257 259 ### Access Netdata 258 260 259 - Open https://netdata.assistant.yourdomain.com and enter your basic auth credentials. 261 + From any device on your Tailscale network, open: 262 + ``` 263 + http://YOUR_TAILSCALE_IP:19999 264 + ``` 265 + 266 + Or use the Tailscale hostname: 267 + ``` 268 + http://assistant:19999 269 + ``` 260 270 261 271 ### What you get 262 272 ··· 268 278 269 279 For alerts and multi-server dashboards: 270 280 271 - 1. Sign up at https://app.netdata.cloud 272 - 2. Get your claim token 273 - 3. Add to `.env`: 274 - ``` 275 - NETDATA_CLAIM_TOKEN=your_token 276 - ``` 277 - 4. Restart: `docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d` 281 + - Sign up at https://app.netdata.cloud 282 + - Get your claim token 283 + - Add `NETDATA_CLAIM_TOKEN=your_token` to `.env` 284 + - Restart: `docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d` 278 285 279 286 --- 280 287 ··· 359 366 ## Architecture 360 367 361 368 ``` 362 - Internet 363 - โ”‚ 364 - โ–ผ 365 - โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” 366 - โ”‚ Hetzner CX33 (Debian 13 + Docker) โ”‚ 367 - โ”‚ โ”‚ 368 - โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 369 - โ”‚ โ”‚ Caddy (:80/:443) - auto-SSL โ”‚ โ”‚ 370 - โ”‚ โ”‚ โ”œโ”€โ–บ app:3000 (assistant.*) โ”‚ โ”‚ 371 - โ”‚ โ”‚ โ””โ”€โ–บ netdata:19999 (netdata.*) โ”‚ โ”‚ 372 - โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ 373 - โ”‚ โ”‚ โ”‚ 374 - โ”‚ โ–ผ โ”‚ 375 - โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 376 - โ”‚ โ”‚ app (Bun :3000) โ”‚ โ”‚ 377 - โ”‚ โ”‚ Telegram webhook โ”‚ โ”‚ 378 - โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ 379 - โ”‚ โ”‚ โ”‚ 380 - โ”‚ โ–ผ โ”‚ 381 - โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 382 - โ”‚ โ”‚ letta (:8283) โ”‚ โ”‚ netdata โ”‚ โ”‚ 383 - โ”‚ โ”‚ Agent + Memory โ”‚ โ”‚ monitoring โ”‚ โ”‚ 384 - โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ 385 - โ”‚ โ”‚ โ”‚ 386 - โ”‚ โ–ผ โ”‚ 387 - โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 388 - โ”‚ โ”‚ litellm (:4000) โ”‚ โ”‚ 389 - โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ 390 - โ”‚ โ”‚ โ”‚ 391 - โ”‚ โ–ผ โ”‚ 392 - โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 393 - โ”‚ โ”‚ auth-adapter โ”‚ โ”‚ 394 - โ”‚ โ”‚ (:4002) headers โ”‚ โ”‚ 395 - โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ 396 - โ”‚ โ”‚ โ”‚ 397 - โ”‚ โ–ผ โ”‚ 398 - โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 399 - โ”‚ โ”‚ anthropic-proxy โ”‚ โ”‚ 400 - โ”‚ โ”‚ (:4001) OAuth โ”‚ โ”‚ 401 - โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ 402 - โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ 369 + Internet Tailscale Network 370 + โ”‚ โ”‚ 371 + โ–ผ โ–ผ 372 + โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” 373 + โ”‚ Hetzner CX33 (Debian 13 + Docker + Tailscale) โ”‚ 374 + โ”‚ โ”‚ 375 + โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 376 + โ”‚ โ”‚ Caddy (:80/:443) - auto-SSL โ”‚ โ”‚ 377 + โ”‚ โ”‚ โ”œโ”€โ–บ app:3000 (assistant.*) โ”‚ โ”‚ 378 + โ”‚ โ”‚ โ””โ”€โ–บ letta:8283 (letta.*) โ”‚ โ”‚ 379 + โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ 380 + โ”‚ โ”‚ โ”‚ 381 + โ”‚ โ–ผ โ”‚ 382 + โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 383 + โ”‚ โ”‚ app (Bun :3000) โ”‚ โ”‚ netdata (:19999) โ”‚ โ”‚ 384 + โ”‚ โ”‚ Telegram webhook โ”‚ โ”‚ via Tailscale only โ”‚ โ”‚ 385 + โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ 386 + โ”‚ โ”‚ โ”‚ 387 + โ”‚ โ–ผ โ”‚ 388 + โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 389 + โ”‚ โ”‚ letta (:8283) โ”‚ โ”‚ 390 + โ”‚ โ”‚ Agent + Memory โ”‚ โ”‚ 391 + โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ 392 + โ”‚ โ”‚ โ”‚ 393 + โ”‚ โ–ผ โ”‚ 394 + โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 395 + โ”‚ โ”‚ litellm (:4000) โ”‚ โ”‚ 396 + โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ 397 + โ”‚ โ”‚ โ”‚ 398 + โ”‚ โ–ผ โ”‚ 399 + โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 400 + โ”‚ โ”‚ auth-adapter โ”‚ โ”‚ 401 + โ”‚ โ”‚ (:4002) headers โ”‚ โ”‚ 402 + โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ 403 + โ”‚ โ”‚ โ”‚ 404 + โ”‚ โ–ผ โ”‚ 405 + โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 406 + โ”‚ โ”‚ anthropic-proxy โ”‚ โ”‚ 407 + โ”‚ โ”‚ (:4001) OAuth โ”‚ โ”‚ 408 + โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ 409 + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ 403 410 โ”‚ 404 411 โ–ผ 405 412 Anthropic API
+3 -1
docker-compose.prod.yml
··· 48 48 - app 49 49 50 50 # Netdata: Real-time monitoring 51 - # Access via https://netdata.assistant.mosphere.at (basic auth protected) 51 + # Access via Tailscale: http://TAILSCALE_IP:19999 52 52 netdata: 53 53 image: netdata/netdata 54 54 restart: unless-stopped 55 55 hostname: assistant 56 + ports: 57 + - '19999:19999' 56 58 cap_add: 57 59 - SYS_PTRACE 58 60 security_opt: