Docker
Docker is the recommended way to keep Spigot Sales Webhook running on a server.
Compose File
Section titled “Compose File”The bundled docker-compose.yml builds the image and mounts the important files:
services: spigot-sales-webhook: build: . container_name: spigot-sales-webhook restart: unless-stopped volumes: - ./src/main/resources/config.yml:/opt/spigot-sales-webhook/config.yml:ro - ./data:/opt/spigot-sales-webhook/dataThe config is mounted read-only, while data is writable so the state file survives rebuilds and restarts.
Start the Worker
Section titled “Start the Worker”Create and fill src/main/resources/config.yml, then run:
docker compose up -d --buildDocker builds the Java distribution in a JDK image, copies it into a smaller JRE image, and runs it as the spigotsales user.
View Logs
Section titled “View Logs”docker compose logs -f spigot-sales-webhookWatch for:
- config loading errors
- failed SpigotMC buyer page requests
- Discord webhook HTTP errors
- “No new sales found” scan results
- “Sent X new sales to Discord” success messages
Stop the Worker
Section titled “Stop the Worker”docker compose downThis stops the container but keeps ./data.
Persistent State
Section titled “Persistent State”With the default config:
scan: state-file: "data/seen-sales.json"Inside Docker, that resolves to:
/opt/spigot-sales-webhook/data/seen-sales.jsonBecause ./data is mounted into /opt/spigot-sales-webhook/data, the state file remains on the host machine.
Updating
Section titled “Updating”To rebuild after pulling new source changes:
docker compose up -d --buildThe image does not copy your real config into the final image. Private values stay in your local mounted config.yml.