Docker deployment
The official kuingsmile/piclist image runs the Core HTTP server. Images and desktop releases are published separately. Check the installed Core version inside the container after deployment.
Prepare a configuration
Create a private configuration directory containing a tested data.json. The default container directory is /root/.piclist. Adjust local upload paths, fonts, and other machine-specific paths for the container.
Start a local service
Publish the host port on loopback and listen on 0.0.0.0 inside the container so Docker can forward requests to it:
docker run -d \
--name piclist \
--restart unless-stopped \
-p 127.0.0.1:36677:36677 \
-v "./piclist:/root/.piclist" \
kuingsmile/piclist:latest \
node /usr/local/bin/picgo-server --host 0.0.0.0Docker Compose
Save this as compose.yaml:
services:
piclist:
image: kuingsmile/piclist:latest
restart: unless-stopped
ports:
- "127.0.0.1:36677:36677"
volumes:
- "./piclist:/root/.piclist"
command:
- node
- /usr/local/bin/picgo-server
- --host
- "0.0.0.0"
- --key
- "${PICLIST_SERVER_KEY:?Set PICLIST_SERVER_KEY}"Set your own PICLIST_SERVER_KEY locally or in an untracked .env file, then run docker compose up -d. Docker-forwarded requests may not appear as loopback requests to the server, so clients should supply the same key.
Configure and verify
docker exec -it piclist picgo init
docker exec piclist picgo --version
docker restart piclist
curl http://127.0.0.1:36677/heartbeatFor a Compose-managed container, use docker compose exec piclist picgo init instead. Restart the service after changing configuration or installing plugins.
Remote clients should upload multipart file content. Their local paths do not exist in the container. If path uploads are required, mount the directory explicitly and send absolute container paths.
Update
Back up the mounted directory, pull the image, and recreate the container. For production, pin a tested image digest. The latest tag is mutable and does not identify a fixed Core version.