Server
Your photos, on a server you own.
The LightCraft server keeps one library for all your devices: photos, edits, albums, ratings and presets. Install it from Docker Hub or as a program on a Mac, Windows PC or Linux machine. It is open source, and LightBites works without it.
Overview
Without a server, LightBites keeps a library on each device. With one, every device signs in with the same address, a user name and a password, and they share one library, like a cloud you own.
- One library per person, shared by all their devices: photos, edits, albums, ratings, keywords and presets.
- Folders already on the server (a NAS share, a backup disk) join the library where they are. They are never copied or moved.
- Album links that anyone can open in a browser, with no account: a slideshow, Download All, an optional password, and an end date.
- The web app at the server’s address, and an admin page at
/adminfor users, devices, folders and storage limits.
It runs on Intel/AMD and ARM 64-bit (Apple silicon, Raspberry Pi 4 and newer, most NASes). You need 2 GB of memory (4 GB or more for big raw files) and disk for the originals your devices upload.
Install
Pick how you want to run it. Both are the same server.
One image for Intel/AMD and ARM, from Docker Hub. Add -lite to the tag (lightcraft-server:lite) to leave out the web app.
docker run -d --name lightcraft --restart unless-stopped \
-p 8080:8080 \
-v lightcraft-data:/data \
-v /path/to/your/photos:/photos:ro \
elrumo/lightcraft-server Then docker logs lightcraft shows the setup code to enter at /admin. The full Docker guide covers NAS setups and Docker Compose.
Guides
Step by step, from an empty machine to a synced library.
- Install the server with DockerThe quickest way to a server of your own: one image from Docker Hub, for Intel/AMD and ARM, with the web app included.5 min
- Run the server on a Mac, Windows or Linux computerA single program and a `web` folder, for Apple silicon and Intel Macs, Windows 10 and 11 (Intel/AMD and ARM), and Linux (x86_64 and aarch64).8 min
- Reach your server from anywhereThe server itself speaks plain HTTP. Choose how your devices reach it when they leave your home network.10 min
- Connect LightBites and add your photo foldersOnce the server runs, every device signs in with the same address, a user name and a password, and shares one library.6 min
- Update, back up and keep the server safeA few minutes now and then. The server keeps everything in one data folder.5 min
First run
The server is empty until you create an admin.
- Find the setup code. The server logs it when it starts with no admin: “enter the setup code ABCD-1234”.
- Open the admin page,
http://<address>:8080/admin, enter the code, and choose a user name and password. - Add users. Users, then Add user: one per person, each with a library of their own.
- Connect a device. Overview shows the address to type on each device, with a Copy button.
The same from a terminal: lightcraft-server user add ann --admin (in Docker, docker exec -it lightcraft lightcraft-server user add ann --admin).
Connect LightBites
On iPhone, iPad and Mac, open Settings, then Sync.
Enter the server’s address, your user name and your password, and tap Sign In. The first device with photos uploads its library; the others fill from the server. Address typing: photos.example.com means https://; a bare address on your home network or tailnet (192.168.1.20:8080, nas:8080) means http://. The connect guide covers photo folders already on the server and what happens when both sides have photos.
Security
- HTTPS or a private network. Passwords and photos travel in the clear over plain HTTP. Use Caddy, Tailscale or your home network.
- Your folders stay yours. Photo folders are read in place and mounted read only unless you switch writing on for one.
- Hashed passwords, guarded sign-in. Passwords are hashed, wrong guesses wait longer each time, and each device has a token you can sign out on the admin page.
- Open source. The server is MIT or Apache-2.0 licensed; the code is on GitHub.
Troubleshooting
LightBites says it can’t reach the server
Check the address and its scheme: https:// behind Caddy or Tailscale, http:// with the port (http://192.168.1.20:8080) on your home network. Open the same address in a browser on the phone. Check the container is healthy (docker ps) and that the firewall allows the port.
The admin page asks for a setup code
No admin exists yet. The code is in the server’s log (docker logs lightcraft, or the terminal where you started the program). It is shown once per start.
Wrong user name or password, or “try again in N seconds”
Check them on the admin page (Users, then Reset password). After five wrong passwords each try waits longer, up to 15 minutes.
A library folder “isn’t there (not mounted?)”
The folder’s path is the one the server sees. In Docker that is under /photos, so check the -v mount, and that the files are readable by user id 10001 (mode 644 for files and 755 for folders).
Photos show no thumbnails for a while
The server is still building their previews (about 1 MB each). The admin page shows how many are built and how many are left. Big raw files need 4 GB of memory or more.
Uploads of big raw files fail
A proxy in front of the server limits the size of a request. nginx: client_max_body_size 0;. Caddy and Tailscale need nothing.
macOS says the program can’t be opened
Run xattr -dr com.apple.quarantine <folder> once on the unzipped folder. The Docker image and Linux builds are not affected.
Every option, the protocol and the merge rules are in the full self-hosting reference.