No description
  • Go 62.5%
  • HTML 21%
  • CSS 14.7%
  • Dockerfile 1.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
renovate c0057ab8d4
All checks were successful
Lint Go Code / lint (push) Successful in 1m48s
Build Docker Image / build (push) Successful in 1m55s
Update data.forgejo.org/renovate/renovate Docker tag to v44.103.1 (#51)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [data.forgejo.org/renovate/renovate](https://renovatebot.com) ([source](https://github.com/renovatebot/renovate)) | container | minor | [`44.97.4` → `44.103.1`](https://octochangelog.com/compare?repo=renovatebot%2Frenovate&from=44.97.4&to=44.103.1) |

---

### Release Notes

<details>
<summary>renovatebot/renovate (data.forgejo.org/renovate/renovate)</summary>

### [`v44.103.1`](https://github.com/renovatebot/renovate/releases/tag/44.103.1)

[Compare Source](https://github.com/renovatebot/renovate/compare/44.103.0...44.103.1)

##### Bug Fixes

- **deps:** update ghcr.io/renovatebot/base-image docker tag to v13.99.4 (main) ([#&#8203;46333](https://github.com/renovatebot/renovate/issues/46333)) ([9bed6dc](9bed6dcca5))

##### Miscellaneous Chores

- **deps:** update dependency astral-sh/uv to v0.12.17 (main) ([#&#8203;46331](https://github.com/renovatebot/renovate/issues/46331)) ([6e10310](6e103100c7))
- **deps:** update dependency uv to v0.12.17 (main) ([#&#8203;46332](https://github.com/renovatebot/renovate/issues/46332)) ([d0cabbe](d0cabbedc6))

### [`v44.103.0`](https://github.com/renovatebot/renovate/releases/tag/44.103.0)

[Compare Source](https://github.com/renovatebot/renovate/compare/44.101.2...44.103.0)

##### Features

- **workers/repository:** allow users to bypass `registryUrl` when `unknown-registry` ([#&#8203;46323](https://github.com/renovatebot/renovate/issues/46323)) ([8dc0664](8dc06640a7)), closes [#&#8203;45706](https://github.com/renovatebot/renovate/issues/45706)

##### Bug Fixes

- **manager/dockerfile:** don't attempt to update `apk`/`apt` for unknown image families ([#&#8203;46325](https://github.com/renovatebot/renovate/issues/46325)) ([0253f4b](0253f4b23e)), closes [#&#8203;45706](https://github.com/renovatebot/renovate/issues/45706)

### [`v44.101.2`](https://github.com/renovatebot/renovate/releases/tag/44.101.2)

[Compare Source](https://github.com/renovatebot/renovate/compare/44.97.6...44.101.2)

##### Build System

- **deps:** update dependency adm-zip to v0.6.1 (main) ([#&#8203;46318](https://github.com/renovatebot/renovate/issues/46318)) ([c7a2d36](c7a2d36dde))

### [`v44.97.6`](https://github.com/renovatebot/renovate/releases/tag/44.97.6)

[Compare Source](https://github.com/renovatebot/renovate/compare/44.97.4...44.97.6)

##### Build System

- **deps:** update dependency markdown-it to v15.0.2 (main) ([#&#8203;46315](https://github.com/renovatebot/renovate/issues/46315)) ([5b7886e](5b7886e3da))

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC45Ny40IiwidXBkYXRlZEluVmVyIjoiNDQuOTcuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Reviewed-on: #51
2026-09-19 20:01:08 +00:00
.forgejo/workflows Update data.forgejo.org/renovate/renovate Docker tag to v44.103.1 (#51) 2026-09-19 20:01:08 +00:00
cmd/server chore: update module path to new Forgejo location 2026-07-25 11:41:46 +02:00
docs feat: adjust readme (#46) 2026-09-02 19:49:35 +00:00
internal feat: greater rework and fix #3 (#45) 2026-09-02 19:26:32 +00:00
.dockerignore Implement initial Go backend with static TeamSpeak viewer 2025-10-25 18:09:22 +00:00
.gitignore Add TeamSpeak ServerQuery integration with config-based server management (#2) 2025-10-29 21:32:22 +01:00
config.yaml.example feat: greater rework and fix #3 (#45) 2026-09-02 19:26:32 +00:00
Dockerfile Update golang Docker tag to v1.27.1 (#44) 2026-09-02 18:58:40 +00:00
go.mod Update module github.com/gofiber/template/html/v3 to v3.0.9 (#49) 2026-09-18 10:56:30 +00:00
go.sum Update module github.com/gofiber/template/html/v3 to v3.0.9 (#49) 2026-09-18 10:56:30 +00:00
README.md feat: adjust readme (#46) 2026-09-02 19:49:35 +00:00
renovate.json chore: configure renovate for dependency updates (#6) 2026-07-31 18:53:47 +00:00

ts-viewer

A small web page that shows who is sitting in which channel on your TeamSpeak server. Point it at your server, open it in a browser, done.

The channel tree

(demo data — not a real server)

It talks to TeamSpeak over ServerQuery and renders the channel tree server-side. No database, no JavaScript, no state — it just asks the server on every request.

Setup

1. Create a ServerQuery login

In the TeamSpeak client: Tools → ServerQuery Login. You can also use the serveradmin account you got when you first started the server.

The login matters: without one, ts-viewer connects as a guest and people in channels with a raised "needed subscribe power" stay invisible (that Admin channel will look empty even when someone is in it). Any query account works as long as it has enough i_channel_subscribe_powerserveradmin always does.

2. Write a config.yaml

http_addr: ":8080"

servers:
  home:
    host: "ts.example.com"
    port: 10011          # the ServerQuery port, not the voice port (9987)
    username: "serveradmin"
    password: "your-query-password"

Every entry under servers: gets its own page. The key (home here) becomes the URL.

3. Run it

With Docker Compose:

services:
  ts-viewer:
    image: forgejo.home.jbenecke.de/jan/ts-viewer:latest
    ports:
      - "8080:8080"
    volumes:
      - ./config.yaml:/app/config.yaml:ro
    restart: unless-stopped

Or straight from source:

go run ./cmd/server

Then open http://localhost:8080.

Pages

URL What it shows
/ All configured servers, online or not
/ts-view/home The channel tree for the home server
/healthz {"status":"ok"}, for your uptime checks

All config options

http_addr: ":8080"   # listen address (default :8080)
log_level: "info"    # default info

servers:
  home:
    host: "ts.example.com"   # required
    port: 10011              # default 10011
    sid: 1                   # virtual server id, default 1
    username: "serveradmin"  # see the note above
    password: "secret"

Set TS_CONFIG_FILE to load the config from somewhere other than ./config.yaml.

Development

go build ./cmd/server   # build
go test ./...           # test
go vet ./...            # lint