Skip to content

Add newwallpaperwhodis#296

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

Add newwallpaperwhodis#296
upioneer wants to merge 5 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.

Comment thread services/newwallpaperwhodis/compose.yaml Outdated
Comment thread services/newwallpaperwhodis/README.md Outdated
Comment thread .markdownlint.yml
Comment thread validate-service.ps1 Outdated
@crypt0rr

Copy link
Copy Markdown
Collaborator
SCR-20260612-nwds SCR-20260612-nwak

@crypt0rr crypt0rr added the new service request to add a new service label Jun 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new service request to add a new service

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants