Skip to content

Self-hosting with Docker

Deploying with Docker using the official deployment of Privatefolio which is available on GitHub Container Registry (GHCR).

Prerequisites

Before we get started you must have Docker installed:

docker --version
# Docker version 28.3.2, build 578ccf6

If you don't have it, get it from docker.com.

1. Pull the Image

docker pull ghcr.io/privatefolio/privatefolio:latest

This fetches the latest official release from GHCR.

2. Run the Container

docker run -d \
  -p ${PORT:-5555}:5555 \
  -v privatefolio-data:/app/data \
  --name privatefolio \
  ghcr.io/privatefolio/privatefolio:latest

Explanation:

  • -d: Run in detached mode.
  • -p ${PORT:-5555}:5555: Map the host port (default 5555) to the container port 5555. Adjust the host port if needed.
  • -v privatefolio-data:/app/data: Mount a named volume privatefolio-data to /app/data inside the container for persistent data storage.
  • --name privatefolio: Assign a name to the container.

3. Access the app

The app will be available on the port you set in docker run (defaulting to 5555):

Visit http://localhost:5555 in your browser.

Data Persistence

All data is stored in the /app/data directory inside the container, which is mounted to a persistent volume called privatefolio-data. This ensures that your data is persisted even if the container is stopped or removed.

To backup your data, you can use the Docker volume commands:

docker volume inspect privatefolio-data # View volume info

Logs

To view logs from the container:

docker logs privatefolio

To follow the logs in real-time:

docker logs -f privatefolio

Upgrading

To upgrade to the latest version of Privatefolio, run:

docker pull ghcr.io/privatefolio/privatefolio:latest
docker rm -f privatefolio
docker run -d -p ${PORT:-5555}:${PORT:-5555} -v privatefolio-data:/app/data --name privatefolio ghcr.io/privatefolio/privatefolio:latest

Your data is safe even when you remove the container, because it is persisted in the privatefolio-data volume.

Delete all personal data

To delete all personal data, run:

docker rm -f privatefolio
docker volume rm privatefolio-data