diff options
author | Christian Cleberg <hello@cleberg.net> | 2024-07-28 19:46:20 -0500 |
---|---|---|
committer | Christian Cleberg <hello@cleberg.net> | 2024-07-28 19:46:20 -0500 |
commit | 2be43cc479dfd4cfb621f14381330c708291e324 (patch) | |
tree | 7ac50f99425c5524c0820360754045b80d1bafcc /content/blog/2022-03-23-nextcloud-on-ubuntu.org | |
parent | afe76ac7d7498b862abaa623790b91410e34574d (diff) | |
download | cleberg.net-2be43cc479dfd4cfb621f14381330c708291e324.tar.gz cleberg.net-2be43cc479dfd4cfb621f14381330c708291e324.tar.bz2 cleberg.net-2be43cc479dfd4cfb621f14381330c708291e324.zip |
conversion from Zola to Weblorg
Diffstat (limited to 'content/blog/2022-03-23-nextcloud-on-ubuntu.org')
-rw-r--r-- | content/blog/2022-03-23-nextcloud-on-ubuntu.org | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/content/blog/2022-03-23-nextcloud-on-ubuntu.org b/content/blog/2022-03-23-nextcloud-on-ubuntu.org new file mode 100644 index 0000000..3c03f07 --- /dev/null +++ b/content/blog/2022-03-23-nextcloud-on-ubuntu.org @@ -0,0 +1,169 @@ +#+date: <2022-03-23> +#+title: Self-Hosting Nextcloud +#+description: + + +* What is Nextcloud? +:PROPERTIES: +:CUSTOM_ID: what-is-nextcloud +:END: +[[https://nextcloud.com/][Nextcloud]] is a self-hosted solution for +storage, communications, editing, calendar, contacts, and more. + +This tutorial assumes that you have an Ubuntu server and a domain name +configured to point toward the server. + +* Install Dependencies +:PROPERTIES: +:CUSTOM_ID: install-dependencies +:END: +To start, you will need to install the packages that Nextcloud requires: + +#+begin_src sh +sudo apt install apache2 mariadb-server libapache2-mod-php7.4 +sudo apt install php7.4-gd php7.4-mysql php7.4-curl php7.4-mbstring php7.4-intl +sudo apt install php7.4-gmp php7.4-bcmath php-imagick php7.4-xml php7.4-zip +#+end_src + +* Set Up MySQL +:PROPERTIES: +:CUSTOM_ID: set-up-mysql +:END: +Next, you will need to log in to MySQL as the =root= user of the +machine. + +#+begin_src sh +sudo mysql -uroot -p +#+end_src + +Once you've logged in, you must create a new user so that Nextcloud can +manage the database. You will also create a =nextcloud= database and +assign privileges: + +#+begin_src sql +CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; +CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; +GRANT ALL PRIVILEGES ON nextcloud.** TO 'username'@'localhost'; +FLUSH PRIVILEGES; +quit; +#+end_src + +* Download & Install Nextcloud +:PROPERTIES: +:CUSTOM_ID: download-install-nextcloud +:END: +To download Nextcloud, go the +[[https://nextcloud.com/install/#instructions-server][Nextcloud +downloads page]], click on =Archive File= and right-click the big blue +button to copy the link. + +Then, go to your server and enter the following commands to download, +unzip, and move the files to your destination directory. This example +uses =example.com= as the destination, but you can put it wherever you +want to server your files from. + +#+begin_src sh +wget https://download.nextcloud.com/server/releases/nextcloud-23.0.3.zip +sudo apt install unzip +unzip nextcloud-23.0.3.zip +sudo cp -r nextcloud /var/www/example.com +#+end_src + +* Configure the Apache Web Server +:PROPERTIES: +:CUSTOM_ID: configure-the-apache-web-server +:END: +Now that the database is set up and Nextcloud is installed, you need to +set up the Apache configuration files to tell the server how to handle +requests for =example.com/nextcloud=. + +First, open the following file in the editor: + +#+begin_src sh +sudo nano /etc/apache2/sites-available/nextcloud.conf +#+end_src + +Once the editor is open, paste the following information in. Then, save +and close the file. + +#+begin_src config +<VirtualHost *:80> + DocumentRoot /var/www/example.com + ServerName example.com + ServerAlias www.example.com + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + + <Directory /var/www/example.com/nextcloud/> + Require all granted + AllowOverride All + Options FollowSymLinks MultiViews + Satisfy Any + + <IfModule mod_dav.c> + Dav off + </IfModule> + </Directory> +</VirtualHost> +#+end_src + +Once the file is saved, enable it with Apache: + +#+begin_src sh +sudo a2ensite nextcloud.conf +#+end_src + +Next, enable the Apache mods required by Nextcloud: + +#+begin_src sh +sudo a2enmod rewrite headers env dir mime +#+end_src + +Finally, restart Apache. If any errors arise, you must solve those +before continuing. + +#+begin_src sh +sudo systemctl restart apache2 +#+end_src + +For the app to work, you must have the correct file permissions on your +=nextcloud= directory. Set the owner to be =www-data=: + +#+begin_src sh +sudo chown -R www-data:www-data /var/www/example.com/nextcloud/ +#+end_src + +* DNS +:PROPERTIES: +:CUSTOM_ID: dns +:END: +If you do not have a static IP address, you will need to update your DNS +settings (at your DNS provider) whenever your dynamic IP address +changes. + +For an example on how I do that with Cloudflare, see my other post: +[[../updating-dynamic-dns-with-cloudflare-api/][Updating Dynamic DNS +with Cloudflare API]] + +* Certbot +:PROPERTIES: +:CUSTOM_ID: certbot +:END: +If you want to serve Nextcloud from HTTPS rather than plain HTTP, use +the following commands to issue Let's Encrypt SSL certificates: + +#+begin_src sh +sudo apt install snapd +sudo snap install core +sudo snap refresh core +sudo snap install --classic certbot +sudo ln -s /snap/bin/certbot /usr/bin/certbot +sudo certbot --apache +#+end_src + +* Results +:PROPERTIES: +:CUSTOM_ID: results +:END: +VoilĂ ! You're all done and should be able to access Nextcloud from your +domain or IP address. |