Docs / App Marketplace
App Marketplace guide
Install self-hosted apps such as Nextcloud, Immich, Vaultwarden and Uptime Kuma on your VPS in one click, then restart, stop or remove them from the portal.
App Marketplace Overview
The App Marketplace installs popular self-hosted applications on your VPS with a single click. Each app runs as its own Docker Compose stack on your server.
Key Features
- One-click installs — Pick an app and click Install; most are running within a few minutes (your first install also sets up Docker)
- Docker-based — Every app has its own Docker Compose stack and data volumes
- Generated credentials — Where an app needs passwords, they're generated for you and shown in the portal
- Firewall ports opened for you — Installing an app adds cloud firewall rules for the ports it needs; uninstalling removes them
- Managed from the portal — Restart, stop or uninstall any app from your VPS's App Marketplace tab
Info
The App Marketplace is available on every active VPS except Proxmox VE nodes. Each app needs a minimum amount of RAM (listed under
Available Apps), and Docker is installed automatically with your first app.
Info
How apps and the
cloud firewall interact: if your firewall has no inbound rules (All Open), every port is already reachable, so installing an app adds no rule. If you have inbound rules, installing an app adds an inbound rule for its web port(s), and uninstalling removes it. Applying a preset replaces all rules — including the ones your apps added — so re-add those ports afterwards. Database apps (MySQL, PostgreSQL, Redis, MariaDB and Valkey) never get a firewall rule.
Installing Apps
Apps are installed from the App Marketplace tab on your VPS service page.
- 1
- 2
Click the App Marketplace tab.
- 3
Browse the catalog or filter by category (Web, Database, Monitoring, Dev Tools, File Storage, Management, Security, Communication, Media, Analytics, AI, Backup).
- 4
Click Install on the app you want. Apps that need more RAM than your server has are marked "Needs … RAM" and can't be installed.
- 5
Confirm the installation in the dialog. The app starts installing right away.
Most apps are ready within a few minutes. The status shows Installing... while the app is set up and Running when it's ready.
First App Installation
If Docker isn't on your server yet, it's installed first — set up to pull Docker Hub images through our local cache — so your first install takes longer than later ones.
Access Credentials
Once an app is running, its address appears under its name on the app card. Click Show Credentials to see generated passwords and setup notes; each value has a copy button.
Tip
Each app has a default port (listed under Available Apps). If another marketplace app on your server already uses it, the next port up is used, and the app card shows the port in use. The marketplace doesn't check ports used by other software on your server — if a port is already taken, the install fails; free the port and install the app again.
Managing Apps
Installed apps are listed at the top of the App Marketplace tab with their status and controls.
Available Actions
| Action | Description |
|---|
| Restart | Restart the app's containers (this also starts a stopped app) |
| Stop | Stop the app's containers. The status keeps showing Running — click Restart to start the app again. |
| Uninstall | Remove the app, its data and the firewall rules it added |
| Remove | Clear a failed installation (shown on failed apps) |
Status Indicators
| Status | Meaning |
|---|
| Running | The app is installed and was started |
| Installing... | The app is being set up |
| Failed | Installation failed — the card shows the error. Click Remove, wait for the app to disappear, then install it again. |
| Removing... | The app is being uninstalled |
Warning
Uninstalling an app removes its Docker volumes and all of its data. This can't be undone, so export anything important first.
Accessing Your App
Web apps get an Admin URL — http://your-VPS-IP:port (Portainer uses https). Click it to open the app in your browser. Database apps (MySQL, PostgreSQL, Redis, MariaDB and Valkey) aren't opened in the cloud firewall: connect from the server itself, from another server over your VPC network, or through an SSH tunnel. If your firewall has no rules at all, their ports are reachable from the internet, so keep a preset applied.
Available Apps
The marketplace offers 40 applications across 12 categories. Ports are defaults — the first is the app's web or main port, and any others are opened in your firewall too.
Web
| App | Description | Default Port | Min RAM |
|---|
| WordPress | WordPress with its own MySQL database | 8080 | 512 MB |
| Ghost | Ghost publishing platform (stores its data in SQLite) | 2368 | 1 GB |
| Nginx | Nginx web server and reverse proxy | 80 | 256 MB |
| Caddy | Web server with automatic HTTPS (Let's Encrypt) | 8085, 443 | 256 MB |
| Nginx Proxy Manager | Reverse proxy with a web UI and Let's Encrypt certificates | 81, 80, 443 | 512 MB |
Database
| App | Description | Default Port | Min RAM |
|---|
| MySQL | MySQL 8.0 database server | 3306 (no firewall rule) | 512 MB |
| PostgreSQL | PostgreSQL 16 database server | 5432 (no firewall rule) | 512 MB |
| Redis | Redis 7 in-memory data store | 6379 (no firewall rule) | 256 MB |
| Adminer | Web UI for managing MySQL, PostgreSQL and SQLite databases | 8082 | 256 MB |
| MinIO | Deprecated. S3-compatible object storage with a web console. Use Garage or SeaweedFS for new installs. | 9000, 9001 | 512 MB |
| Garage | Lightweight S3-compatible object storage | 3900 | 256 MB |
| SeaweedFS | S3-compatible object storage with versioning, object lock and lifecycle rules | 8333 | 1 GB |
| MariaDB | MariaDB 11 database server (MySQL-compatible) | 3307 (no firewall rule) | 512 MB |
| Valkey | Valkey 8 in-memory data store (Redis-compatible) | 6380 (no firewall rule) | 256 MB |
Monitoring
| App | Description | Default Port | Min RAM |
|---|
| Uptime Kuma | Uptime monitoring for websites and services | 3001 | 512 MB |
| Grafana | Dashboards for your metrics | 3000 | 512 MB |
| Prometheus | Metrics collection and time-series database | 9090 | 512 MB |
| Beszel | Lightweight server monitoring with charts and alerts | 8090 | 256 MB |
Dev Tools
| App | Description | Default Port | Min RAM |
|---|
| Gitea | Self-hosted Git service | 3300 | 512 MB |
| n8n | Workflow automation | 5678 | 1 GB |
| Code Server | VS Code in the browser | 8443 | 1 GB |
| BookStack | Wiki and documentation platform | 8086 | 1 GB |
File Storage
| App | Description | Default Port | Min RAM |
|---|
| Nextcloud | File sync and sharing | 8081 | 1 GB |
| Immich | Photo and video backup | 2283 | 6 GB |
| Paperless-ngx | Document scanning, OCR and search | 8010 | 2 GB |
Management
| App | Description | Default Port | Min RAM |
|---|
| Portainer | Web UI for managing Docker | 9443 | 256 MB |
Security
| App | Description | Default Port | Min RAM |
|---|
| Vaultwarden | Bitwarden-compatible password manager | 8084 | 256 MB |
| WireGuard VPN | WireGuard VPN with a web UI | 51821, 51820 UDP | 256 MB |
| Keycloak | Single sign-on and identity provider | 8089 | 2 GB |
| Headscale | Self-hosted Tailscale control server | 8087 | 256 MB |
| AdGuard Home | DNS server that blocks ads and trackers | 3053, 53 TCP+UDP | 512 MB |
Communication
| App | Description | Default Port | Min RAM |
|---|
| Ntfy | Push notifications over HTTP | 8083 | 256 MB |
| Memos | Note-taking app | 5230 | 256 MB |
| Listmonk | Newsletters and mailing lists | 9001 | 512 MB |
Media
| App | Description | Default Port | Min RAM |
|---|
| Jellyfin | Media server for movies, TV and music | 8096 | 1 GB |
Analytics
| App | Description | Default Port | Min RAM |
|---|
| Plausible Analytics | Cookie-free website analytics | 8000 | 2 GB |
| Umami | Lightweight, cookie-free website analytics | 3002 | 512 MB |
AI
| App | Description | Default Port | Min RAM |
|---|
| OpenClaw | AI assistant gateway for chat apps, installed with your Piedmont AI token (see Using with OpenClaw) | 18789 | 512 MB |
| Open WebUI | Chat interface for AI models (add your AI provider's API key in its settings) | 8088 | 1 GB |
Backup
| App | Description | Default Port | Min RAM |
|---|
| Kopia | Encrypted, deduplicated backups with a web UI | 51515 | 512 MB |
Tip
Each app lives in /opt/piedmont-apps/<app>/ on your VPS (for example /opt/piedmont-apps/uptime-kuma/). For advanced setups you can edit its docker-compose.yml over SSH and run docker compose up -d in that folder to apply the change. Uninstalling deletes the folder.