{"id":1897,"date":"2025-04-15T09:00:00","date_gmt":"2025-04-15T06:00:00","guid":{"rendered":"https:\/\/upcloud.com\/global\/us\/resources\/tutorials\/how-to-install-and-configure-owncloud-a-step-by-step-guide\/"},"modified":"2025-04-15T09:00:00","modified_gmt":"2025-04-15T06:00:00","slug":"how-to-install-and-configure-owncloud-a-step-by-step-guide","status":"publish","type":"tutorial","link":"https:\/\/upcloud.com\/global\/resources\/tutorials\/how-to-install-and-configure-owncloud-a-step-by-step-guide\/","title":{"rendered":"How to Install and Configure OwnCloud: A Step-by-Step Guide"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">ownCloud is a self-managed cloud storage platform that allows users to store, share, and collaborate on files over the Internet. It functions similarly to Google Drive, DropBox or Microsoft OneDrive but gives users complete control over data security, privacy, and management. As an open-source cloud storage solution, ownCloud enables users to self-host on their preferred cloud provider or on-premise infrastructure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">While data control is the primary advantage of ownCloud, it offers several additional benefits, including:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Access to your data from anywhere<\/strong> \u2013 Sync files across Android, iOS, and desktop devices so you always have them when needed.<\/li>\n\n\n\n<li><strong>Versioning<\/strong> \u2013You can keep multiple file versions and roll back to a previous version whenever needed.<\/li>\n\n\n\n<li><strong>Customization<\/strong> \u2013 Add apps like calendars, music streaming, and more from the ownCloud marketplace, or even build your own.<\/li>\n\n\n\n<li><strong>Granular access control (RBAC) <\/strong>\u2013 Set permissions for users and groups, restrict file types, and control storage limits the way you want.<\/li>\n\n\n\n<li><strong>Flexibility<\/strong> \u2013 Since you self-host ownCloud, you decide where and how to run it\u2014on a cloud server, a Raspberry Pi, or your own hardware.<\/li>\n\n\n\n<li><strong>Security<\/strong> \u2013 Encrypt your data, set up firewalls, and configure security policies to keep everything protected.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">In this tutorial, we will cover a step-by-step installation and configuration of your ownCloud across different operating systems to help you understand how it works and how to optimize it for your needs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Prerequisites<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before setting up ownCloud, ensure your system meets the basic requirements. The installation process depends on your platform, but here\u2019s what you\u2019ll need:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1. System requirements:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>OS Compatibility:<\/strong> ownCloud runs on Ubuntu, and Debian. If you prefer Docker, you can run it in a container.<\/li>\n\n\n\n<li><strong>Memory &amp; CPU:<\/strong> 512MB RAM minimum, but 2GB+ is recommended for handling concurrent users or large file syncs. Any 64-bit processor works.<\/li>\n\n\n\n<li><strong>Storage:<\/strong> At least 200MB for ownCloud files, plus additional space for your stored data.<\/li>\n\n\n\n<li><strong>Database:<\/strong> Requires MySQL\/MariaDB or PostgreSQL (Docker includes this automatically).<\/li>\n\n\n\n<li><strong>Web Server:<\/strong> Apache 2.4+ is recommended, but Nginx also works.<\/li>\n\n\n\n<li><strong>PHP:<\/strong> Version 7.4+ or higher( 8.0+ recommended), with required extensions like cURL, GD, and OpenSSL.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2.<\/strong> <strong>Where can you install owncloud?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This tutorial covers installing ownCloud on Ubuntu, Debian, and Docker. Ensure you have one of these environments ready before proceeding:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ubuntu &amp; Debian<\/strong> \u2192 If you don\u2019t have a server yet, you can deploy an Ubuntu or Debian server on<strong> <\/strong><a href=\"https:\/\/upcloud.com\/global\/docs\/guides\/quick-start-guide\/\"><strong>UpCloud<\/strong><\/a>.<\/li>\n\n\n\n<li><strong>Docker<\/strong> \u2192 If you prefer a containerized setup, you can <strong><a href=\"https:\/\/upcloud.com\/global\/resources\/tutorials\/running-containers-with-docker-on-upcloud-a-complete-guide\" data-type=\"link\" data-id=\"https:\/\/upcloud.com\/global\/resources\/tutorials\/running-containers-with-docker-on-upcloud-a-complete-guide\">run containers with Docker on UpCloud<\/a>.<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3.<\/strong> <strong>Downloading ownCloud<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Get the latest version of ownCloud from the <a href=\"https:\/\/owncloud.com\/download-server\/#:~:text=ownCloud%20provides%20ready%2Dto%2Ddeploy,Enterprise%20Linux%2C%20CentOS%20and%20openSUSE.\" target=\"_blank\" rel=\"noopener\"><strong>official website<\/strong><\/a>. Choose the package that matches your setup, and you\u2019re ready.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>4. Sever with Root or sudo access.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>5. Basic CLI knowledge to execute Linux commands<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1: Downloading ownCloud<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before installing ownCloud, you need to get the correct installation files for your platform.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Visit the <a href=\"https:\/\/owncloud.com\/download-server\/#:~:text=ownCloud%20provides%20ready%2Dto%2Ddeploy,Enterprise%20Linux%2C%20CentOS%20and%20openSUSE.\" target=\"_blank\" rel=\"noopener\"><strong>ownCloud&#8217;s official website<\/strong><\/a> to download the latest version.<\/li>\n\n\n\n<li>Choose the version for your platform:\n<ul class=\"wp-block-list\">\n<li>Linux (Ubuntu and Debian) \u2192 Click &#8220;Go to package,&#8221; then select &#8220;Add repository and install manually&#8221; to get the installation commands for your system.<\/li>\n\n\n\n<li>Docker \u2192 Click &#8220;Go to Docker instructions&#8221; to find the commands for downloading ownCloud in a containerized environment.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">When you move to Step 2 (Installing ownCloud), you will have the correct package and installation method ready from Step 1.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2: Installing OwnCloud on Various Platforms<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">With the commands discovered in Step 1, we will now install ownCloud on multiple operating systems.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 2.1: Installing OwnCloud on Docker<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This section walks through installing ownCloud and MariaDB in Docker containers on Ubuntu 24.04 LTS using docker-compose.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Before proceeding, set up a fresh Ubuntu 24.04 LTS VM on Upcloud.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1. Installing Docker<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Update the system and install Docker:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo apt update\nsudo apt install -y docker.io<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Enable and Start Docker<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo systemctl enable docker\nsudo systemctl start docker<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Verify Docker Installation<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">docker --version<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">2. Installing Docker Compose<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Docker Compose is a tool that allows you to define and run multi-container Docker applications. Instead of manually starting each container separately, docker-compose.yml lets you manage everything in a single file. It makes deployment and scaling much easier, especially for applications like ownCloud, which require both an application container and a database container.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Install Docker Compose<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo apt install -y docker-compose<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Verify Docker Compose Installation<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">docker-compose --version<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">3. Create a Project Directory <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This folder will store the docker-compose.yml file and persist data.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">kdir ~\/owncloud-docker\ncd ~\/owncloud-docker<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">4. Create a <code>docker-compose.yml<\/code> File<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">nano docker-compose.yml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Add the following content (Replace <code>your-vm-ip <\/code>with your actual VM IP)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">version: '3'\nservices:\n  owncloud:\n    image: owncloud\/server:latest\n    restart: always\n    ports:\n      - \"8080:8080\"\n    volumes:\n      - owncloud_data:\/mnt\/data\n    environment:\n      - OWNCLOUD_DOMAIN=your-vm-ip:8080\n      - OWNCLOUD_TRUSTED_DOMAINS=your-vm-ip\n      - OWNCLOUD_ADMIN_USERNAME=admin\n      - OWNCLOUD_ADMIN_PASSWORD=AdminPass123!\n      - OWNCLOUD_MYSQL_DATABASE=owncloud\n      - OWNCLOUD_MYSQL_USER=owncloud\n      - OWNCLOUD_MYSQL_PASSWORD=Pass9010Cloud\n      - OWNCLOUD_MYSQL_HOST=db\n  db:\n    image: mariadb:latest\n    restart: always\n    environment:\n      - MYSQL_ROOT_PASSWORD=1234567890\n      - MYSQL_DATABASE=owncloud\n      - MYSQL_USER=owncloud\n      - MYSQL_PASSWORD=Pass9010Cloud\n    volumes:\n      - db_data:\/var\/lib\/mysql\nvolumes:\n  owncloud_data:\n  db_data:<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Save the file:<\/strong> Ctrl + O, then press Enter, then Ctrl + X to exit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What This Does:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>ownCloud Service:<\/strong> Runs ownCloud on port 8080, using predefined admin credentials.<\/li>\n\n\n\n<li><strong>Database (MariaDB):<\/strong> Hosts the MySQL database required for ownCloud.<\/li>\n\n\n\n<li><strong>Persistent Storage:<\/strong> Ensures data is stored using Docker volumes.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">5. Start the Containers<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Run the Containers in Detached Mode<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo docker-compose up -d<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The -d flag runs containers in the background.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Check Running Containers<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo docker ps<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Expected Output: The list should include owncloud\/server and mariadb<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">6. Access ownCloud<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Open a Web Browser and Go to:<code> http:\/\/your-vm-ip:8080<\/code><br>Log in with the admin credentials:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Username: admin<\/li>\n\n\n\n<li>Password: AdminPass123!<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If the ownCloud login page loads, the setup is complete!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">7. Stop Containers (Optional)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you need to stop ownCloud and MariaDB, use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo docker-compose down<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This will stop and remove the containers while keeping the data intact.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 2.2: Installing OwnCloud on Ubuntu(22.04)<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">1. Connect to Your UpCloud Ubuntu Server<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SSH into your spun-up UpCloud Ubuntu instance from your local machine:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">ssh -i your-pem-key root@your-server-ip<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">2. Add the OwnCloud Repository<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">echo 'deb http:\/\/download.opensuse.org\/repositories\/isv:\/ownCloud:\/server:\/10\/Ubuntu_22.04\/ \/' | sudo tee \/etc\/apt\/sources.list.d\/isv:ownCloud:server:10.list<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">3. Import the Repository Key<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">curl -fsSL https:\/\/download.opensuse.org\/repositories\/isv:ownCloud:server:10\/Ubuntu_22.04\/Release.key | gpg --dearmor | sudo tee \/etc\/apt\/trusted.gpg.d\/isv_ownCloud_server_10.gpg &gt; \/dev\/null<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">4. Update Package Lists &amp; Install OwnCloud<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo apt update\nsudo apt install owncloud-complete-files<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">5. &nbsp;Verify the Installation<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Check if ownCloud files were installed successfully:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">ls \/var\/www\/owncloud\/<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 2.3: Installing OwnCloud on Debian(12)<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">1. Connect to Your UpCloud Debian Server<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SSH into your <strong>spun-up UpCloud Debian instance<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">ssh -i your-pem-key root@your-server-ip<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">2. Add the OwnCloud Repository<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">echo 'deb http:\/\/download.opensuse.org\/repositories\/isv:\/ownCloud:\/server:\/10\/Debian_12\/ \/' | sudo tee \/etc\/apt\/sources.list.d\/isv:ownCloud:server:10.list<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">3. Install Required GPG Tool (GNU Privacy Guard)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo apt install -y gnupg<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">4. Import the Repository Key<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">curl -fsSL https:\/\/download.opensuse.org\/repositories\/isv:ownCloud:server:10\/Debian_12\/Release.key | gpg --dearmor | sudo tee \/etc\/apt\/trusted.gpg.d\/isv_ownCloud_server_10.gpg &gt; \/dev\/null<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">5. Update Package Lists &amp; Install OwnCloud<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo apt update\nsudo apt install owncloud-complete-files<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">6. Verify the Installation<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Check if ownCloud files were installed successfully:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">ls \/var\/www\/owncloud\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><em>Note:<\/em><\/strong><em> While we\u2019ve covered installing ownCloud on multiple platforms, the rest of this tutorial will use Ubuntu for configuration and setup. Most steps will still apply if you&#8217;re using Debian, but some commands or paths may differ.<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Configuring OwnCloud&nbsp;<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Using Ubuntu for the rest&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1. Installing OwnCloud Dependencies<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Before configuring ownCloud, install the required dependencies:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Apache (Web Server)<\/li>\n\n\n\n<li>PHP 7.4 and necessary extensions<\/li>\n\n\n\n<li>MariaDB (Database)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Run the following commands:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo add-apt-repository ppa:ondrej\/php\nsudo apt update\nsudo apt install -y apache2 php7.4 libapache2-mod-php7.4 php7.4-mysql php7.4-curl php7.4-gd php7.4-mbstring php7.4-zip php7.4-intl php7.4-xml php7.4-fileinfo<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Verify Apache and PHP Installation<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Check if PHP and Apache are installed and active:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">php -v\nsudo systemctl status apache2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Install MariaDB (Database Server)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo apt install -y mariadb-server mariadb-client<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">2. Setting Up the Database<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now, we need to secure MariaDB and create a database for ownCloud. Run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo mysql_secure_installation<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">When prompted, respond as follows:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enter current password for root \u2192 Press Enter<\/li>\n\n\n\n<li>Switch to UNIX socket authentication? \u2192 Type n<\/li>\n\n\n\n<li>Change the root password? \u2192 Type y, then enter your preferred password<\/li>\n\n\n\n<li>Remove anonymous users? \u2192 Type y<\/li>\n\n\n\n<li>Disallow root login remotely? \u2192 Type y<\/li>\n\n\n\n<li>Remove test database and access to it? \u2192 Type y<\/li>\n\n\n\n<li>Reload privilege tables now? \u2192 Type y<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">3. Create the Database and User for OwnCloud<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Log into MariaDB:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo mysql -u root -p<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">(Enter the password created earlier)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then, run the following queries to create a database and user:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">CREATE DATABASE owncloud;\nGRANT ALL PRIVILEGES ON owncloud.* TO 'your_username'@'localhost' IDENTIFIED BY 'your_password';\nFLUSH PRIVILEGES;\nEXIT;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">4. Configuring the Admin Panel<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now, we need to point Apache to ownCloud and configure domain settings.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Update Apache Default Site Configuration<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Open the Apache configuration file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo nano \/etc\/apache2\/sites-available\/000-default.conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Modify with the following lines:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">ServerName anitaihuman.dev\nServerAlias www.anitaihuman.dev\nDocumentRoot \/var\/www\/owncloud<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Set File Permissions<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ensure ownCloud is owned by Apache\u2019s user group:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo chown -R www-data:www-data \/var\/www\/owncloud\nsudo chmod -R 755 \/var\/www\/owncloud<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Restart Apache<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo systemctl restart apache2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Complete OwnCloud Web Setup<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open your browser and visit: <code>http:\/\/your-server-ip<\/code><\/li>\n\n\n\n<li>Set up an admin username and password.<\/li>\n\n\n\n<li>Enter the database details created earlier (database name, username, and password).<\/li>\n\n\n\n<li>Click <strong>Finish Setup<\/strong> to complete the installation.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">5. Networking &amp; Security Settings<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To make ownCloud secure and accessible, we\u2019ll:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable HTTPS with an SSL certificate<\/li>\n\n\n\n<li>Configure a firewall<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Enable HTTPS<\/strong><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Add Trusted Domains<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Edit the ownCloud configuration file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo nano \/var\/www\/owncloud\/config\/config.php<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Add your own domain names inside the trusted_domains array:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">'trusted_domains' =&gt;\narray (\n0 =&gt; '94.237.50.118',\n1 =&gt; 'anitaihuman.dev',\n3 =&gt; 'www.anitaihuman.dev',\n),<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Install Certbot (SSL)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo apt install -y certbot python3-certbot-apache<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Generate an SSL Certificate<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo certbot --apache<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enter your <strong>email address<\/strong>.<\/li>\n\n\n\n<li>Accept the <strong>terms and conditions<\/strong>.<\/li>\n\n\n\n<li>Choose the <strong>domain names<\/strong> for the SSL certificate.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Once completed, your site will be available over HTTPS.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/upcloud.com\/media\/image-146-1024x611.png\" alt=\"-\" class=\"wp-image-49760\" \/><\/figure>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Configure a firewall<\/strong><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">UpCloud\u2019s Ubuntu comes with a firewall installed but disabled by default.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Check firewall Status<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo ufw status<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Allow Required Traffic<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo ufw allow 22\nsudo ufw allow 80\nsudo ufw allow 443<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Enable the firewall<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo ufw enable<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Confirm Firewall Rules<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo ufw status<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Firewall should now be active with the above rules.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Accessing OwnCloud<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Once ownCloud is installed and configured, you can access it both locally and remotely.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1.<\/strong> <strong>Accessing OwnCloud Locally<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you are on the same network as your server, open a web browser and enter: <code>http:\/\/your-server-ip<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Log in using the admin account you created earlier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2.<\/strong> <strong>Accessing OwnCloud Remotely (From Anywhere)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you configured a domain name and SSL certificate in Step 3, access ownCloud securely via:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">https:\/\/yourdomain.com\/owncloud  <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This allows you to use ownCloud from any device, anywhere in the world.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 5: Adding Applications and Extensions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ownCloud has a rich marketplace with various apps to extend its functionality. In this step, we\u2019ll demonstrate how to install an app by adding the Calendar extension.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Installing an App from the ownCloud Marketplace<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Log into ownCloud using your admin username and password.<\/li>\n\n\n\n<li>Open the Marketplace\n<ul class=\"wp-block-list\">\n<li>Click the three-dash menu (\u2630) in the top-left corner.<\/li>\n\n\n\n<li>Navigate to Marketplace (as shown in the image below)<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/upcloud.com\/media\/image-147-1024x618.png\" alt=\"-\" class=\"wp-image-49761\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3. Find and Install the Calendar App<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Search for \u201cCalendar\u201d in the Marketplace.<\/li>\n\n\n\n<li>Click <strong>Install<\/strong>.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/upcloud.com\/media\/image-148-1024x584.png\" alt=\"-\" class=\"wp-image-49762\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>4. Access the installed App<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Once installed, Calendar will be added to your apps.<\/li>\n\n\n\n<li>You can now access it from the ownCloud UI.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/upcloud.com\/media\/image-149-1024x614.png\" alt=\"-\" class=\"wp-image-49763\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><em>Note:<\/em><\/strong><em> You can explore other apps in the marketplace to further customize your ownCloud instance.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tips for Maintenance and Upgrades<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To keep ownCloud running smoothly, it&#8217;s important to back up data, perform upgrades properly, and apply security best practices.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1. Backing Up OwnCloud<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Regular backups prevent data loss in case of system failures or upgrade issues. Backup these key components:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Config files<\/strong> \u2192 \/var\/www\/owncloud\/config\/<\/li>\n\n\n\n<li><strong>User data<\/strong> \u2192 \/var\/www\/owncloud\/data\/<\/li>\n\n\n\n<li><strong>Database<\/strong> \u2192 MySQL\/MariaDB<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2. Upgrading OwnCloud<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Upgrading ensures security updates, bug fixes, and new features are applied<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Backup first (see the previous section).<\/li>\n\n\n\n<li>Disable third-party apps in the Admin Panel before upgrading.<\/li>\n\n\n\n<li>Download the latest ownCloud version and move old files to a backup folder.<\/li>\n\n\n\n<li>Restore configuration and data.<\/li>\n\n\n\n<li>Run the upgrade process through the command line.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">For Docker users, update the ownCloud image in docker-compose.yml, pull the latest image, and restart the container.<strong><em>Note:<\/em><\/strong><em> Avoid skipping major versions\u2014always upgrade in sequence (e.g., <\/em><strong><em>10.13 \u2192 10.14<\/em><\/strong><em>, not <\/em><strong><em>10.12 \u2192 11.0<\/em><\/strong><em>).<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3. Security Best Practices<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To protect ownCloud, follow these best practices:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Enable HTTPS with an SSL Certificate<\/strong> \u2013 Use Let&#8217;s Encrypt to secure web traffic.<\/li>\n\n\n\n<li><strong>Configure a Firewall<\/strong> \u2013 Allow only necessary traffic (SSH, HTTP, HTTPS) and block other ports.<\/li>\n\n\n\n<li><strong>Secure File Permissions<\/strong> \u2013 Ensure ownCloud files are only accessible by the correct users.<\/li>\n\n\n\n<li><strong>Keep Software Updated<\/strong> \u2013 Regularly apply updates to PHP, Apache, and ownCloud itself.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Troubleshooting Common Issues<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here are common ownCloud installation and configuration issues and how to fix them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1. Database Connection Error<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Problem:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">SQLSTATE[HY000] [1045] Access denied for user 'ownclouduser'@'localhost'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cause:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Incorrect username\/password<\/li>\n\n\n\n<li>Using curly quotes instead of straight quotes (\u2019 vs &#8216;)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Solution:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo mysql -u root -p\nSELECT user, host FROM mysql.user;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Recreate the database user with straight quotes:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">GRANT ALL PRIVILEGES ON owncloud.* TO 'ownclouduser'@'localhost' IDENTIFIED BY 'yourpassword';\nFLUSH PRIVILEGES;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2. GPG Key Errors (Repository Issue)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Problem:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">NO_PUBKEY 4ABE1AC7557BEFF9<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cause:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Missing gnupg package<\/li>\n\n\n\n<li>Failed repository key import<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Solution:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo apt install -y gnupg\ncurl -fsSL https:\/\/download.opensuse.org\/repositories\/isv:\/ownCloud:\/server:\/10\/Debian_12\/Release.key | gpg --dearmor | sudo tee \/etc\/apt\/trusted.gpg.d\/isv_ownCloud_server_10.gpg &gt; \/dev\/null\nsudo apt update<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3. Apache Not Starting<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Problem:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo systemctl status apache2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Shows <strong>&#8220;failed&#8221;<\/strong> status.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cause:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Misconfigured Apache config file<\/li>\n\n\n\n<li>Port conflict<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Solution:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A. Test Apache config:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo apache2ctl configtest<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">B. If errors appear, fix misconfigurations and restart Apache:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo systemctl restart apache2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>4. Trusted Domains Error<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Problem:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">You are accessing the server through an untrusted domain.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Solution:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Edit the config.php file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">sudo nano \/var\/www\/owncloud\/config\/config.php<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Add your trusted domains:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">'trusted_domains' =&gt; [\n    'yourdomain.com',\n    'www.yourdomain.com',\n    'your-server-ip',\n],<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">By now, you&#8217;ve successfully installed and configured ownCloud, set up a database, secured your deployment, and even extended its functionality with applications.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Owncloud gives you complete control over your file storage, security, and access, making it a powerful alternative to third-party cloud services.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Regular maintenance\u2014including backups, updates, and security enhancements, is essential to keep your setup running smoothly. If you encounter any issues, refer to the troubleshooting guide above to quickly resolve common problems.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you&#8217;re looking for a high-performance hosting solution to run ownCloud efficiently, consider deploying it on <a href=\"https:\/\/upcloud.com\/global\/products\/cloud-servers\"><strong>UpCloud<\/strong><\/a><strong>.<\/strong> With its fast SSD storage, scalability, and strong security features, UpCloud provides a reliable infrastructure for your ownCloud server.<\/p>\n","protected":false},"author":83,"featured_media":49766,"comment_status":"open","ping_status":"closed","template":"","community-category":[223],"class_list":["post-1897","tutorial","type-tutorial","status-publish","has-post-thumbnail","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/upcloud.com\/global\/wp-json\/wp\/v2\/tutorial\/1897","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/upcloud.com\/global\/wp-json\/wp\/v2\/tutorial"}],"about":[{"href":"https:\/\/upcloud.com\/global\/wp-json\/wp\/v2\/types\/tutorial"}],"author":[{"embeddable":true,"href":"https:\/\/upcloud.com\/global\/wp-json\/wp\/v2\/users\/83"}],"replies":[{"embeddable":true,"href":"https:\/\/upcloud.com\/global\/wp-json\/wp\/v2\/comments?post=1897"}],"version-history":[{"count":0,"href":"https:\/\/upcloud.com\/global\/wp-json\/wp\/v2\/tutorial\/1897\/revisions"}],"wp:attachment":[{"href":"https:\/\/upcloud.com\/global\/wp-json\/wp\/v2\/media?parent=1897"}],"wp:term":[{"taxonomy":"community-category","embeddable":true,"href":"https:\/\/upcloud.com\/global\/wp-json\/wp\/v2\/community-category?post=1897"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}