24 October 2026

Saturday Computing: Build Your Own Photo Server


Saturday Computing: Build Your Own Photo Server

Your photographs, your Linux server — viewed from Windows or an iPad

You can take thousands of photographs without having a particularly good way of finding them afterwards.

Some are on a camera card. Others are on a Windows computer, an external drive or a tablet. There may be several copies of the same picture, while the one you actually want remains surprisingly difficult to locate.

What if one Linux computer could organise a collection and make it available through a web browser?

That is this week’s project: build a photo server, then use Windows and an iPad to explore the same library.

For GCSE and A-level Computer Science students, this turns databases, networks and web technologies into something useful.

Why Photographs Make Such a Good Computing Project

Photography, sailing and practical science all give me reasons to accumulate images. A useful collection might include a sailing race, microscope photographs and a sequence showing an experiment.

Those images raise different questions:

  • Which photographs were taken on a particular day?
  • Which belong to the same event?
  • Can one photograph appear in two albums?
  • Can I find an image without remembering its filename?
  • Can I view it on a different device?

A folder can store a photograph. A photo-management system adds ways to describe, retrieve and present it.

My teaching aim would be to make students explain what happens when they tap an album. Getting the software working is the beginning of the investigation.

What Are We Actually Building?

The project has four main parts.

PartJob
Linux computerRuns the services and manages hardware, storage and permissions
Photo applicationHandles uploads, albums, requests and access control
DatabaseStores structured information and relationships
Image storageHolds original photographs and generated previews

The Windows computer and iPad are clients. Their browsers request information from the server and display the results.

A server does not have to be an enormous machine in a distant building. It is a computer providing a service.

Nor must every device use the same operating system. The browser and server exchange data using agreed protocols.

That is why a Linux server can provide photographs to a Windows laptop and an Apple tablet.

A Practical Route: Linux and Immich

For this worked example, I would use Immich, a self-hosted photo and video application with a browser interface. Its architecture combines clients, a server and a database, making it a useful system to investigate. Immich

We are installing an existing application and examining the ideas behind it. Students can then build smaller versions of individual components as programming exercises.

Use the current official documentation when installing, because requirements and configuration can change.

Choose Suitable Hardware

A spare computer running a supported 64-bit Linux distribution, such as Ubuntu or Debian, is a useful starting point.

Immich’s current standard requirements specify at least 6 GB RAM and two CPU cores, with 8 GB and four cores recommended. Older processors need checking against its current compatibility requirements.

A compatible 64-bit Raspberry Pi with sufficient memory and suitable storage is another possibility. An old, low-memory Pi should not be assumed suitable. Immich

For a first classroom build, I would choose:

  • A compatible computer with 8 GB RAM or more.
  • An SSD for the operating system and database.
  • Enough image storage for the test collection and generated files.
  • Ethernet to the router where practical.
  • A separate drive for backups.

Keep the database on suitable local storage rather than a network share, as required by Immich’s guidance. Immich

Windows and the iPad need a suitable browser and access to the server’s network.

Start With 50 Photographs

Resist importing an entire photographic archive immediately.

Choose about 50 non-sensitive JPEG images covering several dates and subjects. Keep the originals separately.

A small collection makes it easier to spot missing photographs, understand dates and test albums. JPEG also avoids making camera RAW compatibility the first problem to solve.

For my own teaching, I might use photographs of boats, laboratory equipment and garden plants. Students could use objects or landscapes they have photographed themselves.

The first success is simple:

Upload a picture from Windows and view it on the iPad.

Install the Application in Stages

Immich recommends Docker Compose. Docker containers package application components with their dependencies; they share the host’s kernel rather than each containing a complete separate operating system.

First install Docker Engine and its Compose plugin using the official instructions for your Linux distribution.

Then follow Immich’s current installation guide:

  1. Create a new project directory.
  2. Download the official release’s docker-compose.yml and example environment file.
  3. Rename the environment file to .env.
  4. Configure a new upload location, local database location, timezone and database password.
  5. Start the application from that directory.

The start command is:

docker compose up -d

The -d option runs the services in the background.

Use the current official configuration files rather than copying an old Compose file from a tutorial. Keep a record of the version installed. Immich

Two useful diagnostic commands are:

docker compose ps
docker compose logs --tail=50

These help establish whether the services are running and what they report.

Open the Collection From Windows and an iPad

Find the Linux server’s LAN address through your router or, on many Linux systems, with:

hostname -I

There may be several addresses, including container-network addresses. Choose the address belonging to the connection to your home router.

If it were 192.168.1.50, the default browser address would be:

http://192.168.1.50:2283

That address is an example. Substitute your server’s actual address.

Complete initial setup from a trusted device; the first registered user becomes the administrator. Upload the test images, then open the same address in Safari on the iPad. Immich

Both devices must have network access to the server. Guest Wi-Fi can prevent devices communicating with one another.

The number 2283 identifies the application’s default port. The IP address identifies the machine; the port helps identify the service.

A router DHCP reservation can give the server a consistent LAN address.

Keep this first exercise on a trusted local network. Plain HTTP does not encrypt the connection; use appropriately configured HTTPS or an encrypted private connection before using untrusted networks.

What Happens When You Tap an Album?

Consider a typical album request:

  1. The browser sends a request to the application.
  2. The server checks the user’s identity and permissions.
  3. It retrieves relevant information from the database.
  4. It returns album data and serves the requested previews.
  5. The browser arranges the results on screen.

Opening a photograph can trigger a further request for a larger image.

The iPad does not need to download the entire archive simply to display a gallery.

This illustrates the division between client-side processing, such as arranging the display, and server-side processing, such as checking access and retrieving records.

Ask students to explain why the server must enforce permissions even if the browser interface hides an unavailable album.

Why the Database Matters

The photograph and its database record are different things.

An image file contains image data and may contain embedded metadata, such as capture time, camera settings or GPS coordinates. A photo application can extract information into searchable records and add its own information, including ownership and album membership.

For teaching, imagine this simplified design:

TableExample fields
PhotoPhotoID, Filename, DateTaken, FilePath, OwnerID
AlbumAlbumID, AlbumName
AlbumPhotoAlbumID, PhotoID

This is a teaching model, not Immich’s actual database schema.

PhotoID uniquely identifies a photograph: it is a primary key.

AlbumPhoto connects albums and photographs using foreign keys. Together, AlbumID and PhotoID could form its composite primary key.

This represents a many-to-many relationship: an album contains many photographs, and one photograph can belong to several albums.

A photograph of Champagne might appear in both “Sailing” and “Boat Maintenance” without requiring two copies of the original file.

That gives students a practical reason to understand relationships before writing SQL.

Try a Database Question

Using the teaching model, this query finds photographs taken during October 2026:

SELECT PhotoID, Filename, DateTaken
FROM Photo
WHERE DateTaken >= '2026-10-01'
  AND DateTaken < '2026-11-01'
ORDER BY DateTaken;

The upper boundary also works when DateTaken includes a time.

Run experiments like this in a separate practice database rather than modifying the application’s production database.

Ask students why an index on DateTaken might speed up date searches, and what extra storage and maintenance it would require.

The Web Technologies Hiding in the Gallery

A photo gallery gives familiar web technologies a clear purpose.

TechnologyRole
HTMLStructures page content
CSSControls layout and presentation
JavaScriptSupports interaction and dynamic updates
HTTP or HTTPSCarries requests and responses
APIDefines how software requests data or operations

On Windows, open the browser’s developer tools and select the Network tab.

Reload the gallery. Compare requests for page resources, structured data and images.

Then ask:

  • Does opening an album request every original photograph?
  • What changes when a photograph is opened?
  • Are some resources loaded from the browser cache?
  • Why does a thumbnail grid usually load faster than full-size images?

Students can now connect technical vocabulary to behaviour they have observed.

Measure Storage and Performance

Suppose 50 test JPEGs average 6 MB:

Total image storage = number of images x average file size

Total image storage = 50 x 6 MB = 300 MB

For 20,000 photographs at the same average size:

Total image storage = 20,000 x 6 MB = 120,000 MB, or approximately 120 GB

These are illustrative decimal estimates. Actual file sizes vary.

Allow additional capacity for previews, database growth, other generated files and free space. Video and RAW files can change the calculation substantially.

Students could compare a freshly loaded album with a second visit, or measure the same task on Ethernet and Wi-Fi.

Change one factor at a time. A faster second attempt might reflect caching rather than a faster network.

Should the Server Run All Day?

An old computer may be available at no purchase cost but still use electricity.

For illustration, a machine averaging 30 W continuously uses:

Daily energy in kWh = power in watts x hours / 1000

Daily energy = 30 x 24 / 1000 = 0.72 kWh

At an assumed tariff of 25p per kWh:

Daily cost = 0.72 x £0.25 = £0.18

Use a plug-in meter and your actual tariff for a meaningful comparison. A teaching server may only need to run during lessons.

Existing Folders Need a Different Approach

What if the photographs are already organised on a storage drive?

Immich supports external libraries for existing image folders. This requires the appropriate storage mount and library configuration; files placed in an arbitrary server folder will not automatically appear.

A read-only external-library mount can prevent the application changing those source files. It does not replace a separate backup, and some metadata-writing functions are restricted. Immich

For a first build, browser-uploaded copies are simpler.

A Photo Server Still Needs Backups

Once the project becomes useful, protect both the photographs and the database.

Immich’s database backups contain metadata, not the image collection. Backups stored only on the server also remain vulnerable to its failure.

Use a 3-2-1 approach: three copies, on two different storage types, with one off-site. Save configuration securely too, including the information needed to rebuild the installation. Immich

Practise recovery in a separate test installation. Check that an original image opens and album membership survives.

A working gallery proves that you can access your photographs today. A tested recovery process gives you evidence that you can recover them tomorrow.

That is a worthwhile computing lesson in its own right.

Privacy and Access Beyond Home

For classroom work, use images you own and have permission to use. Avoid identifiable pupils, private documents and sensitive locations in the demonstration collection.

Do not forward the application’s port through the router as part of this beginner exercise.

Access from outside the home is a separate extension involving authentication, encrypted connections, updates and carefully controlled access. A LAN-only gallery is already a complete and worthwhile project.

Viewing through the iPad browser also does not automatically upload every photograph stored on the iPad. Browsing, manual uploading and automatic device backup are separate functions.

Turn the Build Into an OCR Learning Activity

The project connects directly with OCR H446 topics. ocr.org.uk

Specification areaPractical connection
1.3.2 DatabasesKeys, relationships, SQL and indexing
1.3.3 NetworksLANs, protocols and client-server systems
1.3.4 Web TechnologiesHTML, CSS, JavaScript and client/server processing

For GCSE students, concentrate on identifying the components and explaining a request.

For A-level students, add the relational model, SQL and browser-network investigation.

A useful final challenge is to give each student a different failure: a wrong IP address, an unavailable service, an isolated guest network or insufficient access permissions.

Ask them to justify each diagnostic step.

The aim is to develop a method: establish what works, locate the failure and test a plausible explanation.

A Photograph Becomes a Lesson in Computing

The most satisfying outcome is seeing a photograph uploaded from Windows appear on an iPad while the Linux computer quietly provides the service.

A small image collection has become an opportunity to investigate networks, databases, web applications, storage and recovery.

For me, that is the value of practical computing: students have something real to question, measure and explain.

Start with 50 photographs, two browsers and one server. Then make sure you can explain the journey of a single image.

No comments:

Post a Comment

Saturday Computing: Build Your Own Photo Server

Saturday Computing: Build Your Own Photo Server Your photographs, your Linux server — viewed from Windows or an iPad You can take thousands ...