Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minuteYes, you can run Piwigo on a Linux VPS without a hosted gallery subscription. The supported choices are an official Docker deployment or a manual web-stack installation. Both require a web server, a MySQL-compatible database, PHP 8.2 or newer, an image-processing library, and enough storage for your originals and Piwigo’s generated sizes.
Need a server to try this on? Antihost offers Linux VPS plans with NVMe storage, full root access and a 14-day free trial.
Docker is usually the easier starting point when you want an isolated, repeatable deployment. Manual installation fits a VPS that already has Nginx or Apache, PHP, and MariaDB/MySQL configured and that you prefer to manage directly. Whichever route you choose, you—not Piwigo—own backups, off-site copies, upgrades, and recovery.
As an Amazon Associate I earn from qualifying purchases.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
What a self-hosted Piwigo installation needs
Piwigo is open-source photo-gallery software that runs as a PHP web application. On a VPS, the request path is straightforward: a browser reaches Nginx or Apache, the web server passes PHP requests to Piwigo, Piwigo reads and writes a MySQL-compatible database, and the filesystem stores originals, uploads, generated sizes, themes, plugins, and configuration.
Piwigo’s current requirements page lists these dependency floors (the page was current in 2026):
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
| Component | Requirement or guidance | Why it matters |
|---|---|---|
| Web server | Nginx or Apache | Serves static files and forwards PHP requests. |
| PHP | PHP 8.2 or newer | Runs the current Piwigo application and extensions. |
| Database | MySQL 5.6 or newer, or MariaDB 10.1 or newer | Stores albums, users, permissions, tags, comments, and settings. |
| Image processing | ImageMagick is recommended; GD is an alternative | Creates thumbnails and Piwigo’s multiple-size derivatives. |
| Optional media tools | ExifTool for metadata plugins; FFmpeg for the VideoJS poster-generation use case | Supports specific metadata and video workflows rather than the basic gallery. |
| Storage | Enough for originals plus generated sizes, thumbnails, database dumps, and temporary processing files | Generated images can consume substantial space in a large library. |
Piwigo does not publish a universal CPU, RAM, or photo-count minimum. A sensible VPS size depends on the number and resolution of photos, how many derivatives must be generated, how often you import media, the number of concurrent visitors, and which plugins you enable. A small private gallery and a public archive with frequent thumbnail generation are very different workloads, so do not treat a generic “one-size-fits-all” VPS specification as an official requirement.
Docker or manual installation?
Both routes install the same gallery software. The practical difference is who owns the surrounding stack and how you reproduce it after a failure.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →| Decision axis | Official Docker deployment | Manual web-stack deployment |
|---|---|---|
| Isolation and repeatability | The application and database workflow are described by compose.yaml; images and environment values can be recreated on another host. |
Piwigo uses the VPS’s installed PHP, web server, database, extensions, and filesystem layout. |
| Host integration | Container networking, volumes, ownership, and proxy headers become part of the setup. | Packages, service users, PHP modules, virtual hosts, and database permissions are managed directly on the host. |
| Updates | Back up the database and required files, then update the compose images and restart the stack. | Back up first, check the new release’s requirements, and replace application files while preserving your media and configuration. |
| Troubleshooting | Check container status, logs, volumes, inter-container DNS, and reverse-proxy headers. | Check systemd services, PHP and web-server logs, filesystem permissions, and host package versions. |
| Best fit | A new deployment or an operator who wants a documented, portable stack. | An administrator who already runs a conventional LEMP/LAMP server and wants native host control. |
If you are undecided, choose Docker for a clean first deployment unless your VPS already has a carefully managed PHP/database stack that you need to share with other sites. Manual installation is not less capable; it simply exposes more host-level decisions.
Prepare the Linux VPS
Before installing Piwigo, make the host reachable and decide how visitors will reach the gallery.
- Have an account that can connect over SSH and administer Docker or the web-stack packages.
- Choose a domain, subdomain, or path such as
gallery.example.netorexample.net/gallery. Piwigo supports all three patterns. Keep the public name independent of a release number so an upgrade does not force a URL change. - Point DNS at the VPS and plan HTTPS termination in Nginx or another reverse proxy. The Docker documentation specifically advises putting the Piwigo container behind Nginx.
- Reserve storage for originals, generated sizes, database files, logs, and backups. Keep backup capacity separate from the space needed by the live gallery.
- Decide which Linux user or container UID/GID should own uploaded files. Ownership mismatches are a common cause of failed imports and updates.
Do not expose a database port publicly just to make the installer work. In the documented Docker setup, the application reaches the database over the compose network using the service name piwigo-db:3306.
Route A: install Piwigo with the official Docker deployment
1. Create a dedicated application directory
Connect to the VPS over SSH and create a directory that will hold the Piwigo deployment files. Keeping compose.yaml and .env together makes the stack easier to back up and recreate.
mkdir -p ~/piwigo
cd ~/piwigo
The official Docker guide assumes Docker and the Compose plugin are already installed. If your distribution supplies an older Compose command, use the syntax supported by your installed version, but keep the documented service and environment names unchanged.
2. Download the official compose file
Download the current official compose.yaml into this directory. Use the file supplied by Piwigo’s Docker documentation rather than copying an old example from a forum; image names, health checks, volume definitions, and supported variables can change between releases.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
3. Create the environment file
Create a file named .env beside compose.yaml. Set the values required by the official file:
- The host port that Nginx will proxy to.
- A strong database password.
- Your timezone.
- Optional UID and GID values when the host filesystem needs a specific ownership mapping.
Protect the file because it contains a database credential. Do not commit it to a public repository or paste it into support tickets. If you change the exposed port later, update the Nginx upstream at the same time.
4. Start the stack and inspect its logs
docker compose up -d
docker compose logs
The first command creates or starts the containers in the background. The second shows startup output; add the service name or a follow mode supported by your Compose version when you need to narrow or continuously watch the logs. Look for image-pull failures, database initialization errors, permission denials, or a port already in use before opening the site.
5. Put Nginx in front of the container
The container should normally listen on a private VPS interface while Nginx handles the public hostname and TLS. For a domain deployment, proxy the public location to the port selected in .env. The proxy must preserve the original request information:
server {
listen 443 ssl;
server_name gallery.example.net;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
The port 8080 above is an example; use the port you exposed in your environment file. Configure your certificate and HTTP-to-HTTPS redirect according to your VPS’s normal Nginx practice. The important Piwigo-specific details are the forwarded host, client IP, forwarding chain, and protocol.
For a subpath such as /gallery, proxy that location and also send the prefix:
Free tools Windows power users keep installed
One-click scans. No signup required.
location /gallery/ {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Prefix /gallery;
}
Use a subpath only when you understand how your existing site handles URL rewriting and static assets. A dedicated domain or subdomain generally removes one layer of proxy complexity.
6. Complete Piwigo’s first-run installer
Open the public address after the container and proxy are healthy. The documented compose setup uses these database values:
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
- Database host:
piwigo-db:3306 - Database user, password, and name: the values defined by the compose deployment
- Table prefix: choose the prefix requested by the installer; retain it in your records
- Webmaster account: an identifier, a strong password, and an email address
Select Start Install. When the installer finishes, sign in to the administration panel and confirm that the dashboard loads, an album can be created, and a test image can be uploaded. Delete no data at this stage; first verify that the application can write where it needs to.
Route B: install Piwigo manually
1. Prepare the web stack
Install and configure Nginx or Apache, PHP 8.2 or newer, a supported MySQL or MariaDB server, and ImageMagick or GD. Enable the PHP extensions required by your Piwigo release and plugins. Create a database and a database user with a password; limit that account to the Piwigo database rather than granting unnecessary server-wide privileges.
2. Download and transfer the full archive
Download the full Piwigo archive, extract it locally or on the VPS, and upload the extracted contents to the web root or a directory such as photos. The manual guide mentions an FTP client, but secure alternatives such as SCP, SFTP, or an administrator-controlled deployment process are equally suitable on a VPS.
Keep the directory name stable. Do not publish a path containing the release number, because every upgrade would then require a URL change and another proxy or virtual-host edit.
3. Open the installer
Browse to the directory’s URL. An uninstalled Piwigo instance redirects to the web installer. Enter the database host, user, password, database name, and table prefix, then create the webmaster identifier, password, and email address. Complete the installation and sign in to administration.
4. Check host permissions
The web-server user must be able to read the application and write to the directories Piwigo uses for uploads, generated files, and local configuration. Avoid making the entire web root world-writable. If an import or plugin install fails, inspect ownership and mode bits first, then check the PHP and web-server error logs.
Storage, thumbnails, and media processing
Piwigo does not store only one copy of each image. It keeps originals and creates multiple sizes for browsing, thumbnails, and other display contexts. A high-resolution library can therefore need much more space than the sum of the source files alone. Leave working room for a large import and for a regeneration job; a filesystem that is “just large enough” can fill while derivatives are being created.
ImageMagick is the recommended image library on the current requirements page, while GD is an alternative. ExifTool matters only when you use metadata-related plugins, and FFmpeg is relevant to the VideoJS poster-generation use case. Installing every optional utility is unnecessary if your library contains only still images and you do not use those plugins.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
Plan imports around CPU, memory, and disk throughput rather than a nominal photo count. Generate derivatives in smaller batches when the VPS becomes unresponsive, and monitor free space during the first large upload so you can adjust storage before the database or web server is affected.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallBackups before updates and routine operation
A self-hosted operator is responsible for the complete recovery set. Before a Docker update, back up the database and copy all of these items:
- The
galleriesdirectory, which contains gallery media in the documented backup procedure. - The
uploaddirectory. - The
localdirectory, where local configuration and customizations are kept. compose.yaml..env.
Photo directories can consume substantial space, so make sure the backup destination is large enough. Keep at least one copy away from the VPS: a second directory on the same disk does not protect against disk failure, filesystem corruption, or a compromised host. Periodically perform a restore test using a disposable environment or a separate directory. A dump that cannot be imported and file copies that cannot be read are not recoverable backups.
Database backup example
Use the database backup mechanism appropriate to your deployment. In Docker, run the database dump from the database container or use the official Piwigo CLI backup capability. In a manual installation, use your normal MySQL or MariaDB dump process. Record the database name, user, host, table prefix, and the date of each dump beside the backup, but never store the password in an unprotected note.
What Piwigo does and does not back up for you
Piwigo states that self-hosted users must implement their own backup and redundancy strategy. Its hosted cloud service advertises regular backups and replication to a standby server, but those protections do not automatically apply to a VPS you administer. Your design must cover both the database and the filesystem artifacts listed above.
Updating a Docker deployment safely
- Read the release notes and verify that your PHP, database, and image-processing versions still meet the current requirements.
- Stop writes or announce a short maintenance window if the gallery receives uploads during the update.
- Create a fresh database dump and copy
galleries,upload,local,compose.yaml, and.env. - Check that the backup files have non-zero sizes and are readable from the backup location.
- Fetch the intended container images with your Compose workflow, then recreate the services using the updated compose definition.
- Watch
docker compose logsfor database migrations, permission failures, or repeated restarts. - Open the gallery, sign in to administration, browse an existing album, and upload a small test image.
- Retain the pre-update backup until you have confirmed that the upgraded instance works and that a restore path is available.
Do not delete the old configuration simply because the new container starts. A successful process launch does not prove that media volumes, database migrations, proxy headers, or file ownership are correct.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Updating a manual installation
- Check the target Piwigo release requirements against the PHP, database, and image-library versions installed on the VPS.
- Back up the database and copy
galleries,upload, andlocal. Preserve any web-server virtual-host and PHP configuration you changed. - Keep the public directory stable. Stage the new application files separately if your deployment method allows it, so you can switch back without renaming the public URL.
- Replace the application files according to the release instructions while preserving media and local configuration.
- Review ownership and permissions for the web-server user.
- Open the site and administration panel, allow any database upgrade to finish, and test an album, image display, upload, and plugin-dependent feature that matters to you.
Never treat a file replacement as a database backup. The database contains gallery structure, users, permissions, and settings that are not recreated by copying image directories.
Permissions, diagnostics, and the official CLI
The official Piwigo CLI can diagnose ownership and perform gallery database backups. Its documentation notes that the web-server user differs between plain Apache, Docker, and other setups. Run ownership diagnostics in the same environment that serves the gallery, then correct only the directories that need write access.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
When a deployment behaves differently after an update, collect evidence in this order:
Recommended Free Tools
- Container status and logs for Docker, or service status and web/PHP logs for a manual install.
- Available disk space and inode usage.
- Database connectivity using the configured host, port, user, and database name.
- Ownership and permissions on
galleries,upload,local, and any mounted volume. - Nginx forwarding headers and the public prefix when the gallery is behind a proxy.
- PHP and image-library versions against Piwigo’s current requirements.
Troubleshooting common failures
The installer cannot connect to the database
In Docker, use the compose service hostname and port documented for the setup—piwigo-db:3306—rather than localhost. Check that both services are on the same compose network, the database container finished initialization, and the credentials in the installer match the environment values. In a manual installation, verify the database host, account permissions, and whether the database server listens on the address you entered.
The site shows a gateway error or keeps redirecting
Confirm that the container is running and that Nginx proxies to the same port exposed in .env. Check the Host, X-Forwarded-Proto, and, for a subpath, X-Forwarded-Prefix headers. A TLS-terminating proxy that fails to pass the original protocol can make an application believe every request is insecure and trigger redirect loops.
Uploads or generated sizes fail
Check free disk space first, then inspect ownership for the upload and gallery directories. Verify that PHP’s upload and execution limits are appropriate for your image sizes and that ImageMagick or GD is installed and available to the PHP environment. For a container, confirm that the expected volume is mounted and writable by the container’s configured UID/GID.
Images are missing after an update
Do not assume the files were deleted. Check that the media directories were copied into the new deployment and that the container or web root points to the same volumes. Compare the database restore point with the filesystem backup; Piwigo needs both to reconstruct the gallery accurately.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →A plugin feature does not work
Check whether it requires ExifTool or FFmpeg, whether the binary is installed in the same environment as Piwigo, and whether the plugin supports your Piwigo and PHP versions. A basic still-image gallery does not require every optional media utility.
Security and reliability practices
- Use SSH keys and a non-root administrative account where practical; reserve root for tasks that require it.
- Keep the operating system, Docker engine or PHP stack, database, Nginx, and Piwigo release current within compatibility limits.
- Use a unique, strong database password and a separate strong webmaster password.
- Terminate HTTPS at the reverse proxy and renew certificates before they expire.
- Restrict database exposure to the private container network or local host.
- Monitor disk space, failed services, backup jobs, and certificate expiry.
- Test restoration, not merely backup creation. A documented recovery procedure should state where the database dump, media directories,
local,compose.yaml, and.envare stored and how to reconnect them.
Which installation route should you choose?
Choose Docker when
- You are building a new gallery and want the official compose workflow.
- You want application and database services isolated from other sites on the VPS.
- You value a repeatable deployment that can be moved by preserving the compose file, environment file, database, and media.
- You are comfortable troubleshooting container logs, volumes, networking, and reverse-proxy headers.
Choose manual installation when
- Your VPS already has a maintained Nginx or Apache, PHP, and MariaDB/MySQL stack.
- You need Piwigo to share host-level services or filesystem conventions with other applications.
- You prefer package-manager and system-service tooling over container operations.
- You are prepared to manage PHP modules, permissions, virtual hosts, and application-file upgrades yourself.
For either route, the durable design is the same: stable public URL, supported dependencies, private database access, adequate space for originals and generated sizes, and verified off-site backups. Docker changes the packaging; it does not remove the operational responsibility of running a photo library.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




