- Notifications
You must be signed in to change notification settings - Fork0
Build your own self-hosted cloud storage with Nextcloud, with enhanced privacy and security for file management
License
NotificationsYou must be signed in to change notification settings
stowyh/nextcloud-setup
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
- Enhanced privacy and security
- Cost-effective
- Scalable
- Greater control and customization
- A computer running Ubuntu or any Debian-based distribution.
- Verify if your ISP allows port forwarding [Optional]
- Own a domain [Optional]
sudo apt updatesudo apt full-upgradesudo apt autoremove
sudo apt install neovim wget mariadb-server php php-apcu php-bcmath php-cli php-common php-curl php-gd php-gmp php-imagick php-intl php-mbstring php-mysql php-zip php-xml unzip nmap
- Modify the file to assign an appropriate hostname or domain name to your server.
sudo nvim /etc/hostname
sudo nvim /etc/hosts
- Restart your server to apply the changes.
sudo reboot
- Download the Nextcloud ZIP file.
wget https://download.nextcloud.com/server/releases/latest.zip
- Check the status of the
mariadbservice.
systemctl status mariadb
- Run the secure installation script.
sudo mysql_secure_installation
- Follow the prompts with the provided inputs:
Password prompt --> Press EnterSwitch to unix_socket_auth [Y/n] --> nChange the root password [Y/n] --> YEnter your secure password:Remove anonymous users [Y/n] --> YDisallow root login remotely [Y/n] --> YRemove test database and access to it [Y/n] --> YReload privilege tables now [Y/n] --> Y- Access MariaDB.
sudo mariadb
- Create the database.
CREATEDATABASEnextcloud;
- Set up permissions.
GRANT ALL PRIVILEGESON nextcloud.* TO'nextcloud'@'localhost' IDENTIFIED BY'mypassword';FLUSH PRIVILEGES;
- Exit by pressing
CTRL+D.
- Enable the necessary PHP extensions.
sudo phpenmod bcmath gmp imagick intl
- Unzip the Nextcloud file.
unzip latest.zip
- Move the files to the serving location and set the appropriate permissions.
mv nextcloud your.domain.namesudo chown -R www-data:www-data your.domain.namesudo mv your.domain.name /var/www
- Disable the default Apache site.
sudo a2dissite 000-default.conf
- Create an Apache config file for serving Nextcloud.
sudo nvim /etc/apache2/sites-available/your.domain.name.conf
- Insert the following content into the file, modifying
your.domain.nameas needed:
<VirtualHost*:80> DocumentRoot"/var/www/your.domain.name" ServerName your.domain.name<Directory"/var/www/your.domain.name/"> Options MultiViews FollowSymlinks AllowOverride All Order allow,deny Allow from all</Directory> TransferLog /var/log/apache2/your.domain.name_access.log ErrorLog /var/log/apache2/your.domain.name_error.log</VirtualHost>
- Enable the site.
sudo a2ensite your.domain.name.conf
- Edit the PHP configuration file.
sudo nano /etc/php/8.1/apache2/php.ini
- Locate and modify the following parameters:
memory_limit =3G# Increase if you have more RAMupload_max_filesize =50G# Adjust based on your needsmax_execution_time =3600post_max_size =50G# Adjust based on your needsdate.timezone = Europe/London# Adjust your timezoneopcache.enable=1opcache.interned_strings_buffer=128opcache.max_accelerated_files=10000opcache.memory_consumption=128opcache.save_comments=1opcache.revalidate_freq=1
- Enable PHP modules for Apache.
sudo a2enmod dir env headers mime rewrite ssl
- Restart Apache.
sudo systemctl restart apache2
- Upon first access, you will see a setup page.
- Enter the following information:
Username --> Your desired usernamePassword --> Set a secure passwordData Folder --> Leave as defaultDatabase user --> nextcloudDatabase password --> Your database passwordDatabase name --> nextcloud
- Install the recommended apps.
- To access Nextcloud from outside your private network, enable port forwarding on your router.
- Example configuration for a Movistar router:
- Find your private IP using:
ifconfig -a
- Configure port forwarding in your router settings, enabling port 80 for your IP.
- Verify port 80 is open:
sudo nmap -n -PN -sT -sU -p80 {IP}- Check if the Nextcloud page is accessible by entering your public IP in a web browser.
- To access Nextcloud via your public IP, edit the
config.phpfile:
sudo nvim /var/www/your.domain.name/config/config.php
- Add your public IP to the
trusted_domainsarray.
- Purchase or obtain a domain from providers like:
- In Advanced DNS settings, create a host record with your public IP.
- Edit the
config.phpfile to add your domain to thetrusted_domainsarray.
- Install
snapdandcertbot:
sudo apt install snapdsudo snap install core&& sudo snap refresh coresudo snap install --classic certbotsudo ln -s /snap/bin/certbot /usr/bin/certbot- Obtain and install your certificates:
sudo certbot --apache
- Search online forums for solutions.
- For further assistance, contact me viaemail.
Please submit a pull request for any errors or suggestions.
About
Build your own self-hosted cloud storage with Nextcloud, with enhanced privacy and security for file management
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
No releases published
Packages0
No packages published







