aboutsummaryrefslogtreecommitdiff
path: root/content/blog/2022-03-23-nextcloud-on-ubuntu.org
diff options
context:
space:
mode:
authorChristian Cleberg <hello@cleberg.net>2024-07-28 19:46:20 -0500
committerChristian Cleberg <hello@cleberg.net>2024-07-28 19:46:20 -0500
commit2be43cc479dfd4cfb621f14381330c708291e324 (patch)
tree7ac50f99425c5524c0820360754045b80d1bafcc /content/blog/2022-03-23-nextcloud-on-ubuntu.org
parentafe76ac7d7498b862abaa623790b91410e34574d (diff)
downloadcleberg.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.org169
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.