# OwnCloud •

[OwnCloud](https://owncloud.com) is an open-source remote file access, share and content collaboration web application that your family access data from anywhere, on any device.

# Overview

[![Screen Shot 2025-03-07 at 13.34.49.png](https://hub.subspace.services/uploads/images/gallery/2025-03/scaled-1680-/screen-shot-2025-03-07-at-13-34-49.png)](https://hub.subspace.services/uploads/images/gallery/2025-03/screen-shot-2025-03-07-at-13-34-49.png)

[OwnCloud](https://owncloud.com) is an open-source remote file access, share and content collaboration web application that your family access data from anywhere, on any device.

- Install Apps that let you take back control of your digital data, like contacts, calendars, notes and more.
- Integrated with [Collabora](https://hub.subspace.services/books/collabora "Collabora") to edit documents, slideshows and spreadsheets right in your web browser.
- Connect with your other storage options like Dropbox, SharePoint, SFTP, or local drives to access everything from a central location.

# Media

## Screenshots

<p class="callout info">OwnCloud v10.15.0</p>

<table border="1" id="bkmrk-" style="border-collapse: collapse; width: 100%; border-width: 1px; height: 59.6px; border-color: rgb(88, 110, 117);"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr style="height: 29.8px;"><td style="border-width: 1px; height: 29.8px; border-color: rgb(88, 110, 117);">[![Screen Shot 2025-03-07 at 13.34.49.png](https://hub.subspace.services/uploads/images/gallery/2025-03/scaled-1680-/screen-shot-2025-03-07-at-13-34-49.png)](https://hub.subspace.services/uploads/images/gallery/2025-03/screen-shot-2025-03-07-at-13-34-49.png)</td><td style="border-width: 1px; height: 29.8px; border-color: rgb(88, 110, 117);">[![Screen Shot 2025-03-07 at 13.31.34.png](https://hub.subspace.services/uploads/images/gallery/2025-03/scaled-1680-/screen-shot-2025-03-07-at-13-31-34.png)](https://hub.subspace.services/uploads/images/gallery/2025-03/screen-shot-2025-03-07-at-13-31-34.png)</td><td style="border-width: 1px; height: 29.8px; border-color: rgb(88, 110, 117);">[![Screen Shot 2025-03-07 at 13.32.15.png](https://hub.subspace.services/uploads/images/gallery/2025-03/scaled-1680-/screen-shot-2025-03-07-at-13-32-15.png)](https://hub.subspace.services/uploads/images/gallery/2025-03/screen-shot-2025-03-07-at-13-32-15.png)</td></tr><tr style="height: 29.8px;"><td style="border-width: 1px; height: 29.8px; border-color: rgb(88, 110, 117);">[![Screen Shot 2025-03-07 at 13.32.34.png](https://hub.subspace.services/uploads/images/gallery/2025-03/scaled-1680-/screen-shot-2025-03-07-at-13-32-34.png)](https://hub.subspace.services/uploads/images/gallery/2025-03/screen-shot-2025-03-07-at-13-32-34.png)</td><td style="border-width: 1px; height: 29.8px; border-color: rgb(88, 110, 117);">[![Screen Shot 2025-03-07 at 13.33.46.png](https://hub.subspace.services/uploads/images/gallery/2025-03/scaled-1680-/screen-shot-2025-03-07-at-13-33-46.png)](https://hub.subspace.services/uploads/images/gallery/2025-03/screen-shot-2025-03-07-at-13-33-46.png)</td><td style="border-width: 1px; height: 29.8px; border-color: rgb(88, 110, 117);">[![Screen Shot 2025-03-07 at 13.33.46.png](https://hub.subspace.services/uploads/images/gallery/2025-03/scaled-1680-/zBQscreen-shot-2025-03-07-at-13-33-46.png)](https://hub.subspace.services/uploads/images/gallery/2025-03/zBQscreen-shot-2025-03-07-at-13-33-46.png)</td></tr><tr><td style="border-width: 1px; border-color: rgb(88, 110, 117);">[![Screen Shot 2025-03-07 at 16.28.11.png](https://hub.subspace.services/uploads/images/gallery/2025-03/scaled-1680-/screen-shot-2025-03-07-at-16-28-11.png)](https://hub.subspace.services/uploads/images/gallery/2025-03/screen-shot-2025-03-07-at-16-28-11.png)</td><td style="border-width: 1px; border-color: rgb(88, 110, 117);">[![Screen Shot 2025-03-07 at 16.29.06.png](https://hub.subspace.services/uploads/images/gallery/2025-03/scaled-1680-/screen-shot-2025-03-07-at-16-29-06.png)](https://hub.subspace.services/uploads/images/gallery/2025-03/screen-shot-2025-03-07-at-16-29-06.png)</td><td style="border-width: 1px; border-color: rgb(88, 110, 117);">[![Screen Shot 2025-03-07 at 16.30.28.png](https://hub.subspace.services/uploads/images/gallery/2025-03/scaled-1680-/screen-shot-2025-03-07-at-16-30-28.png)](https://hub.subspace.services/uploads/images/gallery/2025-03/screen-shot-2025-03-07-at-16-30-28.png)</td></tr><tr><td style="border-width: 1px; border-color: rgb(88, 110, 117);">[![Screen Shot 2025-03-07 at 16.32.42.png](https://hub.subspace.services/uploads/images/gallery/2025-03/scaled-1680-/screen-shot-2025-03-07-at-16-32-42.png)](https://hub.subspace.services/uploads/images/gallery/2025-03/screen-shot-2025-03-07-at-16-32-42.png)</td><td style="border-width: 1px; border-color: rgb(88, 110, 117);">[![Screen Shot 2025-03-07 at 16.32.53.png](https://hub.subspace.services/uploads/images/gallery/2025-03/scaled-1680-/screen-shot-2025-03-07-at-16-32-53.png)](https://hub.subspace.services/uploads/images/gallery/2025-03/screen-shot-2025-03-07-at-16-32-53.png)</td><td style="border-width: 1px; border-color: rgb(88, 110, 117);">[![Screen Shot 2025-03-07 at 16.35.30.png](https://hub.subspace.services/uploads/images/gallery/2025-03/scaled-1680-/screen-shot-2025-03-07-at-16-35-30.png)](https://hub.subspace.services/uploads/images/gallery/2025-03/screen-shot-2025-03-07-at-16-35-30.png)</td></tr><tr><td style="border-width: 1px; border-color: rgb(88, 110, 117);">[![Screen Shot 2025-03-07 at 16.16.05.png](https://hub.subspace.services/uploads/images/gallery/2025-03/scaled-1680-/screen-shot-2025-03-07-at-16-16-05.png)](https://hub.subspace.services/uploads/images/gallery/2025-03/screen-shot-2025-03-07-at-16-16-05.png)</td><td style="border-width: 1px; border-color: rgb(88, 110, 117);">[![Screen Shot 2025-03-07 at 16.17.42.png](https://hub.subspace.services/uploads/images/gallery/2025-03/scaled-1680-/screen-shot-2025-03-07-at-16-17-42.png)](https://hub.subspace.services/uploads/images/gallery/2025-03/screen-shot-2025-03-07-at-16-17-42.png)</td><td style="border-width: 1px; border-color: rgb(88, 110, 117);">[![Screen Shot 2025-03-07 at 16.24.26.png](https://hub.subspace.services/uploads/images/gallery/2025-03/scaled-1680-/screen-shot-2025-03-07-at-16-24-26.png)](https://hub.subspace.services/uploads/images/gallery/2025-03/screen-shot-2025-03-07-at-16-24-26.png)</td></tr></tbody></table>

# Setup & Configuration

We need to install the service through Portainer and configure any necessary settings.

# Preparation

There are some things we need to do in preparation to install this service.

## Volumes

<details id="bkmrk-media-folders-radarr"><summary>Persistent Data</summary>

This is where the service will store its own application data and ensures we can quickly update the service image.

<p class="callout warning">Ensure your user has permissions to access the folder.</p>

</details><details id="bkmrk-media-%26-documents-fo"><summary>Media &amp; Documents Folders</summary>

OwnCloud will need access to the folders where you store your media and document files. This will allow you to share them through the OwnCloud files and sharing app.

<p class="callout warning">Ensure your user has permissions to access the folder.</p>

</details>## Environment

### General

<details id="bkmrk-tz-this-is-the-curre"><summary>TZ</summary>

This is the current time zone formatted using the [tz database.](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)

<p class="callout info">*For example:* America/Vancouver</p>

</details><details id="bkmrk-gid-%C2%A0"><summary>PUID</summary>

This is the numeric ID of the user account on Debian. If you are unsure, open a terminal and run:

```bash
id -u
```

</details><details id="bkmrk-pgid-this-is-the-num"><summary>PGID</summary>

This is the numeric ID of the user account's group on Debian. If you are unsure, open a terminal and run:

```bash
id -g
```

</details>### OwnCloud

<details id="bkmrk-owncloud_trusted_dom"><summary>OWNCLOUD\_TRUSTED\_DOMAINS</summary>

This is the full domain and subdomain name that will be used to access this instance from the internet, as well as the server's local IP address if you want OwnCloud to be accessible locally. They must be comma separated.

<p class="callout info">*For example:* 192.168.68.100, owncloud.example.com</p>

</details><details id="bkmrk-owncloud_domain-this"><summary>OWNCLOUD\_DOMAIN</summary>

This is the full domain and subdomain name that will be used to access this instance from the internet.

<p class="callout info">*For example:* owncloud.example.com</p>

</details><details id="bkmrk-owncloud_admin_usern"><summary>OWNCLOUD\_ADMIN\_USERNAME</summary>

This is the username for the administrator account that will be used to log-in through the web interface.

<p class="callout success">*This should be an easy-to-remember user name.*</p>

</details>### Database

<details id="bkmrk-db_username-this-is-"><summary>DB\_USERNAME</summary>

This is the username to be used for logging into the database.

<p class="callout info">*For example:* owncloud\_admin</p>

</details>### Passwords

<p class="callout danger">Keep these securely stored in a password manager, such as [VaultWarden](https://hub.subspace.services/books/vaultwarden "VaultWarden").</p>

<details id="bkmrk-db_root_pass-this-is"><summary>DB\_ROOT\_PASS</summary>

This is the password that will be used for root access to the database.

<p class="callout warning">It is important to use secure, randomly generated password.</p>

You can use a random alphanumeric string from a password manager, or open the terminal and run the command:

```
tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' </dev/urandom | head -c 32; echo
```

This pulls a random string from the '[urandom](https://en.wikipedia.org/wiki//dev/random)' device, removes unwanted characters and trim it to an appropriate length.

</details><details id="bkmrk-db_user_pass-this-is"><summary>DB\_USER\_PASS</summary>

This is the password that will be used for user access to the database.

<p class="callout warning">It is important to use secure, randomly generated password.</p>

You can use a random alphanumeric string from a password manager, or open the terminal and run the command:

```
tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' </dev/urandom | head -c 32; echo
```

This pulls a random string from the '[urandom](https://en.wikipedia.org/wiki//dev/random)' device, removes unwanted characters and trim it to an appropriate length.

</details><details id="bkmrk-owncloud_admin_passw"><summary>OWNCLOUD\_ADMIN\_PASSWORD</summary>

This is the password for the administrator account that will be used within the web interface.

<p class="callout warning">It is important to use secure passphrase that is easy-to-remember.</p>

</details>

# Installation

The service can be installed through the Portainer web interface.

<p class="callout info">Learn about [creating a new stack](https://hub.subspace.services/books/portainer/page/creating-a-new-stack "Creating a New Stack").</p>

## Docker Compose

Use the following code to install the service:

```yaml
---
services:
  owncloud:
    image: owncloud/server:latest
    container_name: owncloud
    restart: always
    ports:
      - ${HTTP_PORT}:8080
    depends_on:
      - mariadb
      - redis
    environment:
      - PGID=${PGID}
      - PUID=${PUID}
      - OWNCLOUD_DOMAIN=${OWNCLOUD_DOMAIN}
      - OWNCLOUD_TRUSTED_DOMAINS=${OWNCLOUD_TRUSTED_DOMAINS}
      - OWNCLOUD_DB_TYPE=${DB_TYPE}
      - OWNCLOUD_DB_NAME=${DB_NAME}
      - OWNCLOUD_DB_USERNAME=${DB_USERNAME}
      - OWNCLOUD_DB_PASSWORD=${DB_USER_PASS}
      - OWNCLOUD_DB_HOST=${DB_HOST}
      - OWNCLOUD_ADMIN_USERNAME=${ADMIN_USERNAME}
      - OWNCLOUD_ADMIN_PASSWORD=${ADMIN_PASSWORD}
      - OWNCLOUD_MYSQL_UTF8MB4=true
      - OWNCLOUD_REDIS_ENABLED=true
      - OWNCLOUD_REDIS_HOST=${REDIS_HOST}
    healthcheck:
      test: ["CMD", "/usr/bin/healthcheck"]
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      # Persistent Data
      - /srv/owncloud/config:/mnt/data

      # Media Data
      - /mnt/libraries:/mnt/libraries

  # OwnCloud Database
  mariadb:
    image: mariadb:10.6
    container_name: owncloud_mariadb
    restart: always
    command: ["--max-allowed-packet=128M", "--innodb-log-file-size=64M"]
    environment:
      - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASS}
      - MYSQL_USER=${DB_USERNAME}
      - MYSQL_PASSWORD=${DB_USER_PASS}
      - MYSQL_DATABASE=${DB_NAME}
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-u", "root", "--password=owncloud"]
      interval: 10s
      timeout: 5s
      retries: 5
    volumes:
      # Persistent Data
      - /srv/owncloud/db:/var/lib/mysql

  # Cache Server
  redis:
    image: redis:6
    container_name: owncloud_redis
    restart: always
    command: ["--databases", "1"]
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5
    volumes:
      # Persistent Data
      - /srv/owncloud/redis:/data
```

## Environment

Use the following environment to configure the service using the values prepared earlier:

```yaml
# Set Run User
PGID=1000
PUID=1000

# OwnCloud Networking
OWNCLOUD_VERSION=latest
HTTP_PORT=8080
OWNCLOUD_TRUSTED_DOMAINS=192.168.68.100, owncloud.example.com
OWNCLOUD_DOMAIN=owncloud.example.com

# Cache Server
REDIS_HOST=redis

# Database Configuration
DB_HOST=mariadb
DB_TYPE=mysql
DB_NAME=owncloud
DB_USERNAME=owncloud_admin

# Passwords
# After the initial setup, the passwords should be saved elsewhere and stack should be re-deployed with these settings deleted.

# Database Passwords
DB_ROOT_PASS=
DB_USER_PASS=

# OwnCloud Admin Account
OWNCLOUD_ADMIN_USERNAME=
OWNCLOUD_ADMIN_PASSWORD=
```

# Updating

<p class="callout warning">Backup Data and Re-Deploy the Stack</p>

OwnCloud has been optimized for running in Docker and will automatically migrate your database when a new version is installed.

This allows you to [re-deploy the stack through Portainer](https://hub.subspace.services/books/portainer/page/updating-a-stack "Updating a Stack") to download the latest updates.

# User Manual

# Development

<p class="callout info">This software is released under the [AGPL-3.0](https://opensource.org/license/agpl-v3). </p>

OwnCloud is currently owned by [KiteWorks](https://www.kiteworks.com/), a security company who monetize the acquired open-source software by providing enterprise support and secure hosting services.

You can learn more about how to contribute to OwnCloud through their [website](https://owncloud.com/contribute/).

# Resources

## Official

- [Official Documentation](https://doc.owncloud.com/)
- [Official Rocket.Chat](https://talk.owncloud.com/)
- [Official Forum](https://central.owncloud.org/)
- [Official GitHub Repository](https://github.com/owncloud)
- [Official Website](https://owncloud.com)
- [Installation Guide](https://doc.owncloud.com/server/10.15/admin_manual/installation/docker/)
- [Frequently Asked Questions](https://owncloud.com/faq/)

## KiteWorks

- [Official Website](https://www.kiteworks.com/)
- [Privacy Policy](https://www.kiteworks.com/privacy-policy/)