UpSnap Docker & Self-Hosted Deployment

GitHub

A simple wake on lan web app written with SvelteKit, Go and PocketBase.

5,790 stars Go Go 1 file ยท ~1,724 tokens #golang#pocketbase#sveltekit#wakeonlan#wol
RAW Compose
1. Pull Image (DOCKERHUB) docker pull seriousm4x/upsnap
2. Docker Run (1-Click Launch) docker run -d --name upsnap --restart always seriousm4x/upsnap:latest
3. Podman Run podman run -d --name upsnap --restart always seriousm4x/upsnap:latest
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/seriousm4x/upsnap:latest
5. ORAS Pull (OCI Artifact) oras pull seriousm4x/upsnap:latest
6. Compose Deployment docker compose up -d
docker-compose.dev.yml
Download .yml
services:
  upsnap:
    cap_add:
      - NET_RAW # Required for privileged ping, network device scan, and IP address tracking (nmap)
    cap_drop:
      - ALL
    container_name: upsnap
    build:
      dockerfile: Dockerfile.dev
    network_mode: host
    restart: unless-stopped
    volumes:
      - ./data:/app/pb_data
    # # If you want to use FQDN instead of an IP and it is a ".local" domain, avahi and dbus must be installed on 
    # # the host, and the host dbus must be mounted in the container.
    # # Before uncommmenting, ensure you are familiar with potential security implications of mounting dbus
    #   - /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket:ro
    # # To use a non-root user, create the mountpoint first before starting
    # # the container (mkdir data) so that it has the right permissions.
    # user: 1000:1000
    # environment:
    #   - TZ=Europe/Berlin # Set container timezone for cron schedules
    #   - UPSNAP_HTTP_LISTEN=127.0.0.1:8090
    #   - UPSNAP_INTERVAL=*/10 * * * * * # Sets the interval in which the devices are pinged
    #   - UPSNAP_LOG_LEVEL=INFO # Console level for UpSnap logs: DEBUG, INFO, WARN, ERROR, or OFF
    #   - UPSNAP_SCAN_RANGE=192.168.1.0/24 # Scan range is used for device discovery on local network
    #   - UPSNAP_WEBSITE_TITLE=Custom name # Custom website title
    # # dns is used for name resolution during network scan
    # dns:
    #   - 192.18.0.1
    #   - 192.18.0.2
    # # you can change the listen ip:port inside the container like this:
    # entrypoint: /bin/sh -c "./upsnap serve --http 0.0.0.0:5000"
    # healthcheck:
    #   test: curl -fs "http://localhost:5000/api/health" || exit 1
    #   interval: 10s
    # # or install custom packages for shutdown
    # entrypoint: /bin/sh -c "apk update && apk add --no-cache <YOUR_PACKAGE> && rm -rf /var/cache/apk/* && ./upsnap serve"