photocraft-web
Docker app from MikaPST's Repository
Overview
Readme
View on GitHub
PhotoCraft Web — Docker Image
A community-maintained Docker image for
PhotoCraft,
providing its browser-based image editor through a self-hosted web interface.
Build automation and image publication to GitHub Container Registry (GHCR).
Why this repository?
The official PhotoCraft project provides a WebAssembly-based version that can be hosted as a static website. This repository packages the web application into a Docker image to simplify self-hosting.
The goals are to:
- Build the PhotoCraft Web application from the upstream source code.
- Publish a ready-to-run Docker image to GHCR.
- Automatically rebuild the image every week to incorporate upstream changes.
- Provide a convenient deployment option for Unraid Community Applications.
- Offer a simple Docker Compose configuration for users who prefer managing containers with Compose.
- Keep the packaging and deployment configuration separate from the upstream PhotoCraft project.
This is a packaging and distribution project, not a fork intended to develop a separate image editor.
How it works
PhotoCraft Web runs directly in the user's browser using WebAssembly. The Docker container serves the static web application through NGINX; it does not provide a remote Linux desktop.
- Browser-based interface: access the editor through a web browser.
- Local file selection: opening a file uses the browser's file picker.
- Browser downloads: saving and exporting documents uses the browser's download mechanism.
- No remote desktop: no VNC, remote desktop session or Linux graphical environment is required.
- Self-hosted: run the application on your own server and access it over your local network or through a properly configured reverse proxy.
File selection, editing and export are handled by the browser application. The container serves the application files rather than acting as a document-storage service.
Docker image
The image is published to GitHub Container Registry:
ghcr.io/mikapst/photocraft-web:latest
Option 1 — Docker Compose (recommended)
A docker-compose.yml file is provided at the root of this repository. It is the simplest way to start and maintain PhotoCraft Web with Docker Compose.
services:
photocraft-web:
image: ghcr.io/mikapst/photocraft-web:latest
container_name: photocraft-web
ports:
- "8080:8080"
restart: unless-stopped
From the repository root, start the application with:
docker compose up -d
Open the application in your browser:
http://YOUR_SERVER_IP:8080
Replace YOUR_SERVER_IP with the IP address or hostname of your server. If Docker is running on your own computer, you can use http://localhost:8080.
Useful Compose commands
# View container logs
docker compose logs -f
# Pull the latest image and recreate the container
docker compose pull
docker compose up -d
# Stop and remove the container
docker compose down
No .env file or persistent volume is required for this basic setup. The host port is configured in docker-compose.yml; by default, port 8080 on the host is mapped to port 8080 in the container. To use a different host port, change the left-hand side of the mapping. For example, 8081:8080 exposes the application on host port 8081.
Option 2 — Run directly with Docker
If you prefer not to use Docker Compose, you can run the container directly:
docker pull ghcr.io/mikapst/photocraft-web:latest
docker run -d \
--name photocraft-web \
--restart unless-stopped \
-p 8080:8080 \
ghcr.io/mikapst/photocraft-web:latest
Open the application at:
http://YOUR_SERVER_IP:8080
Optional CPU and memory limits can be added to the docker run command if needed, for example --cpus=2 --memory=2g. These limits are not included in the default Compose file.
Network access and reverse proxies
The container listens for HTTP traffic on port 8080. For external access, use a reverse proxy such as Traefik to terminate HTTPS and forward requests to the container over HTTP.
Do not expose an unencrypted HTTP port directly to the public Internet. Restrict access to your intended network or protect external access with HTTPS and appropriate access controls.
Automated builds
GitHub Actions builds and publishes the image automatically.
| Trigger | Behaviour |
|---|---|
| Weekly schedule | Rebuilds from the upstream main branch |
| Manual workflow dispatch | Allows a build to be triggered manually |
Workflow changes on main |
Triggers a build when the workflow file changes |
Each successful build publishes:
latest— the most recently published image.sha-<commit>— a build-specific tag for identifying an image.
The build targets linux/amd64 and linux/arm64. Actual compatibility depends on the upstream build and the target platform.
[!IMPORTANT] A weekly build does not guarantee that upstream changes are compatible or stable. PhotoCraft is under active development and is currently described by its maintainers as an early-alpha project. Test new images before relying on them for important work.
The latest tag is mutable and may point to a newer image after a successful build.
Unraid Community Applications
This image is intended to be distributed through the maintainer's existing Unraid Community Applications repository.
The Unraid template references the published GHCR image and provides configuration for the web port and resource limits.
- Unraid Community Applications repository: MikaPST/unraid-community-apps
- PhotoCraft Web template: photocraft-web.xml
This repository contains the image build, publication workflow and Docker Compose configuration. The Unraid Community Applications template is maintained separately.
Upstream project
PhotoCraft is an open-source image editor developed by the ArtCraft Team and its contributors.
- Source code: storytold/photocraft
- Official website: getartcraft.com/apps/photocraft
- Official web hosting guide: Docker web hosting
- Official releases: PhotoCraft releases
This repository builds the Docker image using the upstream project's Dockerfile and packaging files. The Docker packaging recipe is community-maintained upstream and may not always match the latest official web release.
License and attribution
PhotoCraft is dual-licensed under the MIT License or Apache License 2.0, at the user's option. Copyright belongs to the ArtCraft Team and PhotoCraft contributors.
The upstream project includes license and attribution information for the application and bundled third-party assets. These notices and the applicable license files must be preserved when redistributing the application.
The licenses for the upstream application do not automatically determine the license of the packaging files maintained in this repository. Refer to the repository's own LICENSE file for the terms applicable to those files.
The PhotoCraft name, ArtCraft branding and logos remain subject to their respective trademark and usage terms. This repository is an independent community-maintained packaging project and is not an official PhotoCraft release and is not affiliated with or endorsed by the PhotoCraft or ArtCraft maintainers.
Disclaimer
PhotoCraft is under active development. Features, compatibility and behaviour may change between builds. Use the application and its generated images and documents at your own discretion.
Requirements
No special privileges or persistent data volumes are required. The web interface is served over HTTP by the container. When using a reverse proxy such as Traefik, configure the proxy to forward requests to the container HTTP port.
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/mikapst/photocraft-web:latestRuntime arguments
- Web UI
http://[IP]:[PORT:8080]/- Network
bridge- Shell
sh- Privileged
- false
Template configuration
Port used to access the PhotoCraft Web interface.
- Target
- 8080
- Default
- 8080