Skip to content

Add newwallpaperwhodis#296

Open
upioneer wants to merge 2 commits into
tailscale-dev:mainfrom
upioneer:add-newwallpaperwhodis
Open

Add newwallpaperwhodis#296
upioneer wants to merge 2 commits into
tailscale-dev:mainfrom
upioneer:add-newwallpaperwhodis

Conversation

@upioneer
Copy link
Copy Markdown

NewWallpaperWhoDis: new service integration

Description

This pull request integrates NewWallpaperWhoDis (a lightweight, self-hosted wallpaper management server and dynamic rotation engine) into the ScaleTail suite using Tailscale as a secure sidecar container.

The service has been fully configured and audited to strictly match the repository's contributor guidelines:

  • Refactored internal container naming conventions to use dynamic template standards (app-${SERVICE} and tailscale-${SERVICE}).
  • Added a Next.js HTTP health check via wget checking /favicon.svg on internal port 3000 inside the shared network namespace.
  • Resolved documentation discrepancies, correcting explanations of the app's internal port 3000 and external host port mapping 6767.
  • Registered NewWallpaperWhoDis alphabetically under the Dashboards and Visualization category of the root README.md.

Related Issues

  • None.

Verification

The service integration was rigorously tested using an automated validation suite (validate-service.ps1), passing 20/20 targeted compliance tests:

==================================================
 ScaleTail Service Integration Validator 
==================================================

[ PASS ] Directory Check - Found service directory: services/newwallpaperwhodis
[ PASS ] File Presence: compose.yaml - Found
[ PASS ] File Presence: .env - Found
[ PASS ] File Presence: README.md - Found
[ PASS ] Environment: SERVICE - SERVICE=newwallpaperwhodis
[ PASS ] Environment: IMAGE_URL - IMAGE_URL=ghcr.io/upioneer/newwallpaperwhodis:latest
[ PASS ] Environment: SERVICEPORT - SERVICEPORT=6767
[ PASS ] Compose: Tailscale Container Name - Matches template tailscale-newwallpaperwhodis
[ PASS ] Compose: App Container Name - Matches template app-newwallpaperwhodis
[ PASS ] Compose: Network Mode Sidecar - Routes through tailscale service
[ PASS ] Compose: Depends On Tailscale - Waits for tailscale container
[ PASS ] Compose: Service Naming - App service named 'application' per standards
[ PASS ] Compose: Tailscale Health Check - Configured correctly
[ PASS ] Compose: App Health Check - Next.js wget health check active
[ PASS ] Compose: Internal Proxy Port - Reverse proxy targets port 3000
[ PASS ] Service README: Mentions 3000 - Correctly explains internal network port
[ PASS ] Service README: Mentions 6767 - Correctly explains external LAN exposure
[ PASS ] Service README: Project Links - Links to webpage and upstream git
[ PASS ] Main Registry: Indexed - Service registered in root README.md
[ PASS ] Main Registry: Sorting - Service placed in correct alphabetical position (after Homepage)
==================================================
 INTEGRATION STATUS: SUCCESSFUL AND PR READY!     
==================================================

Live Runtime Verification (Docker in WSL)

The stack was deployed live inside WSL environment using TS_AUTHKEY in the environment configuration, successfully establishing container connectivity and secure tailnet routing:

Image ghcr.io/upioneer/newwallpaperwhodis:latest Pulled 
Network newwallpaperwhodis_default Creating 
Network newwallpaperwhodis_default Created 
Container tailscale-newwallpaperwhodis Creating 
Container tailscale-newwallpaperwhodis Created 
Container app-newwallpaperwhodis Creating 
Container app-newwallpaperwhodis Created 
Container tailscale-newwallpaperwhodis Starting 
Container tailscale-newwallpaperwhodis Started 
Container tailscale-newwallpaperwhodis Waiting 
Container tailscale-newwallpaperwhodis Healthy 
Container app-newwallpaperwhodis Starting 
Container app-newwallpaperwhodis Started 
  • tailscale-newwallpaperwhodis successfully registered on the Tailnet, fetched its Tailnet IP, and transitioned to Healthy.
  • app-newwallpaperwhodis booted automatically after sidecar verification, successfully completing end-to-end integration mapping.

Checklist

  • I have performed a self-review of my code and followed the templates structure.
  • I have added verification that the stack works as expected.
  • I have updated necessary documentation (e.g. frontpage README.md ).
  • I have selected the correct label(s) for this PR.

Additional Context

  • Flat-File Architecture: Users can drops wallpapers directly in a folder on their host machine (mapped to ./wallpapers) and the background crawler automatically ingests them without requiring uploads in the web UI.
  • Port Naming: The Next.js web application listens internally on 3000 (which tailscale reverse-proxies), while LAN exposure (if enabled by uncommenting ports) binds to port 6767.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant