docker/

directory
v5.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 9, 2026 License: AGPL-3.0

README

Docker and Docker Compose configuration

Docker Pulls Docker Stars

As a convenience, we also provide a pre-built Docker image of Pydio Cells that is hosted on the Docker hub. As you can see in the dockerfile, the config is quite straight forward.

Important points:

  • Cells working directory is set to /var/cells
  • Image is run with root user
  • Internal proxy configuration can be configure via environment variables or json / yaml config file.

Building the image

The image at images/cells/buildx-dockerfile supports three build modes selected with --build-arg BUILD_MODE=<mode>:

Mode Behavior Required args Build context
download (default) Fetches the released binary from download.pydio.com VERSION, optional CHECKSUM (sha256) images/cells/
compile Compiles the binary from source inside the image optional VERSION, GIT_REV, BUILD_STAMP repo root
local Copies a pre-built binary from the build context optional BINARY_PATH (default cells) directory holding the binary

Examples:

# Mode 1: download a published release (current default behavior)
docker buildx build \
  --build-arg VERSION=4.9.94 \
  -t pydio/cells:4.9.94 \
  -f tools/docker/images/cells/buildx-dockerfile \
  tools/docker/images/cells

# Mode 1 with checksum verification
docker buildx build \
  --build-arg VERSION=4.9.94 \
  --build-arg CHECKSUM=<sha256-of-the-binary> \
  -t pydio/cells:4.9.94 \
  -f tools/docker/images/cells/buildx-dockerfile \
  tools/docker/images/cells

# Mode 2: compile from source (context = repo root)
# Prefer the make target — it reads the toolchain version from go.mod
# automatically and passes it as --build-arg GO_VERSION:
make docker-image                       # tag = $(CELLS_VERSION)
make docker-image DOCKER_TAG=dev        # custom tag

# Or invoke buildx directly:
docker buildx build \
  --build-arg BUILD_MODE=compile \
  --build-arg GO_VERSION=$(awk '/^toolchain/ {sub("go","",$2); print $2}' go.mod) \
  --build-arg VERSION=4.9.95-dev \
  --build-arg GIT_REV=$(git rev-parse HEAD) \
  --build-arg BUILD_STAMP=$(date -u +%Y-%m-%dT%H:%M:%S) \
  -t pydio/cells:dev \
  -f tools/docker/images/cells/buildx-dockerfile \
  .

# Note: `GO_VERSION` is a cache hint. Even when it drifts from `go.mod`,
# Go's `GOTOOLCHAIN=auto` (default since 1.21) will detect the mismatch
# at build time and download the toolchain pinned in `go.mod` — so the
# binary is always produced with the correct toolchain.

# Mode 3: ship a locally-built binary
make docker          # produces ./cells-linux at the repo root
cp cells-linux tools/docker/images/cells/cells
docker buildx build \
  --build-arg BUILD_MODE=local \
  --build-arg BINARY_PATH=cells \
  -t pydio/cells:local \
  -f tools/docker/images/cells/buildx-dockerfile \
  tools/docker/images/cells

Simply launch the image, it starts in configuration mode: you can fine tune your instance via your preferred web browser.
By default the server starts in self-signed mode on port 8080. You can modify the configuration to also use:

  • A custom certificate that you provide.
  • A certificate auto magically created using the tools provided by Let's Encrypt
  • No certificate

Below are relevant samples of docker-compose files to achieve these use cases.

We also provide a few sample docker compose configurations as examples that are working out-of-the-box, if you only provide your public IP / valid domain name, see compose subdirectory.

Sample config for the Pydio Cells internal gateway

Default config

This starts Cells and exposes the server with a self-signed certificate on port 8080. You can reach the web interface using the IP address of your server or any FQDN that has been registered in a DNS and points toward this IP, together with explicit port 8080.
For instance: https://1.2.3.4:8080 or https://example.com:8080.

  cells:
    image: pydio/cells:latest
    restart: unless-stopped
    ports: ["8080:8080"]
Without certificate (via HTTP)
  cells:
    image: pydio/cells:latest
    restart: unless-stopped
    ports: ["8080:8080"]
    environment:
      - CELLS_NO_TLS=1
With Let's Encrypt
  cells:
    image: pydio/cells:latest
    restart: unless-stopped
    ports: ["80:80", "443:443"]
    environment:
      - CELLS_BIND=your.fqdn.com:443
      - CELLS_EXTERNAL=https://your.fqdn.com
      - CELLS_LE_EMAIL=admin@example.com
      - CELLS_LE_AGREE=1
Using a custom certificate
  cells:
    image: pydio/cells:latest
    restart: unless-stopped
    volumes: ["/path/to/your/ssl.cert:/etc/ssl/ssl.cert", "/path/to/your/ssl.key:/etc/ssl/ssl.key"]
    ports: ["443:443"]
    environment:
      - CELLS_BIND=0.0.0.0:443
      - CELLS_EXTERNAL=https://your.fqdn.com
      - CELLS_TLS_CERT_FILE=/etc/ssl/ssl.cert
      - CELLS_TLS_KEY_FILE=/etc/ssl/ssl.key

Directories

Path Synopsis
compose
dynamic command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL