A clearer layout on small screens
The gallery places the logo beside a two-line wordmark. The back link, album title and search menu share a compact toolbar. On mobile, albums appear as consistent cards in two columns.
A hobby project you can build on
This website grew from two interests: taking photographs and building the technology behind them. If you are a photographer looking for something similar, you can host it on your own webspace.
Self-hosted · PHP & database · Private, non-commercial use
01 / The gallery
The interface stays understated. Visitors can open technical details and additional features whenever they want to learn more about a photograph.
The gallery places the logo beside a two-line wordmark. The back link, album title and search menu share a compact toolbar. On mobile, albums appear as consistent cards in two columns.
Switch the public website and admin area between German and English. Without a saved preference, Germany defaults to German; other or unknown countries default to English. Detection uses a local country database; a manual language choice takes precedence. Your own text and EXIF values are preserved. Emails remain in German for now.
Present photos in series and search the entire collection from the homepage. Combine camera, lens, aperture, shutter speed, ISO, lighting and location filters, even without a search term.
An image viewer with optional EXIF details. Swipe to change photos, pull down to close, or swipe up to show image information.
Preview images and image variants for different displays. Original files are retained for requested downloads.
Collect images, enter an email address and request a personal link. Get 48-hour access to individual files or a combined ZIP.
An optional photo subscription with email confirmation and an unsubscribe link. The photographer prepares and starts notifications in the admin area.
An optional photo map on the homepage and gallery after activation. Use “Show images in this map area” to filter the visible region. Includes aperture-based ratings, dark mode and a contact form with server-side security checks and sending limits.
02 / The workspace
Try it without registering. The public demo password Demo-Portfolio-2026! is also shown on the login page. All visitors share changes; after one hour, the initial state is restored on the next visit. Emails are simulated and statistics use sample data.
A protected admin area brings together images, configuration and feedback. Here is an overview:
Five tabs for uploads, images, ratings, EXIF editing and publishing. Upload photos and videos, synchronise files and manage albums. Deleting an album keeps its media files.
New uploads and FTP imports start as drafts. Publish images immediately, withdraw them or schedule a time in Europe/Berlin. They become available at that time without a cron job. Originals, previews, search, downloads and new subscription campaigns respect the status. Previously saved copies cannot be recalled; emails are still started manually.
Byte-identical files are detected using SHA-256, even with different filenames. Instead of saving a second copy, the existing image can be added to the selected album. Recompressed or merely similar-looking images are not considered duplicates.
A filterable table with thumbnails and ten metadata columns. Edit up to 50 selected images at a time: set values, clear fields or fill missing information only. Camera and lens filters also support EMPTY. Every field offers existing values from the whole collection as suggestions. New values can be entered freely and become suggestions after saving. Changes affect the gallery database; original files remain unchanged.
Prepare thumbnails and display sizes in the admin area so visitors do not have to wait for generation on their first visit.
Seven sections: overview, image views, live, visitor map, browsers & devices, daily overview and notes. Image views count opening the image viewer, not thumbnails. Live estimates visible gallery tabs active in the last two minutes; multiple tabs can count separately. The country map uses local geolocation data without external lookup requests. No unique people are identified and no raw IP addresses are stored. Date-range reports can be exported as CSV; Live shows current activity.
A clear table showing email, file selection, sending status and view/download-start counts. Disable personal links when needed.
View subscribers and sending logs in tables, gather new images for a message, and start, pause or resume sending. Keep the admin area open while sending.
Check for new versions and choose to install compatible updates. HTTPS, digital signatures and checksums protect the download. The current code is backed up before replacement; interrupted updates can be rolled back through a protected recovery page. Images, database, credentials and settings are retained. Local code changes or required database migrations stop automatic updating. Version 1.5.0 is the baseline; older versions need a fresh installation or a separate manual migration first.
The self-hosted admin shows the shared anonymised ideas board with status, target version, filters and support counts. Support existing ideas by confirmed email or submit your own. Each address gets one vote per suggestion. Central administration, personal messages and contact details remain with the developer.
Optionally sign in with passkeys using Face ID, Touch ID, 1Password or a FIDO2 security key. Your first passkey must pass a sign-in test before activation; password-only sign-in is then disabled. Manage multiple passkeys and store ten single-use recovery codes separately. Password plus recovery code initially permits only replacement-passkey setup. An email password reset does not disable protection. New installations still begin by changing the initial password. Passkeys are disabled in the public demo.
Seven tabs for general settings, features, appearance, images, social links, slideshow and legal details, saved together. Enter a custom hex accent colour or choose one of six presets. Arrange social links with matching icons.
Enable or disable photo subscriptions, the admin link, dark-mode switch, homepage search and filters, and the contact form individually. Place albums above or below selected photos. Search inside albums stays available, and existing subscribers can still unsubscribe.
Check the server and PHP extensions, upload limits, directory permissions, cache and logged email sending. A step-by-step media check finds missing or unreadable files and image variants not yet prepared. Checks do not change images or send test emails.
Under Configuration → Images, choose separately whether the viewer starts with EXIF details on desktop or mobile/tablet. Both defaults are initially off. Visitors can toggle the display at any time.
The admin navigation stays on the left while the website appears on the right. Use Refresh preview to review saved changes. The preview is not loaded on phones and tablets.
A discreet admin link in the website footer shows Signed in when your session is valid. Back to website returns from admin to the gallery in the same tab.
A toggle for the entire download feature and basket. When off, selection and requests are disabled and personal download links are paused. Links that are still valid work again after enabling it.
03 / Behind the scenes
This edition is for photographers who run their own website and have some experience with hosting and databases.
The web wizard guides you through requirements, verification, database details and website settings. After uploading, open the website over HTTPS, upload the provided verification file unchanged and continue in the browser. No PHP file needs editing. Finally, tables and configuration are created and the personal password-change page opens. The fixed initial password is Photography-Start-2026!. If you leave the setup session before changing the password, your first login also requires the individual access key from the completion page. The installer locks itself automatically. Existing tables are not overwritten.
The contact form, download links and photo subscriptions require working email delivery from your host. Subscription notifications are started manually in the admin area.
The optional map loads Leaflet and OpenStreetMap after activation. Update your content, operator details and privacy information before publishing.
Installation reporting: During setup, when saving settings, and subsequently at most once a day when the website is used, the self-hosted edition reports its website URL, version and a random installation identifier to brehmen.com. This is disclosed beforehand. No images, visitor or subscriber data are sent; no reports are sent without page visits. There is no switch to disable reporting in the admin area.
Internal statistics count aggregate page and image views. Live briefly records active gallery tabs; a random token is held only in memory, while the server stores its hash, country and last activity time. Approximate country lookup happens locally using DB-IP Country Lite (CC BY 4.0); VPNs and providers can affect accuracy. There is no individual browsing history or personal email-open tracking.
04 / Try it yourself
The complete website package with source code, an empty database schema, a guided web installer and updates in the admin area.
Your installation starts without my photos, credentials, subscribers or statistics. A neutral camera icon replaces my personal logo.
Download ZIPVersion 1.8.0 · 4.729 KB · 24.10.2026
New in version 1.8.0: German and English on the website and in the admin area, automatic language selection by country and optional passkey protection. Also includes compact gallery navigation, consistent mobile album cards and tabular idea boards. Unmodified installations from 1.5.0 can use Software updates. Your existing login stays available until you set up and test a passkey yourself.
Hobbyprojekt ohne zugesagten Support oder Update-Zeitplan. Vor dem produktiven Einsatz auf deinem Webspace testen. Für die Erstinstallation in einer leeren Datenbank. Ab dieser Basis lassen sich kompatible Folgeversionen per Update-Button installieren. Neue Passkey-Tabellen werden bei Bedarf automatisch ergänzt. Der Wechsel von 1.3/1.4 erfordert weiterhin eine gesonderte Migration oder frische Installation.
From ZIP to portfolio
All steps are explained in the browser; the README provides additional help. Create the database with your host beforehand. Back up existing installations first – this edition does not include a general-purpose database upgrader.
Release Info
From the first self-hosted edition to the current version. This information was compiled from published packages and their changelogs.
Developing together
What feature is missing? What could be easier? After you confirm your email address, your suggestion will be reviewed in the central admin area. You will receive updates about the decision and the released version.
Browse confirmed suggestions from all users. Public descriptions are reviewed for personal information first. Supporting an idea shows that you would also find it useful.
1 suggestions · Page 1 of 1 · Sorted by support
On smaller screens, scroll the table horizontally.
| Suggestion | Status | Version | Votes | Support |
|---|---|---|---|---|
| #1Verbesserungen optimieren alle Eingegangenen Verbesserungen auch in der Selfhostet version sehen und den aktuellen fortschritt sehen | Completed | Available since1.7.0 | 1 | Closed |