Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shimisnow/nextcloud-veracrypt
Automates the deployment of Nextcloud using Docker, with NGINX configured to support HTTP/3 and Google Brotli compression. and ensures data security by storing data within Veracrypt volumes
https://github.com/shimisnow/nextcloud-veracrypt
brotli docker docker-swarm http3 nextcloud veracrypt
Last synced: about 1 month ago
JSON representation
Automates the deployment of Nextcloud using Docker, with NGINX configured to support HTTP/3 and Google Brotli compression. and ensures data security by storing data within Veracrypt volumes
- Host: GitHub
- URL: https://github.com/shimisnow/nextcloud-veracrypt
- Owner: shimisnow
- Created: 2024-06-30T16:06:28.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-11-29T13:58:57.000Z (about 1 month ago)
- Last Synced: 2024-11-29T14:44:45.675Z (about 1 month ago)
- Topics: brotli, docker, docker-swarm, http3, nextcloud, veracrypt
- Language: Dockerfile
- Homepage:
- Size: 471 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
Awesome Lists containing this project
README
![](docs/images/nextcloud-veracrypt-header.png)
# Nextcloud with Veracrypt
This project automates the deployment of Nextcloud using Docker, with [NGINX](https://nginx.org/en/) as a reverse proxy configured to support [HTTP/3](https://en.wikipedia.org/wiki/HTTP/3) and [Google Brotli](https://github.com/google/brotli) compression. It ensures data security by storing all data within [Veracrypt](https://www.veracrypt.fr/en/Home.html) volumes.
## The WHY of the project
This project began with a simple need: I wanted an efficient way to browse and organize my photos locally within a familiar file and folder structure. Additionally, I needed the ability to securely store my photos on an external drive with encryption, ensuring seamless access across both Windows and Linux platforms. Beyond basic storage, I also wanted to enhance my photo management experience. I envisioned features like a timeline view, a map for geotagged images, album organization, and, importantly, automatic backup from my phone—all while maintaining a user-friendly, cross-platform solution.
Veracrypt became a key part of this solution. It allowed me to create encrypted containers that could be mounted as virtual drives, enabling me to browse and manage my files just like any regular filesystem on both Windows and Linux. This gave me the security of encryption without sacrificing the ease of access and flexibility I needed.
Nextcloud played an equally important role by providing me with the same tools that cloud storage services offer, but in a self-hosted, private environment. It allowed me to seamlessly access, share, and sync my files across multiple devices, while also giving me the ability to create albums and manage my data just as I would on a typical cloud service.
## Containers and Volumes structure
The project uses two Veracrypt volumes as the Nextcloud needs to be mounted in a filesystem with restrictive permissions.
```mermaid
stateDiagram-v2
direction LRstate "Reverse Proxy" as reverse_proxy {
state "Nginx" as nginx
}[*] --> reverse_proxy
state "Nextcloud" as nextcloud {
state "Application" as nextcloud_app
state "Cron" as nextcloud_cron
}nginx --> nextcloud
state "Services" as services {
state "Database" as database
state "Cache" as cache
state "Imaginary" as imaginary
}nextcloud --> services
state "Veracrypt" as veracrypt {
state "Data Volume" as veracrypt_data {
state "Nextcloud data" as veracrypt_nextcloud
}
state "Stack Volume" as veracrypt_stack {
state "Database data" as veracrypt_database
state "Nginx config" as veracrypt_nginx
state "PHP config" as veracrypt_php
state "SSL certificates" as veracrypt_certs
}
}nextcloud_app --> veracrypt_data
nextcloud_app --> veracrypt_stack
nextcloud_cron --> veracrypt_data
database --> veracrypt_stack
```## Docker images
This project uses:
- [Nginx](https://hub.docker.com/r/macbre/nginx-http3) with a custom compiled version to support HTTP/3 and Brotli
- [Nexcloud](https://hub.docker.com/_/nextcloud) with a custom extended version to include ffmpeg, zip, and others
- [MariaDB](https://hub.docker.com/_/mariadb) as database
- [Redis](https://hub.docker.com/_/redis) as cache
- [Imaginary](https://github.com/h2non/imaginary) to process images## Documentation
- [How to deploy](docs/how-to-deploy.md)