From 6fb9512a0c02302b5900daf0207071e173043b74 Mon Sep 17 00:00:00 2001 From: "Dejan R." Date: Sun, 23 Nov 2025 11:29:02 +0000 Subject: [PATCH] =?UTF-8?q?added=20readme=20fil=C4=8De?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- readme.md | 418 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 409 insertions(+), 9 deletions(-) diff --git a/readme.md b/readme.md index 74f8fd7..5f3a4e0 100644 --- a/readme.md +++ b/readme.md @@ -1,10 +1,410 @@ -Don't forget to create a .env file: -envADMIN_USERNAME=admin -ADMIN_PASSWORD=your_secure_password -NEXTCLOUD_DOMAIN=cloud.rozic-dev.com -Before deploying: +# Nextcloud Docker Installation -Create the data directory: sudo mkdir -p /mnt/nextcloud/data -Set proper permissions: sudo chown -R www-data:www-data /mnt/nextcloud/data -Make sure the Traefik network exists -Update the domain in the Traefik labels if needed \ No newline at end of file +This repository contains a complete Docker Compose setup for Nextcloud with Traefik reverse proxy and optional NAS storage integration. + +## 📋 Prerequisites + +- Ubuntu/Debian server with Docker and Docker Compose installed +- Traefik reverse proxy running with Let's Encrypt +- (Optional) NAS storage accessible via SMB/CIFS or NFS +- Domain name pointing to your server + +## 🚀 Quick Installation + +### Option 1: Automated Installation (Recommended) + +Run the installation script which will guide you through the setup: + +```bash +chmod +x install.sh +sudo ./install.sh +``` + +The script will: +- Prompt for domain, admin credentials, and NAS settings +- Install required packages +- Mount NAS storage (if selected) +- Create docker-compose.yml and .env files +- Set proper permissions +- Start Nextcloud + +### Option 2: Manual Installation + +#### 1. Clone or Download This Repository + +```bash +git clone https://forgejo.rozic-dev.com/rozic-dev-server/Nexcloud.git +cd Nexcloud +``` + +#### 2. Configure Environment Variables + +Create a `.env` file: + +```bash +cp .env.example .env +nano .env +``` + +Edit the values: + +```env +ADMIN_USERNAME=admin +ADMIN_PASSWORD=your_secure_password_here +NEXTCLOUD_DOMAIN=nextcloud.rozic-dev.com +``` + +#### 3. Mount NAS Storage (Optional) + +If you want to store Nextcloud data on a NAS: + +##### Install Required Packages + +```bash +sudo apt update +sudo apt install cifs-utils nfs-common +``` + +##### Create Mount Point + +```bash +sudo mkdir -p /mnt/nextcloud +``` + +##### Mount NAS Share + +**For SMB/CIFS (Synology, QNAP, Windows shares):** + +```bash +sudo mount -t cifs //NAS_IP/ShareName /mnt/nextcloud \ + -o username=YOUR_USER,password=YOUR_PASS,vers=3.0,uid=33,gid=33,file_mode=0770,dir_mode=0770,noperm,iocharset=utf8 +``` + +**For NFS:** + +```bash +sudo mount -t nfs NAS_IP:/volume1/nextcloud /mnt/nextcloud +``` + +##### Make Mount Persistent (Auto-mount on Boot) + +Edit `/etc/fstab`: + +```bash +sudo nano /etc/fstab +``` + +Add this line at the end: + +**For SMB/CIFS:** +``` +# Nextcloud NAS storage +//192.168.107.90/Data/backup/Nextcloud /mnt/nextcloud cifs username=YOUR_USER,password=YOUR_PASS,vers=3.0,uid=33,gid=33,file_mode=0770,dir_mode=0770,noperm,iocharset=utf8,_netdev,nofail 0 0 +``` + +**For NFS:** +``` +# Nextcloud NAS storage +NAS_IP:/volume1/nextcloud /mnt/nextcloud nfs defaults,_netdev,nofail 0 0 +``` + +##### Test fstab Entry + +```bash +sudo umount /mnt/nextcloud +sudo mount -a +df -h | grep nextcloud +``` + +##### Set Permissions + +```bash +sudo chown -R 33:33 /mnt/nextcloud +sudo chmod -R 750 /mnt/nextcloud +``` + +**Note:** UID/GID 33 is the `www-data` user inside the Nextcloud container. + +#### 4. Update docker-compose.yml + +If using NAS storage, ensure the volume mount points to your NAS mount: + +```yaml +volumes: + - nextcloud:/var/www/html + - /mnt/nextcloud:/var/www/html/data # NAS storage +``` + +If using local storage: + +```yaml +volumes: + - nextcloud:/var/www/html + - /mnt/nextcloud/data:/var/www/html/data # Local storage +``` + +#### 5. Start Nextcloud + +```bash +docker-compose up -d +``` + +#### 6. Monitor Installation + +```bash +docker-compose logs -f nextcloud +``` + +Wait until you see "Nextcloud was successfully installed" + +## 🌐 Access Nextcloud + +Open your browser and navigate to: +``` +https://nextcloud.rozic-dev.com +``` + +Login with the credentials from your `.env` file. + +## 🔧 Post-Installation Configuration + +### 1. Configure Background Jobs (Recommended) + +Add a cron job for better performance: + +```bash +# Edit root crontab +sudo crontab -e + +# Add this line (runs every 5 minutes) +*/5 * * * * docker exec -u www-data nextcloud_server php cron.php +``` + +Then in Nextcloud: +1. Go to **Settings** → **Administration** → **Basic settings** +2. Change background jobs from "AJAX" to "Cron" + +### 2. Configure Email (Optional) + +In Nextcloud admin settings, configure SMTP for password resets and notifications. + +### 3. Install Recommended Apps + +Go to **Apps** and install: +- Calendar +- Contacts +- Tasks +- Talk (for video calls) +- Deck (Kanban board) + +### 4. Configure External Storage (Alternative to NAS mount) + +If you prefer to use Nextcloud's external storage feature instead of direct NAS mounting: + +1. Enable the "External storage support" app +2. Go to **Settings** → **Administration** → **External storage** +3. Add your NAS as SMB/CIFS or NFS storage + +## 📊 Management Commands + +### View Logs + +```bash +docker-compose logs -f nextcloud +docker-compose logs -f mariadb +docker-compose logs -f redis +``` + +### Restart Services + +```bash +docker-compose restart +``` + +### Stop Services + +```bash +docker-compose down +``` + +### Update Nextcloud + +```bash +docker-compose pull +docker-compose up -d +``` + +### Backup Database + +```bash +docker exec nextcloud_mariadb mysqldump -u nextcloud -pnextcloud nextcloud > nextcloud_backup_$(date +%Y%m%d).sql +``` + +### Access Nextcloud CLI (occ) + +```bash +docker exec -u www-data nextcloud_server php occ [command] +``` + +Examples: +```bash +# Check status +docker exec -u www-data nextcloud_server php occ status + +# List users +docker exec -u www-data nextcloud_server php occ user:list + +# Run maintenance mode +docker exec -u www-data nextcloud_server php occ maintenance:mode --on +``` + +## 🗂️ File Structure + +``` +Nextcloud/ +├── docker-compose.yml # Main Docker Compose configuration +├── .env # Environment variables (credentials, domain) +├── install.sh # Automated installation script +├── remove-data.sh # Script to clean installation +└── README.md # This file +``` + +## 🔒 Security Notes + +1. **Change default passwords** in production (database, Redis, admin) +2. **Enable 2FA** for admin account +3. **Regular backups** of database and data directory +4. **Keep Docker images updated** regularly +5. **Use strong passwords** for NAS and Nextcloud admin +6. **Restrict file permissions** on .env file: + ```bash + chmod 600 .env + ``` + +## 🐛 Troubleshooting + +### NAS Mount Issues + +**Check if mounted:** +```bash +df -h | grep nextcloud +mount | grep nextcloud +``` + +**Test NAS connection:** +```bash +ping NAS_IP +smbclient -L //NAS_IP -U username +``` + +**Remount manually:** +```bash +sudo umount /mnt/nextcloud +sudo mount -a +``` + +**Check mount logs:** +```bash +dmesg | grep -i cifs +journalctl -xe | grep mount +``` + +### Permission Issues + +If you get permission errors: + +```bash +# Fix data directory permissions +sudo chown -R 33:33 /mnt/nextcloud +sudo chmod -R 750 /mnt/nextcloud + +# Restart Nextcloud +docker-compose restart nextcloud +``` + +### Database Connection Issues + +```bash +# Check if MariaDB is running +docker-compose ps mariadb + +# View MariaDB logs +docker-compose logs mariadb + +# Test database connection +docker exec -it nextcloud_mariadb mysql -u nextcloud -pnextcloud nextcloud +``` + +### Redis Connection Issues + +```bash +# Check Redis +docker-compose ps redis + +# Test Redis connection +docker exec -it nextcloud_redis redis-cli -a nextcloud ping +``` + +### Nextcloud Shows "Access through untrusted domain" + +Add your domain to trusted domains: + +```bash +docker exec -u www-data nextcloud_server php occ config:system:set trusted_domains 1 --value=your-domain.com +``` + +### Clear Installation and Start Fresh + +```bash +# Stop containers +docker-compose down + +# Remove volumes (WARNING: This deletes all data!) +docker volume rm nextcloud_mysql nextcloud_redis nextcloud_nextcloud + +# Clear data directory +sudo rm -rf /mnt/nextcloud/data/* + +# Start again +docker-compose up -d +``` + +Or use the cleanup script: +```bash +chmod +x remove-data.sh +sudo ./remove-data.sh +``` + +## 📚 Additional Resources + +- [Nextcloud Documentation](https://docs.nextcloud.com/) +- [Nextcloud Admin Manual](https://docs.nextcloud.com/server/latest/admin_manual/) +- [Docker Hub - Nextcloud](https://hub.docker.com/_/nextcloud) +- [Traefik Documentation](https://doc.traefik.io/traefik/) + +## 📝 Notes + +- **Data Location**: All user files are stored in `/mnt/nextcloud` (or your configured NAS path) +- **Database**: MariaDB 10.11 with optimized settings for Nextcloud +- **Redis**: Used for session handling and caching +- **Traefik**: Handles SSL certificates via Let's Encrypt automatically +- **Backups**: Remember to backup both database and data directory regularly + +## 💡 Tips + +1. **Performance**: Use Redis for memory caching to improve performance +2. **Storage**: Monitor disk space regularly, especially if storing large files +3. **Updates**: Always backup before updating Nextcloud +4. **Apps**: Only install apps you actually need to keep system lean +5. **Monitoring**: Set up monitoring for disk space and service health + +## 🤝 Support + +For issues or questions: +- Check the Nextcloud logs: `docker-compose logs -f nextcloud` +- Visit [Nextcloud Community Forum](https://help.nextcloud.com/) +- Check [Nextcloud GitHub Issues](https://github.com/nextcloud/server/issues) + +## 📄 License + +This configuration is provided as-is for personal and commercial use. \ No newline at end of file